@pixerate/editor 0.179.0 → 0.181.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.
Files changed (56) hide show
  1. package/dist/agent/index.cjs +34 -34
  2. package/dist/agent/index.js +5 -5
  3. package/dist/canvas/index.cjs +6 -6
  4. package/dist/canvas/index.js +2 -2
  5. package/dist/chart/index.cjs +162 -157
  6. package/dist/chart/index.d.cts +1 -0
  7. package/dist/chart/index.d.ts +1 -0
  8. package/dist/chart/index.js +12 -7
  9. package/dist/chart/layout-streamgraph.d.cts +15 -0
  10. package/dist/chart/layout-streamgraph.d.ts +15 -0
  11. package/dist/chart/spec.d.cts +1 -1
  12. package/dist/chart/spec.d.ts +1 -1
  13. package/dist/chart/types.d.cts +2 -1
  14. package/dist/chart/types.d.ts +2 -1
  15. package/dist/{chunk-KPWG3PSW.js → chunk-23E5GI2U.js} +8 -2
  16. package/dist/{chunk-IMHRN4ZZ.js → chunk-3MO3ZS7E.js} +3 -3
  17. package/dist/{chunk-GXEC4FS6.cjs → chunk-5DQPDXOM.cjs} +82 -76
  18. package/dist/{chunk-ORZF4JOO.js → chunk-6ZZKRH7R.js} +3 -1
  19. package/dist/{chunk-FHNGNL3V.cjs → chunk-CZBRY4SW.cjs} +51 -51
  20. package/dist/{chunk-34UCPHYO.js → chunk-GOBOCZZI.js} +2 -2
  21. package/dist/{chunk-VKHJJUBK.cjs → chunk-HUAISCUX.cjs} +22 -18
  22. package/dist/{chunk-OLCHKGGO.js → chunk-L6Y7TSQ4.js} +5 -1
  23. package/dist/{chunk-TUXKLM5W.cjs → chunk-N76AMOKE.cjs} +224 -42
  24. package/dist/{chunk-RLOIEDA3.cjs → chunk-O7QXVGMP.cjs} +16 -16
  25. package/dist/{chunk-R2VHVQVY.js → chunk-PI2UYMZY.js} +3 -3
  26. package/dist/{chunk-E45AIIWY.cjs → chunk-RUONPPMC.cjs} +8 -8
  27. package/dist/{chunk-GTF4RYXJ.cjs → chunk-SOSBOS5T.cjs} +22 -22
  28. package/dist/{chunk-FKYGM35R.js → chunk-UFEDHACQ.js} +2 -2
  29. package/dist/{chunk-OJQVKJYD.js → chunk-WKMUBATU.js} +183 -1
  30. package/dist/{chunk-OUO3DSRT.cjs → chunk-WRZ6C4TU.cjs} +3 -1
  31. package/dist/export/index.cjs +4 -4
  32. package/dist/export/index.js +3 -3
  33. package/dist/extensions/index.cjs +7 -7
  34. package/dist/extensions/index.js +6 -6
  35. package/dist/image-editor/controller.d.cts +25 -0
  36. package/dist/image-editor/controller.d.ts +25 -0
  37. package/dist/image-editor/index.cjs +466 -303
  38. package/dist/image-editor/index.js +188 -25
  39. package/dist/image-editor/layers/panel.d.cts +2 -1
  40. package/dist/image-editor/layers/panel.d.ts +2 -1
  41. package/dist/image-editor/renderer.d.cts +4 -1
  42. package/dist/image-editor/renderer.d.ts +4 -1
  43. package/dist/image-editor/selection/index.d.cts +1 -0
  44. package/dist/image-editor/selection/index.d.ts +1 -0
  45. package/dist/image-editor/selection/overlay.d.cts +8 -0
  46. package/dist/image-editor/selection/overlay.d.ts +8 -0
  47. package/dist/image-editor/selection/segmentation.d.cts +49 -0
  48. package/dist/image-editor/selection/segmentation.d.ts +49 -0
  49. package/dist/image-editor/selection-tools.d.cts +18 -1
  50. package/dist/image-editor/selection-tools.d.ts +18 -1
  51. package/dist/image-editor/types.d.cts +7 -0
  52. package/dist/image-editor/types.d.ts +7 -0
  53. package/dist/index.cjs +13 -13
  54. package/dist/index.js +7 -7
  55. package/package.json +1 -1
  56. package/skills/pixerate-image-editor/SKILL.md +5 -3
@@ -948,6 +948,24 @@ function quickMaskPixels(mask, style = {}) {
948
948
  }
949
949
  return out;
950
950
  }
951
+ var MARCHING_ANTS_STEP_MS = 100;
952
+ function prefersReducedMotion() {
953
+ try {
954
+ return typeof matchMedia === "function" && matchMedia("(prefers-reduced-motion: reduce)").matches;
955
+ } catch (e2) {
956
+ return false;
957
+ }
958
+ }
959
+ function startMarchingAnts(tick, stepMs = MARCHING_ANTS_STEP_MS) {
960
+ if (prefersReducedMotion()) return () => {
961
+ };
962
+ let offset = 0;
963
+ const id = setInterval(() => {
964
+ offset = (offset + 1) % 8;
965
+ tick(offset);
966
+ }, stepMs);
967
+ return () => clearInterval(id);
968
+ }
951
969
 
952
970
  // src/image-editor/layers/render.ts
953
971
  function isQuarterTurn(rotate) {
@@ -1148,7 +1166,7 @@ var ImageCache = (_class = class {constructor() { _class.prototype.__init.call(t
1148
1166
  Object.defineProperty(img, "naturalWidth", { value: 800, configurable: true });
1149
1167
  Object.defineProperty(img, "naturalHeight", { value: 600, configurable: true });
1150
1168
  Object.defineProperty(img, "complete", { value: true, configurable: true });
1151
- } catch (e2) {
1169
+ } catch (e3) {
1152
1170
  }
1153
1171
  this.cache.set(src, img);
1154
1172
  resolve(img);
@@ -1353,9 +1371,9 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1353
1371
  ctx.rect(region.x, region.y, region.width, region.height);
1354
1372
  ctx.clip();
1355
1373
  if (_optionalChain([state, 'access', _19 => _19.selection, 'optionalAccess', _20 => _20.bounds]) && display === "quickMask") this.drawQuickMask(ctx, state.selection);
1356
- else if (_optionalChain([state, 'access', _21 => _21.selection, 'optionalAccess', _22 => _22.bounds]) && display === "ants") this.drawAnts(ctx, state.selection, projection.scale, _nullishCoalesce(options.antsOffset, () => ( 0)));
1357
- if (_optionalChain([options, 'access', _23 => _23.draftSelectionPath, 'optionalAccess', _24 => _24.length])) this.drawDraftPath(ctx, options.draftSelectionPath, projection.scale);
1358
- } catch (e3) {
1374
+ else if (_optionalChain([state, 'access', _21 => _21.selection, 'optionalAccess', _22 => _22.bounds]) && display === "ants") this.drawAnts(ctx, state.selection, projection.scale / u, _nullishCoalesce(options.antsOffset, () => ( 0)));
1375
+ if (_optionalChain([options, 'access', _23 => _23.draftSelectionPath, 'optionalAccess', _24 => _24.length])) this.drawDraftPath(ctx, options.draftSelectionPath, projection.scale / u);
1376
+ } catch (e4) {
1359
1377
  }
1360
1378
  ctx.restore();
1361
1379
  }
@@ -1373,7 +1391,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1373
1391
  ctx.lineWidth = px2;
1374
1392
  ctx.strokeStyle = "#ffffff";
1375
1393
  ctx.stroke();
1376
- } catch (e4) {
1394
+ } catch (e5) {
1377
1395
  }
1378
1396
  ctx.restore();
1379
1397
  }
@@ -1394,7 +1412,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1394
1412
  ctx.lineWidth = u;
1395
1413
  ctx.strokeStyle = "#ffffff";
1396
1414
  ctx.stroke();
1397
- } catch (e5) {
1415
+ } catch (e6) {
1398
1416
  }
1399
1417
  ctx.restore();
1400
1418
  }
@@ -1433,7 +1451,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1433
1451
  ctx.strokeStyle = "#111827";
1434
1452
  ctx.stroke();
1435
1453
  }
1436
- } catch (e6) {
1454
+ } catch (e7) {
1437
1455
  }
1438
1456
  ctx.restore();
1439
1457
  }
@@ -1499,7 +1517,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1499
1517
  ctx.lineWidth = 1.5 * u;
1500
1518
  ctx.strokeStyle = OVERLAY_HANDLE_EDGE;
1501
1519
  ctx.stroke();
1502
- } catch (e7) {
1520
+ } catch (e8) {
1503
1521
  }
1504
1522
  ctx.restore();
1505
1523
  }
@@ -1567,7 +1585,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1567
1585
  _chunkUHMSMUHKcjs.applyDepthMask.call(void 0, imageData, maskData, depthMask);
1568
1586
  }
1569
1587
  }
1570
- } catch (e8) {
1588
+ } catch (e9) {
1571
1589
  }
1572
1590
  }
1573
1591
  _optionalChain([onPixels, 'optionalCall', _29 => _29(imageData)]);
@@ -1629,14 +1647,14 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1629
1647
  this.depthMaps.set(key, { width, height, data: data.data });
1630
1648
  this.assetVersion++;
1631
1649
  }
1632
- } catch (e9) {
1650
+ } catch (e10) {
1633
1651
  }
1634
1652
  }
1635
1653
  if (l.type === "annotation" && l.annotation.type === "image" && !this.imageCache.peek(l.annotation.src)) {
1636
1654
  try {
1637
1655
  await this.imageCache.get(l.annotation.src);
1638
1656
  this.assetVersion++;
1639
- } catch (e10) {
1657
+ } catch (e11) {
1640
1658
  }
1641
1659
  }
1642
1660
  }
@@ -1664,7 +1682,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1664
1682
  this.drawAnnotationShape(ctx, annotation, img);
1665
1683
  ctx.setTransform(1, 0, 0, 1, 0, 0);
1666
1684
  return new Uint8ClampedArray(ctx.getImageData(0, 0, rect.width, rect.height).data);
1667
- } catch (e11) {
1685
+ } catch (e12) {
1668
1686
  return null;
1669
1687
  }
1670
1688
  }
@@ -1772,7 +1790,10 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1772
1790
  }
1773
1791
  ctx.drawImage(canvas, 0, 0, selection.width, selection.height);
1774
1792
  }
1775
- /** Marching ants: a white line under a black dashed one, one screen pixel wide. */
1793
+ /**
1794
+ * Marching ants: a white line under a black dashed one, one screen pixel wide. `scale` is
1795
+ * screen pixels per natural pixel (the projection scale times the host's CSS scale).
1796
+ */
1776
1797
  drawAnts(ctx, selection, scale, offset) {
1777
1798
  let segs = this.outlineCache.get(selection);
1778
1799
  if (!segs) {
@@ -1864,7 +1885,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1864
1885
  _chunkCWM3CUUXcjs.blendImageData.call(void 0, backdrop, source, _chunkCWM3CUUXcjs.normalizeBlendMode.call(void 0, ann.blend));
1865
1886
  lctx.setTransform(1, 0, 0, 1, 0, 0);
1866
1887
  lctx.putImageData(backdrop, 0, 0);
1867
- } catch (e12) {
1888
+ } catch (e13) {
1868
1889
  return false;
1869
1890
  }
1870
1891
  ctx.save();
@@ -1880,7 +1901,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
1880
1901
  if (ann.type === "image") {
1881
1902
  try {
1882
1903
  img = await this.imageCache.get(ann.src);
1883
- } catch (e13) {
1904
+ } catch (e14) {
1884
1905
  }
1885
1906
  }
1886
1907
  this.drawAnnotationShape(ctx, ann, img);
@@ -2659,14 +2680,14 @@ var TextEditSession = (_class5 = class {
2659
2680
  if (!this.text.trim().length) {
2660
2681
  try {
2661
2682
  this.controller.removeLayer(this.layerId);
2662
- } catch (e14) {
2683
+ } catch (e15) {
2663
2684
  }
2664
2685
  return false;
2665
2686
  }
2666
2687
  if (this.layer.name === "Text" && this.changed) {
2667
2688
  try {
2668
2689
  this.controller.setLayerProperties(this.layerId, { name: _chunkUHMSMUHKcjs.typeLayerName.call(void 0, this.text) }, false);
2669
- } catch (e15) {
2690
+ } catch (e16) {
2670
2691
  }
2671
2692
  }
2672
2693
  return true;
@@ -3082,6 +3103,35 @@ function hueRange(pixels, center) {
3082
3103
  return _chunkUHMSMUHKcjs.createSelectionMask.call(void 0, pixels.width, pixels.height, out);
3083
3104
  }
3084
3105
 
3106
+ // src/image-editor/selection/segmentation.ts
3107
+ var isPoint = (p) => !!p && typeof p === "object" && Number.isFinite(p.x) && Number.isFinite(p.y);
3108
+ function polygonsOf(result) {
3109
+ const p = result.polygon;
3110
+ if (!Array.isArray(p) || !p.length) return [];
3111
+ const rings = Array.isArray(p[0]) ? p : [p];
3112
+ return rings.map((ring) => Array.isArray(ring) ? ring.filter(isPoint) : []).filter((ring) => ring.length >= 3);
3113
+ }
3114
+ function segmentToSelection(width, height, result) {
3115
+ let out = null;
3116
+ for (const ring of polygonsOf(result)) {
3117
+ out = _chunkUHMSMUHKcjs.combineSelections.call(void 0, out, polygonSelection(width, height, ring), "add");
3118
+ }
3119
+ if (result.mask && result.mask.width > 0 && result.mask.height > 0) {
3120
+ const raw = _chunkUHMSMUHKcjs.selectionFromPixels.call(void 0, result.mask, { channel: "luminance" });
3121
+ const sized = raw.width === width && raw.height === height ? raw : _chunkUHMSMUHKcjs.resizeSelection.call(void 0, raw, width, height);
3122
+ out = _chunkUHMSMUHKcjs.combineSelections.call(void 0, out, sized, "add");
3123
+ }
3124
+ return _optionalChain([out, 'optionalAccess', _71 => _71.bounds]) ? out : null;
3125
+ }
3126
+ function segmentsToSelection(width, height, results) {
3127
+ let out = null;
3128
+ for (const r of results) {
3129
+ const sel = segmentToSelection(width, height, r);
3130
+ if (sel) out = _chunkUHMSMUHKcjs.combineSelections.call(void 0, out, sel, "add");
3131
+ }
3132
+ return out;
3133
+ }
3134
+
3085
3135
  // src/image-editor/selection/refine.ts
3086
3136
  var DEFAULT_REFINE_EDGE_PARAMS = {
3087
3137
  radius: 0,
@@ -3331,16 +3381,16 @@ function checkEffectTime(time) {
3331
3381
  return time;
3332
3382
  }
3333
3383
  function checkEffectAnimation(animate) {
3334
- const duration = _optionalChain([animate, 'optionalAccess', _71 => _71.duration]);
3384
+ const duration = _optionalChain([animate, 'optionalAccess', _72 => _72.duration]);
3335
3385
  if (!(typeof duration === "number" && Number.isFinite(duration) && duration > 0 && duration <= _chunkUHMSMUHKcjs.MAX_EFFECT_ANIMATION_MS)) {
3336
3386
  throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`animate.duration must be more than 0 and at most ${_chunkUHMSMUHKcjs.MAX_EFFECT_ANIMATION_MS} ms.`);
3337
3387
  }
3338
3388
  return { duration: Math.round(duration) };
3339
3389
  }
3340
3390
  function effectLayerTiming(g, d) {
3341
- if (!_optionalChain([d, 'optionalAccess', _72 => _72.duration])) return null;
3391
+ if (!_optionalChain([d, 'optionalAccess', _73 => _73.duration])) return null;
3342
3392
  const time = _nullishCoalesce(g.time, () => ( 0));
3343
- return { mode: g.animate ? "animate" : "still", time, range: Math.max(d.duration, time), duration: _nullishCoalesce(_optionalChain([g, 'access', _73 => _73.animate, 'optionalAccess', _74 => _74.duration]), () => ( d.duration)), loops: d.loop };
3393
+ return { mode: g.animate ? "animate" : "still", time, range: Math.max(d.duration, time), duration: _nullishCoalesce(_optionalChain([g, 'access', _74 => _74.animate, 'optionalAccess', _75 => _75.duration]), () => ( d.duration)), loops: d.loop };
3344
3394
  }
3345
3395
 
3346
3396
  // src/image-editor/effects.ts
@@ -3593,14 +3643,14 @@ var FreeTransformSession = (_class8 = class {
3593
3643
  if (init.interpolation !== void 0 && !_chunkHGTDMKNEcjs.isInterpolation.call(void 0, init.interpolation)) fail(`Unknown interpolation "${String(init.interpolation)}"; use nearest, bilinear or bicubic.`);
3594
3644
  this.interp = _nullishCoalesce(init.interpolation, () => ( "bicubic"));
3595
3645
  const sel = host.selection();
3596
- const selected = Boolean(_optionalChain([sel, 'optionalAccess', _75 => _75.bounds]));
3646
+ const selected = Boolean(_optionalChain([sel, 'optionalAccess', _76 => _76.bounds]));
3597
3647
  let content = _nullishCoalesce(init.content, () => ( "auto"));
3598
3648
  if (!["auto", "layer", "selection", "selection-copy", "selection-outline"].includes(content)) {
3599
3649
  fail(`Unknown content "${String(content)}"; use auto, layer, selection, selection-copy or selection-outline.`);
3600
3650
  }
3601
3651
  const targetId = _nullishCoalesce(init.layerId, () => ( host.activeLayerId()));
3602
- const target = targetId && content !== "selection-outline" ? _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, host.layers(), targetId), 'optionalAccess', _76 => _76.layer]) : void 0;
3603
- const smartTarget = (_optionalChain([target, 'optionalAccess', _77 => _77.type]) === "smart" || _optionalChain([target, 'optionalAccess', _78 => _78.type]) === "shape" || _optionalChain([target, 'optionalAccess', _79 => _79.type]) === "type") && (_nullishCoalesce(init.channel, () => ( (target.id === host.activeLayerId() ? host.activeTarget() : "pixels")))) !== "mask";
3652
+ const target = targetId && content !== "selection-outline" ? _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, host.layers(), targetId), 'optionalAccess', _77 => _77.layer]) : void 0;
3653
+ const smartTarget = (_optionalChain([target, 'optionalAccess', _78 => _78.type]) === "smart" || _optionalChain([target, 'optionalAccess', _79 => _79.type]) === "shape" || _optionalChain([target, 'optionalAccess', _80 => _80.type]) === "type") && (_nullishCoalesce(init.channel, () => ( (target.id === host.activeLayerId() ? host.activeTarget() : "pixels")))) !== "mask";
3604
3654
  if (content === "auto") content = selected && !smartTarget ? "selection" : "layer";
3605
3655
  this.content = content;
3606
3656
  if (content !== "layer" && !selected) fail(`Nothing is selected; ${content} needs a selection. Select first, or use content layer.`);
@@ -3624,9 +3674,9 @@ var FreeTransformSession = (_class8 = class {
3624
3674
  const mask = layer.mask && !layer.mask.source ? layer.mask : void 0;
3625
3675
  const channel = _nullishCoalesce(init.channel, () => ( (layer.id === host.activeLayerId() ? host.activeTarget() : "pixels")));
3626
3676
  if (channel !== "pixels" && channel !== "mask") fail(`Unknown channel "${String(channel)}"; use pixels or mask.`);
3627
- const linked = _optionalChain([mask, 'optionalAccess', _80 => _80.linked]) !== false;
3677
+ const linked = _optionalChain([mask, 'optionalAccess', _81 => _81.linked]) !== false;
3628
3678
  const maskAlone = channel === "mask" && (!linked || layer.type !== "pixel");
3629
- if (channel === "mask" && !mask) fail(_optionalChain([layer, 'access', _81 => _81.mask, 'optionalAccess', _82 => _82.source]) ? `Layer "${layer.name || id}" has a depth mask, which is generated, not transformed.` : `Layer "${layer.name || id}" has no mask to transform; add one with add_layer_mask, or transform its pixels.`);
3679
+ if (channel === "mask" && !mask) fail(_optionalChain([layer, 'access', _82 => _82.mask, 'optionalAccess', _83 => _83.source]) ? `Layer "${layer.name || id}" has a depth mask, which is generated, not transformed.` : `Layer "${layer.name || id}" has no mask to transform; add one with add_layer_mask, or transform its pixels.`);
3630
3680
  if (!maskAlone && layer.type !== "pixel" && layer.type !== "smart" && layer.type !== "shape" && layer.type !== "type") fail(`Layer "${layer.name || id}" is a ${layer.type} layer; Free Transform works on pixel, shape, type and smart object layers, layer masks (channel mask) and selections.`);
3631
3681
  if (!layer.visible && content !== "selection-copy") fail(`Layer "${layer.name || id}" is hidden; show it before you transform it.`);
3632
3682
  if (content !== "selection-copy") {
@@ -3729,7 +3779,7 @@ var FreeTransformSession = (_class8 = class {
3729
3779
  };
3730
3780
  this.copyId = copy.id;
3731
3781
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, layers, layer.id);
3732
- this.startLayers = _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _83 => _83.parent, 'optionalAccess', _84 => _84.id]), () => ( null)), loc.index + 1);
3782
+ this.startLayers = _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _84 => _84.parent, 'optionalAccess', _85 => _85.id]), () => ( null)), loc.index + 1);
3733
3783
  this.parts.push({ what: "pixels", offset: o, moving: lifted, base: null, reduced: /* @__PURE__ */ new Map() });
3734
3784
  moves.push("pixels");
3735
3785
  }
@@ -3992,11 +4042,11 @@ var FreeTransformSession = (_class8 = class {
3992
4042
  result(changed, layers, selection) {
3993
4043
  let bounds = null;
3994
4044
  const id = _nullishCoalesce(this.copyId, () => ( this.layerId));
3995
- const layer = id ? _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, layers, id), 'optionalAccess', _85 => _85.layer]) : void 0;
3996
- if (this.moves.includes("pixels") && _optionalChain([layer, 'optionalAccess', _86 => _86.type]) === "pixel") bounds = toDoc(_chunkCWM3CUUXcjs.contentBounds.call(void 0, this.host.pixelsOf(layer)), layer.offset);
3997
- else if (this.moves.includes("pixels") && (_optionalChain([layer, 'optionalAccess', _87 => _87.type]) === "smart" || _optionalChain([layer, 'optionalAccess', _88 => _88.type]) === "shape" || _optionalChain([layer, 'optionalAccess', _89 => _89.type]) === "type")) bounds = _chunkCWM3CUUXcjs.contentBounds.call(void 0, layer.surface);
3998
- else if (this.moves.includes("mask") && _optionalChain([layer, 'optionalAccess', _90 => _90.mask])) bounds = toDoc(_chunkCWM3CUUXcjs.contentBounds.call(void 0, layer.mask.surface), layer.type === "pixel" ? layer.offset : { x: 0, y: 0 });
3999
- else if (this.moves.includes("selection")) bounds = _optionalChain([selection, 'optionalAccess', _91 => _91.bounds]) ? { ...selection.bounds } : null;
4045
+ const layer = id ? _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, layers, id), 'optionalAccess', _86 => _86.layer]) : void 0;
4046
+ if (this.moves.includes("pixels") && _optionalChain([layer, 'optionalAccess', _87 => _87.type]) === "pixel") bounds = toDoc(_chunkCWM3CUUXcjs.contentBounds.call(void 0, this.host.pixelsOf(layer)), layer.offset);
4047
+ else if (this.moves.includes("pixels") && (_optionalChain([layer, 'optionalAccess', _88 => _88.type]) === "smart" || _optionalChain([layer, 'optionalAccess', _89 => _89.type]) === "shape" || _optionalChain([layer, 'optionalAccess', _90 => _90.type]) === "type")) bounds = _chunkCWM3CUUXcjs.contentBounds.call(void 0, layer.surface);
4048
+ else if (this.moves.includes("mask") && _optionalChain([layer, 'optionalAccess', _91 => _91.mask])) bounds = toDoc(_chunkCWM3CUUXcjs.contentBounds.call(void 0, layer.mask.surface), layer.type === "pixel" ? layer.offset : { x: 0, y: 0 });
4049
+ else if (this.moves.includes("selection")) bounds = _optionalChain([selection, 'optionalAccess', _92 => _92.bounds]) ? { ...selection.bounds } : null;
4000
4050
  return {
4001
4051
  layerId: _nullishCoalesce(this.copyId, () => ( this.layerId)),
4002
4052
  content: this.content,
@@ -4025,7 +4075,7 @@ function deserializeColorMode(raw, problems) {
4025
4075
  }
4026
4076
  function effectiveProof(proof, mode) {
4027
4077
  if (proof) return proof;
4028
- if (_optionalChain([mode, 'optionalAccess', _92 => _92.mode]) === "cmyk") return { ...DEFAULT_PROOF, profile: mode.profile, intent: mode.intent };
4078
+ if (_optionalChain([mode, 'optionalAccess', _93 => _93.mode]) === "cmyk") return { ...DEFAULT_PROOF, profile: mode.profile, intent: mode.intent };
4029
4079
  return null;
4030
4080
  }
4031
4081
  function colorModePlanes(doc, mode) {
@@ -4080,7 +4130,7 @@ function resolveProfile(doc) {
4080
4130
  return p;
4081
4131
  }
4082
4132
  function profileBytes(doc) {
4083
- if (_optionalChain([doc, 'optionalAccess', _93 => _93.icc])) return doc.icc;
4133
+ if (_optionalChain([doc, 'optionalAccess', _94 => _94.icc])) return doc.icc;
4084
4134
  const p = resolveProfile(doc);
4085
4135
  return _nullishCoalesce(p.bytes, () => ( _chunkBROJYMWUcjs.encodeProfile.call(void 0, p)));
4086
4136
  }
@@ -4097,7 +4147,7 @@ function isSrgb(doc) {
4097
4147
  if (!doc || doc.builtin === "srgb") return true;
4098
4148
  try {
4099
4149
  return _chunkBROJYMWUcjs.sameColors.call(void 0, resolveProfile(doc), _chunkBROJYMWUcjs.srgbProfile.call(void 0, ), _chunkBROJYMWUcjs.builtinProfile.call(void 0, "lab-d50"));
4100
- } catch (e16) {
4150
+ } catch (e17) {
4101
4151
  return false;
4102
4152
  }
4103
4153
  }
@@ -4240,7 +4290,7 @@ function paintCoverageInto(base, coverage, apply, rects, depth = null) {
4240
4290
  else tiles.delete(key);
4241
4291
  continue;
4242
4292
  }
4243
- const src = _nullishCoalesce(_optionalChain([base, 'access', _94 => _94.tiles, 'access', _95 => _95.get, 'call', _96 => _96(key), 'optionalAccess', _97 => _97.data]), () => ( defaultTile(base)));
4293
+ const src = _nullishCoalesce(_optionalChain([base, 'access', _95 => _95.tiles, 'access', _96 => _96.get, 'call', _97 => _97(key), 'optionalAccess', _98 => _98.data]), () => ( defaultTile(base)));
4244
4294
  const data = _chunkEBDCRTZIcjs.applyStrokeToTile.call(void 0, coverage, src, base.channels, t.tx, t.ty, apply);
4245
4295
  const tile = _chunkCWM3CUUXcjs.finishTile.call(void 0, data, base.channels, base.defaultValue);
4246
4296
  if (tile) tiles.set(key, tile);
@@ -4353,7 +4403,7 @@ var PaintStrokeSession = (_class9 = class {
4353
4403
  writeTile: (tx, ty) => {
4354
4404
  const key = _chunkCWM3CUUXcjs.tileKey.call(void 0, tx, ty);
4355
4405
  if (!this.touched.has(key)) {
4356
- this.work.set(key, _nullishCoalesce(_optionalChain([read, 'call', _98 => _98(key), 'optionalAccess', _99 => _99.slice, 'call', _100 => _100()]), () => ( new Float32Array(_chunkCWM3CUUXcjs.TILE * _chunkCWM3CUUXcjs.TILE * 4))));
4406
+ this.work.set(key, _nullishCoalesce(_optionalChain([read, 'call', _99 => _99(key), 'optionalAccess', _100 => _100.slice, 'call', _101 => _101()]), () => ( new Float32Array(_chunkCWM3CUUXcjs.TILE * _chunkCWM3CUUXcjs.TILE * 4))));
4357
4407
  this.touched.add(key);
4358
4408
  }
4359
4409
  this.fresh.add(key);
@@ -4365,11 +4415,11 @@ var PaintStrokeSession = (_class9 = class {
4365
4415
  offset: a.offset,
4366
4416
  lockTransparency: a.lockTransparency,
4367
4417
  selection: a.selection,
4368
- readTile: (tx, ty) => _nullishCoalesce(_optionalChain([this, 'access', _101 => _101.live, 'access', _102 => _102.get, 'call', _103 => _103(_chunkCWM3CUUXcjs.tileKey.call(void 0, tx, ty)), 'optionalAccess', _104 => _104.data]), () => ( (this.base.defaultValue ? defaultTile(this.base) : null))),
4418
+ readTile: (tx, ty) => _nullishCoalesce(_optionalChain([this, 'access', _102 => _102.live, 'access', _103 => _103.get, 'call', _104 => _104(_chunkCWM3CUUXcjs.tileKey.call(void 0, tx, ty)), 'optionalAccess', _105 => _105.data]), () => ( (this.base.defaultValue ? defaultTile(this.base) : null))),
4369
4419
  writeTile: (tx, ty) => {
4370
4420
  const key = _chunkCWM3CUUXcjs.tileKey.call(void 0, tx, ty);
4371
4421
  if (!this.touched.has(key)) {
4372
- const src = _nullishCoalesce(_optionalChain([this, 'access', _105 => _105.base, 'access', _106 => _106.tiles, 'access', _107 => _107.get, 'call', _108 => _108(key), 'optionalAccess', _109 => _109.data]), () => ( defaultTile(this.base)));
4422
+ const src = _nullishCoalesce(_optionalChain([this, 'access', _106 => _106.base, 'access', _107 => _107.tiles, 'access', _108 => _108.get, 'call', _109 => _109(key), 'optionalAccess', _110 => _110.data]), () => ( defaultTile(this.base)));
4373
4423
  this.live.set(key, { data: new Uint8ClampedArray(src), uniform: null });
4374
4424
  this.touched.add(key);
4375
4425
  }
@@ -4386,11 +4436,11 @@ var PaintStrokeSession = (_class9 = class {
4386
4436
  if (this.closed || !points.length) return;
4387
4437
  if (!this.started) {
4388
4438
  this.started = true;
4389
- if (_optionalChain([this, 'access', _110 => _110.retouch, 'optionalAccess', _111 => _111.kind]) === "coverage") this.retouch.start(points[0]);
4439
+ if (_optionalChain([this, 'access', _111 => _111.retouch, 'optionalAccess', _112 => _112.kind]) === "coverage") this.retouch.start(points[0]);
4390
4440
  }
4391
4441
  this.last = points[points.length - 1];
4392
4442
  const rects = this.mixer ? this.mixer.push(points) : this.stroke.push(points);
4393
- _optionalChain([this, 'access', _112 => _112.flushView, 'optionalCall', _113 => _113()]);
4443
+ _optionalChain([this, 'access', _113 => _113.flushView, 'optionalCall', _114 => _114()]);
4394
4444
  this.update(rects);
4395
4445
  }
4396
4446
  update(rects) {
@@ -4420,7 +4470,7 @@ var PaintStrokeSession = (_class9 = class {
4420
4470
  for (const [key, { tx, ty, r }] of regions) {
4421
4471
  if (this.deep) {
4422
4472
  const rt = this.retouch;
4423
- const paint = _optionalChain([rt, 'optionalAccess', _114 => _114.kind]) === "coverage" ? rt.paint() : null;
4473
+ const paint = _optionalChain([rt, 'optionalAccess', _115 => _115.kind]) === "coverage" ? rt.paint() : null;
4424
4474
  if (paint && paint.kind !== "tone") {
4425
4475
  const prevWork = this.touched.has(key) ? this.work.get(key) : void 0;
4426
4476
  this.touched.add(key);
@@ -4431,13 +4481,13 @@ var PaintStrokeSession = (_class9 = class {
4431
4481
  const prev2 = this.touched.has(key) ? this.liveDeep.get(key) : void 0;
4432
4482
  this.touched.add(key);
4433
4483
  const opts = prev2 ? { into: prev2, region: r, channels: ch } : { channels: ch };
4434
- const d = _optionalChain([rt, 'optionalAccess', _115 => _115.kind]) === "coverage" && _optionalChain([paint, 'optionalAccess', _116 => _116.kind]) === "tone" ? _chunk7NW46N7Icjs.applyToneToDeepTile.call(void 0, stroke.coverage, src2, tx, ty, paint.tone, rt.apply, opts) : _chunkEBDCRTZIcjs.applyStrokeToDeepTile.call(void 0, stroke.coverage, src2, tx, ty, this.apply, opts);
4484
+ const d = _optionalChain([rt, 'optionalAccess', _116 => _116.kind]) === "coverage" && _optionalChain([paint, 'optionalAccess', _117 => _117.kind]) === "tone" ? _chunk7NW46N7Icjs.applyToneToDeepTile.call(void 0, stroke.coverage, src2, tx, ty, paint.tone, rt.apply, opts) : _chunkEBDCRTZIcjs.applyStrokeToDeepTile.call(void 0, stroke.coverage, src2, tx, ty, this.apply, opts);
4435
4485
  this.liveDeep.set(key, d);
4436
4486
  this.live.set(key, { data: _chunkCWM3CUUXcjs.proxyOf.call(void 0, d, ch), uniform: null, deep: d });
4437
4487
  continue;
4438
4488
  }
4439
- const src = _nullishCoalesce(_optionalChain([this, 'access', _117 => _117.base, 'access', _118 => _118.tiles, 'access', _119 => _119.get, 'call', _120 => _120(key), 'optionalAccess', _121 => _121.data]), () => ( defaultTile(this.base)));
4440
- const prev = this.touched.has(key) ? _optionalChain([this, 'access', _122 => _122.live, 'access', _123 => _123.get, 'call', _124 => _124(key), 'optionalAccess', _125 => _125.data]) : void 0;
4489
+ const src = _nullishCoalesce(_optionalChain([this, 'access', _118 => _118.base, 'access', _119 => _119.tiles, 'access', _120 => _120.get, 'call', _121 => _121(key), 'optionalAccess', _122 => _122.data]), () => ( defaultTile(this.base)));
4490
+ const prev = this.touched.has(key) ? _optionalChain([this, 'access', _123 => _123.live, 'access', _124 => _124.get, 'call', _125 => _125(key), 'optionalAccess', _126 => _126.data]) : void 0;
4441
4491
  this.touched.add(key);
4442
4492
  const data = this.compositeTile(src, tx, ty, prev ? { into: prev, region: r } : {});
4443
4493
  this.live.set(key, { data, uniform: null });
@@ -4449,12 +4499,12 @@ var PaintStrokeSession = (_class9 = class {
4449
4499
  if (this.closed) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("This stroke has already ended.");
4450
4500
  const last = _nullishCoalesce(this.last, () => ( void 0));
4451
4501
  const rects = this.mixer ? this.mixer.finish(last) : this.stroke.finish(last);
4452
- _optionalChain([this, 'access', _126 => _126.flushView, 'optionalCall', _127 => _127()]);
4502
+ _optionalChain([this, 'access', _127 => _127.flushView, 'optionalCall', _128 => _128()]);
4453
4503
  this.update(rects);
4454
4504
  this.closed = true;
4455
4505
  const ch = this.base.channels;
4456
4506
  const r = this.retouch;
4457
- if (_optionalChain([r, 'optionalAccess', _128 => _128.kind]) === "coverage" && r.finalPaint) {
4507
+ if (_optionalChain([r, 'optionalAccess', _129 => _129.kind]) === "coverage" && r.finalPaint) {
4458
4508
  const final = r.finalPaint(this.stroke.coverage);
4459
4509
  if (final) {
4460
4510
  for (const key of this.touched) {
@@ -4463,7 +4513,7 @@ var PaintStrokeSession = (_class9 = class {
4463
4513
  this.retouchDeepTile(key, tx, ty, final, {});
4464
4514
  continue;
4465
4515
  }
4466
- const src = _nullishCoalesce(_optionalChain([this, 'access', _129 => _129.base, 'access', _130 => _130.tiles, 'access', _131 => _131.get, 'call', _132 => _132(key), 'optionalAccess', _133 => _133.data]), () => ( defaultTile(this.base)));
4516
+ const src = _nullishCoalesce(_optionalChain([this, 'access', _130 => _130.base, 'access', _131 => _131.tiles, 'access', _132 => _132.get, 'call', _133 => _133(key), 'optionalAccess', _134 => _134.data]), () => ( defaultTile(this.base)));
4467
4517
  this.live.set(key, { data: this.compositeTile(src, tx, ty, {}, final), uniform: null });
4468
4518
  }
4469
4519
  }
@@ -4485,7 +4535,7 @@ var PaintStrokeSession = (_class9 = class {
4485
4535
  const b = this.mixer ? this.mixer.bounds : this.stroke.coverage.bounds;
4486
4536
  const result = { layerId: this.target.id, channel: this.target.channel, bounds: changed ? b : null, dabs: (_nullishCoalesce(this.mixer, () => ( this.stroke))).dabCount };
4487
4537
  if (mixerLoad) result.mixerLoad = mixerLoad;
4488
- if (_optionalChain([r, 'optionalAccess', _134 => _134.result])) Object.assign(result, r.result());
4538
+ if (_optionalChain([r, 'optionalAccess', _135 => _135.result])) Object.assign(result, r.result());
4489
4539
  return result;
4490
4540
  }
4491
4541
  /** Abandons the stroke and restores the layer. */
@@ -4611,14 +4661,14 @@ function migrateSerializedImageEditorState(data) {
4611
4661
  const legacy = data;
4612
4662
  const adjustments = normalizeStoredAdjustments(legacy.adjustments);
4613
4663
  return {
4614
- version: _optionalChain([adjustments, 'access', _135 => _135.layers, 'optionalAccess', _136 => _136.length]) ? 2 : 1,
4664
+ version: _optionalChain([adjustments, 'access', _136 => _136.layers, 'optionalAccess', _137 => _137.length]) ? 2 : 1,
4615
4665
  crop: legacy.crop ? { ...legacy.crop } : null,
4616
4666
  transform: { ...DEFAULT_TRANSFORM, ...legacy.transform },
4617
4667
  adjustments: serializeAdjustments(adjustments),
4618
4668
  depthMask: {
4619
4669
  ...DEFAULT_DEPTH_MASK,
4620
4670
  ...legacy.depthMask,
4621
- depthRange: [..._nullishCoalesce(_optionalChain([legacy, 'access', _137 => _137.depthMask, 'optionalAccess', _138 => _138.depthRange]), () => ( DEFAULT_DEPTH_MASK.depthRange))]
4671
+ depthRange: [..._nullishCoalesce(_optionalChain([legacy, 'access', _138 => _138.depthMask, 'optionalAccess', _139 => _139.depthRange]), () => ( DEFAULT_DEPTH_MASK.depthRange))]
4622
4672
  },
4623
4673
  annotations: JSON.parse(JSON.stringify(_nullishCoalesce(legacy.annotations, () => ( [])))),
4624
4674
  ...legacy.selection ? { selection: { ...legacy.selection } } : {}
@@ -4669,15 +4719,18 @@ var ImageEditorController = (_class10 = class {
4669
4719
  __init72() {this.viewKey = []}
4670
4720
  /** For `compositePixels` and mask evaluation (the renderer keeps its own for the viewport). */
4671
4721
  __init73() {this.compositor = new (0, _chunkUHMSMUHKcjs.LayerCompositor)()}
4722
+ /** The segmentation provider behind `selectSubject` (see `setSegmentationProvider`). */
4723
+ __init74() {this.segmentation = null}
4672
4724
  /** The effects provider slot (see `setEffectsProvider`). */
4673
- __init74() {this.effects = new (0, _chunkA3A5TI6Rcjs.EffectsSlot)()}
4725
+ __init75() {this.effects = new (0, _chunkA3A5TI6Rcjs.EffectsSlot)()}
4674
4726
  /** Renders provider effects: effect smart filter results and effect layers. */
4675
- __init75() {this.effectsEngine = new ImageEffectsEngine({ slot: this.effects })}
4676
- __init76() {this.effectRefresh = "none"}
4677
- constructor(options = {}) {;_class10.prototype.__init63.call(this);_class10.prototype.__init64.call(this);_class10.prototype.__init65.call(this);_class10.prototype.__init66.call(this);_class10.prototype.__init67.call(this);_class10.prototype.__init68.call(this);_class10.prototype.__init69.call(this);_class10.prototype.__init70.call(this);_class10.prototype.__init71.call(this);_class10.prototype.__init72.call(this);_class10.prototype.__init73.call(this);_class10.prototype.__init74.call(this);_class10.prototype.__init75.call(this);_class10.prototype.__init76.call(this);_class10.prototype.__init77.call(this);_class10.prototype.__init78.call(this);_class10.prototype.__init79.call(this);_class10.prototype.__init80.call(this);_class10.prototype.__init81.call(this);_class10.prototype.__init82.call(this);_class10.prototype.__init83.call(this);_class10.prototype.__init84.call(this);_class10.prototype.__init85.call(this);_class10.prototype.__init86.call(this);_class10.prototype.__init87.call(this);_class10.prototype.__init88.call(this);_class10.prototype.__init89.call(this);
4727
+ __init76() {this.effectsEngine = new ImageEffectsEngine({ slot: this.effects })}
4728
+ __init77() {this.effectRefresh = "none"}
4729
+ constructor(options = {}) {;_class10.prototype.__init63.call(this);_class10.prototype.__init64.call(this);_class10.prototype.__init65.call(this);_class10.prototype.__init66.call(this);_class10.prototype.__init67.call(this);_class10.prototype.__init68.call(this);_class10.prototype.__init69.call(this);_class10.prototype.__init70.call(this);_class10.prototype.__init71.call(this);_class10.prototype.__init72.call(this);_class10.prototype.__init73.call(this);_class10.prototype.__init74.call(this);_class10.prototype.__init75.call(this);_class10.prototype.__init76.call(this);_class10.prototype.__init77.call(this);_class10.prototype.__init78.call(this);_class10.prototype.__init79.call(this);_class10.prototype.__init80.call(this);_class10.prototype.__init81.call(this);_class10.prototype.__init82.call(this);_class10.prototype.__init83.call(this);_class10.prototype.__init84.call(this);_class10.prototype.__init85.call(this);_class10.prototype.__init86.call(this);_class10.prototype.__init87.call(this);_class10.prototype.__init88.call(this);_class10.prototype.__init89.call(this);_class10.prototype.__init90.call(this);
4678
4730
  this.effects.subscribe(() => this.queueEffectRefresh("all"));
4679
4731
  this.effectsEngine.subscribe(() => this.queueEffectRefresh("incomplete"));
4680
4732
  if (options.effects) this.effects.set(options.effects);
4733
+ if (options.segmentation) this.segmentation = options.segmentation;
4681
4734
  this.maxHistoryDepth = _nullishCoalesce(options.maxHistoryDepth, () => ( 50));
4682
4735
  if (options.textShaper !== void 0) this.textShaperValue = options.textShaper;
4683
4736
  this.maxHistoryBytes = _nullishCoalesce(options.maxHistoryBytes, () => ( 512 * 1024 * 1024));
@@ -4691,7 +4744,7 @@ var ImageEditorController = (_class10 = class {
4691
4744
  sourceIsOpaque: () => this.sourceIsOpaque(),
4692
4745
  version: () => `${this.sourceVersion()}:${this.patternsVersion()}`,
4693
4746
  globalLight: () => this.state.globalLight,
4694
- pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _139 => _139.state, 'access', _140 => _140.patterns, 'optionalAccess', _141 => _141.find, 'call', _142 => _142((p) => p.id === id)]), () => ( null))
4747
+ pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _140 => _140.state, 'access', _141 => _141.patterns, 'optionalAccess', _142 => _142.find, 'call', _143 => _143((p) => p.id === id)]), () => ( null))
4695
4748
  };
4696
4749
  this.state = {
4697
4750
  sourceUrl: typeof options.image === "string" ? options.image : null,
@@ -4724,10 +4777,10 @@ var ImageEditorController = (_class10 = class {
4724
4777
  };
4725
4778
  }
4726
4779
  this.applyStored(_nullishCoalesce(options.initialState, () => ( {})));
4727
- if (_optionalChain([options, 'access', _143 => _143.initialState, 'optionalAccess', _144 => _144.selection])) {
4780
+ if (_optionalChain([options, 'access', _144 => _144.initialState, 'optionalAccess', _145 => _145.selection])) {
4728
4781
  try {
4729
4782
  this.state.selection = normalizeSelection(_chunkUHMSMUHKcjs.deserializeSelection.call(void 0, options.initialState.selection));
4730
- } catch (e17) {
4783
+ } catch (e18) {
4731
4784
  }
4732
4785
  }
4733
4786
  this.initialSnapshot = this.captureHistoryEntry();
@@ -4769,7 +4822,7 @@ var ImageEditorController = (_class10 = class {
4769
4822
  height: img.naturalHeight || img.height || 600
4770
4823
  }
4771
4824
  };
4772
- } catch (e18) {
4825
+ } catch (e19) {
4773
4826
  return { sourceUrl: src, element: null, dimensions: { ...this.state.imageDimensions } };
4774
4827
  }
4775
4828
  }
@@ -4802,7 +4855,7 @@ var ImageEditorController = (_class10 = class {
4802
4855
  * Where layer pixels changed since the last viewport render, when only strokes changed them
4803
4856
  * (the renderer then recomposites just those rectangles); `'all'` after any other change.
4804
4857
  */
4805
- __init77() {this.pendingDirty = "all"}
4858
+ __init78() {this.pendingDirty = "all"}
4806
4859
  notify(strokeRects) {
4807
4860
  if (strokeRects) this.docRevision++;
4808
4861
  if (strokeRects && this.pendingDirty !== "all") this.pendingDirty.push(...strokeRects);
@@ -4810,7 +4863,7 @@ var ImageEditorController = (_class10 = class {
4810
4863
  this.syncViews();
4811
4864
  this.syncDisplay();
4812
4865
  const currentState = { ...this.state };
4813
- _optionalChain([this, 'access', _145 => _145.onStateChange, 'optionalCall', _146 => _146(currentState)]);
4866
+ _optionalChain([this, 'access', _146 => _146.onStateChange, 'optionalCall', _147 => _147(currentState)]);
4814
4867
  this.listeners.forEach((l) => l(currentState));
4815
4868
  if (this.effects.provider) this.queueEffectRefresh("incomplete");
4816
4869
  }
@@ -4839,11 +4892,11 @@ var ImageEditorController = (_class10 = class {
4839
4892
  if (l.type === "group") {
4840
4893
  const children = walk(l.children);
4841
4894
  if (children !== l.children) next2 = { ...l, children };
4842
- } else if (l.type === "smart" && _optionalChain([l, 'access', _147 => _147.smartFilters, 'optionalAccess', _148 => _148.filters, 'access', _149 => _149.some, 'call', _150 => _150((f) => f.kind === "effect")]) && (all || _chunkUHMSMUHKcjs.isSmartSurfaceIncomplete.call(void 0, l.surface))) {
4895
+ } else if (l.type === "smart" && _optionalChain([l, 'access', _148 => _148.smartFilters, 'optionalAccess', _149 => _149.filters, 'access', _150 => _150.some, 'call', _151 => _151((f) => f.kind === "effect")]) && (all || _chunkUHMSMUHKcjs.isSmartSurfaceIncomplete.call(void 0, l.surface))) {
4843
4896
  try {
4844
4897
  const r = _chunkUHMSMUHKcjs.rerender.call(void 0, l, canvas);
4845
4898
  if (all || !_chunkUHMSMUHKcjs.isSmartSurfaceIncomplete.call(void 0, r.surface)) next2 = r;
4846
- } catch (e19) {
4899
+ } catch (e20) {
4847
4900
  }
4848
4901
  }
4849
4902
  if (next2 !== l) {
@@ -4859,6 +4912,16 @@ var ImageEditorController = (_class10 = class {
4859
4912
  this.state.layers = next;
4860
4913
  this.notify();
4861
4914
  }
4915
+ /** The registered segmentation provider, or `null` (then `selectSubject` is unavailable). */
4916
+ get segmentationProvider() {
4917
+ return this.segmentation;
4918
+ }
4919
+ /** Registers (or with `null` removes) the segmentation provider. Not an edit: no undo step. */
4920
+ setSegmentationProvider(provider) {
4921
+ if (this.segmentation === provider) return;
4922
+ this.segmentation = provider;
4923
+ this.notify();
4924
+ }
4862
4925
  /** The registered effects provider, or `null`. */
4863
4926
  get effectsProvider() {
4864
4927
  return this.effects.provider;
@@ -4922,8 +4985,8 @@ var ImageEditorController = (_class10 = class {
4922
4985
  */
4923
4986
  async updateEffectFilter(layerId, filterId, changes, commitToHistory = true) {
4924
4987
  const layer = _chunkUHMSMUHKcjs.requireSmartObject.call(void 0, this.state.layers, layerId);
4925
- const was = _optionalChain([layer, 'access', _151 => _151.smartFilters, 'optionalAccess', _152 => _152.filters, 'access', _153 => _153.find, 'call', _154 => _154((f) => f.id === filterId)]);
4926
- if (!was || was.kind !== "effect") throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Smart object "${layer.name || layerId}" has no effect filter "${filterId}"; its filters are ${(_nullishCoalesce(_optionalChain([layer, 'access', _155 => _155.smartFilters, 'optionalAccess', _156 => _156.filters]), () => ( []))).map((f) => `${f.id} (${f.kind === "effect" ? _nullishCoalesce(f.name, () => ( f.effect)) : f.kind})`).join(", ") || "none"}.`);
4988
+ const was = _optionalChain([layer, 'access', _152 => _152.smartFilters, 'optionalAccess', _153 => _153.filters, 'access', _154 => _154.find, 'call', _155 => _155((f) => f.id === filterId)]);
4989
+ if (!was || was.kind !== "effect") throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Smart object "${layer.name || layerId}" has no effect filter "${filterId}"; its filters are ${(_nullishCoalesce(_optionalChain([layer, 'access', _156 => _156.smartFilters, 'optionalAccess', _157 => _157.filters]), () => ( []))).map((f) => `${f.id} (${f.kind === "effect" ? _nullishCoalesce(f.name, () => ( f.effect)) : f.kind})`).join(", ") || "none"}.`);
4927
4990
  const update = {};
4928
4991
  if (changes.values) {
4929
4992
  const d = await this.describeEffect(was.effect);
@@ -4965,7 +5028,7 @@ var ImageEditorController = (_class10 = class {
4965
5028
  const layer = {
4966
5029
  type: "pixel",
4967
5030
  id,
4968
- name: _optionalChain([options, 'access', _157 => _157.name, 'optionalAccess', _158 => _158.trim, 'call', _159 => _159()]) || d.name,
5031
+ name: _optionalChain([options, 'access', _158 => _158.name, 'optionalAccess', _159 => _159.trim, 'call', _160 => _160()]) || d.name,
4969
5032
  visible: true,
4970
5033
  opacity: _nullishCoalesce(options.opacity, () => ( 1)),
4971
5034
  blend: _nullishCoalesce(blend, () => ( "normal")),
@@ -4990,7 +5053,7 @@ var ImageEditorController = (_class10 = class {
4990
5053
  */
4991
5054
  async updateEffectLayer(layerId, changes, commitToHistory = true) {
4992
5055
  const found = _chunkHGTDMKNEcjs.findLayer.call(void 0, this.state.layers, layerId);
4993
- const layer = _optionalChain([found, 'optionalAccess', _160 => _160.layer]);
5056
+ const layer = _optionalChain([found, 'optionalAccess', _161 => _161.layer]);
4994
5057
  if (!layer || layer.type !== "pixel" || !layer.generator) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`"${layerId}" is not an effect layer; add one with add_effect_layer.`);
4995
5058
  _chunkUHMSMUHKcjs.requireUnlocked.call(void 0, layer, "pixels", "draw its effect again");
4996
5059
  const g = layer.generator;
@@ -5019,7 +5082,7 @@ var ImageEditorController = (_class10 = class {
5019
5082
  * and how long it runs, the longest of theirs (ms). Null when none animates.
5020
5083
  */
5021
5084
  getAnimation() {
5022
- const layers = _chunkHGTDMKNEcjs.flattenLayers.call(void 0, this.state.layers).filter((l) => l.type === "pixel" && l.visible && !!_optionalChain([l, 'access', _161 => _161.generator, 'optionalAccess', _162 => _162.animate]));
5085
+ const layers = _chunkHGTDMKNEcjs.flattenLayers.call(void 0, this.state.layers).filter((l) => l.type === "pixel" && l.visible && !!_optionalChain([l, 'access', _162 => _162.generator, 'optionalAccess', _163 => _163.animate]));
5023
5086
  if (!layers.length) return null;
5024
5087
  return { duration: Math.max(...layers.map((l) => l.generator.animate.duration)), layerIds: layers.map((l) => l.id) };
5025
5088
  }
@@ -5036,7 +5099,7 @@ var ImageEditorController = (_class10 = class {
5036
5099
  const { width, height } = this.naturalSize;
5037
5100
  const surfaces = /* @__PURE__ */ new Map();
5038
5101
  for (const l of _chunkHGTDMKNEcjs.flattenLayers.call(void 0, this.state.layers)) {
5039
- if (l.type !== "pixel" || !l.visible || !_optionalChain([l, 'access', _163 => _163.generator, 'optionalAccess', _164 => _164.animate])) continue;
5102
+ if (l.type !== "pixel" || !l.visible || !_optionalChain([l, 'access', _164 => _164.generator, 'optionalAccess', _165 => _165.animate])) continue;
5040
5103
  const g = l.generator;
5041
5104
  const pixels = await this.effectsEngine.renderLayer(g.effect, g.values, { width, height, depth: this.bitDepth, time: (_nullishCoalesce(g.time, () => ( 0))) + time });
5042
5105
  surfaces.set(l.id, effectPixelsToSurface(pixels, this.bitDepth));
@@ -5056,7 +5119,7 @@ var ImageEditorController = (_class10 = class {
5056
5119
  })
5057
5120
  );
5058
5121
  }
5059
- __init78() {this.displayFor = null}
5122
+ __init79() {this.displayFor = null}
5060
5123
  /** Keeps the renderer's display transform in step with the document profile, mode and Proof Setup. */
5061
5124
  syncDisplay() {
5062
5125
  const s = this.state;
@@ -5065,7 +5128,7 @@ var ImageEditorController = (_class10 = class {
5065
5128
  this.displayFor = [s.colorProfile, s.proofSetup, s.colorMode];
5066
5129
  try {
5067
5130
  this.renderer.setDisplayTransform(displayTransform(s.colorProfile, effectiveProof(s.proofSetup, s.colorMode)));
5068
- } catch (e20) {
5131
+ } catch (e21) {
5069
5132
  this.renderer.setDisplayTransform(null);
5070
5133
  }
5071
5134
  }
@@ -5171,7 +5234,7 @@ var ImageEditorController = (_class10 = class {
5171
5234
  get canUndo() {
5172
5235
  return this.undoStack.length > 0;
5173
5236
  }
5174
- __init79() {this.docRevision = 0}
5237
+ __init80() {this.docRevision = 0}
5175
5238
  /**
5176
5239
  * Bumped on every change to the document (an undoable edit, a stroke, undo, redo), not on view
5177
5240
  * or tool changes, nor on `loadImage` (the source image is the host's, not part of the document). `createImageEditorDocument` uses it to tell document changes apart.
@@ -5303,7 +5366,7 @@ var ImageEditorController = (_class10 = class {
5303
5366
  return this.state.layers;
5304
5367
  }
5305
5368
  getLayer(id) {
5306
- return _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, this.state.layers, id), 'optionalAccess', _165 => _165.layer]);
5369
+ return _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, this.state.layers, id), 'optionalAccess', _166 => _166.layer]);
5307
5370
  }
5308
5371
  /** The active layer, or `undefined`. */
5309
5372
  getActiveLayer() {
@@ -5316,7 +5379,7 @@ var ImageEditorController = (_class10 = class {
5316
5379
  setActiveLayer(id, target = "pixels") {
5317
5380
  if (id !== null && !this.getLayer(id)) return false;
5318
5381
  const layer = id ? this.getLayer(id) : void 0;
5319
- const t = target === "mask" && _optionalChain([layer, 'optionalAccess', _166 => _166.mask]) ? "mask" : target === "filter-mask" && _optionalChain([layer, 'optionalAccess', _167 => _167.type]) === "smart" && _optionalChain([layer, 'access', _168 => _168.smartFilters, 'optionalAccess', _169 => _169.mask]) ? "filter-mask" : "pixels";
5382
+ const t = target === "mask" && _optionalChain([layer, 'optionalAccess', _167 => _167.mask]) ? "mask" : target === "filter-mask" && _optionalChain([layer, 'optionalAccess', _168 => _168.type]) === "smart" && _optionalChain([layer, 'access', _169 => _169.smartFilters, 'optionalAccess', _170 => _170.mask]) ? "filter-mask" : "pixels";
5320
5383
  if (this.state.activeLayerId === id && this.state.activeTarget === t) return true;
5321
5384
  this.state.activeLayerId = id;
5322
5385
  this.state.activeTarget = t;
@@ -5335,7 +5398,7 @@ var ImageEditorController = (_class10 = class {
5335
5398
  if (!b) return null;
5336
5399
  return { x: b.x + layer.offset.x, y: b.y + layer.offset.y, width: b.width, height: b.height, data: _chunkCWM3CUUXcjs.readRegion.call(void 0, surface, b) };
5337
5400
  }
5338
- __init80() {this.boundsCache = /* @__PURE__ */ new WeakMap()}
5401
+ __init81() {this.boundsCache = /* @__PURE__ */ new WeakMap()}
5339
5402
  /**
5340
5403
  * Document bounds of a layer's non-transparent pixels (pixel layers; the Background's source
5341
5404
  * included), or `null` for an empty or non-pixel layer.
@@ -5478,11 +5541,11 @@ var ImageEditorController = (_class10 = class {
5478
5541
  surfaceOf: (l) => this.surfaceOf(l),
5479
5542
  version: `${this.sourceVersion()}:${this.patternsVersion()}`,
5480
5543
  globalLight: this.state.globalLight,
5481
- pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _170 => _170.state, 'access', _171 => _171.patterns, 'optionalAccess', _172 => _172.find, 'call', _173 => _173((p) => p.id === id)]), () => ( null))
5544
+ pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _171 => _171.state, 'access', _172 => _172.patterns, 'optionalAccess', _173 => _173.find, 'call', _174 => _174((p) => p.id === id)]), () => ( null))
5482
5545
  };
5483
5546
  }
5484
- __init81() {this.sourceIds = /* @__PURE__ */ new WeakMap()}
5485
- __init82() {this.nextSourceId = 1}
5547
+ __init82() {this.sourceIds = /* @__PURE__ */ new WeakMap()}
5548
+ __init83() {this.nextSourceId = 1}
5486
5549
  /** Changes whenever the Background's source pixels can have changed. */
5487
5550
  sourceVersion() {
5488
5551
  const key = this.samplePixelsOverride ? this.samplePixels : _nullishCoalesce(this.imageElement, () => ( this.samplePixels));
@@ -5531,7 +5594,7 @@ var ImageEditorController = (_class10 = class {
5531
5594
  }
5532
5595
  return fits ? fromPixels(px2) : null;
5533
5596
  }
5534
- __init83() {this.opaqueCache = /* @__PURE__ */ new WeakMap()}
5597
+ __init84() {this.opaqueCache = /* @__PURE__ */ new WeakMap()}
5535
5598
  /** Whether every source pixel is opaque (some legacy renders depend on it). */
5536
5599
  sourceIsOpaque() {
5537
5600
  const s = this.sourceSurface();
@@ -5555,9 +5618,9 @@ var ImageEditorController = (_class10 = class {
5555
5618
  if (!ctx || typeof ctx.getImageData !== "function") return null;
5556
5619
  ctx.drawImage(el, 0, 0, width, height);
5557
5620
  const data = ctx.getImageData(0, 0, width, height);
5558
- if (!_optionalChain([data, 'optionalAccess', _174 => _174.data]) || data.data.length < width * height * 4) return null;
5621
+ if (!_optionalChain([data, 'optionalAccess', _175 => _175.data]) || data.data.length < width * height * 4) return null;
5559
5622
  return { width, height, data: data.data };
5560
- } catch (e21) {
5623
+ } catch (e22) {
5561
5624
  return null;
5562
5625
  }
5563
5626
  }
@@ -5568,7 +5631,7 @@ var ImageEditorController = (_class10 = class {
5568
5631
  const prev = this.state.layers;
5569
5632
  const depth = this.bitDepth;
5570
5633
  this.state.layers = next;
5571
- _optionalChain([extra, 'optionalCall', _175 => _175()]);
5634
+ _optionalChain([extra, 'optionalCall', _176 => _176()]);
5572
5635
  if (depth !== 8 && this.bitDepth === depth) this.state.layers = keepDeepLayers(prev, this.state.layers);
5573
5636
  if (this.state.activeLayerId && !_chunkHGTDMKNEcjs.findLayer.call(void 0, this.state.layers, this.state.activeLayerId)) {
5574
5637
  this.state.activeLayerId = _chunkUHMSMUHKcjs.activeLayerAfterRemoval.call(void 0, prev, this.state.layers, this.state.activeLayerId);
@@ -5606,7 +5669,7 @@ var ImageEditorController = (_class10 = class {
5606
5669
  const layer = {
5607
5670
  type: "pixel",
5608
5671
  id: init.id && !ids.has(init.id) ? init.id : _chunkUHMSMUHKcjs.newLayerId.call(void 0, ),
5609
- name: _optionalChain([init, 'access', _176 => _176.name, 'optionalAccess', _177 => _177.trim, 'call', _178 => _178()]) || this.nextLayerName(),
5672
+ name: _optionalChain([init, 'access', _177 => _177.name, 'optionalAccess', _178 => _178.trim, 'call', _179 => _179()]) || this.nextLayerName(),
5610
5673
  visible: _nullishCoalesce(init.visible, () => ( true)),
5611
5674
  opacity: _nullishCoalesce(init.opacity, () => ( 1)),
5612
5675
  blend: _nullishCoalesce(blend, () => ( "normal")),
@@ -5633,12 +5696,12 @@ var ImageEditorController = (_class10 = class {
5633
5696
  async decodeImage(image) {
5634
5697
  const trimmed = image.trim();
5635
5698
  let png = null;
5636
- if (/^data:image\/png/i.test(trimmed)) png = _nullishCoalesce(_optionalChain([_chunkCWM3CUUXcjs.parseDataUrl.call(void 0, trimmed), 'optionalAccess', _179 => _179.bytes]), () => ( null));
5699
+ if (/^data:image\/png/i.test(trimmed)) png = _nullishCoalesce(_optionalChain([_chunkCWM3CUUXcjs.parseDataUrl.call(void 0, trimmed), 'optionalAccess', _180 => _180.bytes]), () => ( null));
5637
5700
  else if (/^[A-Za-z0-9+/=\s]+$/.test(trimmed) && trimmed.length > 16) {
5638
5701
  try {
5639
5702
  const bytes = _chunkCWM3CUUXcjs.base64ToBytes.call(void 0, trimmed);
5640
5703
  if (_chunkCWM3CUUXcjs.isPng.call(void 0, bytes)) png = bytes;
5641
- } catch (e22) {
5704
+ } catch (e23) {
5642
5705
  png = null;
5643
5706
  }
5644
5707
  }
@@ -5646,14 +5709,14 @@ var ImageEditorController = (_class10 = class {
5646
5709
  try {
5647
5710
  const d = _chunkCWM3CUUXcjs.decodePng.call(void 0, png);
5648
5711
  return { width: d.width, height: d.height, data: d.data };
5649
- } catch (e23) {
5712
+ } catch (e24) {
5650
5713
  }
5651
5714
  }
5652
5715
  const src = png ? `data:image/png;base64,${_chunkCWM3CUUXcjs.bytesToBase64.call(void 0, png)}` : trimmed;
5653
5716
  let img;
5654
5717
  try {
5655
5718
  img = await this.renderer.imageCache.get(src);
5656
- } catch (e24) {
5719
+ } catch (e25) {
5657
5720
  throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("The image could not be decoded here. Pass a PNG (data URL or base64), or run in a browser for other formats and URLs.");
5658
5721
  }
5659
5722
  const w = img.naturalWidth || img.width;
@@ -5682,7 +5745,7 @@ var ImageEditorController = (_class10 = class {
5682
5745
  removeLayer(id) {
5683
5746
  const next = _chunkUHMSMUHKcjs.removeLayer.call(void 0, this.state.layers, id);
5684
5747
  this.commitLayers(next, () => {
5685
- if (this.state.selectedAnnotationId && !_chunkHGTDMKNEcjs.flattenLayers.call(void 0, next).some((l) => _optionalChain([_chunkUHMSMUHKcjs.annotationOfLayer.call(void 0, l), 'optionalAccess', _180 => _180.id]) === this.state.selectedAnnotationId)) {
5748
+ if (this.state.selectedAnnotationId && !_chunkHGTDMKNEcjs.flattenLayers.call(void 0, next).some((l) => _optionalChain([_chunkUHMSMUHKcjs.annotationOfLayer.call(void 0, l), 'optionalAccess', _181 => _181.id]) === this.state.selectedAnnotationId)) {
5686
5749
  this.state.selectedAnnotationId = null;
5687
5750
  }
5688
5751
  });
@@ -5691,9 +5754,9 @@ var ImageEditorController = (_class10 = class {
5691
5754
  moveLayer(id, placement) {
5692
5755
  const next = _chunkUHMSMUHKcjs.moveLayer.call(void 0, this.state.layers, id, placement);
5693
5756
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, next, id);
5694
- if (next === this.state.layers) return { parentId: _nullishCoalesce(_optionalChain([loc, 'access', _181 => _181.parent, 'optionalAccess', _182 => _182.id]), () => ( null)), index: loc.index };
5757
+ if (next === this.state.layers) return { parentId: _nullishCoalesce(_optionalChain([loc, 'access', _182 => _182.parent, 'optionalAccess', _183 => _183.id]), () => ( null)), index: loc.index };
5695
5758
  this.commitLayers(next);
5696
- return { parentId: _nullishCoalesce(_optionalChain([loc, 'access', _183 => _183.parent, 'optionalAccess', _184 => _184.id]), () => ( null)), index: loc.index };
5759
+ return { parentId: _nullishCoalesce(_optionalChain([loc, 'access', _184 => _184.parent, 'optionalAccess', _185 => _185.id]), () => ( null)), index: loc.index };
5697
5760
  }
5698
5761
  /**
5699
5762
  * Changes name, visibility, opacity, fill, blend, clipping, locks or (groups) collapsed state, as
@@ -5710,7 +5773,7 @@ var ImageEditorController = (_class10 = class {
5710
5773
  const group = {
5711
5774
  type: "group",
5712
5775
  id: _chunkUHMSMUHKcjs.newLayerId.call(void 0, "group"),
5713
- name: _optionalChain([init, 'access', _185 => _185.name, 'optionalAccess', _186 => _186.trim, 'call', _187 => _187()]) || "Group",
5776
+ name: _optionalChain([init, 'access', _186 => _186.name, 'optionalAccess', _187 => _187.trim, 'call', _188 => _188()]) || "Group",
5714
5777
  visible: true,
5715
5778
  opacity: 1,
5716
5779
  blend,
@@ -5797,7 +5860,7 @@ var ImageEditorController = (_class10 = class {
5797
5860
  let mask;
5798
5861
  if (from === "selection") {
5799
5862
  const sel = this.state.selection;
5800
- if (!_optionalChain([sel, 'optionalAccess', _188 => _188.bounds])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Nothing is selected; select first, or use reveal-all / hide-all.");
5863
+ if (!_optionalChain([sel, 'optionalAccess', _189 => _189.bounds])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Nothing is selected; select first, or use reveal-all / hide-all.");
5801
5864
  mask = this.maskFromSelection(sel, props);
5802
5865
  if (layer.type === "pixel" && (layer.offset.x || layer.offset.y)) {
5803
5866
  mask = { ...mask, surface: _chunkCWM3CUUXcjs.translateSurface.call(void 0, mask.surface, -layer.offset.x, -layer.offset.y) };
@@ -5875,7 +5938,7 @@ var ImageEditorController = (_class10 = class {
5875
5938
  const layer = loc.layer;
5876
5939
  if (layer.type !== "pixel") throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer via copy needs a pixel layer; "${id}" is a ${layer.type} layer.`);
5877
5940
  const sel = this.state.selection;
5878
- if (!_optionalChain([sel, 'optionalAccess', _189 => _189.bounds])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Nothing is selected; select the pixels to copy first.");
5941
+ if (!_optionalChain([sel, 'optionalAccess', _190 => _190.bounds])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Nothing is selected; select the pixels to copy first.");
5879
5942
  if (options.cut) _chunkUHMSMUHKcjs.requireUnlocked.call(void 0, layer, "pixels", "cut from it");
5880
5943
  const surface = this.surfaceOf(layer);
5881
5944
  const sb = sel.bounds;
@@ -5893,14 +5956,14 @@ var ImageEditorController = (_class10 = class {
5893
5956
  const copy = {
5894
5957
  type: "pixel",
5895
5958
  id: _chunkUHMSMUHKcjs.newLayerId.call(void 0, ),
5896
- name: _optionalChain([options, 'access', _190 => _190.name, 'optionalAccess', _191 => _191.trim, 'call', _192 => _192()]) || `${layer.name || "Layer"} ${options.cut ? "cut" : "copy"}`,
5959
+ name: _optionalChain([options, 'access', _191 => _191.name, 'optionalAccess', _192 => _192.trim, 'call', _193 => _193()]) || `${layer.name || "Layer"} ${options.cut ? "cut" : "copy"}`,
5897
5960
  visible: true,
5898
5961
  opacity: 1,
5899
5962
  blend: "normal",
5900
5963
  surface: _chunkCWM3CUUXcjs.surfaceFromPixels.call(void 0, { width: src.width, height: src.height, data: px2 }, 4, src.x, src.y),
5901
5964
  offset: { ...layer.offset }
5902
5965
  };
5903
- let next = _chunkHGTDMKNEcjs.insertLayer.call(void 0, this.state.layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _193 => _193.parent, 'optionalAccess', _194 => _194.id]), () => ( null)), loc.index + 1);
5966
+ let next = _chunkHGTDMKNEcjs.insertLayer.call(void 0, this.state.layers, copy, _nullishCoalesce(_optionalChain([loc, 'access', _194 => _194.parent, 'optionalAccess', _195 => _195.id]), () => ( null)), loc.index + 1);
5904
5967
  if (kept) {
5905
5968
  const cutLayer = { ...layer, surface: _chunkCWM3CUUXcjs.writeRegion.call(void 0, surface, src, kept) };
5906
5969
  delete cutLayer.source;
@@ -5913,7 +5976,7 @@ var ImageEditorController = (_class10 = class {
5913
5976
  return copy.id;
5914
5977
  }
5915
5978
  // --- Free Transform ---
5916
- __init84() {this.openTransform = null}
5979
+ __init85() {this.openTransform = null}
5917
5980
  /** The Free Transform in progress (see `beginFreeTransform`), or `null`. */
5918
5981
  getFreeTransform() {
5919
5982
  if (this.openTransform && !this.openTransform.isOpen) this.openTransform = null;
@@ -5924,7 +5987,7 @@ var ImageEditorController = (_class10 = class {
5924
5987
  layers: () => this.state.layers,
5925
5988
  activeLayerId: () => this.state.activeLayerId,
5926
5989
  activeTarget: () => this.state.activeTarget,
5927
- selection: () => _optionalChain([this, 'access', _195 => _195.state, 'access', _196 => _196.selection, 'optionalAccess', _197 => _197.bounds]) ? this.state.selection : null,
5990
+ selection: () => _optionalChain([this, 'access', _196 => _196.state, 'access', _197 => _197.selection, 'optionalAccess', _198 => _198.bounds]) ? this.state.selection : null,
5928
5991
  canvas: () => this.naturalSize,
5929
5992
  pixelsOf: (layer) => this.surfaceOf(layer),
5930
5993
  shapeEnv: () => this.shapeEnv(),
@@ -6072,7 +6135,7 @@ var ImageEditorController = (_class10 = class {
6072
6135
  * anything else nests as a layer document. Returns the smart object's id.
6073
6136
  */
6074
6137
  convertToSmartObject(ids, options = {}) {
6075
- const list = _optionalChain([ids, 'optionalAccess', _198 => _198.length]) ? ids : this.state.activeLayerId ? [this.state.activeLayerId] : [];
6138
+ const list = _optionalChain([ids, 'optionalAccess', _199 => _199.length]) ? ids : this.state.activeLayerId ? [this.state.activeLayerId] : [];
6076
6139
  if (!list.length) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("No layers given and none is active; pass layerIds (see list_layers).");
6077
6140
  const res = _chunkUHMSMUHKcjs.convertToSmartObject.call(void 0, this.state.layers, list, this.canvasSize, { surfaceOf: (l) => this.surfaceOf(l), name: options.name });
6078
6141
  this.commitLayers(res.layers, () => {
@@ -6105,8 +6168,8 @@ var ImageEditorController = (_class10 = class {
6105
6168
  width: c.width,
6106
6169
  height: c.height,
6107
6170
  decoded: _chunkUHMSMUHKcjs.isContentsDecoded.call(void 0, c),
6108
- fileType: _nullishCoalesce(_optionalChain([c, 'access', _199 => _199.file, 'optionalAccess', _200 => _200.type]), () => ( null)),
6109
- linkedPath: _nullishCoalesce(_optionalChain([c, 'access', _201 => _201.linked, 'optionalAccess', _202 => _202.path]), () => ( null)),
6171
+ fileType: _nullishCoalesce(_optionalChain([c, 'access', _200 => _200.file, 'optionalAccess', _201 => _201.type]), () => ( null)),
6172
+ linkedPath: _nullishCoalesce(_optionalChain([c, 'access', _202 => _202.linked, 'optionalAccess', _203 => _203.path]), () => ( null)),
6110
6173
  instances: _chunkUHMSMUHKcjs.instancesOf.call(void 0, this.state.layers, c.id),
6111
6174
  layerCount: c.document ? _chunkHGTDMKNEcjs.flattenLayers.call(void 0, c.document.layers).length : 0
6112
6175
  },
@@ -6123,9 +6186,9 @@ var ImageEditorController = (_class10 = class {
6123
6186
  bounds: _chunkUHMSMUHKcjs.transformedBox.call(void 0, g)
6124
6187
  },
6125
6188
  smartFilters: {
6126
- enabled: _nullishCoalesce(_optionalChain([stack, 'optionalAccess', _203 => _203.enabled]), () => ( true)),
6127
- filters: (_nullishCoalesce(_optionalChain([stack, 'optionalAccess', _204 => _204.filters]), () => ( []))).map((f) => f.kind === "psd" ? { id: f.id, kind: "psd", name: f.name, enabled: f.enabled, blend: f.blend, opacity: f.opacity } : { ...f }),
6128
- mask: _optionalChain([stack, 'optionalAccess', _205 => _205.mask]) ? { enabled: stack.mask.enabled !== false, linked: stack.mask.linked !== false, density: _nullishCoalesce(stack.mask.density, () => ( 1)), feather: _nullishCoalesce(stack.mask.feather, () => ( 0)), bounds: _chunkCWM3CUUXcjs.contentBounds.call(void 0, stack.mask.surface), defaultValue: stack.mask.defaultValue } : null
6189
+ enabled: _nullishCoalesce(_optionalChain([stack, 'optionalAccess', _204 => _204.enabled]), () => ( true)),
6190
+ filters: (_nullishCoalesce(_optionalChain([stack, 'optionalAccess', _205 => _205.filters]), () => ( []))).map((f) => f.kind === "psd" ? { id: f.id, kind: "psd", name: f.name, enabled: f.enabled, blend: f.blend, opacity: f.opacity } : { ...f }),
6191
+ mask: _optionalChain([stack, 'optionalAccess', _206 => _206.mask]) ? { enabled: stack.mask.enabled !== false, linked: stack.mask.linked !== false, density: _nullishCoalesce(stack.mask.density, () => ( 1)), feather: _nullishCoalesce(stack.mask.feather, () => ( 0)), bounds: _chunkCWM3CUUXcjs.contentBounds.call(void 0, stack.mask.surface), defaultValue: stack.mask.defaultValue } : null
6129
6192
  },
6130
6193
  bounds: this.getLayerBounds(id)
6131
6194
  };
@@ -6266,19 +6329,19 @@ var ImageEditorController = (_class10 = class {
6266
6329
  removeSmartFilter(id, filterId) {
6267
6330
  const res = _chunkUHMSMUHKcjs.removeSmartFilter.call(void 0, this.state.layers, id, filterId, this.canvasSize);
6268
6331
  this.commitLayers(res.layers);
6269
- return _nullishCoalesce(_optionalChain([res, 'access', _206 => _206.layer, 'access', _207 => _207.smartFilters, 'optionalAccess', _208 => _208.filters]), () => ( []));
6332
+ return _nullishCoalesce(_optionalChain([res, 'access', _207 => _207.layer, 'access', _208 => _208.smartFilters, 'optionalAccess', _209 => _209.filters]), () => ( []));
6270
6333
  }
6271
6334
  /** Moves one smart filter to `index` (0 = bottom, applied first), as one undo step. Returns the filters. */
6272
6335
  moveSmartFilter(id, filterId, index) {
6273
6336
  const res = _chunkUHMSMUHKcjs.moveSmartFilter.call(void 0, this.state.layers, id, filterId, index, this.canvasSize);
6274
6337
  this.commitLayers(res.layers);
6275
- return _nullishCoalesce(_optionalChain([res, 'access', _209 => _209.layer, 'access', _210 => _210.smartFilters, 'optionalAccess', _211 => _211.filters]), () => ( []));
6338
+ return _nullishCoalesce(_optionalChain([res, 'access', _210 => _210.layer, 'access', _211 => _211.smartFilters, 'optionalAccess', _212 => _212.filters]), () => ( []));
6276
6339
  }
6277
6340
  /** Turns a smart object's whole filter stack on or off (one undo step). */
6278
6341
  setSmartFiltersEnabled(id, enabled) {
6279
6342
  const res = _chunkUHMSMUHKcjs.setSmartFiltersEnabled.call(void 0, this.state.layers, id, enabled, this.canvasSize);
6280
6343
  this.commitLayers(res.layers);
6281
- return _nullishCoalesce(_optionalChain([res, 'access', _212 => _212.layer, 'access', _213 => _213.smartFilters, 'optionalAccess', _214 => _214.enabled]), () => ( true));
6344
+ return _nullishCoalesce(_optionalChain([res, 'access', _213 => _213.layer, 'access', _214 => _214.smartFilters, 'optionalAccess', _215 => _215.enabled]), () => ( true));
6282
6345
  }
6283
6346
  /**
6284
6347
  * Sets the smart filter mask (one undo step): `reveal-all`, `hide-all`, `selection` (the
@@ -6290,11 +6353,11 @@ var ImageEditorController = (_class10 = class {
6290
6353
  let mask;
6291
6354
  if (from === "none") mask = null;
6292
6355
  else if (from === "keep") {
6293
- if (!_optionalChain([layer, 'access', _215 => _215.smartFilters, 'optionalAccess', _216 => _216.mask])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Smart object "${layer.name || id}" has no filter mask; add one with from reveal-all, hide-all or selection.`);
6356
+ if (!_optionalChain([layer, 'access', _216 => _216.smartFilters, 'optionalAccess', _217 => _217.mask])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Smart object "${layer.name || id}" has no filter mask; add one with from reveal-all, hide-all or selection.`);
6294
6357
  mask = withMaskProps(layer.smartFilters.mask, props);
6295
6358
  } else if (from === "selection") {
6296
6359
  const sel = this.state.selection;
6297
- if (!_optionalChain([sel, 'optionalAccess', _217 => _217.bounds])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Nothing is selected; select first, or use reveal-all / hide-all.");
6360
+ if (!_optionalChain([sel, 'optionalAccess', _218 => _218.bounds])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Nothing is selected; select first, or use reveal-all / hide-all.");
6298
6361
  mask = this.maskFromSelection(sel, props);
6299
6362
  } else {
6300
6363
  const v = from === "reveal-all" ? 255 : 0;
@@ -6306,7 +6369,7 @@ var ImageEditorController = (_class10 = class {
6306
6369
  if (mask && from !== "keep") this.state.activeTarget = "filter-mask";
6307
6370
  else if (!mask && this.state.activeTarget === "filter-mask") this.state.activeTarget = "pixels";
6308
6371
  }, commitToHistory);
6309
- return _nullishCoalesce(_optionalChain([res, 'access', _218 => _218.layer, 'access', _219 => _219.smartFilters, 'optionalAccess', _220 => _220.mask]), () => ( null));
6372
+ return _nullishCoalesce(_optionalChain([res, 'access', _219 => _219.layer, 'access', _220 => _220.smartFilters, 'optionalAccess', _221 => _221.mask]), () => ( null));
6310
6373
  }
6311
6374
  /**
6312
6375
  * Decodes smart object contents that came as files the synchronous decoders cannot read (a JPEG
@@ -6331,7 +6394,7 @@ var ImageEditorController = (_class10 = class {
6331
6394
  };
6332
6395
  this.state.layers = swap(this.state.layers);
6333
6396
  for (const e of [...this.undoStack, ...this.redoStack]) e.layers = swap(e.layers);
6334
- } catch (e25) {
6397
+ } catch (e26) {
6335
6398
  left.push(cid);
6336
6399
  }
6337
6400
  }
@@ -6339,7 +6402,7 @@ var ImageEditorController = (_class10 = class {
6339
6402
  return left;
6340
6403
  }
6341
6404
  // --- Smart object contents (Edit Contents) ---
6342
- __init85() {this.contentsStack = []}
6405
+ __init86() {this.contentsStack = []}
6343
6406
  /** The smart objects whose contents are open (outermost first); empty when the document itself is shown. */
6344
6407
  getEditingContents() {
6345
6408
  return this.contentsStack.map((e) => ({ layerId: e.layerId, name: e.name }));
@@ -6354,7 +6417,7 @@ var ImageEditorController = (_class10 = class {
6354
6417
  if (this.getFreeTransform()) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("A Free Transform is open; commit or cancel it first.");
6355
6418
  const layer = _chunkUHMSMUHKcjs.requireSmartObject.call(void 0, this.state.layers, id);
6356
6419
  const c = layer.contents;
6357
- if (!_chunkUHMSMUHKcjs.isContentsDecoded.call(void 0, c)) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`The contents of "${layer.name || id}" are a ${_nullishCoalesce(_optionalChain([c, 'access', _221 => _221.file, 'optionalAccess', _222 => _222.type]), () => ( "file"))} that could not be decoded here; run prepareSmartObjects() in a browser first.`);
6420
+ if (!_chunkUHMSMUHKcjs.isContentsDecoded.call(void 0, c)) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`The contents of "${layer.name || id}" are a ${_nullishCoalesce(_optionalChain([c, 'access', _222 => _222.file, 'optionalAccess', _223 => _223.type]), () => ( "file"))} that could not be decoded here; run prepareSmartObjects() in a browser first.`);
6358
6421
  const saved = {
6359
6422
  state: { ...this.state },
6360
6423
  undo: this.undoStack,
@@ -6385,9 +6448,9 @@ var ImageEditorController = (_class10 = class {
6385
6448
  editingContents: this.getEditingContents()
6386
6449
  };
6387
6450
  delete this.state.legacyOutputBlur;
6388
- if (_optionalChain([c, 'access', _223 => _223.document, 'optionalAccess', _224 => _224.globalLight])) this.state.globalLight = c.document.globalLight;
6451
+ if (_optionalChain([c, 'access', _224 => _224.document, 'optionalAccess', _225 => _225.globalLight])) this.state.globalLight = c.document.globalLight;
6389
6452
  else delete this.state.globalLight;
6390
- if (_optionalChain([c, 'access', _225 => _225.document, 'optionalAccess', _226 => _226.patterns, 'optionalAccess', _227 => _227.length])) this.state.patterns = c.document.patterns;
6453
+ if (_optionalChain([c, 'access', _226 => _226.document, 'optionalAccess', _227 => _227.patterns, 'optionalAccess', _228 => _228.length])) this.state.patterns = c.document.patterns;
6391
6454
  else delete this.state.patterns;
6392
6455
  this.imageElement = null;
6393
6456
  this.samplePixels = null;
@@ -6407,23 +6470,23 @@ var ImageEditorController = (_class10 = class {
6407
6470
  closeSmartObjectContents(save = true) {
6408
6471
  const top = this.contentsStack.pop();
6409
6472
  if (!top) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("No smart object contents are open; open them with edit_smart_object_contents.");
6410
- if (_optionalChain([this, 'access', _228 => _228.openTransform, 'optionalAccess', _229 => _229.isOpen])) this.openTransform.cancel();
6473
+ if (_optionalChain([this, 'access', _229 => _229.openTransform, 'optionalAccess', _230 => _230.isOpen])) this.openTransform.cancel();
6411
6474
  this.openTransform = null;
6412
6475
  const edited = this.state;
6413
6476
  const changed = save && this.undoStack.length > 0;
6414
6477
  let next = null;
6415
6478
  if (changed) {
6416
- const layer = _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, top.saved.state.layers, top.layerId), 'optionalAccess', _230 => _230.layer]);
6417
- const old = _optionalChain([layer, 'optionalAccess', _231 => _231.contents]);
6479
+ const layer = _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, top.saved.state.layers, top.layerId), 'optionalAccess', _231 => _231.layer]);
6480
+ const old = _optionalChain([layer, 'optionalAccess', _232 => _232.contents]);
6418
6481
  const { width, height } = edited.imageDimensions;
6419
6482
  const only = edited.layers.length === 1 ? edited.layers[0] : null;
6420
- const plain3 = _optionalChain([only, 'optionalAccess', _232 => _232.type]) === "pixel" && only.visible && only.opacity === 1 && only.blend === "normal" && !only.mask && !only.effects && !_optionalChain([only, 'access', _233 => _233.filters, 'optionalAccess', _234 => _234.length]) && !only.clipped && (_nullishCoalesce(only.fillOpacity, () => ( 1))) === 1 && only.source !== "document";
6421
- if (_optionalChain([old, 'optionalAccess', _235 => _235.kind]) === "raster" && plain3) {
6483
+ const plain3 = _optionalChain([only, 'optionalAccess', _233 => _233.type]) === "pixel" && only.visible && only.opacity === 1 && only.blend === "normal" && !only.mask && !only.effects && !_optionalChain([only, 'access', _234 => _234.filters, 'optionalAccess', _235 => _235.length]) && !only.clipped && (_nullishCoalesce(only.fillOpacity, () => ( 1))) === 1 && only.source !== "document";
6484
+ if (_optionalChain([old, 'optionalAccess', _236 => _236.kind]) === "raster" && plain3) {
6422
6485
  const px2 = _chunkCWM3CUUXcjs.readRegion.call(void 0, only.surface, { x: -only.offset.x, y: -only.offset.y, width, height });
6423
6486
  next = _chunkUHMSMUHKcjs.rasterContents.call(void 0, { width, height, data: px2 }, old.name, old.id);
6424
6487
  } else {
6425
6488
  const doc = { layers: edited.layers, globalLight: edited.globalLight, patterns: edited.patterns };
6426
- next = _chunkUHMSMUHKcjs.documentContents.call(void 0, doc, width, height, _optionalChain([old, 'optionalAccess', _236 => _236.kind]) === "document" ? old.name : `${(_nullishCoalesce(_optionalChain([old, 'optionalAccess', _237 => _237.name]), () => ( "Contents"))).replace(/\.\w+$/, "")}.psb`, top.contentsId);
6489
+ next = _chunkUHMSMUHKcjs.documentContents.call(void 0, doc, width, height, _optionalChain([old, 'optionalAccess', _237 => _237.kind]) === "document" ? old.name : `${(_nullishCoalesce(_optionalChain([old, 'optionalAccess', _238 => _238.name]), () => ( "Contents"))).replace(/\.\w+$/, "")}.psb`, top.contentsId);
6427
6490
  }
6428
6491
  }
6429
6492
  const saved = top.saved;
@@ -6448,7 +6511,7 @@ var ImageEditorController = (_class10 = class {
6448
6511
  }
6449
6512
  /** The document's own layers (not the contents open for editing). */
6450
6513
  rootLayers() {
6451
- return _nullishCoalesce(_optionalChain([this, 'access', _238 => _238.contentsStack, 'access', _239 => _239[0], 'optionalAccess', _240 => _240.saved, 'access', _241 => _241.state, 'access', _242 => _242.layers]), () => ( this.state.layers));
6514
+ return _nullishCoalesce(_optionalChain([this, 'access', _239 => _239.contentsStack, 'access', _240 => _240[0], 'optionalAccess', _241 => _241.saved, 'access', _242 => _242.state, 'access', _243 => _243.layers]), () => ( this.state.layers));
6452
6515
  }
6453
6516
  /** Drops every open contents edit (loading another document). */
6454
6517
  abandonContents() {
@@ -6488,7 +6551,7 @@ var ImageEditorController = (_class10 = class {
6488
6551
  this.commitLayers(_chunkUHMSMUHKcjs.setLayerEffects.call(void 0, this.state.layers, id, effects), void 0, commitToHistory);
6489
6552
  return this.getLayerEffects(id);
6490
6553
  }
6491
- __init86() {this.patternIds = /* @__PURE__ */ new WeakMap()}
6554
+ __init87() {this.patternIds = /* @__PURE__ */ new WeakMap()}
6492
6555
  /** Changes whenever the document's pattern list is replaced (the compositor then drops its caches). */
6493
6556
  patternsVersion() {
6494
6557
  const list = this.state.patterns;
@@ -6650,7 +6713,7 @@ var ImageEditorController = (_class10 = class {
6650
6713
  });
6651
6714
  return bg.id;
6652
6715
  }
6653
- __init87() {this.thumbCache = /* @__PURE__ */ new WeakMap()}
6716
+ __init88() {this.thumbCache = /* @__PURE__ */ new WeakMap()}
6654
6717
  /**
6655
6718
  * A small RGBA preview of a pixel layer over the canvas (or of its mask with `mask: true`),
6656
6719
  * longest side `maxSide` px, point-sampled; `null` for layers without pixels.
@@ -6669,7 +6732,7 @@ var ImageEditorController = (_class10 = class {
6669
6732
  const oy = layer.type === "pixel" ? layer.offset.y : 0;
6670
6733
  const key = `${tw}x${th}:${ox},${oy}`;
6671
6734
  let byKey = this.thumbCache.get(surface);
6672
- const hit = _optionalChain([byKey, 'optionalAccess', _243 => _243.get, 'call', _244 => _244(key)]);
6735
+ const hit = _optionalChain([byKey, 'optionalAccess', _244 => _244.get, 'call', _245 => _245(key)]);
6673
6736
  if (hit) return hit;
6674
6737
  const out = new Uint8ClampedArray(tw * th * 4);
6675
6738
  for (let y = 0; y < th; y++) {
@@ -6804,7 +6867,7 @@ var ImageEditorController = (_class10 = class {
6804
6867
  if (layer.mask.source) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${name}" has a depth mask, which is generated, not painted.`);
6805
6868
  _chunkUHMSMUHKcjs.requireUnlocked.call(void 0, layer, "all", action);
6806
6869
  } else if (ch === "filter-mask") {
6807
- if (layer.type !== "smart" || !_optionalChain([layer, 'access', _245 => _245.smartFilters, 'optionalAccess', _246 => _246.mask])) {
6870
+ if (layer.type !== "smart" || !_optionalChain([layer, 'access', _246 => _246.smartFilters, 'optionalAccess', _247 => _247.mask])) {
6808
6871
  throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${name}" has no smart filter mask to ${action}; add one with set_smart_filter_mask, or target pixels or mask.`, `Layer "${name}" has no smart filter mask to ${action}.`);
6809
6872
  }
6810
6873
  if (!_chunkUHMSMUHKcjs.isContentsDecoded.call(void 0, layer.contents)) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`The contents of "${name}" are not decoded here, so its filter mask cannot be painted; run prepareSmartObjects() first.`, `The smart object "${name}" is still loading; try again in a moment.`);
@@ -6819,7 +6882,7 @@ var ImageEditorController = (_class10 = class {
6819
6882
  if (!layer.visible) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${name}" is hidden; show it before you ${action}.`);
6820
6883
  const offset = layer.type === "pixel" ? layer.offset : { x: 0, y: 0 };
6821
6884
  const surface = ch === "mask" ? layer.mask.surface : ch === "filter-mask" ? layer.smartFilters.mask.surface : this.surfaceOf(layer);
6822
- const lockTransparency = ch === "pixels" && Boolean(_optionalChain([layer, 'access', _247 => _247.locks, 'optionalAccess', _248 => _248.transparency]));
6885
+ const lockTransparency = ch === "pixels" && Boolean(_optionalChain([layer, 'access', _248 => _248.locks, 'optionalAccess', _249 => _249.transparency]));
6823
6886
  return { id, layer, channel: ch, offset, surface, lockTransparency };
6824
6887
  }
6825
6888
  /** The layer with its pixels (or mask) replaced by `surface`. */
@@ -6862,13 +6925,13 @@ var ImageEditorController = (_class10 = class {
6862
6925
  opacity: brush.opacity,
6863
6926
  blend: target.channel !== "pixels" ? "normal" : brush.blend,
6864
6927
  lockTransparency: target.lockTransparency,
6865
- selection: _optionalChain([this, 'access', _249 => _249.state, 'access', _250 => _250.selection, 'optionalAccess', _251 => _251.bounds]) ? this.state.selection : null,
6928
+ selection: _optionalChain([this, 'access', _250 => _250.state, 'access', _251 => _251.selection, 'optionalAccess', _252 => _252.bounds]) ? this.state.selection : null,
6866
6929
  offset: target.offset
6867
6930
  };
6868
6931
  const depth = target.channel !== "filter-mask" && this.bitDepth !== 8 ? this.bitDepth : null;
6869
6932
  if (tool === "mixer") return new PaintStrokeSession(this, target, this.mixerStroke(init, brush), apply, depth);
6870
6933
  if (isRetouchTool(tool)) return new PaintStrokeSession(this, target, this.retouchStroke(tool, init, brush, target, apply), apply, depth);
6871
- const gradient = tool === "brush" && _optionalChain([strokePaint, 'optionalAccess', _252 => _252.type]) === "gradient" ? _chunkEBDCRTZIcjs.resolvePaintGradient.call(void 0, strokePaint, { paint: toHex(color), secondary: toHex(background) }) : null;
6934
+ const gradient = tool === "brush" && _optionalChain([strokePaint, 'optionalAccess', _253 => _253.type]) === "gradient" ? _chunkEBDCRTZIcjs.resolvePaintGradient.call(void 0, strokePaint, { paint: toHex(color), secondary: toHex(background) }) : null;
6872
6935
  return new PaintStrokeSession(this, target, new (0, _chunkEBDCRTZIcjs.StrokeCoverage)(brush, gradient, _nullishCoalesce(init.seed, () => ( 0))), apply, depth);
6873
6936
  }
6874
6937
  /** A retouching stroke's start: its settings, what it samples and how it composites. */
@@ -6915,9 +6978,9 @@ var ImageEditorController = (_class10 = class {
6915
6978
  const steps = settings.historySteps;
6916
6979
  const entry = steps > 0 ? _nullishCoalesce(this.undoStack[this.undoStack.length - steps], () => ( this.undoStack[0])) : this.undoStack[0];
6917
6980
  if (!entry) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("There is no earlier state to paint from yet: the History Brush paints a layer as it was some undo steps back. Make a change first.");
6918
- const then = _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, entry.layers, target.id), 'optionalAccess', _253 => _253.layer]);
6981
+ const then = _optionalChain([_chunkHGTDMKNEcjs.findLayer.call(void 0, entry.layers, target.id), 'optionalAccess', _254 => _254.layer]);
6919
6982
  if (!then) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${target.id}" did not exist ${steps > 0 ? `${steps} steps back` : "in the oldest state"}; choose fewer history steps (historySteps).`);
6920
- const surface = target.channel === "mask" ? _optionalChain([then, 'access', _254 => _254.mask, 'optionalAccess', _255 => _255.surface]) : then.type === "pixel" ? then.surface : void 0;
6983
+ const surface = target.channel === "mask" ? _optionalChain([then, 'access', _255 => _255.mask, 'optionalAccess', _256 => _256.surface]) : then.type === "pixel" ? then.surface : void 0;
6921
6984
  if (!surface) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${target.id}" had no ${target.channel === "mask" ? "mask" : "pixels"} in that state.`);
6922
6985
  const offset2 = then.type === "pixel" ? then.offset : { x: 0, y: 0 };
6923
6986
  const depth = !mask && this.bitDepth !== 8 ? this.bitDepth : null;
@@ -6991,7 +7054,7 @@ var ImageEditorController = (_class10 = class {
6991
7054
  }
6992
7055
  /** A pixel source over a surface (layer pixels or a mask) in layer space at `offset`. */
6993
7056
  surfaceSource(surface, offset) {
6994
- return new (0, _chunk7NW46N7Icjs.TilePixelSource)((tx, ty) => _nullishCoalesce(_optionalChain([surface, 'access', _256 => _256.tiles, 'access', _257 => _257.get, 'call', _258 => _258(_chunkCWM3CUUXcjs.tileKey.call(void 0, tx, ty)), 'optionalAccess', _259 => _259.data]), () => ( (surface.defaultValue ? defaultTile(surface) : null))), surface.channels, offset);
7057
+ return new (0, _chunk7NW46N7Icjs.TilePixelSource)((tx, ty) => _nullishCoalesce(_optionalChain([surface, 'access', _257 => _257.tiles, 'access', _258 => _258.get, 'call', _259 => _259(_chunkCWM3CUUXcjs.tileKey.call(void 0, tx, ty)), 'optionalAccess', _260 => _260.data]), () => ( (surface.defaultValue ? defaultTile(surface) : null))), surface.channels, offset);
6995
7058
  }
6996
7059
  /** A pixel source over the composite of the current layers (through `throughId` and below, or all of them), as it is now. */
6997
7060
  compositeSource(throughId, depth = null) {
@@ -7060,7 +7123,7 @@ var ImageEditorController = (_class10 = class {
7060
7123
  paintStroke(init) {
7061
7124
  if (!Array.isArray(init.points) || !init.points.length) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("points must hold at least one { x, y } point.");
7062
7125
  for (const p of init.points) {
7063
- if (!Number.isFinite(_optionalChain([p, 'optionalAccess', _260 => _260.x])) || !Number.isFinite(_optionalChain([p, 'optionalAccess', _261 => _261.y]))) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Every point needs finite x and y (document pixels).");
7126
+ if (!Number.isFinite(_optionalChain([p, 'optionalAccess', _261 => _261.x])) || !Number.isFinite(_optionalChain([p, 'optionalAccess', _262 => _262.y]))) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Every point needs finite x and y (document pixels).");
7064
7127
  }
7065
7128
  const session = this.beginStroke(init);
7066
7129
  session.push(init.points);
@@ -7088,8 +7151,8 @@ var ImageEditorController = (_class10 = class {
7088
7151
  const opacity = _nullishCoalesce(options.opacity, () => ( 1));
7089
7152
  if (!(opacity >= 0 && opacity <= 1)) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("opacity must be from 0 to 1.");
7090
7153
  const blend = _nullishCoalesce(_chunkUHMSMUHKcjs.parseBlend.call(void 0, options.blend), () => ( "normal"));
7091
- const sel = options.useSelection !== false && _optionalChain([this, 'access', _262 => _262.state, 'access', _263 => _263.selection, 'optionalAccess', _264 => _264.bounds]) ? this.state.selection : null;
7092
- const region = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _265 => _265.bounds]), () => ( { x: 0, y: 0, width, height }));
7154
+ const sel = options.useSelection !== false && _optionalChain([this, 'access', _263 => _263.state, 'access', _264 => _264.selection, 'optionalAccess', _265 => _265.bounds]) ? this.state.selection : null;
7155
+ const region = _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _266 => _266.bounds]), () => ( { x: 0, y: 0, width, height }));
7093
7156
  const coverage = new (0, _chunkEBDCRTZIcjs.CoverageMap)();
7094
7157
  const ones = new Float32Array(region.width * region.height);
7095
7158
  if (sel) {
@@ -7208,7 +7271,7 @@ var ImageEditorController = (_class10 = class {
7208
7271
  placeLayer(layers, node, where) {
7209
7272
  if (where.aboveId) {
7210
7273
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, layers, where.aboveId);
7211
- if (loc) return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _266 => _266.parent, 'optionalAccess', _267 => _267.id]), () => ( null)), loc.index + 1);
7274
+ if (loc) return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _267 => _267.parent, 'optionalAccess', _268 => _268.id]), () => ( null)), loc.index + 1);
7212
7275
  }
7213
7276
  if (where.parentId) {
7214
7277
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, layers, where.parentId);
@@ -7219,11 +7282,11 @@ var ImageEditorController = (_class10 = class {
7219
7282
  const at = Math.max(0, Math.min(nodes.length, Math.round(where.adjustmentIndex)));
7220
7283
  if (at < nodes.length) {
7221
7284
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, layers, nodes[at].id);
7222
- return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _268 => _268.parent, 'optionalAccess', _269 => _269.id]), () => ( null)), loc.index);
7285
+ return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _269 => _269.parent, 'optionalAccess', _270 => _270.id]), () => ( null)), loc.index);
7223
7286
  }
7224
7287
  if (nodes.length) {
7225
7288
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, layers, nodes[nodes.length - 1].id);
7226
- return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _270 => _270.parent, 'optionalAccess', _271 => _271.id]), () => ( null)), loc.index + 1);
7289
+ return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, _nullishCoalesce(_optionalChain([loc, 'access', _271 => _271.parent, 'optionalAccess', _272 => _272.id]), () => ( null)), loc.index + 1);
7227
7290
  }
7228
7291
  }
7229
7292
  return _chunkHGTDMKNEcjs.insertLayer.call(void 0, layers, node, null, this.defaultInsertIndex(layers));
@@ -7339,7 +7402,7 @@ var ImageEditorController = (_class10 = class {
7339
7402
  const anchor = nodes[to];
7340
7403
  const without = _chunkHGTDMKNEcjs.mapLayer.call(void 0, layers, id, () => null);
7341
7404
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, without, anchor.id);
7342
- return _chunkHGTDMKNEcjs.insertLayer.call(void 0, without, node, _nullishCoalesce(_optionalChain([loc, 'access', _272 => _272.parent, 'optionalAccess', _273 => _273.id]), () => ( null)), to > from ? loc.index + 1 : loc.index);
7405
+ return _chunkHGTDMKNEcjs.insertLayer.call(void 0, without, node, _nullishCoalesce(_optionalChain([loc, 'access', _273 => _273.parent, 'optionalAccess', _274 => _274.id]), () => ( null)), to > from ? loc.index + 1 : loc.index);
7343
7406
  }
7344
7407
  /** Moves a layer to `toIndex` among the adjustment layers (0 = bottom) as one undo step. Returns false if nothing moved. */
7345
7408
  moveAdjustmentLayer(id, toIndex) {
@@ -7380,7 +7443,7 @@ var ImageEditorController = (_class10 = class {
7380
7443
  return _nullishCoalesce(this.state.selection, () => ( null));
7381
7444
  }
7382
7445
  get hasSelection() {
7383
- return Boolean(_optionalChain([this, 'access', _274 => _274.state, 'access', _275 => _275.selection, 'optionalAccess', _276 => _276.bounds]));
7446
+ return Boolean(_optionalChain([this, 'access', _275 => _275.state, 'access', _276 => _276.selection, 'optionalAccess', _277 => _277.bounds]));
7384
7447
  }
7385
7448
  /** Returns the current canvas (composition) dimensions. */
7386
7449
  getCanvasSize() {
@@ -7531,13 +7594,13 @@ var ImageEditorController = (_class10 = class {
7531
7594
  try {
7532
7595
  const canvas = await this.renderSource();
7533
7596
  const ctx = canvas.getContext("2d");
7534
- const data2 = _optionalChain([ctx, 'optionalAccess', _277 => _277.getImageData, 'optionalCall', _278 => _278(0, 0, width, height)]);
7597
+ const data2 = _optionalChain([ctx, 'optionalAccess', _278 => _278.getImageData, 'optionalCall', _279 => _279(0, 0, width, height)]);
7535
7598
  if (data2 && data2.data && data2.data.length >= width * height * 4) {
7536
7599
  base = { width, height, data: data2.data };
7537
7600
  this.samplePixels = base;
7538
7601
  this.samplePixelsOverride = false;
7539
7602
  }
7540
- } catch (e26) {
7603
+ } catch (e27) {
7541
7604
  base = null;
7542
7605
  }
7543
7606
  }
@@ -7597,7 +7660,7 @@ var ImageEditorController = (_class10 = class {
7597
7660
  /** Select › Modify: grow, shrink, feather, border or smooth by `radius` pixels (one undo step). */
7598
7661
  modifySelection(op, radius) {
7599
7662
  const sel = this.state.selection;
7600
- if (!_optionalChain([sel, 'optionalAccess', _279 => _279.bounds])) return false;
7663
+ if (!_optionalChain([sel, 'optionalAccess', _280 => _280.bounds])) return false;
7601
7664
  return this.setSelection(_chunkUHMSMUHKcjs.modifySelection.call(void 0, sel, op, radius));
7602
7665
  }
7603
7666
  /**
@@ -7606,7 +7669,7 @@ var ImageEditorController = (_class10 = class {
7606
7669
  */
7607
7670
  async refineSelection(params, options = {}) {
7608
7671
  const sel = this.state.selection;
7609
- if (!_optionalChain([sel, 'optionalAccess', _280 => _280.bounds])) return false;
7672
+ if (!_optionalChain([sel, 'optionalAccess', _281 => _281.bounds])) return false;
7610
7673
  const pixels = (_nullishCoalesce(params.radius, () => ( 0))) > 0 ? await this.requirePixels(options) : null;
7611
7674
  return this.setSelection(refineSelection(pixels, sel, params));
7612
7675
  }
@@ -7615,23 +7678,50 @@ var ImageEditorController = (_class10 = class {
7615
7678
  * RGBA pixels, by luminance (white = selected) or a channel. Any size; it is resampled.
7616
7679
  */
7617
7680
  async loadSelectionFromImage(source, options = {}) {
7618
- let pixels;
7619
- if (typeof source === "string") {
7620
- const img = await this.renderer.imageCache.get(source);
7621
- const w = img.naturalWidth || img.width;
7622
- const h = img.naturalHeight || img.height;
7623
- const canvas = this.renderer.createCanvas(w, h);
7624
- const ctx = canvas.getContext("2d");
7625
- if (ctx) ctx.drawImage(img, 0, 0, w, h);
7626
- const data = _optionalChain([ctx, 'optionalAccess', _281 => _281.getImageData, 'optionalCall', _282 => _282(0, 0, w, h)]);
7627
- if (!data) throw new Error("The mask image pixels are not available (no canvas access); pass pixels.");
7628
- pixels = { width: w, height: h, data: data.data };
7629
- } else {
7630
- pixels = source;
7631
- }
7681
+ const pixels = await this.decodeMaskImage(source);
7632
7682
  this.setSelection(_chunkUHMSMUHKcjs.selectionFromPixels.call(void 0, pixels, options), _nullishCoalesce(options.mode, () => ( "replace")));
7633
7683
  return this.getSelection();
7634
7684
  }
7685
+ /** A mask image (data URL / URL, or pixels as they are) as RGBA pixels. */
7686
+ async decodeMaskImage(source) {
7687
+ if (typeof source !== "string") return source;
7688
+ const img = await this.renderer.imageCache.get(source);
7689
+ const w = img.naturalWidth || img.width;
7690
+ const h = img.naturalHeight || img.height;
7691
+ const canvas = this.renderer.createCanvas(w, h);
7692
+ const ctx = canvas.getContext("2d");
7693
+ if (ctx) ctx.drawImage(img, 0, 0, w, h);
7694
+ const data = _optionalChain([ctx, 'optionalAccess', _282 => _282.getImageData, 'optionalCall', _283 => _283(0, 0, w, h)]);
7695
+ if (!data) throw new Error("The mask image pixels are not available (no canvas access); pass pixels.");
7696
+ return { width: w, height: h, data: data.data };
7697
+ }
7698
+ /**
7699
+ * Select › Subject: asks the segmentation provider for the objects matching `target` ("the
7700
+ * dog", "the sky") in the flattened image and selects their shapes, combined with the
7701
+ * selection by `mode`, as one undo step. Returns what was found (labels and bounds in natural
7702
+ * pixels); an empty list leaves the selection as it was. Throws without a provider.
7703
+ */
7704
+ async selectSubject(target, options = {}) {
7705
+ const provider = this.segmentation;
7706
+ if (!provider) throw new Error("Select Subject needs a segmentation provider (setSegmentationProvider).");
7707
+ const description = target.trim();
7708
+ if (!description) throw new Error("Describe the subject to select.");
7709
+ const { width, height } = this.naturalSize;
7710
+ const image = await this.toDataURL({ format: "image/png" });
7711
+ const results = await provider.segment({ image, width, height, target: description, maxSegments: options.maxSegments, signal: options.signal });
7712
+ _optionalChain([options, 'access', _284 => _284.signal, 'optionalAccess', _285 => _285.throwIfAborted, 'call', _286 => _286()]);
7713
+ const decoded = [];
7714
+ for (const r of _nullishCoalesce(results, () => ( []))) {
7715
+ decoded.push({ ...r, mask: r.mask !== void 0 ? await this.decodeMaskImage(r.mask) : void 0 });
7716
+ }
7717
+ const segments = decoded.map((r) => {
7718
+ const one = segmentsToSelection(width, height, [r]);
7719
+ return { label: r.label || description, bounds: _nullishCoalesce(_optionalChain([one, 'optionalAccess', _287 => _287.bounds]), () => ( null)), ...r.score !== void 0 ? { score: r.score } : {} };
7720
+ });
7721
+ const mask = segmentsToSelection(width, height, decoded);
7722
+ if (mask) this.shapeCommand(mask, options);
7723
+ return { segments: segments.filter((s) => s.bounds) };
7724
+ }
7635
7725
  /** Quick Mask view (tints the unselected area). View state: no undo step. */
7636
7726
  setQuickMask(on) {
7637
7727
  if (Boolean(this.state.quickMask) === on) return;
@@ -7651,7 +7741,7 @@ var ImageEditorController = (_class10 = class {
7651
7741
  */
7652
7742
  applySelectionAsLayerMask(layerId, props = {}) {
7653
7743
  const sel = this.state.selection;
7654
- if (!_optionalChain([sel, 'optionalAccess', _283 => _283.bounds]) || !this.getAdjustmentLayer(layerId)) return false;
7744
+ if (!_optionalChain([sel, 'optionalAccess', _288 => _288.bounds]) || !this.getAdjustmentLayer(layerId)) return false;
7655
7745
  return this.setLayerMask(layerId, this.maskFromSelection(sel, props));
7656
7746
  }
7657
7747
  setLayerMask(layerId, mask, commitToHistory = true) {
@@ -7682,7 +7772,7 @@ var ImageEditorController = (_class10 = class {
7682
7772
  /** Load Selection from a layer mask (its pixels; density and feather are not applied). */
7683
7773
  selectionFromLayerMask(layerId, mode = "replace") {
7684
7774
  const layer = this.getLayer(layerId);
7685
- if (!_optionalChain([layer, 'optionalAccess', _284 => _284.mask]) || layer.mask.source) return false;
7775
+ if (!_optionalChain([layer, 'optionalAccess', _289 => _289.mask]) || layer.mask.source) return false;
7686
7776
  const { width, height } = this.naturalSize;
7687
7777
  const ox = layer.type === "pixel" ? layer.offset.x : 0;
7688
7778
  const oy = layer.type === "pixel" ? layer.offset.y : 0;
@@ -7718,7 +7808,7 @@ var ImageEditorController = (_class10 = class {
7718
7808
  this.state.layers = _chunkHGTDMKNEcjs.mapLayer.call(void 0, this.state.layers, target.id, (l) => {
7719
7809
  const next = { ...l };
7720
7810
  if (_chunkUHMSMUHKcjs.isDefaultDepthMask.call(void 0, merged)) {
7721
- if (_optionalChain([next, 'access', _285 => _285.mask, 'optionalAccess', _286 => _286.source])) delete next.mask;
7811
+ if (_optionalChain([next, 'access', _290 => _290.mask, 'optionalAccess', _291 => _291.source])) delete next.mask;
7722
7812
  } else next.mask = _chunkUHMSMUHKcjs.depthRasterMask.call(void 0, merged);
7723
7813
  return next;
7724
7814
  });
@@ -7728,7 +7818,7 @@ var ImageEditorController = (_class10 = class {
7728
7818
  resetDepthMask() {
7729
7819
  this.recordHistory();
7730
7820
  const target = this.developLayer();
7731
- if (_optionalChain([target, 'optionalAccess', _287 => _287.mask, 'optionalAccess', _288 => _288.source])) {
7821
+ if (_optionalChain([target, 'optionalAccess', _292 => _292.mask, 'optionalAccess', _293 => _293.source])) {
7732
7822
  this.state.layers = _chunkHGTDMKNEcjs.mapLayer.call(void 0, this.state.layers, target.id, (l) => {
7733
7823
  const next = { ...l };
7734
7824
  delete next.mask;
@@ -7740,7 +7830,7 @@ var ImageEditorController = (_class10 = class {
7740
7830
  // --- Annotations & Layers ---
7741
7831
  /** The layer showing annotation `id`: an annotation layer, or a shape layer migrated from it. */
7742
7832
  annotationLayer(id) {
7743
- return _chunkHGTDMKNEcjs.flattenLayers.call(void 0, this.state.layers).find((l) => (l.type === "annotation" || l.type === "shape" || l.type === "type") && _optionalChain([_chunkUHMSMUHKcjs.annotationOfLayer.call(void 0, l), 'optionalAccess', _289 => _289.id]) === id);
7833
+ return _chunkHGTDMKNEcjs.flattenLayers.call(void 0, this.state.layers).find((l) => (l.type === "annotation" || l.type === "shape" || l.type === "type") && _optionalChain([_chunkUHMSMUHKcjs.annotationOfLayer.call(void 0, l), 'optionalAccess', _294 => _294.id]) === id);
7744
7834
  }
7745
7835
  /** What migrating an annotation needs: the canvas size, patterns and the text shaper. */
7746
7836
  annotationEnv() {
@@ -7758,7 +7848,7 @@ var ImageEditorController = (_class10 = class {
7758
7848
  const fullAnnotation = { ...annotation, id };
7759
7849
  const layer = _chunkUHMSMUHKcjs.annotationLayerFor.call(void 0, fullAnnotation, this.annotationEnv());
7760
7850
  const loc = placement.aboveId ? _chunkHGTDMKNEcjs.findLayer.call(void 0, this.state.layers, placement.aboveId) : null;
7761
- this.state.layers = loc ? _chunkHGTDMKNEcjs.insertLayer.call(void 0, this.state.layers, layer, _nullishCoalesce(_optionalChain([loc, 'access', _290 => _290.parent, 'optionalAccess', _291 => _291.id]), () => ( null)), loc.index + 1) : _chunkHGTDMKNEcjs.insertLayer.call(void 0, this.state.layers, layer, null);
7851
+ this.state.layers = loc ? _chunkHGTDMKNEcjs.insertLayer.call(void 0, this.state.layers, layer, _nullishCoalesce(_optionalChain([loc, 'access', _295 => _295.parent, 'optionalAccess', _296 => _296.id]), () => ( null)), loc.index + 1) : _chunkHGTDMKNEcjs.insertLayer.call(void 0, this.state.layers, layer, null);
7762
7852
  this.state.selectedAnnotationId = id;
7763
7853
  this.notify();
7764
7854
  return id;
@@ -7838,7 +7928,7 @@ var ImageEditorController = (_class10 = class {
7838
7928
  this.notify();
7839
7929
  }
7840
7930
  // --- Rendering & Export ---
7841
- __init88() {this.blankSource = null}
7931
+ __init89() {this.blankSource = null}
7842
7932
  /**
7843
7933
  * What the renderer draws from: the source image, or, for a document without one (an opened
7844
7934
  * PSD, a v3 document loaded on its own), a transparent canvas of the document size, since every
@@ -7881,11 +7971,11 @@ var ImageEditorController = (_class10 = class {
7881
7971
  await this.renderer.renderToCanvas(targetCanvas, source, this.state, {
7882
7972
  ...options,
7883
7973
  // The clone source follows the brush cursor (both editors pass it).
7884
- cloneSourceMarker: _optionalChain([options, 'optionalAccess', _292 => _292.cloneSourceMarker]) !== void 0 ? options.cloneSourceMarker : _optionalChain([options, 'optionalAccess', _293 => _293.brushCursor]) ? this.cloneSourceMarker(options.brushCursor) : null,
7974
+ cloneSourceMarker: _optionalChain([options, 'optionalAccess', _297 => _297.cloneSourceMarker]) !== void 0 ? options.cloneSourceMarker : _optionalChain([options, 'optionalAccess', _298 => _298.brushCursor]) ? this.cloneSourceMarker(options.brushCursor) : null,
7885
7975
  dirty: dirty === "all" ? void 0 : dirty,
7886
7976
  checkpointLayerId: this.state.activeLayerId
7887
7977
  });
7888
- } catch (e27) {
7978
+ } catch (e28) {
7889
7979
  }
7890
7980
  }
7891
7981
  async renderExport(options) {
@@ -7894,7 +7984,7 @@ var ImageEditorController = (_class10 = class {
7894
7984
  return this.renderer.createCanvas(1, 1);
7895
7985
  }
7896
7986
  this.syncViews();
7897
- if (_optionalChain([options, 'optionalAccess', _294 => _294.layerIds])) {
7987
+ if (_optionalChain([options, 'optionalAccess', _299 => _299.layerIds])) {
7898
7988
  const keep = new Set(options.layerIds);
7899
7989
  const layers = _chunkHGTDMKNEcjs.flattenLayers.call(void 0, this.state.layers).filter((l) => keep.has(l.id));
7900
7990
  return this.renderer.renderExport(source, { ...this.state, layers }, options);
@@ -7940,7 +8030,7 @@ var ImageEditorController = (_class10 = class {
7940
8030
  try {
7941
8031
  if (mime === "image/png") return _chunkBROJYMWUcjs.writePngIcc.call(void 0, bytes, icc, this.getColorProfile().name);
7942
8032
  if (mime === "image/jpeg") return _chunkBROJYMWUcjs.writeJpegIcc.call(void 0, bytes, icc);
7943
- } catch (e28) {
8033
+ } catch (e29) {
7944
8034
  }
7945
8035
  return bytes;
7946
8036
  }
@@ -8048,7 +8138,7 @@ var ImageEditorController = (_class10 = class {
8048
8138
  let px2 = await this.decodeImage(newDataUrl);
8049
8139
  if (px2.width !== width || px2.height !== height) px2 = resizePixels(px2, width, height);
8050
8140
  const data = new Uint8ClampedArray(px2.data);
8051
- const sel = _optionalChain([this, 'access', _295 => _295.state, 'access', _296 => _296.selection, 'optionalAccess', _297 => _297.bounds]) ? this.state.selection : null;
8141
+ const sel = _optionalChain([this, 'access', _300 => _300.state, 'access', _301 => _301.selection, 'optionalAccess', _302 => _302.bounds]) ? this.state.selection : null;
8052
8142
  if (sel) for (let p = 0, i = 3; p < width * height; p++, i += 4) data[i] = Math.round(data[i] * sel.data[p] / 255);
8053
8143
  return this.addPixelLayer({ name: "Inpaint", pixels: { width, height, data } });
8054
8144
  }
@@ -8095,7 +8185,7 @@ var ImageEditorController = (_class10 = class {
8095
8185
  }
8096
8186
  /** Font families the shaper offers (generic families at least). */
8097
8187
  listFonts() {
8098
- return _nullishCoalesce(_optionalChain([this, 'access', _298 => _298.getTextShaper, 'call', _299 => _299(), 'optionalAccess', _300 => _300.families, 'optionalCall', _301 => _301()]), () => ( ["sans-serif", "serif", "monospace"]));
8188
+ return _nullishCoalesce(_optionalChain([this, 'access', _303 => _303.getTextShaper, 'call', _304 => _304(), 'optionalAccess', _305 => _305.families, 'optionalCall', _306 => _306()]), () => ( ["sans-serif", "serif", "monospace"]));
8099
8189
  }
8100
8190
  typeInfo(id) {
8101
8191
  const layer = _chunkUHMSMUHKcjs.requireTypeLayer.call(void 0, this.state.layers, id);
@@ -8274,7 +8364,7 @@ var ImageEditorController = (_class10 = class {
8274
8364
  if (colors.size > 1) warnings.push("The text had several colours; the shape takes the first one.");
8275
8365
  const missing = _chunkEGZM52EOcjs.layoutText.call(void 0, layer, shaper).missingFonts;
8276
8366
  if (missing.length) warnings.push(`Missing fonts were drawn with a fallback: ${missing.join(", ")}.`);
8277
- const first = _nullishCoalesce(_optionalChain([layer, 'access', _302 => _302.runs, 'access', _303 => _303.find, 'call', _304 => _304((r) => r.length > 0), 'optionalAccess', _305 => _305.style]), () => ( _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE));
8367
+ const first = _nullishCoalesce(_optionalChain([layer, 'access', _307 => _307.runs, 'access', _308 => _308.find, 'call', _309 => _309((r) => r.length > 0), 'optionalAccess', _310 => _310.style]), () => ( _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE));
8278
8368
  const fill = first.opacity !== void 0 && first.opacity !== 1 ? { type: "color", color: first.color, opacity: first.opacity } : { type: "color", color: first.color };
8279
8369
  const shape = _chunkUHMSMUHKcjs.createShapeLayer.call(void 0, { components: [{ op: "combine", subpaths }], fill, stroke: null, name: layer.name }, this.shapeEnv(), layer.id);
8280
8370
  const keep = { visible: layer.visible, opacity: layer.opacity, blend: layer.blend };
@@ -8307,7 +8397,7 @@ var ImageEditorController = (_class10 = class {
8307
8397
  // --- Shape layers ---
8308
8398
  /** What shape rendering needs: the canvas size and the document's patterns. */
8309
8399
  shapeEnv() {
8310
- return { ...this.naturalSize, pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _306 => _306.state, 'access', _307 => _307.patterns, 'optionalAccess', _308 => _308.find, 'call', _309 => _309((p) => p.id === id)]), () => ( null)) };
8400
+ return { ...this.naturalSize, pattern: (id) => _nullishCoalesce(_optionalChain([this, 'access', _311 => _311.state, 'access', _312 => _312.patterns, 'optionalAccess', _313 => _313.find, 'call', _314 => _314((p) => p.id === id)]), () => ( null)) };
8311
8401
  }
8312
8402
  /** One component from tool or UI input (validated). */
8313
8403
  componentFrom(spec, path) {
@@ -8350,9 +8440,9 @@ var ImageEditorController = (_class10 = class {
8350
8440
  * open path) and stroked with `stroke`. Goes above the active layer unless placed. Returns its id.
8351
8441
  */
8352
8442
  addShapeLayer(init) {
8353
- const specs = _optionalChain([init, 'access', _310 => _310.components, 'optionalAccess', _311 => _311.length]) ? init.components : [init];
8354
- if (_optionalChain([init, 'access', _312 => _312.components, 'optionalAccess', _313 => _313.length]) && (init.shape !== void 0 || init.subpaths !== void 0)) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Give components, or shape / subpaths, not both.");
8355
- const components = specs.map((c, i) => this.componentFrom(c, _optionalChain([init, 'access', _314 => _314.components, 'optionalAccess', _315 => _315.length]) ? `components[${i}].` : ""));
8443
+ const specs = _optionalChain([init, 'access', _315 => _315.components, 'optionalAccess', _316 => _316.length]) ? init.components : [init];
8444
+ if (_optionalChain([init, 'access', _317 => _317.components, 'optionalAccess', _318 => _318.length]) && (init.shape !== void 0 || init.subpaths !== void 0)) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("Give components, or shape / subpaths, not both.");
8445
+ const components = specs.map((c, i) => this.componentFrom(c, _optionalChain([init, 'access', _319 => _319.components, 'optionalAccess', _320 => _320.length]) ? `components[${i}].` : ""));
8356
8446
  const stroke = init.stroke ? _chunkUHMSMUHKcjs.normalizeShapeStroke.call(void 0, init.stroke, "stroke") : null;
8357
8447
  const openOnly = components.every((c) => !c.live && c.subpaths.every((sp) => !sp.closed));
8358
8448
  const fill = init.fill === void 0 ? stroke && openOnly ? null : _chunkUHMSMUHKcjs.normalizeShapePaint.call(void 0, this.state.paint.foreground, "fill") : init.fill === null ? null : _chunkUHMSMUHKcjs.normalizeShapePaint.call(void 0, init.fill, "fill");
@@ -8463,7 +8553,7 @@ var ImageEditorController = (_class10 = class {
8463
8553
  if (layer.locks) next.locks = layer.locks;
8464
8554
  if (this.state.selectedAnnotationId === layer.annotation.id) this.state.selectedAnnotationId = null;
8465
8555
  } else if (layer.type === "pixel") {
8466
- if (!_optionalChain([layer, 'access', _316 => _316.filters, 'optionalAccess', _317 => _317.length])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${layer.name || id}" is already pixels with no filters to bake.`);
8556
+ if (!_optionalChain([layer, 'access', _321 => _321.filters, 'optionalAccess', _322 => _322.length])) throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)(`Layer "${layer.name || id}" is already pixels with no filters to bake.`);
8467
8557
  _chunkUHMSMUHKcjs.requireUnlocked.call(void 0, layer, "pixels", "rasterize it");
8468
8558
  const spatial = layer.filters.some((f) => f.enabled && f.kind === "blur");
8469
8559
  const content = { ...layer, visible: true, opacity: 1, blend: "normal" };
@@ -8482,7 +8572,7 @@ var ImageEditorController = (_class10 = class {
8482
8572
  return this.rasterizeSmartObject(id);
8483
8573
  } else if (layer.type === "shape" || layer.type === "type") {
8484
8574
  next = layer.type === "shape" ? _chunkUHMSMUHKcjs.shapeAsPixelLayer.call(void 0, layer) : _chunkUHMSMUHKcjs.typeAsPixelLayer.call(void 0, layer);
8485
- if (this.state.selectedAnnotationId && this.state.selectedAnnotationId === _optionalChain([layer, 'access', _318 => _318.annotation, 'optionalAccess', _319 => _319.id])) this.state.selectedAnnotationId = null;
8575
+ if (this.state.selectedAnnotationId && this.state.selectedAnnotationId === _optionalChain([layer, 'access', _323 => _323.annotation, 'optionalAccess', _324 => _324.id])) this.state.selectedAnnotationId = null;
8486
8576
  } else {
8487
8577
  throw new (0, _chunkUHMSMUHKcjs.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.`);
8488
8578
  }
@@ -8496,8 +8586,8 @@ var ImageEditorController = (_class10 = class {
8496
8586
  const doc = this.state.colorProfile;
8497
8587
  const p = resolveProfile(doc);
8498
8588
  const m = this.state.colorMode;
8499
- const out = { name: _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _320 => _320.name]), () => ( p.description)), builtin: doc ? _nullishCoalesce(doc.builtin, () => ( null)) : "srgb", colorSpace: p.colorSpace, srgb: isSrgb(doc), mode: _nullishCoalesce(_optionalChain([m, 'optionalAccess', _321 => _321.mode]), () => ( "rgb")) };
8500
- if (_optionalChain([m, 'optionalAccess', _322 => _322.mode]) === "cmyk") out.cmykProfile = { name: m.profile.name, builtin: _nullishCoalesce(m.profile.builtin, () => ( null)), intent: m.intent };
8589
+ const out = { name: _nullishCoalesce(_optionalChain([doc, 'optionalAccess', _325 => _325.name]), () => ( p.description)), builtin: doc ? _nullishCoalesce(doc.builtin, () => ( null)) : "srgb", colorSpace: p.colorSpace, srgb: isSrgb(doc), mode: _nullishCoalesce(_optionalChain([m, 'optionalAccess', _326 => _326.mode]), () => ( "rgb")) };
8590
+ if (_optionalChain([m, 'optionalAccess', _327 => _327.mode]) === "cmyk") out.cmykProfile = { name: m.profile.name, builtin: _nullishCoalesce(m.profile.builtin, () => ( null)), intent: m.intent };
8501
8591
  return out;
8502
8592
  }
8503
8593
  /**
@@ -8587,7 +8677,7 @@ var ImageEditorController = (_class10 = class {
8587
8677
  const textEnv = this.textEnv();
8588
8678
  const walk = (layers) => layers.map((l) => {
8589
8679
  let next2 = l;
8590
- if (_optionalChain([l, 'access', _323 => _323.effects, 'optionalAccess', _324 => _324.items, 'access', _325 => _325.length])) next2 = { ...next2, effects: convertColorFields(l.effects, hex) };
8680
+ if (_optionalChain([l, 'access', _328 => _328.effects, 'optionalAccess', _329 => _329.items, 'access', _330 => _330.length])) next2 = { ...next2, effects: convertColorFields(l.effects, hex) };
8591
8681
  if (l.type === "group") {
8592
8682
  if (next2 !== l) converted.push(l.id);
8593
8683
  return { ...next2, children: walk(l.children) };
@@ -8601,7 +8691,7 @@ var ImageEditorController = (_class10 = class {
8601
8691
  const recoloured = { ...next2, runs: convertColorFields(l.runs, hex) };
8602
8692
  try {
8603
8693
  next2 = _chunkUHMSMUHKcjs.rerenderText.call(void 0, recoloured, textEnv);
8604
- } catch (e29) {
8694
+ } catch (e30) {
8605
8695
  next2 = { ...recoloured, surface: convertSurfaceColors(l.surface, t) };
8606
8696
  }
8607
8697
  } else if (l.type === "annotation") next2 = { ...next2, annotation: convertColorFields(l.annotation, hex) };
@@ -8760,8 +8850,8 @@ var ImageEditorController = (_class10 = class {
8760
8850
  else delete s.bitDepth;
8761
8851
  delete s.colorProfile;
8762
8852
  delete s.colorMode;
8763
- if (_optionalChain([result, 'access', _326 => _326.sourceMode, 'optionalAccess', _327 => _327.mode]) === "cmyk") s.colorMode = { mode: "cmyk", profile: result.sourceMode.profile, intent: "relative" };
8764
- else if (_optionalChain([result, 'access', _328 => _328.sourceMode, 'optionalAccess', _329 => _329.mode]) === "lab") s.colorMode = { mode: "lab" };
8853
+ if (_optionalChain([result, 'access', _331 => _331.sourceMode, 'optionalAccess', _332 => _332.mode]) === "cmyk") s.colorMode = { mode: "cmyk", profile: result.sourceMode.profile, intent: "relative" };
8854
+ else if (_optionalChain([result, 'access', _333 => _333.sourceMode, 'optionalAccess', _334 => _334.mode]) === "lab") s.colorMode = { mode: "lab" };
8765
8855
  else if (result.iccProfile) {
8766
8856
  try {
8767
8857
  const doc = documentProfile(result.iccProfile);
@@ -8825,7 +8915,7 @@ var ImageEditorController = (_class10 = class {
8825
8915
  const compositor = new (0, _chunkUHMSMUHKcjs.LayerCompositor)();
8826
8916
  const bakeMask = (layer) => {
8827
8917
  const mask = layer.mask;
8828
- if (!_optionalChain([mask, 'optionalAccess', _330 => _330.source])) return mask;
8918
+ if (!_optionalChain([mask, 'optionalAccess', _335 => _335.source])) return mask;
8829
8919
  add2("Parametric (depth) masks were baked into pixel masks", layer.name);
8830
8920
  const plain3 = { ...layer, mask: { ...mask, density: 1, feather: 0, enabled: true } };
8831
8921
  const ox = layer.type === "pixel" ? layer.offset.x : 0;
@@ -8842,7 +8932,7 @@ var ImageEditorController = (_class10 = class {
8842
8932
  };
8843
8933
  const prepare = async (layer) => {
8844
8934
  const p = await prepareLayer(layer);
8845
- if (_optionalChain([p, 'optionalAccess', _331 => _331.blend]) === "pigment") add2("The Pigment blend mode has no PSD equivalent and was written as Normal", layer.name);
8935
+ if (_optionalChain([p, 'optionalAccess', _336 => _336.blend]) === "pigment") add2("The Pigment blend mode has no PSD equivalent and was written as Normal", layer.name);
8846
8936
  return p;
8847
8937
  };
8848
8938
  const prepareLayer = async (layer) => {
@@ -8885,7 +8975,7 @@ var ImageEditorController = (_class10 = class {
8885
8975
  return out2;
8886
8976
  }
8887
8977
  if (layer.type === "shape" || layer.type === "type") {
8888
- if (layer.type === "type" && _optionalChain([layer, 'access', _332 => _332.missingFonts, 'optionalAccess', _333 => _333.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);
8978
+ if (layer.type === "type" && _optionalChain([layer, 'access', _337 => _337.missingFonts, 'optionalAccess', _338 => _338.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);
8889
8979
  const out2 = { ...layer };
8890
8980
  const mask2 = bakeMask(layer);
8891
8981
  if (mask2) out2.mask = mask2;
@@ -8904,7 +8994,7 @@ var ImageEditorController = (_class10 = class {
8904
8994
  out.surface = this.surfaceOf(layer);
8905
8995
  delete out.source;
8906
8996
  }
8907
- const active = _nullishCoalesce(_optionalChain([layer, 'access', _334 => _334.filters, 'optionalAccess', _335 => _335.filter, 'call', _336 => _336(_chunkUHMSMUHKcjs.isActiveFilter)]), () => ( []));
8997
+ const active = _nullishCoalesce(_optionalChain([layer, 'access', _339 => _339.filters, 'optionalAccess', _340 => _340.filter, 'call', _341 => _341(_chunkUHMSMUHKcjs.isActiveFilter)]), () => ( []));
8908
8998
  if (active.length) {
8909
8999
  add2("Layer filters (develop, blur) were baked into the pixels", layer.name);
8910
9000
  const content = { ...out, visible: true, opacity: 1, blend: "normal" };
@@ -8915,7 +9005,7 @@ var ImageEditorController = (_class10 = class {
8915
9005
  const data = compositor.composite([content], canvas, sources);
8916
9006
  out = { ...out, surface: _chunkCWM3CUUXcjs.surfaceFromPixels.call(void 0, { width, height, data }, 4, -layer.offset.x, -layer.offset.y) };
8917
9007
  }
8918
- if (_optionalChain([layer, 'access', _337 => _337.filters, 'optionalAccess', _338 => _338.some, 'call', _339 => _339((f) => !f.enabled)])) add2("Disabled layer filters were left out", layer.name);
9008
+ if (_optionalChain([layer, 'access', _342 => _342.filters, 'optionalAccess', _343 => _343.some, 'call', _344 => _344((f) => !f.enabled)])) add2("Disabled layer filters were left out", layer.name);
8919
9009
  delete out.filters;
8920
9010
  const mask = bakeMask(layer);
8921
9011
  if (mask) out.mask = mask;
@@ -8972,7 +9062,7 @@ var ImageEditorController = (_class10 = class {
8972
9062
  );
8973
9063
  }
8974
9064
  layers = resizeLegacyMasks(layers, prev, next.dimensions);
8975
- const env = { ...next.dimensions, pattern: (pid) => _nullishCoalesce(_optionalChain([this, 'access', _340 => _340.state, 'access', _341 => _341.patterns, 'optionalAccess', _342 => _342.find, 'call', _343 => _343((p) => p.id === pid)]), () => ( null)) };
9065
+ const env = { ...next.dimensions, pattern: (pid) => _nullishCoalesce(_optionalChain([this, 'access', _345 => _345.state, 'access', _346 => _346.patterns, 'optionalAccess', _347 => _347.find, 'call', _348 => _348((p) => p.id === pid)]), () => ( null)) };
8976
9066
  for (const l of _chunkHGTDMKNEcjs.flattenLayers.call(void 0, layers)) {
8977
9067
  if (l.type === "annotation") {
8978
9068
  layers = _chunkHGTDMKNEcjs.mapLayer.call(void 0, layers, l.id, () => ({ ...l, annotation: scaleAnnotation(l.annotation, sx, sy) }));
@@ -8981,7 +9071,7 @@ var ImageEditorController = (_class10 = class {
8981
9071
  const scaled = a ? scaleAnnotation(a, sx, sy) : null;
8982
9072
  const fromAnnotation = scaled ? _chunkUHMSMUHKcjs.shapeFromAnnotation.call(void 0, scaled) : null;
8983
9073
  const m = [sx, 0, 0, sy, 0, 0];
8984
- const components = _nullishCoalesce(_optionalChain([fromAnnotation, 'optionalAccess', _344 => _344.components]), () => ( _chunkUHMSMUHKcjs.transformShapeComponents.call(void 0, l.components, (p) => ({ x: p.x * sx, y: p.y * sy }), m)));
9074
+ const components = _nullishCoalesce(_optionalChain([fromAnnotation, 'optionalAccess', _349 => _349.components]), () => ( _chunkUHMSMUHKcjs.transformShapeComponents.call(void 0, l.components, (p) => ({ x: p.x * sx, y: p.y * sy }), m)));
8985
9075
  const moved = { ...l, components, ...fromAnnotation ? { fill: fromAnnotation.fill, stroke: fromAnnotation.stroke } : {} };
8986
9076
  if (scaled && fromAnnotation) moved.annotation = scaled;
8987
9077
  else delete moved.annotation;
@@ -8999,7 +9089,7 @@ var ImageEditorController = (_class10 = class {
8999
9089
  this.notify();
9000
9090
  }
9001
9091
  toJSON(options) {
9002
- const root = _optionalChain([this, 'access', _345 => _345.contentsStack, 'access', _346 => _346[0], 'optionalAccess', _347 => _347.saved]);
9092
+ const root = _optionalChain([this, 'access', _350 => _350.contentsStack, 'access', _351 => _351[0], 'optionalAccess', _352 => _352.saved]);
9003
9093
  const current = this.state;
9004
9094
  const element = this.imageElement;
9005
9095
  if (root) {
@@ -9010,7 +9100,7 @@ var ImageEditorController = (_class10 = class {
9010
9100
  let out;
9011
9101
  try {
9012
9102
  out = this.serializeState();
9013
- if (_optionalChain([this, 'access', _348 => _348.state, 'access', _349 => _349.selection, 'optionalAccess', _350 => _350.bounds])) out.selection = _chunkUHMSMUHKcjs.serializeSelection.call(void 0, this.state.selection);
9103
+ if (_optionalChain([this, 'access', _353 => _353.state, 'access', _354 => _354.selection, 'optionalAccess', _355 => _355.bounds])) out.selection = _chunkUHMSMUHKcjs.serializeSelection.call(void 0, this.state.selection);
9014
9104
  } finally {
9015
9105
  if (root) {
9016
9106
  this.state = current;
@@ -9045,7 +9135,7 @@ var ImageEditorController = (_class10 = class {
9045
9135
  if (data.selection) {
9046
9136
  try {
9047
9137
  selection = normalizeSelection(_chunkUHMSMUHKcjs.deserializeSelection.call(void 0, data.selection));
9048
- } catch (e30) {
9138
+ } catch (e31) {
9049
9139
  selection = null;
9050
9140
  }
9051
9141
  }
@@ -9054,7 +9144,7 @@ var ImageEditorController = (_class10 = class {
9054
9144
  this.notify();
9055
9145
  }
9056
9146
  /** Problems found by the last `loadJSON` / `initialState` of a v3 document (unreadable layers or assets). */
9057
- __init89() {this.lastLoadProblems = []}
9147
+ __init90() {this.lastLoadProblems = []}
9058
9148
  applyStored(raw) {
9059
9149
  const s = this.state;
9060
9150
  const data = migrateSerializedImageEditorState(raw);
@@ -9119,10 +9209,10 @@ var ImageEditorController = (_class10 = class {
9119
9209
  serializeState() {
9120
9210
  const { width, height } = this.naturalSize;
9121
9211
  const view = _chunkUHMSMUHKcjs.legacyView.call(void 0, this.stack(), width, height, null);
9122
- if (view.exact && !this.state.globalLight && !_optionalChain([this, 'access', _351 => _351.state, 'access', _352 => _352.patterns, 'optionalAccess', _353 => _353.length]) && this.bitDepth === 8 && !this.state.colorProfile && !this.state.colorMode) {
9212
+ if (view.exact && !this.state.globalLight && !_optionalChain([this, 'access', _356 => _356.state, 'access', _357 => _357.patterns, 'optionalAccess', _358 => _358.length]) && this.bitDepth === 8 && !this.state.colorProfile && !this.state.colorMode) {
9123
9213
  return {
9124
9214
  // States without adjustment layers keep schema 1, so they round-trip unchanged.
9125
- version: _optionalChain([view, 'access', _354 => _354.adjustments, 'access', _355 => _355.layers, 'optionalAccess', _356 => _356.length]) ? 2 : 1,
9215
+ version: _optionalChain([view, 'access', _359 => _359.adjustments, 'access', _360 => _360.layers, 'optionalAccess', _361 => _361.length]) ? 2 : 1,
9126
9216
  crop: this.state.crop ? { ...this.state.crop } : null,
9127
9217
  transform: { ...this.state.transform },
9128
9218
  adjustments: serializeAdjustments(view.adjustments),
@@ -9147,7 +9237,7 @@ var ImageEditorController = (_class10 = class {
9147
9237
  };
9148
9238
  if (this.state.legacyOutputBlur !== void 0) out.legacyOutputBlur = this.state.legacyOutputBlur;
9149
9239
  if (this.state.globalLight) out.globalLight = { ...this.state.globalLight };
9150
- if (_optionalChain([this, 'access', _357 => _357.state, 'access', _358 => _358.patterns, 'optionalAccess', _359 => _359.length])) out.patterns = _chunkUHMSMUHKcjs.serializePatterns.call(void 0, this.state.patterns);
9240
+ if (_optionalChain([this, 'access', _362 => _362.state, 'access', _363 => _363.patterns, 'optionalAccess', _364 => _364.length])) out.patterns = _chunkUHMSMUHKcjs.serializePatterns.call(void 0, this.state.patterns);
9151
9241
  if (smartContents) out.smartContents = smartContents;
9152
9242
  if (this.state.bitDepth === 16 || this.state.bitDepth === 32) out.bitDepth = this.state.bitDepth;
9153
9243
  if (this.state.colorProfile) out.colorProfile = serializeColorProfile(this.state.colorProfile);
@@ -9157,7 +9247,7 @@ var ImageEditorController = (_class10 = class {
9157
9247
  }, _class10);
9158
9248
  function serializeAdjustments(adjustments) {
9159
9249
  const out = { ...adjustments };
9160
- if (_optionalChain([out, 'access', _360 => _360.layers, 'optionalAccess', _361 => _361.length])) out.layers = JSON.parse(JSON.stringify(out.layers));
9250
+ if (_optionalChain([out, 'access', _365 => _365.layers, 'optionalAccess', _366 => _366.length])) out.layers = JSON.parse(JSON.stringify(out.layers));
9161
9251
  else delete out.layers;
9162
9252
  if (_chunkUHMSMUHKcjs.normalizeProcessVersion.call(void 0, out.process) === _chunkUHMSMUHKcjs.LEGACY_PROCESS_VERSION) {
9163
9253
  delete out.process;
@@ -9193,11 +9283,11 @@ function withDevelop(layer, partial) {
9193
9283
  return { ...layer, filters };
9194
9284
  }
9195
9285
  function withBlur(layer, radius) {
9196
- const existing = _optionalChain([layer, 'access', _362 => _362.filters, 'optionalAccess', _363 => _363.find, 'call', _364 => _364((f) => f.kind === "blur")]);
9286
+ const existing = _optionalChain([layer, 'access', _367 => _367.filters, 'optionalAccess', _368 => _368.find, 'call', _369 => _369((f) => f.kind === "blur")]);
9197
9287
  const filters = (_nullishCoalesce(layer.filters, () => ( []))).filter((f) => f.kind !== "blur");
9198
9288
  if (radius > 0) {
9199
9289
  filters.push({
9200
- id: _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _365 => _365.id]), () => ( (layer.source === "document" ? _chunkUHMSMUHKcjs.BLUR_FILTER_ID : _chunkUHMSMUHKcjs.newLayerId.call(void 0, "flt")))),
9290
+ id: _nullishCoalesce(_optionalChain([existing, 'optionalAccess', _370 => _370.id]), () => ( (layer.source === "document" ? _chunkUHMSMUHKcjs.BLUR_FILTER_ID : _chunkUHMSMUHKcjs.newLayerId.call(void 0, "flt")))),
9201
9291
  kind: "blur",
9202
9292
  enabled: true,
9203
9293
  radius
@@ -9289,7 +9379,7 @@ function collectStateTiles(layers, into) {
9289
9379
  if (l.type === "shape" || l.type === "type") _chunkCWM3CUUXcjs.collectTiles.call(void 0, l.surface, into);
9290
9380
  if (l.type === "smart") {
9291
9381
  _chunkCWM3CUUXcjs.collectTiles.call(void 0, l.surface, into);
9292
- if (_optionalChain([l, 'access', _366 => _366.smartFilters, 'optionalAccess', _367 => _367.mask])) _chunkCWM3CUUXcjs.collectTiles.call(void 0, l.smartFilters.mask.surface, into);
9382
+ if (_optionalChain([l, 'access', _371 => _371.smartFilters, 'optionalAccess', _372 => _372.mask])) _chunkCWM3CUUXcjs.collectTiles.call(void 0, l.smartFilters.mask.surface, into);
9293
9383
  if (l.contents.raster) _chunkCWM3CUUXcjs.collectTiles.call(void 0, l.contents.raster, into);
9294
9384
  if (l.contents.document) collectStateTiles(l.contents.document.layers, into);
9295
9385
  }
@@ -9321,7 +9411,7 @@ function pixelsOnly(layers) {
9321
9411
  for (const l of layers) {
9322
9412
  if (l.type === "adjustment") continue;
9323
9413
  if (l.type === "group") out.push({ ...l, children: pixelsOnly(l.children) });
9324
- else if (l.type === "pixel" && _optionalChain([l, 'access', _368 => _368.filters, 'optionalAccess', _369 => _369.length])) {
9414
+ else if (l.type === "pixel" && _optionalChain([l, 'access', _373 => _373.filters, 'optionalAccess', _374 => _374.length])) {
9325
9415
  const p = { ...l };
9326
9416
  delete p.filters;
9327
9417
  out.push(p);
@@ -9387,7 +9477,7 @@ function toHex(c) {
9387
9477
  return "#" + [c[0], c[1], c[2]].map((v) => Math.round(v).toString(16).padStart(2, "0")).join("");
9388
9478
  }
9389
9479
  function normalizeSelection(mask) {
9390
- return _optionalChain([mask, 'optionalAccess', _370 => _370.bounds]) ? mask : null;
9480
+ return _optionalChain([mask, 'optionalAccess', _375 => _375.bounds]) ? mask : null;
9391
9481
  }
9392
9482
  function sameSelection(a, b) {
9393
9483
  if (a.width !== b.width || a.height !== b.height) return false;
@@ -9541,7 +9631,7 @@ function loadImageEditorDocument(input) {
9541
9631
  if (typeof input === "string") {
9542
9632
  try {
9543
9633
  parsed = JSON.parse(input);
9544
- } catch (e31) {
9634
+ } catch (e32) {
9545
9635
  parsed = input;
9546
9636
  }
9547
9637
  }
@@ -9597,7 +9687,7 @@ function loadImageEditorDocument(input) {
9597
9687
  }
9598
9688
  const state = { version: 1, ...result.value };
9599
9689
  if (isV2) {
9600
- if (_optionalChain([state, 'access', _371 => _371.adjustments, 'access', _372 => _372.layers, 'optionalAccess', _373 => _373.length])) state.version = 2;
9690
+ if (_optionalChain([state, 'access', _376 => _376.adjustments, 'access', _377 => _377.layers, 'optionalAccess', _378 => _378.length])) state.version = 2;
9601
9691
  result.report.version = 2;
9602
9692
  }
9603
9693
  if (state.selection === void 0) delete state.selection;
@@ -9805,7 +9895,7 @@ function findAdjustmentControl(id) {
9805
9895
  }
9806
9896
  function findLayerControl(kind, id) {
9807
9897
  if (id === "opacity") return ADJUSTMENT_LAYER_OPACITY_CONTROL;
9808
- return _optionalChain([ADJUSTMENT_LAYER_CONTROLS, 'access', _374 => _374[kind], 'optionalAccess', _375 => _375.find, 'call', _376 => _376((c) => c.id === id)]);
9898
+ return _optionalChain([ADJUSTMENT_LAYER_CONTROLS, 'access', _379 => _379[kind], 'optionalAccess', _380 => _380.find, 'call', _381 => _381((c) => c.id === id)]);
9809
9899
  }
9810
9900
  function clampControlValue(spec, v) {
9811
9901
  if (typeof v !== "number" || !Number.isFinite(v)) return spec.default;
@@ -10022,7 +10112,7 @@ var DEPTH_MASK_CONTROLS = [
10022
10112
  // src/image-editor/playback.ts
10023
10113
  var IMAGE_PLAYBACK_KIND = "layer";
10024
10114
  var PAINT = /^(paint_stroke|clone_stamp|heal_brush|spot_heal|dodge|burn|sponge|smudge|blur_stroke|sharpen_stroke|history_brush|set_clone_source|set_clone_transform|fill_pixels|clear_pixels|set_paint|set_retouch_options|load_mixer_brush|clean_mixer_brush)$/;
10025
- var SELECT = /^(select_region|select_by_color|modify_selection|refine_selection|transform_selection|apply_selection_as_mask|layer_via_copy)$/;
10115
+ var SELECT = /^(select_region|select_subject|select_by_color|modify_selection|refine_selection|transform_selection|apply_selection_as_mask|layer_via_copy)$/;
10026
10116
  var ANNOTATE = /^(add_shape_layer|update_shape|add_shape_component|set_shape_component|remove_shape_component|merge_shape_components|add_text_layer|set_text|set_text_style|set_paragraph_style|set_text_frame|convert_text_to_shape)$/;
10027
10117
  var CROP = /^(set_crop|reset_crop|set_rotation|flip_image|transform_layer|warp_layer|flip_layer|offset_layer)$/;
10028
10118
  var ADJUST = /^(set_adjustments|add_adjustment_layer|update_adjustment_layer|remove_adjustment_layer|move_adjustment_layer)$/;
@@ -10043,7 +10133,7 @@ function createImagePlaybackLocator(controller) {
10043
10133
  };
10044
10134
  }
10045
10135
  var num = (v) => typeof v === "number" && Number.isFinite(v);
10046
- var isPoint = (p) => !!p && typeof p === "object" && num(p.x) && num(p.y);
10136
+ var isPoint2 = (p) => !!p && typeof p === "object" && num(p.x) && num(p.y);
10047
10137
  function trace(points, max = 32) {
10048
10138
  const list = points.length <= max ? points : Array.from({ length: max }, (_, i) => points[Math.round(i * (points.length - 1) / (max - 1))]);
10049
10139
  if (!list.length) return [];
@@ -10079,7 +10169,7 @@ function planImageToolPlayback(tool, args) {
10079
10169
  const steps = [];
10080
10170
  const panel = imagePlaybackPanel(tool);
10081
10171
  if (panel) steps.push({ type: "open", ref: { kind: "panel", id: panel } });
10082
- const points = Array.isArray(args.points) ? args.points.filter(isPoint) : [];
10172
+ const points = Array.isArray(args.points) ? args.points.filter(isPoint2) : [];
10083
10173
  const box = boxOf(args);
10084
10174
  if (points.length) steps.push(...trace(points));
10085
10175
  else if (box) steps.push({ type: "move", to: box.from }, { type: "press" }, { type: "drag", to: box.to }, { type: "release" });
@@ -10186,7 +10276,7 @@ function summary(controller) {
10186
10276
  const area = _chunkUHMSMUHKcjs.selectionArea.call(void 0, sel);
10187
10277
  return {
10188
10278
  empty: !sel,
10189
- bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _377 => _377.bounds]), () => ( null)),
10279
+ bounds: _nullishCoalesce(_optionalChain([sel, 'optionalAccess', _382 => _382.bounds]), () => ( null)),
10190
10280
  /** Σ coverage in pixels. */
10191
10281
  area: Math.round(area),
10192
10282
  percent: Math.round(area / Math.max(1, width * height) * 1e4) / 100,
@@ -10212,15 +10302,26 @@ function createImageSelectionTools(controller) {
10212
10302
  const selectRegion = {
10213
10303
  name: "select_region",
10214
10304
  title: "Select a region",
10215
- description: 'Selects a rectangle or ellipse (x, y, width, height in natural image pixels), everything ("all"), nothing ("none") or the inverse of the current selection ("invert"). One undoable step.',
10305
+ description: 'Selects a rectangle or ellipse (x, y, width, height in natural image pixels), a polygon (the lasso: points along an outline, closed automatically), everything ("all"), nothing ("none") or the inverse of the current selection ("invert"). To cut out a subject, trace its contour with polygon (then refine_selection for soft edges such as fur or foliage) rather than selecting its bounding box. One undoable step.',
10216
10306
  inputSchema: {
10217
10307
  type: "object",
10218
10308
  properties: {
10219
- shape: { type: "string", enum: ["rect", "ellipse", "all", "none", "invert"], description: "What to select." },
10309
+ shape: { type: "string", enum: ["rect", "ellipse", "polygon", "all", "none", "invert"], description: "What to select." },
10220
10310
  x: { type: "number", description: "rect / ellipse: left edge in natural image pixels." },
10221
10311
  y: { type: "number", description: "rect / ellipse: top edge in natural image pixels." },
10222
10312
  width: { type: "number", description: "rect / ellipse: width in natural image pixels." },
10223
10313
  height: { type: "number", description: "rect / ellipse: height in natural image pixels." },
10314
+ points: {
10315
+ type: "array",
10316
+ minItems: 3,
10317
+ items: {
10318
+ type: "object",
10319
+ properties: { x: { type: "number" }, y: { type: "number" } },
10320
+ required: ["x", "y"],
10321
+ additionalProperties: false
10322
+ },
10323
+ description: "polygon: at least 3 vertices along the outline, in order, in natural image pixels. Follow the edge closely; more points give a tighter contour."
10324
+ },
10224
10325
  mode: modeSchema,
10225
10326
  feather: { type: "number", minimum: 0, description: "Feather radius in pixels (default 0)." }
10226
10327
  },
@@ -10228,7 +10329,7 @@ function createImageSelectionTools(controller) {
10228
10329
  additionalProperties: false
10229
10330
  },
10230
10331
  annotations: writeAnnotations("Select a region", true),
10231
- handler: ({ shape, x, y, width, height, mode, feather }) => {
10332
+ handler: ({ shape, x, y, width, height, points, mode, feather }) => {
10232
10333
  const opts = { mode: _chunkUHMSMUHKcjs.parseSelectionMode.call(void 0, mode), feather: num2(feather, 0) };
10233
10334
  switch (shape) {
10234
10335
  case "all":
@@ -10250,8 +10351,16 @@ function createImageSelectionTools(controller) {
10250
10351
  else controller.selectEllipse(rect, opts);
10251
10352
  break;
10252
10353
  }
10354
+ case "polygon": {
10355
+ const list = Array.isArray(points) ? points.map((p) => ({ x: num2(_optionalChain([p, 'optionalAccess', _383 => _383.x]), NaN), y: num2(_optionalChain([p, 'optionalAccess', _384 => _384.y]), NaN) })) : [];
10356
+ if (list.length < 3 || !list.every((p) => Number.isFinite(p.x) && Number.isFinite(p.y))) {
10357
+ throw new Error("polygon needs points: at least 3 { x, y } vertices.");
10358
+ }
10359
+ controller.selectPolygon(list, opts);
10360
+ break;
10361
+ }
10253
10362
  default:
10254
- throw new Error(`Unknown shape "${String(shape)}". Use rect, ellipse, all, none or invert.`);
10363
+ throw new Error(`Unknown shape "${String(shape)}". Use rect, ellipse, polygon, all, none or invert.`);
10255
10364
  }
10256
10365
  return summary(controller);
10257
10366
  }
@@ -10391,6 +10500,53 @@ function createImageSelectionTools(controller) {
10391
10500
  };
10392
10501
  return [getSelection, selectRegion, selectByColor, modify, refine, applyMask];
10393
10502
  }
10503
+ function createImageSubjectSelectionTool(controller) {
10504
+ return {
10505
+ name: "select_subject",
10506
+ title: "Select a subject",
10507
+ description: 'Select \u203A Subject: an AI segmentation model finds the objects matching target (a description such as "the dog", "the house", "the sky") in the flattened image and selects their outlines, combined with the selection by mode. Use it to cut a subject out by its contour (then layer_via_copy for a layer of just that subject); describe one object precisely to get only that one. One undoable step. Returns the selection and the objects found (label, bounds); none found leaves the selection unchanged.',
10508
+ inputSchema: {
10509
+ type: "object",
10510
+ properties: {
10511
+ target: { type: "string", minLength: 1, description: "What to select, in words." },
10512
+ maxSegments: {
10513
+ type: "integer",
10514
+ minimum: 1,
10515
+ maximum: 32,
10516
+ description: "Select at most this many matching objects (default the model\u2019s; 1 for a single subject)."
10517
+ },
10518
+ mode: modeSchema,
10519
+ feather: { type: "number", minimum: 0, description: "Feather radius in pixels (default 0)." }
10520
+ },
10521
+ required: ["target"],
10522
+ additionalProperties: false
10523
+ },
10524
+ annotations: { ...writeAnnotations("Select a subject"), openWorldHint: true },
10525
+ handler: async ({ target, maxSegments, mode, feather }) => {
10526
+ if (typeof target !== "string" || !target.trim()) throw new Error("target must describe what to select.");
10527
+ const { segments } = await controller.selectSubject(target, {
10528
+ mode: _chunkUHMSMUHKcjs.parseSelectionMode.call(void 0, mode),
10529
+ feather: num2(feather, 0),
10530
+ maxSegments: typeof maxSegments === "number" ? Math.max(1, Math.round(maxSegments)) : void 0
10531
+ });
10532
+ return { ...summary(controller), found: segments };
10533
+ }
10534
+ };
10535
+ }
10536
+ function createImageSegmentationToolProvider(controller, options = {}) {
10537
+ const tool = createImageSubjectSelectionTool(controller);
10538
+ return withImagePlayback(
10539
+ {
10540
+ id: _nullishCoalesce(options.id, () => ( "image-segmentation")),
10541
+ namespace: options.namespace,
10542
+ title: "Image segmentation",
10543
+ description: "Select \u203A Subject: select objects in the image by description through an AI segmentation model.",
10544
+ skill: "pixerate-image-editor",
10545
+ tools: () => controller.segmentationProvider ? [tool] : []
10546
+ },
10547
+ options.playbackSurface
10548
+ );
10549
+ }
10394
10550
 
10395
10551
  // src/image-editor/capture.ts
10396
10552
  var NO_CANVAS = "Rendering is not available in this environment.";
@@ -10430,7 +10586,7 @@ async function renderImageRegion(controller, request) {
10430
10586
  if (request.includeOverlays) {
10431
10587
  const s = request.scale;
10432
10588
  const selection = state.selection;
10433
- if (_optionalChain([selection, 'optionalAccess', _378 => _378.bounds]) && selection.width === state.imageDimensions.width && selection.height === state.imageDimensions.height) {
10589
+ if (_optionalChain([selection, 'optionalAccess', _385 => _385.bounds]) && selection.width === state.imageDimensions.width && selection.height === state.imageDimensions.height) {
10434
10590
  const shade = selectionShade(selection, document);
10435
10591
  if (shade) context.drawImage(shade, rect.x, rect.y, rect.width, rect.height, 0, 0, out.width, out.height);
10436
10592
  }
@@ -10455,7 +10611,7 @@ function createImageCaptureSurface(controller) {
10455
10611
  return {
10456
10612
  units: "image pixels",
10457
10613
  content: whole,
10458
- selection: () => ({ rect: _nullishCoalesce(_optionalChain([controller, 'access', _379 => _379.getState, 'call', _380 => _380(), 'access', _381 => _381.selection, 'optionalAccess', _382 => _382.bounds]), () => ( null)) }),
10614
+ selection: () => ({ rect: _nullishCoalesce(_optionalChain([controller, 'access', _386 => _386.getState, 'call', _387 => _387(), 'access', _388 => _388.selection, 'optionalAccess', _389 => _389.bounds]), () => ( null)) }),
10459
10615
  overlays: "a shade over unselected pixels and the crop box outline",
10460
10616
  maxScale: 8,
10461
10617
  render: (request) => renderImageRegion(controller, request)
@@ -10788,7 +10944,7 @@ function describeLayer(layer, activeId, boundsOf) {
10788
10944
  out.bounds = boundsOf(layer);
10789
10945
  out.fillOpacity = round3(_nullishCoalesce(layer.fillOpacity, () => ( 1)));
10790
10946
  out.shape = {
10791
- components: layer.components.map((c) => ({ op: c.op, kind: _nullishCoalesce(_optionalChain([c, 'access', _383 => _383.live, 'optionalAccess', _384 => _384.kind]), () => ( "path")) })),
10947
+ components: layer.components.map((c) => ({ op: c.op, kind: _nullishCoalesce(_optionalChain([c, 'access', _390 => _390.live, 'optionalAccess', _391 => _391.kind]), () => ( "path")) })),
10792
10948
  fill: layer.fill ? layer.fill.type : null,
10793
10949
  stroke: layer.stroke ? { width: layer.stroke.width, paint: layer.stroke.paint.type } : null
10794
10950
  };
@@ -10810,8 +10966,8 @@ function describeLayer(layer, activeId, boundsOf) {
10810
10966
  out.bounds = boundsOf(layer);
10811
10967
  out.fillOpacity = round3(_nullishCoalesce(layer.fillOpacity, () => ( 1)));
10812
10968
  out.contents = { id: layer.contents.id, name: layer.contents.name, kind: layer.contents.kind, width: layer.contents.width, height: layer.contents.height };
10813
- out.smartFilters = (_nullishCoalesce(_optionalChain([layer, 'access', _385 => _385.smartFilters, 'optionalAccess', _386 => _386.filters]), () => ( []))).map((f) => ({ id: f.id, kind: f.kind, enabled: f.enabled }));
10814
- out.filterMask = maskSummary(_optionalChain([layer, 'access', _387 => _387.smartFilters, 'optionalAccess', _388 => _388.mask]));
10969
+ out.smartFilters = (_nullishCoalesce(_optionalChain([layer, 'access', _392 => _392.smartFilters, 'optionalAccess', _393 => _393.filters]), () => ( []))).map((f) => ({ id: f.id, kind: f.kind, enabled: f.enabled }));
10970
+ out.filterMask = maskSummary(_optionalChain([layer, 'access', _394 => _394.smartFilters, 'optionalAccess', _395 => _395.mask]));
10815
10971
  break;
10816
10972
  }
10817
10973
  return out;
@@ -10839,7 +10995,7 @@ function createImageLayerTools(controller) {
10839
10995
  if (!loc) return null;
10840
10996
  return {
10841
10997
  ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)),
10842
- parentId: _nullishCoalesce(_optionalChain([loc, 'access', _389 => _389.parent, 'optionalAccess', _390 => _390.id]), () => ( null)),
10998
+ parentId: _nullishCoalesce(_optionalChain([loc, 'access', _396 => _396.parent, 'optionalAccess', _397 => _397.id]), () => ( null)),
10843
10999
  index: loc.index
10844
11000
  };
10845
11001
  };
@@ -11176,7 +11332,7 @@ function createImageLayerTools(controller) {
11176
11332
  const viaCopy = {
11177
11333
  name: "layer_via_copy",
11178
11334
  title: "New layer from the selection",
11179
- description: "Layer via Copy: copies the selected pixels of a pixel layer (layerId, default the active layer) to a new layer directly above it and makes it active. cut: true also removes them from the source (Layer via Cut). Needs a selection. One undo step. Returns the new layer.",
11335
+ description: "Layer via Copy: copies the selected pixels of a pixel layer (layerId, default the active layer) to a new layer directly above it and makes it active. cut: true also removes them from the source (Layer via Cut). Needs a selection; the new layer takes the selection\u2019s shape, so select the subject\u2019s outline (select_region polygon, select_by_color) to isolate it, not its bounding box. One undo step. Returns the new layer.",
11180
11336
  inputSchema: {
11181
11337
  type: "object",
11182
11338
  properties: {
@@ -11806,14 +11962,14 @@ function handlePaintShortcut(controller, e) {
11806
11962
  return false;
11807
11963
  }
11808
11964
  var PaintGesture = (_class11 = class {
11809
- constructor(controller) {;_class11.prototype.__init90.call(this);_class11.prototype.__init91.call(this);_class11.prototype.__init92.call(this);
11965
+ constructor(controller) {;_class11.prototype.__init91.call(this);_class11.prototype.__init92.call(this);_class11.prototype.__init93.call(this);
11810
11966
  this.controller = controller;
11811
11967
  }
11812
11968
 
11813
- __init90() {this.stroke = null}
11814
- __init91() {this.move = null}
11969
+ __init91() {this.stroke = null}
11970
+ __init92() {this.move = null}
11815
11971
  /** The last refusal (e.g. "layer is locked"), for the editor to show. */
11816
- __init92() {this.error = null}
11972
+ __init93() {this.error = null}
11817
11973
  get active() {
11818
11974
  return Boolean(this.stroke || this.move);
11819
11975
  }
@@ -11825,7 +11981,7 @@ var PaintGesture = (_class11 = class {
11825
11981
  const layer = this.controller.getActiveLayer();
11826
11982
  if (!layer) throw new Error("Select a layer to move in the Layers panel.");
11827
11983
  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.`);
11828
- if (_optionalChain([layer, 'access', _391 => _391.locks, 'optionalAccess', _392 => _392.all]) || _optionalChain([layer, 'access', _393 => _393.locks, 'optionalAccess', _394 => _394.position])) throw new Error(`Layer "${layer.name}" has its position locked.`);
11984
+ if (_optionalChain([layer, 'access', _398 => _398.locks, 'optionalAccess', _399 => _399.all]) || _optionalChain([layer, 'access', _400 => _400.locks, 'optionalAccess', _401 => _401.position])) throw new Error(`Layer "${layer.name}" has its position locked.`);
11829
11985
  const origin = layer.type === "pixel" ? { ...layer.offset } : layer.type === "smart" ? { ...layer.placement.corners[0] } : (() => {
11830
11986
  const b = _chunkUHMSMUHKcjs.shapeGeometryBounds.call(void 0, layer);
11831
11987
  return b ? { x: b.x, y: b.y } : { x: 0, y: 0 };
@@ -11882,7 +12038,7 @@ var PaintGesture = (_class11 = class {
11882
12038
  this.move = null;
11883
12039
  }
11884
12040
  cancel() {
11885
- _optionalChain([this, 'access', _395 => _395.stroke, 'optionalAccess', _396 => _396.cancel, 'call', _397 => _397()]);
12041
+ _optionalChain([this, 'access', _402 => _402.stroke, 'optionalAccess', _403 => _403.cancel, 'call', _404 => _404()]);
11886
12042
  this.stroke = null;
11887
12043
  this.move = null;
11888
12044
  }
@@ -12117,7 +12273,7 @@ function profileArg(v) {
12117
12273
  if (s.startsWith("icc:")) {
12118
12274
  try {
12119
12275
  return _chunkCWM3CUUXcjs.base64ToBytes.call(void 0, s.slice(4));
12120
- } catch (e32) {
12276
+ } catch (e33) {
12121
12277
  throw new (0, _chunkUHMSMUHKcjs.LayerOperationError)("The icc: value is not valid base64.");
12122
12278
  }
12123
12279
  }
@@ -12963,7 +13119,7 @@ function createImageSmartObjectTools(controller) {
12963
13119
  const layerSummary = (id) => {
12964
13120
  const s = controller.getState();
12965
13121
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, s.layers, id);
12966
- return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _398 => _398.parent, 'optionalAccess', _399 => _399.id]), () => ( null)), index: loc.index } : null;
13122
+ return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _405 => _405.parent, 'optionalAccess', _406 => _406.id]), () => ( null)), index: loc.index } : null;
12967
13123
  };
12968
13124
  const getSmart = {
12969
13125
  name: "get_smart_object",
@@ -13518,7 +13674,7 @@ function createImageShapeTools(controller) {
13518
13674
  const layerSummary = (id) => {
13519
13675
  const s = controller.getState();
13520
13676
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, s.layers, id);
13521
- return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _400 => _400.parent, 'optionalAccess', _401 => _401.id]), () => ( null)), index: loc.index } : null;
13677
+ return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _407 => _407.parent, 'optionalAccess', _408 => _408.id]), () => ( null)), index: loc.index } : null;
13522
13678
  };
13523
13679
  const get = {
13524
13680
  name: "get_shape_layer",
@@ -13717,7 +13873,7 @@ function createImageTypeTools(controller) {
13717
13873
  const layerSummary = (id) => {
13718
13874
  const s = controller.getState();
13719
13875
  const loc = _chunkHGTDMKNEcjs.findLayer.call(void 0, s.layers, id);
13720
- return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _402 => _402.parent, 'optionalAccess', _403 => _403.id]), () => ( null)), index: loc.index } : null;
13876
+ return loc ? { ...describeLayer(loc.layer, s.activeLayerId, (x) => controller.getLayerBounds(x.id)), parentId: _nullishCoalesce(_optionalChain([loc, 'access', _409 => _409.parent, 'optionalAccess', _410 => _410.id]), () => ( null)), index: loc.index } : null;
13721
13877
  };
13722
13878
  const range = (args) => ({ start: args.start, end: args.end });
13723
13879
  const listFonts = {
@@ -13726,7 +13882,7 @@ function createImageTypeTools(controller) {
13726
13882
  description: "Returns the font families type layers can use here (generic families such as sans-serif always work). Changes nothing.",
13727
13883
  inputSchema: { type: "object", properties: {}, additionalProperties: false },
13728
13884
  annotations: { title: "List fonts", ...READ11 },
13729
- handler: () => ({ families: controller.listFonts(), shaper: _nullishCoalesce(_optionalChain([controller, 'access', _404 => _404.getTextShaper, 'call', _405 => _405(), 'optionalAccess', _406 => _406.id]), () => ( null)) })
13885
+ handler: () => ({ families: controller.listFonts(), shaper: _nullishCoalesce(_optionalChain([controller, 'access', _411 => _411.getTextShaper, 'call', _412 => _412(), 'optionalAccess', _413 => _413.id]), () => ( null)) })
13730
13886
  };
13731
13887
  const get = {
13732
13888
  name: "get_text_layer",
@@ -14015,7 +14171,7 @@ function createImageEditorToolProvider(controller, options = {}) {
14015
14171
  for (const ref of [aboveId, parentId]) {
14016
14172
  if (ref !== void 0 && !controller.getLayer(ref)) throw new Error(`Unknown layer "${ref}". Call list_layers for ids.`);
14017
14173
  }
14018
- if (parentId !== void 0 && _optionalChain([controller, 'access', _407 => _407.getLayer, 'call', _408 => _408(parentId), 'optionalAccess', _409 => _409.type]) !== "group") throw new Error(`Layer "${parentId}" is not a group.`);
14174
+ if (parentId !== void 0 && _optionalChain([controller, 'access', _414 => _414.getLayer, 'call', _415 => _415(parentId), 'optionalAccess', _416 => _416.type]) !== "group") throw new Error(`Layer "${parentId}" is not a group.`);
14019
14175
  const id = controller.addAdjustmentLayer({ kind, params, opacity, blend, name, aboveId, parentId });
14020
14176
  const layer = controller.getAdjustmentLayer(id);
14021
14177
  return { layer: JSON.parse(JSON.stringify(layer)), index: controller.getAdjustmentLayers().findIndex((l) => l.id === id) };
@@ -14153,18 +14309,18 @@ var round22 = (v) => Math.round(v * 100) / 100;
14153
14309
 
14154
14310
  // src/image-editor/selection/gesture.ts
14155
14311
  var SelectionGesture = (_class12 = class {
14156
- constructor(controller, getOptions) {;_class12.prototype.__init93.call(this);_class12.prototype.__init94.call(this);_class12.prototype.__init95.call(this);_class12.prototype.__init96.call(this);_class12.prototype.__init97.call(this);
14312
+ constructor(controller, getOptions) {;_class12.prototype.__init94.call(this);_class12.prototype.__init95.call(this);_class12.prototype.__init96.call(this);_class12.prototype.__init97.call(this);_class12.prototype.__init98.call(this);
14157
14313
  this.controller = controller;
14158
14314
  this.getOptions = getOptions;
14159
14315
  }
14160
14316
 
14161
14317
 
14162
- __init93() {this.start = null}
14163
- __init94() {this.points = []}
14164
- __init95() {this.current = null}
14165
- __init96() {this.modifiers = {}}
14318
+ __init94() {this.start = null}
14319
+ __init95() {this.points = []}
14320
+ __init96() {this.current = null}
14321
+ __init97() {this.modifiers = {}}
14166
14322
  /** The last error (e.g. pixels unavailable for the wand), for the UI to show. */
14167
- __init97() {this.error = null}
14323
+ __init98() {this.error = null}
14168
14324
  get active() {
14169
14325
  return this.start !== null;
14170
14326
  }
@@ -14439,7 +14595,7 @@ function layerHasThumbnail(layer) {
14439
14595
  return layer.type === "pixel" || layer.type === "shape" || layer.type === "type";
14440
14596
  }
14441
14597
  function layerWarning(layer) {
14442
- if (layer.type === "type" && _optionalChain([layer, 'access', _410 => _410.missingFonts, 'optionalAccess', _411 => _411.length])) {
14598
+ if (layer.type === "type" && _optionalChain([layer, 'access', _417 => _417.missingFonts, 'optionalAccess', _418 => _418.length])) {
14443
14599
  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."}`;
14444
14600
  }
14445
14601
  return null;
@@ -14462,36 +14618,36 @@ function layerMenu(controller) {
14462
14618
  const siblings = loc ? loc.parent ? loc.parent.children : s.layers : [];
14463
14619
  const below = loc ? siblings[loc.index - 1] : void 0;
14464
14620
  const hasSel = controller.hasSelection;
14465
- const isPixel = _optionalChain([active, 'optionalAccess', _412 => _412.type]) === "pixel";
14621
+ const isPixel = _optionalChain([active, 'optionalAccess', _419 => _419.type]) === "pixel";
14466
14622
  return [
14467
14623
  { action: "new-layer", label: "New Layer", enabled: true },
14468
14624
  { action: "new-group", label: "New Group", enabled: true },
14469
14625
  { action: "duplicate", label: "Duplicate Layer", enabled: Boolean(active) },
14470
14626
  { action: "delete", label: "Delete Layer", enabled: Boolean(active) },
14471
14627
  { action: "group-selected", label: "Group Layer", enabled: Boolean(active) },
14472
- { action: "ungroup", label: "Ungroup", enabled: _optionalChain([active, 'optionalAccess', _413 => _413.type]) === "group" },
14473
- { action: "merge-down", label: "Merge Down", enabled: Boolean(_optionalChain([active, 'optionalAccess', _414 => _414.visible]) && _optionalChain([below, 'optionalAccess', _415 => _415.type]) === "pixel") },
14628
+ { action: "ungroup", label: "Ungroup", enabled: _optionalChain([active, 'optionalAccess', _420 => _420.type]) === "group" },
14629
+ { action: "merge-down", label: "Merge Down", enabled: Boolean(_optionalChain([active, 'optionalAccess', _421 => _421.visible]) && _optionalChain([below, 'optionalAccess', _422 => _422.type]) === "pixel") },
14474
14630
  { action: "merge-visible", label: "Merge Visible", enabled: s.layers.some((l) => l.visible) },
14475
14631
  { action: "flatten", label: "Flatten Image", enabled: s.layers.length > 0 },
14476
14632
  { action: "via-copy", label: "Layer via Copy", enabled: isPixel && hasSel },
14477
14633
  { action: "via-cut", label: "Layer via Cut", enabled: isPixel && hasSel },
14478
14634
  { action: "add-mask", label: "Add Layer Mask", enabled: Boolean(active) },
14479
14635
  { action: "add-mask-selection", label: "Add Mask from Selection", enabled: Boolean(active) && hasSel },
14480
- { action: "apply-mask", label: "Apply Layer Mask", enabled: isPixel && Boolean(_optionalChain([active, 'optionalAccess', _416 => _416.mask])) },
14481
- { action: "delete-mask", label: "Delete Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _417 => _417.mask])) },
14482
- { action: "toggle-mask", label: _optionalChain([active, 'optionalAccess', _418 => _418.mask, 'optionalAccess', _419 => _419.enabled]) === false ? "Enable Layer Mask" : "Disable Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _420 => _420.mask])) },
14483
- { action: "toggle-mask-link", label: _optionalChain([active, 'optionalAccess', _421 => _421.mask, 'optionalAccess', _422 => _422.linked]) === false ? "Link Layer Mask" : "Unlink Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _423 => _423.mask]) && !active.mask.source) },
14484
- { action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess', _424 => _424.type]) === "annotation" || _optionalChain([active, 'optionalAccess', _425 => _425.type]) === "smart" || _optionalChain([active, 'optionalAccess', _426 => _426.type]) === "shape" || _optionalChain([active, 'optionalAccess', _427 => _427.type]) === "type" || isPixel && Boolean(_optionalChain([active, 'optionalAccess', _428 => _428.type]) === "pixel" && _optionalChain([active, 'access', _429 => _429.filters, 'optionalAccess', _430 => _430.length])) },
14636
+ { action: "apply-mask", label: "Apply Layer Mask", enabled: isPixel && Boolean(_optionalChain([active, 'optionalAccess', _423 => _423.mask])) },
14637
+ { action: "delete-mask", label: "Delete Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _424 => _424.mask])) },
14638
+ { action: "toggle-mask", label: _optionalChain([active, 'optionalAccess', _425 => _425.mask, 'optionalAccess', _426 => _426.enabled]) === false ? "Enable Layer Mask" : "Disable Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _427 => _427.mask])) },
14639
+ { action: "toggle-mask-link", label: _optionalChain([active, 'optionalAccess', _428 => _428.mask, 'optionalAccess', _429 => _429.linked]) === false ? "Link Layer Mask" : "Unlink Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _430 => _430.mask]) && !active.mask.source) },
14640
+ { action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess', _431 => _431.type]) === "annotation" || _optionalChain([active, 'optionalAccess', _432 => _432.type]) === "smart" || _optionalChain([active, 'optionalAccess', _433 => _433.type]) === "shape" || _optionalChain([active, 'optionalAccess', _434 => _434.type]) === "type" || isPixel && Boolean(_optionalChain([active, 'optionalAccess', _435 => _435.type]) === "pixel" && _optionalChain([active, 'access', _436 => _436.filters, 'optionalAccess', _437 => _437.length])) },
14485
14641
  { action: "convert-smart", label: "Convert to Smart Object", enabled: Boolean(active && active.type !== "annotation") },
14486
- { action: "edit-contents", label: "Edit Contents", enabled: _optionalChain([active, 'optionalAccess', _431 => _431.type]) === "smart" },
14487
- { action: "smart-via-copy", label: "New Smart Object via Copy", enabled: _optionalChain([active, 'optionalAccess', _432 => _432.type]) === "smart" },
14488
- { action: "add-filter-mask", label: "Add Smart Filter Mask", enabled: _optionalChain([active, 'optionalAccess', _433 => _433.type]) === "smart" && !_optionalChain([active, 'access', _434 => _434.smartFilters, 'optionalAccess', _435 => _435.mask]) },
14489
- { action: "toggle-clip", label: _optionalChain([active, 'optionalAccess', _436 => _436.clipped]) ? "Release Clipping Mask" : "Create Clipping Mask", enabled: Boolean(loc && loc.index > 0) }
14642
+ { action: "edit-contents", label: "Edit Contents", enabled: _optionalChain([active, 'optionalAccess', _438 => _438.type]) === "smart" },
14643
+ { action: "smart-via-copy", label: "New Smart Object via Copy", enabled: _optionalChain([active, 'optionalAccess', _439 => _439.type]) === "smart" },
14644
+ { action: "add-filter-mask", label: "Add Smart Filter Mask", enabled: _optionalChain([active, 'optionalAccess', _440 => _440.type]) === "smart" && !_optionalChain([active, 'access', _441 => _441.smartFilters, 'optionalAccess', _442 => _442.mask]) },
14645
+ { action: "toggle-clip", label: _optionalChain([active, 'optionalAccess', _443 => _443.clipped]) ? "Release Clipping Mask" : "Create Clipping Mask", enabled: Boolean(loc && loc.index > 0) }
14490
14646
  ];
14491
14647
  }
14492
14648
  async function runLayerMenuAction(controller, action) {
14493
14649
  const active = controller.getActiveLayer();
14494
- const id = _optionalChain([active, 'optionalAccess', _437 => _437.id]);
14650
+ const id = _optionalChain([active, 'optionalAccess', _444 => _444.id]);
14495
14651
  try {
14496
14652
  switch (action) {
14497
14653
  case "new-layer":
@@ -14538,10 +14694,10 @@ async function runLayerMenuAction(controller, action) {
14538
14694
  if (id) controller.removeLayerMask(id);
14539
14695
  break;
14540
14696
  case "toggle-mask":
14541
- if (id && _optionalChain([active, 'optionalAccess', _438 => _438.mask])) controller.setLayerMaskProps(id, { enabled: active.mask.enabled === false });
14697
+ if (id && _optionalChain([active, 'optionalAccess', _445 => _445.mask])) controller.setLayerMaskProps(id, { enabled: active.mask.enabled === false });
14542
14698
  break;
14543
14699
  case "toggle-mask-link":
14544
- if (id && _optionalChain([active, 'optionalAccess', _439 => _439.mask])) controller.setLayerMaskProps(id, { linked: active.mask.linked === false });
14700
+ if (id && _optionalChain([active, 'optionalAccess', _446 => _446.mask])) controller.setLayerMaskProps(id, { linked: active.mask.linked === false });
14545
14701
  break;
14546
14702
  case "rasterize":
14547
14703
  if (id) await controller.rasterizeLayer(id);
@@ -14559,7 +14715,7 @@ async function runLayerMenuAction(controller, action) {
14559
14715
  if (id) controller.setSmartFilterMask(id, "reveal-all");
14560
14716
  break;
14561
14717
  case "toggle-clip":
14562
- if (id) controller.setLayerProperties(id, { clipped: !_optionalChain([active, 'optionalAccess', _440 => _440.clipped]) });
14718
+ if (id) controller.setLayerProperties(id, { clipped: !_optionalChain([active, 'optionalAccess', _447 => _447.clipped]) });
14563
14719
  break;
14564
14720
  }
14565
14721
  return null;
@@ -14569,7 +14725,7 @@ async function runLayerMenuAction(controller, action) {
14569
14725
  }
14570
14726
  function smartFilterRows(layer) {
14571
14727
  if (layer.type !== "smart") return [];
14572
- const list = _nullishCoalesce(_optionalChain([layer, 'access', _441 => _441.smartFilters, 'optionalAccess', _442 => _442.filters]), () => ( []));
14728
+ const list = _nullishCoalesce(_optionalChain([layer, 'access', _448 => _448.smartFilters, 'optionalAccess', _449 => _449.filters]), () => ( []));
14573
14729
  const rows = list.map((f, index) => ({
14574
14730
  filter: f,
14575
14731
  index,
@@ -14595,8 +14751,8 @@ function extractNormalizedLayerItems(controller, fallbackImageUrl = "") {
14595
14751
  };
14596
14752
  collectSerialized(_nullishCoalesce(serialized.layers, () => ( [])));
14597
14753
  const sLayerMap = new Map(allSerializedLayers.map((sl) => [sl.id, sl]));
14598
- const imgW = _optionalChain([state, 'access', _443 => _443.imageDimensions, 'optionalAccess', _444 => _444.width]) || 1;
14599
- const imgH = _optionalChain([state, 'access', _445 => _445.imageDimensions, 'optionalAccess', _446 => _446.height]) || 1;
14754
+ const imgW = _optionalChain([state, 'access', _450 => _450.imageDimensions, 'optionalAccess', _451 => _451.width]) || 1;
14755
+ const imgH = _optionalChain([state, 'access', _452 => _452.imageDimensions, 'optionalAccess', _453 => _453.height]) || 1;
14600
14756
  return ctrlLayers.map((l) => {
14601
14757
  const bounds = controller.getLayerBounds(l.id) || {
14602
14758
  x: 0,
@@ -14605,8 +14761,8 @@ function extractNormalizedLayerItems(controller, fallbackImageUrl = "") {
14605
14761
  height: imgH
14606
14762
  };
14607
14763
  const sLayer = sLayerMap.get(l.id);
14608
- const assetKey = _optionalChain([sLayer, 'optionalAccess', _447 => _447.asset]);
14609
- const layerDataUrl = assetKey && assets[assetKey] || assets[l.id] || (_optionalChain([sLayer, 'optionalAccess', _448 => _448.source]) === "document" ? fallbackImageUrl : "");
14764
+ const assetKey = _optionalChain([sLayer, 'optionalAccess', _454 => _454.asset]);
14765
+ const layerDataUrl = assetKey && assets[assetKey] || assets[l.id] || (_optionalChain([sLayer, 'optionalAccess', _455 => _455.source]) === "document" ? fallbackImageUrl : "");
14610
14766
  return {
14611
14767
  id: l.id,
14612
14768
  name: l.name || "Untitled Layer",
@@ -14660,9 +14816,9 @@ async function addLayerOfKind(controller, id, init) {
14660
14816
  const cx = Math.round(canvas.width / 2);
14661
14817
  const cy = Math.round(canvas.height / 2);
14662
14818
  return controller.addTextLayer({
14663
- text: _optionalChain([init, 'optionalAccess', _449 => _449.text]) || "New Text",
14664
- x: typeof _optionalChain([init, 'optionalAccess', _450 => _450.x]) === "number" ? init.x : cx - 100,
14665
- y: typeof _optionalChain([init, 'optionalAccess', _451 => _451.y]) === "number" ? init.y : cy,
14819
+ text: _optionalChain([init, 'optionalAccess', _456 => _456.text]) || "New Text",
14820
+ x: typeof _optionalChain([init, 'optionalAccess', _457 => _457.x]) === "number" ? init.x : cx - 100,
14821
+ y: typeof _optionalChain([init, 'optionalAccess', _458 => _458.y]) === "number" ? init.y : cy,
14666
14822
  ...init
14667
14823
  });
14668
14824
  }
@@ -14675,10 +14831,10 @@ async function addLayerOfKind(controller, id, init) {
14675
14831
  return controller.addShapeLayer({
14676
14832
  shape: {
14677
14833
  kind: "rect",
14678
- x: typeof _optionalChain([init, 'optionalAccess', _452 => _452.x]) === "number" ? init.x : cx - Math.round(w / 2),
14679
- y: typeof _optionalChain([init, 'optionalAccess', _453 => _453.y]) === "number" ? init.y : cy - Math.round(h / 2),
14680
- width: typeof _optionalChain([init, 'optionalAccess', _454 => _454.width]) === "number" ? init.width : w,
14681
- height: typeof _optionalChain([init, 'optionalAccess', _455 => _455.height]) === "number" ? init.height : h
14834
+ x: typeof _optionalChain([init, 'optionalAccess', _459 => _459.x]) === "number" ? init.x : cx - Math.round(w / 2),
14835
+ y: typeof _optionalChain([init, 'optionalAccess', _460 => _460.y]) === "number" ? init.y : cy - Math.round(h / 2),
14836
+ width: typeof _optionalChain([init, 'optionalAccess', _461 => _461.width]) === "number" ? init.width : w,
14837
+ height: typeof _optionalChain([init, 'optionalAccess', _462 => _462.height]) === "number" ? init.height : h
14682
14838
  },
14683
14839
  name: "Rectangle",
14684
14840
  ...init
@@ -14693,10 +14849,10 @@ async function addLayerOfKind(controller, id, init) {
14693
14849
  return controller.addShapeLayer({
14694
14850
  shape: {
14695
14851
  kind: "ellipse",
14696
- x: typeof _optionalChain([init, 'optionalAccess', _456 => _456.x]) === "number" ? init.x : cx - Math.round(w / 2),
14697
- y: typeof _optionalChain([init, 'optionalAccess', _457 => _457.y]) === "number" ? init.y : cy - Math.round(h / 2),
14698
- width: typeof _optionalChain([init, 'optionalAccess', _458 => _458.width]) === "number" ? init.width : w,
14699
- height: typeof _optionalChain([init, 'optionalAccess', _459 => _459.height]) === "number" ? init.height : h
14852
+ x: typeof _optionalChain([init, 'optionalAccess', _463 => _463.x]) === "number" ? init.x : cx - Math.round(w / 2),
14853
+ y: typeof _optionalChain([init, 'optionalAccess', _464 => _464.y]) === "number" ? init.y : cy - Math.round(h / 2),
14854
+ width: typeof _optionalChain([init, 'optionalAccess', _465 => _465.width]) === "number" ? init.width : w,
14855
+ height: typeof _optionalChain([init, 'optionalAccess', _466 => _466.height]) === "number" ? init.height : h
14700
14856
  },
14701
14857
  name: "Ellipse",
14702
14858
  ...init
@@ -14746,6 +14902,7 @@ function layerPanels(layer, options = {}) {
14746
14902
  if (layer.mask) {
14747
14903
  panels.push({ id: "mask", title: "Mask Options" });
14748
14904
  }
14905
+ panels.push({ id: "selection", title: "Selection" });
14749
14906
  return panels;
14750
14907
  }
14751
14908
 
@@ -14755,18 +14912,18 @@ function layerEffectsPanel(layer) {
14755
14912
  if (!layer) return { ...empty, available: false, reason: "Select a layer to add a layer style." };
14756
14913
  if (layer.type === "adjustment") return { ...empty, available: false, reason: "Adjustment layers cannot have a layer style." };
14757
14914
  const fx = layer.effects;
14758
- const readOnly = Boolean(_optionalChain([layer, 'access', _460 => _460.locks, 'optionalAccess', _461 => _461.all]));
14915
+ const readOnly = Boolean(_optionalChain([layer, 'access', _467 => _467.locks, 'optionalAccess', _468 => _468.all]));
14759
14916
  return {
14760
14917
  available: true,
14761
14918
  readOnly,
14762
14919
  reason: readOnly ? "The layer is locked; unlock it to change its layer style." : void 0,
14763
- enabled: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _462 => _462.enabled]), () => ( true)),
14764
- scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _463 => _463.scale]), () => ( 1)),
14765
- rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess', _464 => _464.items]), () => ( []))).map((e) => ({ id: e.id, kind: e.kind, label: _chunkHGTDMKNEcjs.layerEffectLabel.call(void 0, e.kind), enabled: e.enabled }))
14920
+ enabled: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _469 => _469.enabled]), () => ( true)),
14921
+ scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _470 => _470.scale]), () => ( 1)),
14922
+ rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess', _471 => _471.items]), () => ( []))).map((e) => ({ id: e.id, kind: e.kind, label: _chunkHGTDMKNEcjs.layerEffectLabel.call(void 0, e.kind), enabled: e.enabled }))
14766
14923
  };
14767
14924
  }
14768
14925
  function layerEffectsBadge(layer) {
14769
- if (!_optionalChain([layer, 'access', _465 => _465.effects, 'optionalAccess', _466 => _466.items, 'access', _467 => _467.length])) return null;
14926
+ if (!_optionalChain([layer, 'access', _472 => _472.effects, 'optionalAccess', _473 => _473.items, 'access', _474 => _474.length])) return null;
14770
14927
  return _chunkHGTDMKNEcjs.hasActiveEffects.call(void 0, layer.effects) ? "on" : "off";
14771
14928
  }
14772
14929
  var LAYER_EFFECT_MENU = _chunkHGTDMKNEcjs.LAYER_EFFECT_KINDS.map((kind) => ({ kind, label: _chunkHGTDMKNEcjs.layerEffectLabel.call(void 0, kind) }));
@@ -14811,8 +14968,8 @@ function fillControls(f, allowPattern, patterns) {
14811
14968
  }
14812
14969
  function gradientControls(prefix, g) {
14813
14970
  return [
14814
- { key: `${prefix}.stops.0.color`, label: "Start colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _468 => _468.stops, 'access', _469 => _469[0], 'optionalAccess', _470 => _470.color]), () => ( "#000000")) },
14815
- { key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _471 => _471.stops, 'access', _472 => _472[g.stops.length - 1], 'optionalAccess', _473 => _473.color]), () => ( "#ffffff")) },
14971
+ { key: `${prefix}.stops.0.color`, label: "Start colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _475 => _475.stops, 'access', _476 => _476[0], 'optionalAccess', _477 => _477.color]), () => ( "#000000")) },
14972
+ { key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _478 => _478.stops, 'access', _479 => _479[g.stops.length - 1], 'optionalAccess', _480 => _480.color]), () => ( "#ffffff")) },
14816
14973
  { key: `${prefix}.style`, label: "Style", type: "select", value: g.style, options: opt(["linear", "Linear"], ["radial", "Radial"], ["angle", "Angle"], ["reflected", "Reflected"], ["diamond", "Diamond"]) },
14817
14974
  { key: `${prefix}.angle`, label: "Angle", type: "range", min: -180, max: 180, step: 1, value: g.angle, unit: "\xB0" },
14818
14975
  { key: `${prefix}.scale`, label: "Scale", type: "range", min: 0.1, max: 1.5, step: 0.01, value: g.scale, percent: true, unit: "%" },
@@ -14904,19 +15061,19 @@ function layerEffectControls(e, patterns = []) {
14904
15061
  }
14905
15062
  function fillOfType(current, type, patterns) {
14906
15063
  if (type === "gradient") return { type: "gradient", gradient: _chunkHGTDMKNEcjs.defaultEffectGradient.call(void 0, ) };
14907
- if (type === "pattern") return { type: "pattern", patternId: _nullishCoalesce(_optionalChain([patterns, 'access', _474 => _474[0], 'optionalAccess', _475 => _475.id]), () => ( "checker")), scale: 1 };
15064
+ if (type === "pattern") return { type: "pattern", patternId: _nullishCoalesce(_optionalChain([patterns, 'access', _481 => _481[0], 'optionalAccess', _482 => _482.id]), () => ( "checker")), scale: 1 };
14908
15065
  return { type: "color", color: current.type === "color" ? current.color : "#000000" };
14909
15066
  }
14910
15067
  function effectControlChange(effect, key, value, patterns = []) {
14911
15068
  const [top, ...rest] = key.split(".");
14912
15069
  if (top === "fill" && rest[0] === "type") return { fill: fillOfType(effect.fill, String(value), patterns) };
14913
15070
  if (top === "patternId" && !rest.length) {
14914
- const name = _optionalChain([patternOptions, 'call', _476 => _476(patterns), 'access', _477 => _477.find, 'call', _478 => _478((o) => o.value === value), 'optionalAccess', _479 => _479.label]);
15071
+ const name = _optionalChain([patternOptions, 'call', _483 => _483(patterns), 'access', _484 => _484.find, 'call', _485 => _485((o) => o.value === value), 'optionalAccess', _486 => _486.label]);
14915
15072
  return name ? { patternId: value, name } : { patternId: value };
14916
15073
  }
14917
15074
  if (!rest.length) return { [top]: value };
14918
15075
  if (top === "fill" && rest[0] === "patternId") {
14919
- const name = _optionalChain([patternOptions, 'call', _480 => _480(patterns), 'access', _481 => _481.find, 'call', _482 => _482((o) => o.value === value), 'optionalAccess', _483 => _483.label]);
15076
+ const name = _optionalChain([patternOptions, 'call', _487 => _487(patterns), 'access', _488 => _488.find, 'call', _489 => _489((o) => o.value === value), 'optionalAccess', _490 => _490.label]);
14920
15077
  return { fill: { ...effect.fill, patternId: value, ...name ? { name } : {} } };
14921
15078
  }
14922
15079
  return { [top]: setPath(getPath(effect, top), rest, value) };
@@ -14943,7 +15100,7 @@ function colorPanelView(controller) {
14943
15100
  profileName: profile.name,
14944
15101
  workingSpace: profile.builtin,
14945
15102
  mode: profile.mode,
14946
- cmykProfileName: _nullishCoalesce(_optionalChain([profile, 'access', _484 => _484.cmykProfile, 'optionalAccess', _485 => _485.name]), () => ( null)),
15103
+ cmykProfileName: _nullishCoalesce(_optionalChain([profile, 'access', _491 => _491.cmykProfile, 'optionalAccess', _492 => _492.name]), () => ( null)),
14947
15104
  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
14948
15105
  };
14949
15106
  }
@@ -15126,32 +15283,32 @@ function boxFrameHit(overlay, p, tolerance, band) {
15126
15283
  return null;
15127
15284
  }
15128
15285
  var FreeTransformTool = (_class13 = class {
15129
- constructor(controller, options = {}) {;_class13.prototype.__init98.call(this);_class13.prototype.__init99.call(this);_class13.prototype.__init100.call(this);_class13.prototype.__init101.call(this);_class13.prototype.__init102.call(this);_class13.prototype.__init103.call(this);_class13.prototype.__init104.call(this);_class13.prototype.__init105.call(this);_class13.prototype.__init106.call(this);_class13.prototype.__init107.call(this);_class13.prototype.__init108.call(this);_class13.prototype.__init109.call(this);_class13.prototype.__init110.call(this);_class13.prototype.__init111.call(this);
15286
+ constructor(controller, options = {}) {;_class13.prototype.__init99.call(this);_class13.prototype.__init100.call(this);_class13.prototype.__init101.call(this);_class13.prototype.__init102.call(this);_class13.prototype.__init103.call(this);_class13.prototype.__init104.call(this);_class13.prototype.__init105.call(this);_class13.prototype.__init106.call(this);_class13.prototype.__init107.call(this);_class13.prototype.__init108.call(this);_class13.prototype.__init109.call(this);_class13.prototype.__init110.call(this);_class13.prototype.__init111.call(this);_class13.prototype.__init112.call(this);
15130
15287
  this.controller = controller;
15131
15288
  this.options = options;
15132
15289
  }
15133
15290
 
15134
15291
 
15135
- __init98() {this.sessionRef = null}
15136
- __init99() {this.modeValue = "scale"}
15292
+ __init99() {this.sessionRef = null}
15293
+ __init100() {this.modeValue = "scale"}
15137
15294
  /** The reference point in the untransformed frame's space (follows the transform). */
15138
- __init100() {this.refBox = { x: 0, y: 0 }}
15139
- __init101() {this.corners = null}
15140
- __init102() {this.drag = null}
15295
+ __init101() {this.refBox = { x: 0, y: 0 }}
15296
+ __init102() {this.corners = null}
15297
+ __init103() {this.drag = null}
15141
15298
  /** The warp mesh in the frame's own space (null: no warp). */
15142
- __init103() {this.mesh = null}
15143
- __init104() {this.warpSettings = { style: "custom", bend: 50, horizontal: 0, vertical: 0, orientation: "horizontal", columns: 1, rows: 1 }}
15144
- __init105() {this.pending = false}
15145
- __init106() {this.viewScale = 1}
15299
+ __init104() {this.mesh = null}
15300
+ __init105() {this.warpSettings = { style: "custom", bend: 50, horizontal: 0, vertical: 0, orientation: "horizontal", columns: 1, rows: 1 }}
15301
+ __init106() {this.pending = false}
15302
+ __init107() {this.viewScale = 1}
15146
15303
 
15147
15304
  /** Values typed into the options bar since the last drag (V skew is not recovered from the shape). */
15148
- __init107() {this.typed = {}}
15305
+ __init108() {this.typed = {}}
15149
15306
  /** Width and height scale together when typed (the chain icon). */
15150
- __init108() {this.proportional = true}
15151
- __init109() {this.error = null}
15152
- __init110() {this.lastResult = null}
15307
+ __init109() {this.proportional = true}
15308
+ __init110() {this.error = null}
15309
+ __init111() {this.lastResult = null}
15153
15310
  get active() {
15154
- return Boolean(_optionalChain([this, 'access', _486 => _486.sessionRef, 'optionalAccess', _487 => _487.isOpen]));
15311
+ return Boolean(_optionalChain([this, 'access', _493 => _493.sessionRef, 'optionalAccess', _494 => _494.isOpen]));
15155
15312
  }
15156
15313
  get session() {
15157
15314
  return this.active ? this.sessionRef : null;
@@ -15160,7 +15317,7 @@ var FreeTransformTool = (_class13 = class {
15160
15317
  return this.modeValue;
15161
15318
  }
15162
15319
  get interpolation() {
15163
- return _nullishCoalesce(_optionalChain([this, 'access', _488 => _488.sessionRef, 'optionalAccess', _489 => _489.interpolation]), () => ( "bicubic"));
15320
+ return _nullishCoalesce(_optionalChain([this, 'access', _495 => _495.sessionRef, 'optionalAccess', _496 => _496.interpolation]), () => ( "bicubic"));
15164
15321
  }
15165
15322
  /** Whether the open transform has changed anything yet (a commit would add an undo step). */
15166
15323
  get modified() {
@@ -15170,7 +15327,7 @@ var FreeTransformTool = (_class13 = class {
15170
15327
  const start = s.startGeometry.corners;
15171
15328
  return this.corners.some((p, i) => p.x !== start[i].x || p.y !== start[i].y);
15172
15329
  }
15173
- __init111() {this.listeners = /* @__PURE__ */ new Set()}
15330
+ __init112() {this.listeners = /* @__PURE__ */ new Set()}
15174
15331
  /** Calls `listener` whenever the overlay, readout, mode or error changes. Returns the unsubscribe. */
15175
15332
  subscribe(listener) {
15176
15333
  this.listeners.add(listener);
@@ -15179,7 +15336,7 @@ var FreeTransformTool = (_class13 = class {
15179
15336
  };
15180
15337
  }
15181
15338
  changed() {
15182
- _optionalChain([this, 'access', _490 => _490.options, 'access', _491 => _491.onChange, 'optionalCall', _492 => _492()]);
15339
+ _optionalChain([this, 'access', _497 => _497.options, 'access', _498 => _498.onChange, 'optionalCall', _499 => _499()]);
15183
15340
  for (const l of this.listeners) l();
15184
15341
  }
15185
15342
  /** Opens a Free Transform (default: the selected pixels of the active layer, or the whole layer). Returns an error message or `null`. */
@@ -15572,7 +15729,7 @@ var FreeTransformTool = (_class13 = class {
15572
15729
  }
15573
15730
  /** Abandons the transform and restores everything. */
15574
15731
  cancel() {
15575
- _optionalChain([this, 'access', _493 => _493.sessionRef, 'optionalAccess', _494 => _494.cancel, 'call', _495 => _495()]);
15732
+ _optionalChain([this, 'access', _500 => _500.sessionRef, 'optionalAccess', _501 => _501.cancel, 'call', _502 => _502()]);
15576
15733
  this.sessionRef = null;
15577
15734
  this.corners = null;
15578
15735
  this.mesh = null;
@@ -15628,7 +15785,7 @@ function imageLayerAppliedEffects(layer) {
15628
15785
  const ref = (r) => ({ effect: r.effect, ...r.name ? { name: r.name } : {}, ...r.provider ? { provider: r.provider } : {} });
15629
15786
  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 } : {} });
15630
15787
  if (layer.type === "smart")
15631
- (_nullishCoalesce(_optionalChain([layer, 'access', _496 => _496.smartFilters, 'optionalAccess', _497 => _497.filters]), () => ( []))).forEach((f, index) => {
15788
+ (_nullishCoalesce(_optionalChain([layer, 'access', _503 => _503.smartFilters, 'optionalAccess', _504 => _504.filters]), () => ( []))).forEach((f, index) => {
15632
15789
  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 });
15633
15790
  });
15634
15791
  return out;
@@ -16755,4 +16912,10 @@ function createImageEditorDocument(controller, options = {}) {
16755
16912
 
16756
16913
 
16757
16914
 
16758
- exports.ADJUSTMENT_KEYS = _chunkUHMSMUHKcjs.ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = _chunkUHMSMUHKcjs.ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = _chunkUHMSMUHKcjs.ADJUSTMENT_LUT_SIZE; exports.ANCHOR_FRACTION = _chunkUHMSMUHKcjs.ANCHOR_FRACTION; exports.AS_SHOT_KELVIN = _chunkUHMSMUHKcjs.AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = _chunkUHMSMUHKcjs.BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = _chunkUHMSMUHKcjs.BACKGROUND_LAYER_NAME; exports.BIT_DEPTHS = _chunkCWM3CUUXcjs.BIT_DEPTHS; exports.BIT_DEPTH_OPTIONS = BIT_DEPTH_OPTIONS; exports.BLEND_MODES = _chunkCWM3CUUXcjs.BLEND_MODES; exports.BLUR_FILTER_ID = _chunkUHMSMUHKcjs.BLUR_FILTER_ID; exports.BODY_SCATTER = _chunkV7GWZIZKcjs.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 = _chunkEBDCRTZIcjs.BrushstrokeCache; exports.CANVAS_SIZE_PRESETS = CANVAS_SIZE_PRESETS; exports.CLONE_TRANSFORM_CONTROLS = CLONE_TRANSFORM_CONTROLS; exports.COLOR_MODE_OPTIONS = COLOR_MODE_OPTIONS; exports.CoverageMap = _chunkEBDCRTZIcjs.CoverageMap; exports.D50 = _chunkUHMSMUHKcjs.D50; exports.D65 = _chunkUHMSMUHKcjs.D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_AUTO_LEADING = _chunkEGZM52EOcjs.DEFAULT_AUTO_LEADING; exports.DEFAULT_BLENDER = _chunkEBDCRTZIcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkEBDCRTZIcjs.DEFAULT_BRUSH; exports.DEFAULT_CANVAS_VIEWPORT = DEFAULT_CANVAS_VIEWPORT; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_FLOW = _chunkV7GWZIZKcjs.DEFAULT_FLOW; exports.DEFAULT_GLOBAL_LIGHT = _chunkHGTDMKNEcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MITER_LIMIT = _chunkUHMSMUHKcjs.DEFAULT_MITER_LIMIT; exports.DEFAULT_MIXER = _chunkEBDCRTZIcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PROOF = DEFAULT_PROOF; exports.DEFAULT_REFINE_EDGE_PARAMS = DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_RETOUCH = _chunk7NW46N7Icjs.DEFAULT_RETOUCH; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_SHAPE_TOOL_OPTIONS = DEFAULT_SHAPE_TOOL_OPTIONS; exports.DEFAULT_SMUDGE = _chunkEBDCRTZIcjs.DEFAULT_SMUDGE; exports.DEFAULT_TEXT_STYLE = _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEFAULT_TYPE_TOOL_OPTIONS = DEFAULT_TYPE_TOOL_OPTIONS; exports.DEFAULT_WET_PAPER = _chunkV7GWZIZKcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkV7GWZIZKcjs.DEFAULT_WET_PARAMS; exports.DEPTH_MASK_CONTROLS = DEPTH_MASK_CONTROLS; exports.DEVELOP_FILTER_ID = _chunkUHMSMUHKcjs.DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkHGTDMKNEcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DRY_EPS = _chunkV7GWZIZKcjs.DRY_EPS; exports.DabWalker = _chunkEBDCRTZIcjs.DabWalker; exports.EFFECT_LAYER_USES = EFFECT_LAYER_USES; exports.EMPTY_DISTANCE = _chunkUHMSMUHKcjs.EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkEBDCRTZIcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkV7GWZIZKcjs.EX; exports.EY = _chunkV7GWZIZKcjs.EY; exports.FLAG_ALIVE = _chunkV7GWZIZKcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkV7GWZIZKcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkV7GWZIZKcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkV7GWZIZKcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkV7GWZIZKcjs.FLAG_TOP; exports.FLAG_WET = _chunkV7GWZIZKcjs.FLAG_WET; exports.FLAT = _chunkV7GWZIZKcjs.FLAT; exports.FREE_INTERVAL = _chunkV7GWZIZKcjs.FREE_INTERVAL; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = _chunkUHMSMUHKcjs.FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GRAIN_PATTERNS = _chunkEBDCRTZIcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkEBDCRTZIcjs.GRAIN_TILE; exports.GUIDED_FILTER_EPS = GUIDED_FILTER_EPS; exports.HIDE = _chunkV7GWZIZKcjs.HIDE; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = _chunkUHMSMUHKcjs.HUE_RANGE_LABELS; exports.IDENTITY_CLONE_TRANSFORM = _chunk7NW46N7Icjs.IDENTITY_CLONE_TRANSFORM; exports.IDENTITY_MATRIX3 = _chunkUHMSMUHKcjs.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.INTENTS = _chunkBROJYMWUcjs.INTENTS; exports.INTENT_OPTIONS = INTENT_OPTIONS; exports.INTERPOLATIONS = _chunkHGTDMKNEcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.ImageEffectsEngine = ImageEffectsEngine; exports.LATEST_PROCESS_VERSION = _chunkUHMSMUHKcjs.LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = _chunkUHMSMUHKcjs.LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkHGTDMKNEcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = _chunkUHMSMUHKcjs.LEGACY_PROCESS_VERSION; exports.LIVE_SHAPE_KINDS = _chunkUHMSMUHKcjs.LIVE_SHAPE_KINDS; exports.LUMA_709 = _chunkUHMSMUHKcjs.LUMA_709; exports.LayerCompositor = _chunkUHMSMUHKcjs.LayerCompositor; exports.LayerEffectError = _chunkHGTDMKNEcjs.LayerEffectError; exports.LayerOperationError = _chunkUHMSMUHKcjs.LayerOperationError; exports.MAX_BATCH = _chunkV7GWZIZKcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkEBDCRTZIcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_BACKING_SIDE = MAX_CANVAS_BACKING_SIDE; exports.MAX_EFFECT_ANIMATION_MS = _chunkUHMSMUHKcjs.MAX_EFFECT_ANIMATION_MS; exports.MAX_EFFECT_REACH = _chunkHGTDMKNEcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = _chunkUHMSMUHKcjs.MAX_KELVIN; exports.MAX_TILT_ACCEL = _chunkV7GWZIZKcjs.MAX_TILT_ACCEL; exports.MAX_TRANSFORM_PIXELS = _chunkHGTDMKNEcjs.MAX_TRANSFORM_PIXELS; exports.MAX_WET_LANES = _chunkV7GWZIZKcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkV7GWZIZKcjs.MAX_WET_SLOTS; exports.MIN_KELVIN = _chunkUHMSMUHKcjs.MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = _chunkUHMSMUHKcjs.MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkEBDCRTZIcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkEBDCRTZIcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkEBDCRTZIcjs.MIXING_MODELS; exports.MixerStroke = _chunkEBDCRTZIcjs.MixerStroke; exports.OPP = _chunkV7GWZIZKcjs.OPP; exports.PAINTERLY_BLEND_MODES = _chunkCWM3CUUXcjs.PAINTERLY_BLEND_MODES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkEBDCRTZIcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkEBDCRTZIcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_CAPACITY = _chunkV7GWZIZKcjs.PAPER_CAPACITY; exports.PARAGRAPH_STYLE_FIELDS = _chunkUHMSMUHKcjs.PARAGRAPH_STYLE_FIELDS; exports.PARAM = _chunkV7GWZIZKcjs.PARAM; exports.PARAM_FLOATS = _chunkV7GWZIZKcjs.PARAM_FLOATS; exports.PATTERN_BLOCK_KEYS = _chunkUHMSMUHKcjs.PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkCWM3CUUXcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkV7GWZIZKcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkV7GWZIZKcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkCWM3CUUXcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkV7GWZIZKcjs.PLANE; exports.PLANE_BYTES = _chunkV7GWZIZKcjs.PLANE_BYTES; exports.PROOF_PROFILE_OPTIONS = PROOF_PROFILE_OPTIONS; exports.PSD_BLEND_KEYS = _chunkUHMSMUHKcjs.PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.P_D0 = _chunkV7GWZIZKcjs.P_D0; exports.P_EDGE = _chunkV7GWZIZKcjs.P_EDGE; exports.P_FX = _chunkV7GWZIZKcjs.P_FX; exports.P_FY = _chunkV7GWZIZKcjs.P_FY; exports.P_H = _chunkV7GWZIZKcjs.P_H; exports.P_P0 = _chunkV7GWZIZKcjs.P_P0; exports.P_RHO = _chunkV7GWZIZKcjs.P_RHO; exports.P_SW = _chunkV7GWZIZKcjs.P_SW; exports.P_UX = _chunkV7GWZIZKcjs.P_UX; exports.P_UY = _chunkV7GWZIZKcjs.P_UY; exports.PaintExchange = _chunkEBDCRTZIcjs.PaintExchange; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkEBDCRTZIcjs.PaintGradientSampler; exports.PaintSourceError = _chunkEBDCRTZIcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaperGrain = _chunkEBDCRTZIcjs.PaperGrain; exports.PatternPlacement = _chunkHGTDMKNEcjs.PatternPlacement; exports.PatternTile = _chunkHGTDMKNEcjs.PatternTile; exports.PsdError = _chunkUHMSMUHKcjs.PsdError; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.RETOUCH_CHOICES = RETOUCH_CHOICES; exports.RETOUCH_OPTION_CONTROLS = RETOUCH_OPTION_CONTROLS; exports.RETOUCH_SAMPLES = _chunk7NW46N7Icjs.RETOUCH_SAMPLES; exports.RETOUCH_TOGGLES = RETOUCH_TOGGLES; exports.RETOUCH_TOOLS = RETOUCH_TOOLS; exports.RegionPixelSource = _chunk7NW46N7Icjs.RegionPixelSource; exports.RetouchDabStroke = _chunk7NW46N7Icjs.RetouchDabStroke; exports.SELECTION_MODES = _chunkUHMSMUHKcjs.SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = _chunkUHMSMUHKcjs.SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SET_PLANES = _chunkV7GWZIZKcjs.SET_PLANES; exports.SHADOW_AMBIENT = _chunkCWM3CUUXcjs.SHADOW_AMBIENT; exports.SHAPE_KIND_LABELS = SHAPE_KIND_LABELS; exports.SHAPE_OPERATIONS = _chunkUHMSMUHKcjs.SHAPE_OPERATIONS; exports.SHAPE_RENDER_MARGIN = _chunkUHMSMUHKcjs.SHAPE_RENDER_MARGIN; exports.SLOT_BYTES = _chunkV7GWZIZKcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkV7GWZIZKcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkV7GWZIZKcjs.SLOT_SIDE; exports.SMART_RENDER_MARGIN = _chunkUHMSMUHKcjs.SMART_RENDER_MARGIN; exports.SPOT_HEAL_TYPES = _chunk7NW46N7Icjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkV7GWZIZKcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkV7GWZIZKcjs.STRIP; exports.SUPPORTED_ADJUSTMENT_KEYS = _chunkUHMSMUHKcjs.SUPPORTED_ADJUSTMENT_KEYS; exports.SelectionGesture = SelectionGesture; exports.ShapeDrawGesture = ShapeDrawGesture; exports.SmudgeTip = _chunkEBDCRTZIcjs.SmudgeTip; exports.StrokeCoverage = _chunkEBDCRTZIcjs.StrokeCoverage; exports.SurfaceDraft = _chunkCWM3CUUXcjs.SurfaceDraft; exports.TEXT_ALIGNS = _chunkUHMSMUHKcjs.TEXT_ALIGNS; exports.TEXT_RENDER_MARGIN = _chunkUHMSMUHKcjs.TEXT_RENDER_MARGIN; exports.TEXT_STYLE_FIELDS = _chunkUHMSMUHKcjs.TEXT_STYLE_FIELDS; exports.TILE = _chunkCWM3CUUXcjs.TILE; exports.TILE_SHIFT = _chunkCWM3CUUXcjs.TILE_SHIFT; exports.TINT_SCALE = _chunkUHMSMUHKcjs.TINT_SCALE; exports.TIP_GRADIENT_STEPS = _chunkEBDCRTZIcjs.TIP_GRADIENT_STEPS; exports.TONE_LUT_SIZE = _chunkUHMSMUHKcjs.TONE_LUT_SIZE; exports.TONE_RANGES = _chunk7NW46N7Icjs.TONE_RANGES; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = _chunkUHMSMUHKcjs.TRANSFORM_ANCHORS; exports.TRANSFORM_ROTATE_HANDLE_OFFSET = TRANSFORM_ROTATE_HANDLE_OFFSET; exports.TextEditSession = TextEditSession; exports.TileMedium = _chunkEBDCRTZIcjs.TileMedium; exports.TilePixelSource = _chunk7NW46N7Icjs.TilePixelSource; exports.TileableNoise = _chunkEBDCRTZIcjs.TileableNoise; exports.TiledSurface = _chunkCWM3CUUXcjs.TiledSurface; exports.TransformTooLargeError = _chunkHGTDMKNEcjs.TransformTooLargeError; exports.TransformedPixelSource = _chunk7NW46N7Icjs.TransformedPixelSource; exports.TypeToolGesture = TypeToolGesture; exports.U_MAX = _chunkV7GWZIZKcjs.U_MAX; exports.VIBRANCE_GREY = _chunkUHMSMUHKcjs.VIBRANCE_GREY; exports.W9 = _chunkV7GWZIZKcjs.W9; exports.WARP_GRID_OPTIONS = WARP_GRID_OPTIONS; exports.WARP_STYLES = _chunkEGZM52EOcjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkEGZM52EOcjs.WARP_STYLE_LABELS; exports.WARP_STYLE_OPTIONS = WARP_STYLE_OPTIONS; exports.WET_FLOW_KINDS = _chunkV7GWZIZKcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkV7GWZIZKcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkV7GWZIZKcjs.WET_TILE; exports.WGSL_HALO = _chunkV7GWZIZKcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkV7GWZIZKcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkV7GWZIZKcjs.WGSL_STEP; exports.WORKING_SPACE_OPTIONS = WORKING_SPACE_OPTIONS; exports.WetGpuEngine = _chunkV7GWZIZKcjs.WetGpuEngine; exports.WetMedium = _chunkV7GWZIZKcjs.WetMedium; exports.WetWorkerPool = _chunkV7GWZIZKcjs.WetWorkerPool; exports.WetWorld = _chunkV7GWZIZKcjs.WetWorld; exports.WetWorldError = _chunkV7GWZIZKcjs.WetWorldError; exports.XYZ_D50_TO_SRGB = _chunkUHMSMUHKcjs.XYZ_D50_TO_SRGB; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeAdjustmentLayers = _chunkUHMSMUHKcjs.activeAdjustmentLayers; exports.activeEffectSmartFilters = _chunkUHMSMUHKcjs.activeEffectSmartFilters; exports.activeLayerAfterRemoval = _chunkUHMSMUHKcjs.activeLayerAfterRemoval; exports.activeSmartFilters = _chunkUHMSMUHKcjs.activeSmartFilters; exports.addLayerEffect = _chunkUHMSMUHKcjs.addLayerEffect; exports.addLayerFilter = _chunkUHMSMUHKcjs.addLayerFilter; exports.addLayerOfKind = addLayerOfKind; exports.addPaintGradientStop = _chunkEBDCRTZIcjs.addPaintGradientStop; exports.addSmartFilter = _chunkUHMSMUHKcjs.addSmartFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = _chunkUHMSMUHKcjs.adjustmentKindLabel; exports.adjustmentLayersKey = _chunkUHMSMUHKcjs.adjustmentLayersKey; exports.adjustmentNodeAsLayer = _chunkUHMSMUHKcjs.adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = _chunkUHMSMUHKcjs.adjustmentNodeFromLegacy; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.agentDragDraft = agentDragDraft; exports.anchorPoint = _chunkUHMSMUHKcjs.anchorPoint; exports.annotationBlend = _chunkUHMSMUHKcjs.annotationBlend; exports.annotationLayerFor = _chunkUHMSMUHKcjs.annotationLayerFor; exports.annotationLayerName = _chunkUHMSMUHKcjs.annotationLayerName; exports.annotationOfLayer = _chunkUHMSMUHKcjs.annotationOfLayer; exports.annotationOfShape = _chunkUHMSMUHKcjs.annotationOfShape; exports.annotationOfType = _chunkUHMSMUHKcjs.annotationOfType; exports.applyAdjustmentLayers = _chunkUHMSMUHKcjs.applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = _chunkUHMSMUHKcjs.applyAdjustmentLayersFloat; exports.applyAdjustments = _chunkUHMSMUHKcjs.applyAdjustments; exports.applyBoxBlur = _chunkUHMSMUHKcjs.applyBoxBlur; exports.applyBoxBlurFloat = _chunkUHMSMUHKcjs.applyBoxBlurFloat; exports.applyDepthMask = _chunkUHMSMUHKcjs.applyDepthMask; exports.applyHomography = _chunkQT26RHKKcjs.applyHomography; exports.applyImageProjectionToContext = _chunkUHMSMUHKcjs.applyImageProjectionToContext; exports.applyLegacyAdjustments = _chunkUHMSMUHKcjs.applyLegacyAdjustments; exports.applyLegacyFloat = _chunkUHMSMUHKcjs.applyLegacyFloat; exports.applyMatrix3 = _chunkUHMSMUHKcjs.applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = _chunkUHMSMUHKcjs.applyParams; exports.applyProcess2Adjustments = _chunkUHMSMUHKcjs.applyProcess2Adjustments; exports.applyProcess2Float = _chunkUHMSMUHKcjs.applyProcess2Float; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyRetouchToTile = _chunk7NW46N7Icjs.applyRetouchToTile; exports.applyShapeOptions = applyShapeOptions; exports.applySmartFilters = _chunkUHMSMUHKcjs.applySmartFilters; exports.applyStrokeToDeepTile = _chunkEBDCRTZIcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkEBDCRTZIcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk7NW46N7Icjs.applyToneToDeepTile; exports.backgroundLayer = _chunkUHMSMUHKcjs.backgroundLayer; exports.base64ToBytes = _chunkCWM3CUUXcjs.base64ToBytes; exports.baseProjection = baseProjection; exports.bestOffset = _chunk7NW46N7Icjs.bestOffset; exports.blackWhiteGray = _chunkUHMSMUHKcjs.blackWhiteGray; exports.blendChannel = _chunkCWM3CUUXcjs.blendChannel; exports.blendImageData = _chunkCWM3CUUXcjs.blendImageData; exports.blendLum = _chunkCWM3CUUXcjs.blendLum; exports.blendPixel = _chunkCWM3CUUXcjs.blendPixel; exports.blendRadius = _chunkEBDCRTZIcjs.blendRadius; exports.blendRgb = _chunkCWM3CUUXcjs.blendRgb; exports.blendTile = _chunkHGTDMKNEcjs.blendTile; exports.blenderDab = _chunkEBDCRTZIcjs.blenderDab; exports.blurFilter = _chunkUHMSMUHKcjs.blurFilter; exports.borderCoverage = _chunkUHMSMUHKcjs.borderCoverage; exports.boxBlurPixels = _chunk7NW46N7Icjs.boxBlurPixels; exports.boxFrameHit = boxFrameHit; exports.boxFrameOverlay = boxFrameOverlay; exports.boxMean = boxMean; exports.boxPointOf = _chunkUHMSMUHKcjs.boxPointOf; exports.boxQuad = _chunkQT26RHKKcjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = _chunkUHMSMUHKcjs.bradfordAdaptation; exports.brushstrokeDataUrl = _chunkEBDCRTZIcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkEBDCRTZIcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkEBDCRTZIcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkEBDCRTZIcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkEBDCRTZIcjs.brushstrokeToCanvas; exports.buildLayerMaskPlanes = _chunkUHMSMUHKcjs.buildLayerMaskPlanes; exports.buildToneLut = _chunkUHMSMUHKcjs.buildToneLut; exports.builtinPattern = _chunkHGTDMKNEcjs.builtinPattern; exports.builtinPatternIds = _chunkHGTDMKNEcjs.builtinPatternIds; exports.bytesToBase64 = _chunkCWM3CUUXcjs.bytesToBase64; exports.calculateCropDrag = _chunkUHMSMUHKcjs.calculateCropDrag; exports.canShareMemory = _chunkV7GWZIZKcjs.canShareMemory; exports.canvasCompositeOperation = _chunkCWM3CUUXcjs.canvasCompositeOperation; exports.canvasToImagePoint = _chunkUHMSMUHKcjs.canvasToImagePoint; exports.caretAt = _chunkEGZM52EOcjs.caretAt; exports.changedTiles = _chunkHGTDMKNEcjs.changedTiles; exports.checkEffectAnimation = checkEffectAnimation; exports.checkEffectTime = checkEffectTime; exports.checkImageEffectPlace = checkImageEffectPlace; exports.clampControlValue = clampControlValue; exports.clampCropToImage = _chunkUHMSMUHKcjs.clampCropToImage; exports.cleanMixer = _chunkEBDCRTZIcjs.cleanMixer; exports.cloneSamplePoint = _chunk7NW46N7Icjs.cloneSamplePoint; exports.cloneSourceLabel = cloneSourceLabel; exports.cloneTransformView = cloneTransformView; exports.collectTiles = _chunkCWM3CUUXcjs.collectTiles; exports.colorBalanceChannel = _chunkUHMSMUHKcjs.colorBalanceChannel; exports.colorModePlanes = colorModePlanes; exports.colorModePlanes16 = colorModePlanes16; exports.colorPanelView = colorPanelView; exports.colorRange = colorRange; exports.combineSelections = _chunkUHMSMUHKcjs.combineSelections; exports.compileAdjustmentLayer = _chunkUHMSMUHKcjs.compileAdjustmentLayer; exports.componentPath = _chunkUHMSMUHKcjs.componentPath; exports.compositeDeep = _chunkUHMSMUHKcjs.compositeDeep; exports.compositeSurfaceOver = _chunkHGTDMKNEcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = _chunkUHMSMUHKcjs.computeSelectionBounds; exports.contentAwareFill = _chunk7NW46N7Icjs.contentAwareFill; exports.contentBounds = _chunkCWM3CUUXcjs.contentBounds; exports.contentsBox = _chunkUHMSMUHKcjs.contentsBox; exports.contentsSurface = _chunkUHMSMUHKcjs.contentsSurface; exports.contractCoverage = _chunkUHMSMUHKcjs.contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.convertColorFields = convertColorFields; exports.convertHex = convertHex; exports.convertSurfaceColors = convertSurfaceColors; exports.convertSurfaceDepth = _chunkCWM3CUUXcjs.convertSurfaceDepth; exports.convertToSmartObject = _chunkUHMSMUHKcjs.convertToSmartObject; exports.copySmartObject = _chunkUHMSMUHKcjs.copySmartObject; exports.cornersFromMatrix = _chunkUHMSMUHKcjs.cornersFromMatrix; exports.coverageTileCoord = _chunkEBDCRTZIcjs.coverageTileCoord; exports.coverageToByte = _chunkUHMSMUHKcjs.coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = _chunkUHMSMUHKcjs.createAdjustmentLayer; exports.createBlenderScratch = _chunkEBDCRTZIcjs.createBlenderScratch; exports.createCanvasTextShaper = _chunkEGZM52EOcjs.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.createImageSelectionTools = createImageSelectionTools; exports.createImageShapeTools = createImageShapeTools; exports.createImageSmartObjectTools = createImageSmartObjectTools; exports.createImageTransformTools = createImageTransformTools; exports.createImageTypeTools = createImageTypeTools; exports.createMetricTextShaper = _chunkEGZM52EOcjs.createMetricTextShaper; exports.createOutlineTextShaper = _chunkEGZM52EOcjs.createOutlineTextShaper; exports.createPigment = _chunkCWM3CUUXcjs.createPigment; exports.createPigmentTools = _chunkV7GWZIZKcjs.createPigmentTools; exports.createSelectionMask = _chunkUHMSMUHKcjs.createSelectionMask; exports.createShapeLayer = _chunkUHMSMUHKcjs.createShapeLayer; exports.createTypeLayer = _chunkUHMSMUHKcjs.createTypeLayer; exports.createWetGpuEngine = _chunkV7GWZIZKcjs.createWetGpuEngine; exports.cssFont = _chunkEGZM52EOcjs.cssFont; exports.cssFontFamily = _chunkEGZM52EOcjs.cssFontFamily; exports.curveLut = _chunkHGTDMKNEcjs.curveLut; exports.curveLutFromLevels = _chunkUHMSMUHKcjs.curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkEBDCRTZIcjs.dabCoverage; exports.dabRect = _chunkEBDCRTZIcjs.dabRect; exports.decodeDeepSurface = _chunkUHMSMUHKcjs.decodeDeepSurface; exports.decodeLayerChannel = _chunkUHMSMUHKcjs.decodeLayerChannel; exports.decodeLayerMask = _chunkUHMSMUHKcjs.decodeLayerMask; exports.decodeMergedImage = _chunkUHMSMUHKcjs.decodeMergedImage; exports.decodePlanes = _chunkUHMSMUHKcjs.decodePlanes; exports.decodePng = _chunkCWM3CUUXcjs.decodePng; exports.decodePngDataUrl = _chunkUHMSMUHKcjs.decodePngDataUrl; exports.decodeSelectionRle = _chunkUHMSMUHKcjs.decodeSelectionRle; exports.deepBytes = _chunkCWM3CUUXcjs.deepBytes; exports.deepTile = _chunkCWM3CUUXcjs.deepTile; exports.defaultActiveLayerId = _chunkUHMSMUHKcjs.defaultActiveLayerId; exports.defaultAdjustmentParams = _chunkUHMSMUHKcjs.defaultAdjustmentParams; exports.defaultEffectGradient = _chunkHGTDMKNEcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkHGTDMKNEcjs.defaultLayerEffect; exports.defaultShapeName = _chunkUHMSMUHKcjs.defaultShapeName; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthMaskAlpha = _chunkUHMSMUHKcjs.depthMaskAlpha; exports.depthOf = _chunkCWM3CUUXcjs.depthOf; exports.depthRasterMask = _chunkUHMSMUHKcjs.depthRasterMask; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = _chunkUHMSMUHKcjs.describeTransform; exports.deserializeColorMode = deserializeColorMode; exports.deserializeColorProfile = deserializeColorProfile; exports.deserializeEffects = _chunkUHMSMUHKcjs.deserializeEffects; exports.deserializeLayer = _chunkUHMSMUHKcjs.deserializeLayer; exports.deserializeLayers = _chunkUHMSMUHKcjs.deserializeLayers; exports.deserializePatterns = _chunkUHMSMUHKcjs.deserializePatterns; exports.deserializeSelection = _chunkUHMSMUHKcjs.deserializeSelection; exports.developFilter = _chunkUHMSMUHKcjs.developFilter; exports.developFromAdjustments = _chunkUHMSMUHKcjs.developFromAdjustments; exports.developTarget = _chunkUHMSMUHKcjs.developTarget; exports.dexp = _chunkV7GWZIZKcjs.dexp; exports.dilateMask = _chunk7NW46N7Icjs.dilateMask; exports.displayTransform = displayTransform; exports.distanceTransform = _chunkUHMSMUHKcjs.distanceTransform; exports.dlog = _chunkV7GWZIZKcjs.dlog; exports.documentContents = _chunkUHMSMUHKcjs.documentContents; exports.documentProfile = documentProfile; exports.dodgeBurn = _chunk7NW46N7Icjs.dodgeBurn; exports.dodgeBurnCurve = _chunk7NW46N7Icjs.dodgeBurnCurve; exports.downloadPsd = downloadPsd; exports.dpow = _chunkV7GWZIZKcjs.dpow; exports.dragWarpMeshPoint = _chunkEGZM52EOcjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.dsincos = _chunkV7GWZIZKcjs.dsincos; exports.duplicateLayer = _chunkUHMSMUHKcjs.duplicateLayer; exports.edgeBits = _chunkV7GWZIZKcjs.edgeBits; exports.edgeWidth = edgeWidth; exports.effectColorHex = _chunkHGTDMKNEcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectLayerTiming = effectLayerTiming; exports.effectPixelsToSurface = effectPixelsToSurface; exports.effectReach = _chunkHGTDMKNEcjs.effectReach; exports.effectiveProof = effectiveProof; exports.effectsFingerprint = _chunkHGTDMKNEcjs.effectsFingerprint; exports.effectsMargin = _chunkHGTDMKNEcjs.effectsMargin; exports.effectsScale = _chunkHGTDMKNEcjs.effectsScale; exports.ellipsePoints = ellipsePoints; exports.ellipseSelection = ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunkCWM3CUUXcjs.emptySurface; exports.encodeDeepSurface = _chunkUHMSMUHKcjs.encodeDeepSurface; exports.encodePng = _chunkCWM3CUUXcjs.encodePng; exports.encodeRle = _chunkUHMSMUHKcjs.encodeRle; exports.encodeSelectionRle = _chunkUHMSMUHKcjs.encodeSelectionRle; exports.encodeSurface = _chunkUHMSMUHKcjs.encodeSurface; exports.evalWarpMesh = _chunkEGZM52EOcjs.evalWarpMesh; exports.evaluateAdjustmentLayers = _chunkUHMSMUHKcjs.evaluateAdjustmentLayers; exports.exchangeRates = _chunkEBDCRTZIcjs.exchangeRates; exports.expNeg = _chunkV7GWZIZKcjs.expNeg; exports.expandCoverage = _chunkUHMSMUHKcjs.expandCoverage; exports.exportPsd = _chunkUHMSMUHKcjs.exportPsd; exports.extractNormalizedLayerItems = extractNormalizedLayerItems; exports.featherCoverage = _chunkUHMSMUHKcjs.featherCoverage; exports.fillRect = _chunkCWM3CUUXcjs.fillRect; exports.filmPixel = _chunkV7GWZIZKcjs.filmPixel; exports.filmReflectance = _chunkV7GWZIZKcjs.filmReflectance; exports.filterMaskCoverage = _chunkUHMSMUHKcjs.filterMaskCoverage; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkHGTDMKNEcjs.findLayer; exports.findLayerControl = findLayerControl; exports.findWebGpu = _chunkV7GWZIZKcjs.findWebGpu; exports.finishTile = _chunkCWM3CUUXcjs.finishTile; exports.fitParagraphRuns = _chunkEGZM52EOcjs.fitParagraphRuns; exports.fitRuns = _chunkEGZM52EOcjs.fitRuns; exports.flattenLayers = _chunkHGTDMKNEcjs.flattenLayers; exports.flattenPath = _chunkUHMSMUHKcjs.flattenPath; exports.flipCorners = _chunkUHMSMUHKcjs.flipCorners; exports.flowField = _chunkV7GWZIZKcjs.flowField; exports.fontOf = _chunkEGZM52EOcjs.fontOf; exports.formatControlValue = formatControlValue; exports.fullSelection = _chunkUHMSMUHKcjs.fullSelection; exports.gaussianBlur = _chunkHGTDMKNEcjs.gaussianBlur; exports.geometryHomography = _chunkUHMSMUHKcjs.geometryHomography; exports.getAnnotationBounds = _chunkUHMSMUHKcjs.getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = _chunkUHMSMUHKcjs.getCropCursor; exports.getRotatedSize = _chunkUHMSMUHKcjs.getRotatedSize; exports.getViewportMetrics = _chunkUHMSMUHKcjs.getViewportMetrics; exports.getViewportProjection = _chunkUHMSMUHKcjs.getViewportProjection; exports.globalImageCache = globalImageCache; exports.gradientDabColor = _chunkEBDCRTZIcjs.gradientDabColor; exports.grainCatch = _chunkEBDCRTZIcjs.grainCatch; exports.grainHeights = _chunkEBDCRTZIcjs.grainHeights; exports.greyMorphology = _chunkUHMSMUHKcjs.greyMorphology; exports.groupLayers = _chunkUHMSMUHKcjs.groupLayers; exports.guidePlanes = guidePlanes; exports.guidedFilterColor = guidedFilterColor; exports.handlePaintShortcut = handlePaintShortcut; exports.hasActiveEffects = _chunkHGTDMKNEcjs.hasActiveEffects; exports.hasLayersBelow = hasLayersBelow; exports.hasResampledLegacyMask = _chunkUHMSMUHKcjs.hasResampledLegacyMask; exports.hasSurface = _chunkUHMSMUHKcjs.hasSurface; exports.hasWarp = _chunkUHMSMUHKcjs.hasWarp; exports.hash2 = _chunkEBDCRTZIcjs.hash2; exports.hashMaskContent = _chunkUHMSMUHKcjs.hashMaskContent; exports.hashNoise = _chunkHGTDMKNEcjs.hashNoise; exports.healPixels = _chunk7NW46N7Icjs.healPixels; exports.hexToPaintRgb = _chunkEBDCRTZIcjs.hexToPaintRgb; exports.hexToRgb = _chunkUHMSMUHKcjs.hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = _chunkUHMSMUHKcjs.hitTestAnnotation; exports.hitTestCrop = _chunkUHMSMUHKcjs.hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkQT26RHKKcjs.homographyFromAffine; exports.homographyFromPoints = _chunkQT26RHKKcjs.homographyFromPoints; exports.hslToRgb = _chunkUHMSMUHKcjs.hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = _chunkUHMSMUHKcjs.hueRangeTables; exports.hueRangeWeight = _chunkUHMSMUHKcjs.hueRangeWeight; exports.hueSaturation = _chunkUHMSMUHKcjs.hueSaturation; exports.identityCurve = _chunkUHMSMUHKcjs.identityCurve; exports.identityLevels = _chunkUHMSMUHKcjs.identityLevels; exports.identityTransform = _chunkUHMSMUHKcjs.identityTransform; exports.identityWarpMesh = _chunkEGZM52EOcjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageLayerAppliedEffects = imageLayerAppliedEffects; exports.imagePlaybackPanel = imagePlaybackPanel; exports.imageToCanvasPoint = _chunkUHMSMUHKcjs.imageToCanvasPoint; exports.importPsd = _chunkUHMSMUHKcjs.importPsd; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkHGTDMKNEcjs.insertLayer; exports.instancesOf = _chunkUHMSMUHKcjs.instancesOf; exports.invertHomography = _chunkQT26RHKKcjs.invertHomography; exports.invertMatrix3 = _chunkUHMSMUHKcjs.invertMatrix3; exports.invertSelection = _chunkUHMSMUHKcjs.invertSelection; exports.isActiveFilter = _chunkUHMSMUHKcjs.isActiveFilter; exports.isAdjustmentKind = _chunkUHMSMUHKcjs.isAdjustmentKind; exports.isBitDepth = _chunkCWM3CUUXcjs.isBitDepth; exports.isBlendMode = _chunkCWM3CUUXcjs.isBlendMode; exports.isBrushstrokeBrush = _chunkEBDCRTZIcjs.isBrushstrokeBrush; exports.isContentsDecoded = _chunkUHMSMUHKcjs.isContentsDecoded; exports.isDefaultDepthMask = _chunkUHMSMUHKcjs.isDefaultDepthMask; exports.isGradientPaint = _chunkEBDCRTZIcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk7NW46N7Icjs.isIdentityCloneTransform; exports.isIdentityTransform = _chunkUHMSMUHKcjs.isIdentityTransform; exports.isInterpolation = _chunkHGTDMKNEcjs.isInterpolation; exports.isLayerEffectKind = _chunkHGTDMKNEcjs.isLayerEffectKind; exports.isLayerLocked = _chunkHGTDMKNEcjs.isLayerLocked; exports.isLegacyShape = _chunkUHMSMUHKcjs.isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPaintableLayer = _chunkUHMSMUHKcjs.isPaintableLayer; exports.isPainterlyBlendMode = _chunkCWM3CUUXcjs.isPainterlyBlendMode; exports.isPng = _chunkCWM3CUUXcjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = _chunkUHMSMUHKcjs.isQuarterTurnSwapped; exports.isRenderedLayer = _chunkUHMSMUHKcjs.isRenderedLayer; exports.isRetouchPaintTool = isRetouchPaintTool; exports.isRetouchTool = isRetouchTool; exports.isSelectionEmpty = _chunkUHMSMUHKcjs.isSelectionEmpty; exports.isSelectionMode = _chunkUHMSMUHKcjs.isSelectionMode; exports.isSeparableBlendMode = _chunkCWM3CUUXcjs.isSeparableBlendMode; exports.isSmartSurfaceIncomplete = _chunkUHMSMUHKcjs.isSmartSurfaceIncomplete; exports.isSpatialFilter = _chunkUHMSMUHKcjs.isSpatialFilter; exports.isSrgb = isSrgb; exports.isTransformAnchor = _chunkUHMSMUHKcjs.isTransformAnchor; exports.isValidWarp = _chunkUHMSMUHKcjs.isValidWarp; exports.keepDeepSamples = _chunkCWM3CUUXcjs.keepDeepSamples; exports.kelvinToTemperature = _chunkUHMSMUHKcjs.kelvinToTemperature; exports.keysWeight = _chunkHGTDMKNEcjs.keysWeight; exports.latticeViscosity = _chunkV7GWZIZKcjs.latticeViscosity; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkHGTDMKNEcjs.layerEffectFields; exports.layerEffectLabel = _chunkHGTDMKNEcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = _chunkUHMSMUHKcjs.layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerHasThumbnail = layerHasThumbnail; exports.layerLabel = layerLabel; exports.layerMaskCoverage = _chunkUHMSMUHKcjs.layerMaskCoverage; exports.layerMaskFromSelection = _chunkUHMSMUHKcjs.layerMaskFromSelection; exports.layerMaskKey = _chunkUHMSMUHKcjs.layerMaskKey; exports.layerMenu = layerMenu; exports.layerName = _chunkUHMSMUHKcjs.layerName; exports.layerPanelRows = layerPanelRows; exports.layerPanels = layerPanels; exports.layerTree = _chunkUHMSMUHKcjs.layerTree; exports.layerTypeLabel = _chunkUHMSMUHKcjs.layerTypeLabel; exports.layerWarning = layerWarning; exports.layersFromLegacy = _chunkUHMSMUHKcjs.layersFromLegacy; exports.layoutText = _chunkEGZM52EOcjs.layoutText; exports.legacyAdjustmentLayer = _chunkUHMSMUHKcjs.legacyAdjustmentLayer; exports.legacyMaskOf = _chunkUHMSMUHKcjs.legacyMaskOf; exports.legacyView = _chunkUHMSMUHKcjs.legacyView; exports.lerpPigment = _chunkCWM3CUUXcjs.lerpPigment; exports.lerpPigmentInto = _chunkCWM3CUUXcjs.lerpPigmentInto; exports.levelsValue = _chunkUHMSMUHKcjs.levelsValue; exports.linearSrgbToXy = _chunkUHMSMUHKcjs.linearSrgbToXy; exports.linearToSrgb = _chunkUHMSMUHKcjs.linearToSrgb; exports.linearToSrgb8 = _chunkV7GWZIZKcjs.linearToSrgb8; exports.liveComponent = _chunkUHMSMUHKcjs.liveComponent; exports.liveShapeForDrag = liveShapeForDrag; exports.liveShapeSubpaths = _chunkUHMSMUHKcjs.liveShapeSubpaths; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkEBDCRTZIcjs.loadMixer; exports.loadOpenTypeFont = _chunk5UEFNX24cjs.loadOpenTypeFont; exports.loadWetKernel = _chunkV7GWZIZKcjs.loadWetKernel; exports.luma = _chunk7NW46N7Icjs.luma; exports.magicWand = magicWand; exports.mapCropHandle = _chunkUHMSMUHKcjs.mapCropHandle; exports.mapLayer = _chunkHGTDMKNEcjs.mapLayer; exports.mapSubpaths = _chunkUHMSMUHKcjs.mapSubpaths; exports.maskBounds = _chunk7NW46N7Icjs.maskBounds; exports.maskSummary = maskSummary; exports.matrixFromCorners = _chunkUHMSMUHKcjs.matrixFromCorners; exports.matrixFromParams = _chunkUHMSMUHKcjs.matrixFromParams; exports.measureCanvasViewport = measureCanvasViewport; exports.membraneFill = _chunk7NW46N7Icjs.membraneFill; exports.mergeLayerEffect = _chunkHGTDMKNEcjs.mergeLayerEffect; exports.mergeShapeComponents = _chunkUHMSMUHKcjs.mergeShapeComponents; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mix32 = _chunkEBDCRTZIcjs.mix32; exports.mixPigment8 = _chunkCWM3CUUXcjs.mixPigment8; exports.mixPigmentRgb = _chunkCWM3CUUXcjs.mixPigmentRgb; exports.mixPigments = _chunkCWM3CUUXcjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.mixerRates = _chunkEBDCRTZIcjs.mixerRates; exports.modifySelection = _chunkUHMSMUHKcjs.modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = _chunkUHMSMUHKcjs.moveLayer; exports.moveSmartFilter = _chunkUHMSMUHKcjs.moveSmartFilter; exports.mulMatrix3 = _chunkUHMSMUHKcjs.mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = _chunkUHMSMUHKcjs.neutralHueRange; exports.newContentsId = _chunkUHMSMUHKcjs.newContentsId; exports.newEffectId = _chunkHGTDMKNEcjs.newEffectId; exports.newLayerId = _chunkUHMSMUHKcjs.newLayerId; exports.newLayerOptions = newLayerOptions; exports.normalizeAdjustmentLayer = _chunkUHMSMUHKcjs.normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = _chunkUHMSMUHKcjs.normalizeAdjustmentLayers; exports.normalizeAngle = _chunkUHMSMUHKcjs.normalizeAngle; exports.normalizeBlendMode = _chunkCWM3CUUXcjs.normalizeBlendMode; exports.normalizeBlender = _chunkEBDCRTZIcjs.normalizeBlender; exports.normalizeBrush = _chunkEBDCRTZIcjs.normalizeBrush; exports.normalizeFilter = _chunkUHMSMUHKcjs.normalizeFilter; exports.normalizeFlow = _chunkV7GWZIZKcjs.normalizeFlow; exports.normalizeHexColor = _chunkEBDCRTZIcjs.normalizeHexColor; exports.normalizeLayerEffects = _chunkHGTDMKNEcjs.normalizeLayerEffects; exports.normalizeLayerMask = _chunkUHMSMUHKcjs.normalizeLayerMask; exports.normalizeLiveShape = _chunkUHMSMUHKcjs.normalizeLiveShape; exports.normalizeMixer = _chunkEBDCRTZIcjs.normalizeMixer; exports.normalizePlacement = _chunkUHMSMUHKcjs.normalizePlacement; exports.normalizeProcessVersion = _chunkUHMSMUHKcjs.normalizeProcessVersion; exports.normalizeRect = normalizeRect; exports.normalizeRefineEdgeParams = normalizeRefineEdgeParams; exports.normalizeRetouch = _chunk7NW46N7Icjs.normalizeRetouch; exports.normalizeShapePaint = _chunkUHMSMUHKcjs.normalizeShapePaint; exports.normalizeShapeStroke = _chunkUHMSMUHKcjs.normalizeShapeStroke; exports.normalizeSmartFilter = _chunkUHMSMUHKcjs.normalizeSmartFilter; exports.normalizeSmudge = _chunkEBDCRTZIcjs.normalizeSmudge; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.normalizeSubpaths = _chunkUHMSMUHKcjs.normalizeSubpaths; exports.normalizeText = _chunkUHMSMUHKcjs.normalizeText; exports.normalizeTilt = _chunkV7GWZIZKcjs.normalizeTilt; exports.normalizeWetParams = _chunkV7GWZIZKcjs.normalizeWetParams; exports.offsetLayer = _chunkUHMSMUHKcjs.offsetLayer; exports.offsetShape = _chunkUHMSMUHKcjs.offsetShape; exports.offsetSmartObject = _chunkUHMSMUHKcjs.offsetSmartObject; exports.openPsdFile = openPsdFile; exports.packRgba = _chunkCWM3CUUXcjs.packRgba; exports.packWetParams = _chunkV7GWZIZKcjs.packWetParams; exports.paintGradientMappingFor = _chunkEBDCRTZIcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkEBDCRTZIcjs.paintPathStroke; exports.paintSourceColor = _chunkEBDCRTZIcjs.paintSourceColor; exports.paintSourceCss = _chunkEBDCRTZIcjs.paintSourceCss; exports.paragraphRanges = _chunkEGZM52EOcjs.paragraphRanges; exports.parseAdjustmentBlock = _chunkUHMSMUHKcjs.parseAdjustmentBlock; exports.parseBlend = _chunkUHMSMUHKcjs.parseBlend; exports.parseColor = parseColor; exports.parseCssColor = _chunkA2IS7EHEcjs.parseCssColor; exports.parseDataUrl = _chunkCWM3CUUXcjs.parseDataUrl; exports.parseEffectColor = _chunkHGTDMKNEcjs.parseEffectColor; exports.parseLfx2 = _chunkUHMSMUHKcjs.parseLfx2; exports.parseLrfx = _chunkUHMSMUHKcjs.parseLrfx; exports.parseOpenTypeFont = _chunk5UEFNX24cjs.parseOpenTypeFont; exports.parsePaintSource = _chunkEBDCRTZIcjs.parsePaintSource; exports.parsePatternBlock = _chunkUHMSMUHKcjs.parsePatternBlock; exports.parseSelectionMode = _chunkUHMSMUHKcjs.parseSelectionMode; exports.parseVersionedDescriptor = _chunkUHMSMUHKcjs.parseVersionedDescriptor; exports.patchParagraphStyle = _chunkUHMSMUHKcjs.patchParagraphStyle; exports.patchTextStyle = _chunkUHMSMUHKcjs.patchTextStyle; exports.pathStrokeCoverage = _chunkEBDCRTZIcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkEBDCRTZIcjs.pathStrokeDabs; exports.perDabStrength = _chunk7NW46N7Icjs.perDabStrength; exports.photoFilterMatrix = _chunkUHMSMUHKcjs.photoFilterMatrix; exports.pigment8 = _chunkCWM3CUUXcjs.pigment8; exports.pigmentColor = _chunkV7GWZIZKcjs.pigmentColor; exports.pigmentOf = _chunkV7GWZIZKcjs.pigmentOf; exports.pixelLayerBounds = _chunkUHMSMUHKcjs.pixelLayerBounds; exports.pixelLayers = _chunkUHMSMUHKcjs.pixelLayers; exports.pixelPigment = _chunkV7GWZIZKcjs.pixelPigment; exports.placeContents = _chunkUHMSMUHKcjs.placeContents; exports.placeLayer = _chunkUHMSMUHKcjs.placeLayer; exports.placementAt = _chunkUHMSMUHKcjs.placementAt; exports.placementBounds = _chunkUHMSMUHKcjs.placementBounds; exports.placementGeometry = _chunkUHMSMUHKcjs.placementGeometry; exports.planImageToolPlayback = planImageToolPlayback; exports.pngDataUrl = _chunkCWM3CUUXcjs.pngDataUrl; exports.pointerPressure = _chunkV7GWZIZKcjs.pointerPressure; exports.pointerStrokeSample = _chunkV7GWZIZKcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkV7GWZIZKcjs.pointerStrokeSamples; exports.polygonCoverage = polygonCoverage; exports.polygonSelection = polygonSelection; exports.posterizeValue = _chunkUHMSMUHKcjs.posterizeValue; exports.presetWarp = _chunkUHMSMUHKcjs.presetWarp; exports.previewStep = previewStep; exports.profileBytes = profileBytes; exports.projectImagePoint = _chunkUHMSMUHKcjs.projectImagePoint; exports.projectImageRect = _chunkUHMSMUHKcjs.projectImageRect; exports.projectMaskCoverage = _chunkUHMSMUHKcjs.projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.proxyOf = _chunkCWM3CUUXcjs.proxyOf; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = _chunkUHMSMUHKcjs.psdPatternToEffectPattern; exports.psdToLayers = _chunkUHMSMUHKcjs.psdToLayers; exports.pullWarpMesh = _chunkEGZM52EOcjs.pullWarpMesh; exports.put255 = _chunkEBDCRTZIcjs.put255; exports.quadFrameOverlay = quadFrameOverlay; exports.quickMaskPixels = quickMaskPixels; exports.rand01 = _chunkEBDCRTZIcjs.rand01; exports.randSigned = _chunkEBDCRTZIcjs.randSigned; exports.rangeLightness = _chunkUHMSMUHKcjs.rangeLightness; exports.rasterContents = _chunkUHMSMUHKcjs.rasterContents; exports.rasterMaskFromLegacy = _chunkUHMSMUHKcjs.rasterMaskFromLegacy; exports.rasterizeCoverage = _chunkUHMSMUHKcjs.rasterizeCoverage; exports.rasterizeDab = _chunkEBDCRTZIcjs.rasterizeDab; exports.rasterizeSmartObject = _chunkUHMSMUHKcjs.rasterizeSmartObject; exports.readAdjustmentControls = readAdjustmentControls; exports.readDeepRegion = _chunkCWM3CUUXcjs.readDeepRegion; exports.readPaintSource = _chunkEBDCRTZIcjs.readPaintSource; exports.readPixel = _chunkCWM3CUUXcjs.readPixel; exports.readPsd = _chunkUHMSMUHKcjs.readPsd; exports.readRegion = _chunkCWM3CUUXcjs.readRegion; exports.readSourceRegion = _chunk7NW46N7Icjs.readSourceRegion; exports.rectSelection = rectSelection; exports.rectToQuad = _chunkQT26RHKKcjs.rectToQuad; exports.reduceSurface = _chunkHGTDMKNEcjs.reduceSurface; exports.referencePoint = _chunkUHMSMUHKcjs.referencePoint; exports.refineCoverage = refineCoverage; exports.refineEdgeHalo = refineEdgeHalo; exports.refineSelection = refineSelection; exports.reflectanceToRgb = _chunkCWM3CUUXcjs.reflectanceToRgb; exports.removeAlpha = _chunkUHMSMUHKcjs.removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = _chunkUHMSMUHKcjs.removeLayer; exports.removeLayerEffect = _chunkUHMSMUHKcjs.removeLayerEffect; exports.removeLayerFilter = _chunkUHMSMUHKcjs.removeLayerFilter; exports.removePaintGradientStop = _chunkEBDCRTZIcjs.removePaintGradientStop; exports.removeSmartFilter = _chunkUHMSMUHKcjs.removeSmartFilter; exports.renderBrushstroke = _chunkEBDCRTZIcjs.renderBrushstroke; exports.renderLayerEffects = _chunkHGTDMKNEcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.renderShape = _chunkUHMSMUHKcjs.renderShape; exports.renderShapeRect = _chunkUHMSMUHKcjs.renderShapeRect; exports.renderSmartObject = _chunkUHMSMUHKcjs.renderSmartObject; exports.renderText = _chunkUHMSMUHKcjs.renderText; exports.replaceContents = _chunkUHMSMUHKcjs.replaceContents; exports.replaceTextRange = _chunkUHMSMUHKcjs.replaceTextRange; exports.requireLayer = _chunkUHMSMUHKcjs.requireLayer; exports.requireOperation = _chunkUHMSMUHKcjs.requireOperation; exports.requireShapeLayer = _chunkUHMSMUHKcjs.requireShapeLayer; exports.requireSmartObject = _chunkUHMSMUHKcjs.requireSmartObject; exports.requireTypeLayer = _chunkUHMSMUHKcjs.requireTypeLayer; exports.requireUnlocked = _chunkUHMSMUHKcjs.requireUnlocked; exports.rerender = _chunkUHMSMUHKcjs.rerender; exports.rerenderShape = _chunkUHMSMUHKcjs.rerenderShape; exports.rerenderText = _chunkUHMSMUHKcjs.rerenderText; exports.resizePixels = resizePixels; exports.resizeSelection = _chunkUHMSMUHKcjs.resizeSelection; exports.resizeWarpMesh = _chunkEGZM52EOcjs.resizeWarpMesh; exports.resolveExternalAssets = _chunkUHMSMUHKcjs.resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.resolvePaintGradient = _chunkEBDCRTZIcjs.resolvePaintGradient; exports.resolveProfile = resolveProfile; exports.restyleRange = _chunkEGZM52EOcjs.restyleRange; exports.retouchFilter = _chunk7NW46N7Icjs.retouchFilter; exports.reversePaintGradient = _chunkEBDCRTZIcjs.reversePaintGradient; exports.rgbToGray = _chunkUHMSMUHKcjs.rgbToGray; exports.rgbToHsl = _chunkUHMSMUHKcjs.rgbToHsl; exports.rgbToReflectance = _chunkCWM3CUUXcjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.rgbaViewOfGrey = _chunk7NW46N7Icjs.rgbaViewOfGrey; exports.runLayerFilters = _chunkUHMSMUHKcjs.runLayerFilters; exports.runLayerFiltersFloat = _chunkUHMSMUHKcjs.runLayerFiltersFloat; exports.runLayerMenuAction = runLayerMenuAction; exports.sameCanvasViewport = sameCanvasViewport; exports.sampleLut = _chunkUHMSMUHKcjs.sampleLut; exports.sampleToneLut = _chunkUHMSMUHKcjs.sampleToneLut; exports.saturationOf = _chunk7NW46N7Icjs.saturationOf; exports.scaleLayerEffect = _chunkHGTDMKNEcjs.scaleLayerEffect; exports.scalePaintGradient = _chunkEBDCRTZIcjs.scalePaintGradient; exports.seamlessClone = _chunk7NW46N7Icjs.seamlessClone; exports.seedFromString = _chunkEBDCRTZIcjs.seedFromString; exports.selectionArea = _chunkUHMSMUHKcjs.selectionArea; exports.selectionFromCoverage = _chunkUHMSMUHKcjs.selectionFromCoverage; exports.selectionFromPixels = _chunkUHMSMUHKcjs.selectionFromPixels; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionToCoverage = _chunkUHMSMUHKcjs.selectionToCoverage; exports.selectionToPixels = _chunkUHMSMUHKcjs.selectionToPixels; exports.selectionValueAt = _chunkUHMSMUHKcjs.selectionValueAt; exports.serializeColorMode = serializeColorMode; exports.serializeColorProfile = serializeColorProfile; exports.serializeContents = _chunkUHMSMUHKcjs.serializeContents; exports.serializeEffects = _chunkUHMSMUHKcjs.serializeEffects; exports.serializeLayer = _chunkUHMSMUHKcjs.serializeLayer; exports.serializeLayers = _chunkUHMSMUHKcjs.serializeLayers; exports.serializeLayersExternal = _chunkUHMSMUHKcjs.serializeLayersExternal; exports.serializePatterns = _chunkUHMSMUHKcjs.serializePatterns; exports.serializeSelection = _chunkUHMSMUHKcjs.serializeSelection; exports.setCloneTransformValue = setCloneTransformValue; exports.setControlPath = setControlPath; exports.setLayerEffects = _chunkUHMSMUHKcjs.setLayerEffects; exports.setLayerEffectsEnabled = _chunkUHMSMUHKcjs.setLayerEffectsEnabled; exports.setLayerMask = _chunkUHMSMUHKcjs.setLayerMask; exports.setLayerProperties = _chunkUHMSMUHKcjs.setLayerProperties; exports.setLum = _chunkCWM3CUUXcjs.setLum; exports.setPigmentColor = _chunkCWM3CUUXcjs.setPigmentColor; exports.setRetouchChoice = setRetouchChoice; exports.setSmartFilterMask = _chunkUHMSMUHKcjs.setSmartFilterMask; exports.setSmartFiltersEnabled = _chunkUHMSMUHKcjs.setSmartFiltersEnabled; exports.setSmartPlacement = _chunkUHMSMUHKcjs.setSmartPlacement; exports.shadeTile = _chunkV7GWZIZKcjs.shadeTile; exports.shapeAsPixelLayer = _chunkUHMSMUHKcjs.shapeAsPixelLayer; exports.shapeFromAnnotation = _chunkUHMSMUHKcjs.shapeFromAnnotation; exports.shapeGeometryBounds = _chunkUHMSMUHKcjs.shapeGeometryBounds; exports.shapeLayers = _chunkUHMSMUHKcjs.shapeLayers; exports.shapeOutline = _chunkUHMSMUHKcjs.shapeOutline; exports.shapeRenderClip = _chunkUHMSMUHKcjs.shapeRenderClip; exports.shiftCoverage = _chunkUHMSMUHKcjs.shiftCoverage; exports.smartFilterRows = smartFilterRows; exports.smartObjectLayers = _chunkUHMSMUHKcjs.smartObjectLayers; exports.smoothCoverage = _chunkUHMSMUHKcjs.smoothCoverage; exports.smoothPoints = _chunkEBDCRTZIcjs.smoothPoints; exports.smudgeEffect = _chunk7NW46N7Icjs.smudgeEffect; exports.solidPaint = _chunkEBDCRTZIcjs.solidPaint; exports.solidSurface = _chunkCWM3CUUXcjs.solidSurface; exports.solveMembrane = _chunk7NW46N7Icjs.solveMembrane; exports.spliceRuns = _chunkEGZM52EOcjs.spliceRuns; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.sponge = _chunk7NW46N7Icjs.sponge; exports.spongeEffect = _chunk7NW46N7Icjs.spongeEffect; exports.spotHealPixels = _chunk7NW46N7Icjs.spotHealPixels; exports.spotHealWindow = _chunk7NW46N7Icjs.spotHealWindow; exports.srgb8ToLab = srgb8ToLab; exports.srgbByteToLinear = _chunkV7GWZIZKcjs.srgbByteToLinear; exports.srgbDecode = _chunkCWM3CUUXcjs.srgbDecode; exports.srgbEncode = _chunkCWM3CUUXcjs.srgbEncode; exports.srgbToLinear = _chunkUHMSMUHKcjs.srgbToLinear; exports.standardBlendMode = _chunkCWM3CUUXcjs.standardBlendMode; exports.stepSlotTs = _chunkV7GWZIZKcjs.stepSlotTs; exports.strokeGrainCatch = _chunkEBDCRTZIcjs.strokeGrainCatch; exports.styleAt = _chunkEGZM52EOcjs.styleAt; exports.sumHistograms = sumHistograms; exports.surfaceBytes = _chunkCWM3CUUXcjs.surfaceBytes; exports.surfaceDepth = _chunkCWM3CUUXcjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunkCWM3CUUXcjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunkCWM3CUUXcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCWM3CUUXcjs.surfacesEqual; exports.tempTintToXy = _chunkUHMSMUHKcjs.tempTintToXy; exports.temperatureToKelvin = _chunkUHMSMUHKcjs.temperatureToKelvin; exports.textIndexAt = _chunkEGZM52EOcjs.textIndexAt; exports.textMatrix = _chunkUHMSMUHKcjs.textMatrix; exports.textOutlines = _chunkUHMSMUHKcjs.textOutlines; exports.textRange = _chunkUHMSMUHKcjs.textRange; exports.tileCoord = _chunkCWM3CUUXcjs.tileCoord; exports.tileKey = _chunkCWM3CUUXcjs.tileKey; exports.tileRect = _chunkCWM3CUUXcjs.tileRect; exports.tileSamples = _chunkCWM3CUUXcjs.tileSamples; exports.tileSamples16 = _chunkCWM3CUUXcjs.tileSamples16; exports.tileSamples32 = _chunkCWM3CUUXcjs.tileSamples32; exports.tilesInRect = _chunkCWM3CUUXcjs.tilesInRect; exports.tipFalloff = _chunkEBDCRTZIcjs.tipFalloff; exports.tipReach = _chunkEBDCRTZIcjs.tipReach; exports.tipShape = _chunkEBDCRTZIcjs.tipShape; exports.to16From32 = _chunkCWM3CUUXcjs.to16From32; exports.to16From8 = _chunkCWM3CUUXcjs.to16From8; exports.to32From16 = _chunkCWM3CUUXcjs.to32From16; exports.to32From8 = _chunkCWM3CUUXcjs.to32From8; exports.to8From16 = _chunkCWM3CUUXcjs.to8From16; exports.to8From32 = _chunkCWM3CUUXcjs.to8From32; exports.toHex = toHex; exports.toTextSpace = _chunkUHMSMUHKcjs.toTextSpace; exports.toneCurve = _chunkUHMSMUHKcjs.toneCurve; exports.toneLuts = _chunkUHMSMUHKcjs.toneLuts; exports.toneOf = _chunk7NW46N7Icjs.toneOf; exports.toneRange = toneRange; exports.transformHomography = _chunkUHMSMUHKcjs.transformHomography; exports.transformMap = _chunkUHMSMUHKcjs.transformMap; exports.transformShapeComponents = _chunkUHMSMUHKcjs.transformShapeComponents; exports.transformSurface = _chunkHGTDMKNEcjs.transformSurface; exports.transformTypeLayer = _chunkUHMSMUHKcjs.transformTypeLayer; exports.transformedBounds = _chunkHGTDMKNEcjs.transformedBounds; exports.transformedBox = _chunkUHMSMUHKcjs.transformedBox; exports.transformedPoint = _chunkUHMSMUHKcjs.transformedPoint; exports.translateLayer = _chunkUHMSMUHKcjs.translateLayer; exports.translateSurface = _chunkCWM3CUUXcjs.translateSurface; exports.typeAsPixelLayer = _chunkUHMSMUHKcjs.typeAsPixelLayer; exports.typeFrame = _chunkUHMSMUHKcjs.typeFrame; exports.typeFromAnnotation = _chunkUHMSMUHKcjs.typeFromAnnotation; exports.typeLayerAt = typeLayerAt; exports.typeLayerName = _chunkUHMSMUHKcjs.typeLayerName; exports.ungroupLayer = _chunkUHMSMUHKcjs.ungroupLayer; exports.uniformTile = _chunkCWM3CUUXcjs.uniformTile; exports.unionRect = _chunkUHMSMUHKcjs.unionRect; exports.unprojectCanvasPoint = _chunkUHMSMUHKcjs.unprojectCanvasPoint; exports.updateLayerEffect = _chunkUHMSMUHKcjs.updateLayerEffect; exports.updateLayerFilter = _chunkUHMSMUHKcjs.updateLayerFilter; exports.updateLayerMaskProps = _chunkUHMSMUHKcjs.updateLayerMaskProps; exports.updatePaintGradientStop = _chunkEBDCRTZIcjs.updatePaintGradientStop; exports.updateShapeLayer = _chunkUHMSMUHKcjs.updateShapeLayer; exports.updateSmartFilter = _chunkUHMSMUHKcjs.updateSmartFilter; exports.updateTypeLayer = _chunkUHMSMUHKcjs.updateTypeLayer; exports.userErrorMessage = _chunkUHMSMUHKcjs.userErrorMessage; exports.uvToXy = _chunkUHMSMUHKcjs.uvToXy; exports.validateEffectGradient = _chunkHGTDMKNEcjs.validateEffectGradient; exports.validateLayerEffect = _chunkHGTDMKNEcjs.validateLayerEffect; exports.validateLayerEffects = _chunkHGTDMKNEcjs.validateLayerEffects; exports.versionedDescriptorBytes = _chunkUHMSMUHKcjs.versionedDescriptorBytes; exports.vibranceLinear = _chunkUHMSMUHKcjs.vibranceLinear; exports.vibrancePixel = _chunkUHMSMUHKcjs.vibrancePixel; exports.walkDabs = _chunkEBDCRTZIcjs.walkDabs; exports.warpMeshEditPoints = _chunkEGZM52EOcjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkEGZM52EOcjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkEGZM52EOcjs.warpMeshParamAt; exports.warpPresetMesh = _chunkEGZM52EOcjs.warpPresetMesh; exports.warpSurface = _chunkHGTDMKNEcjs.warpSurface; exports.watchCanvasViewport = watchCanvasViewport; exports.wbMatrix = _chunkUHMSMUHKcjs.wbMatrix; exports.wetGpuSupport = _chunkV7GWZIZKcjs.wetGpuSupport; exports.wetSimdSupported = _chunkV7GWZIZKcjs.wetSimdSupported; exports.wetSupport = _chunkV7GWZIZKcjs.wetSupport; exports.whiteBalanceFromSample = _chunkUHMSMUHKcjs.whiteBalanceFromSample; exports.whiteBalanceMatrix = _chunkUHMSMUHKcjs.whiteBalanceMatrix; exports.withBackgroundOpacity = withBackgroundOpacity; exports.withFilterMaskSurface = _chunkUHMSMUHKcjs.withFilterMaskSurface; exports.withImagePlayback = withImagePlayback; exports.withNewIds = _chunkUHMSMUHKcjs.withNewIds; exports.writeAdjustmentBlock = _chunkUHMSMUHKcjs.writeAdjustmentBlock; exports.writeDeepRegion = _chunkCWM3CUUXcjs.writeDeepRegion; exports.writeLfx2 = _chunkUHMSMUHKcjs.writeLfx2; exports.writePatternBlock = _chunkUHMSMUHKcjs.writePatternBlock; exports.writePsd = _chunkUHMSMUHKcjs.writePsd; exports.writeRegion = _chunkCWM3CUUXcjs.writeRegion; exports.xyToTempTint = _chunkUHMSMUHKcjs.xyToTempTint; exports.xyToUv = _chunkUHMSMUHKcjs.xyToUv;
16915
+
16916
+
16917
+
16918
+
16919
+
16920
+
16921
+ exports.ADJUSTMENT_KEYS = _chunkUHMSMUHKcjs.ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = _chunkUHMSMUHKcjs.ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = _chunkUHMSMUHKcjs.ADJUSTMENT_LUT_SIZE; exports.ANCHOR_FRACTION = _chunkUHMSMUHKcjs.ANCHOR_FRACTION; exports.AS_SHOT_KELVIN = _chunkUHMSMUHKcjs.AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = _chunkUHMSMUHKcjs.BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = _chunkUHMSMUHKcjs.BACKGROUND_LAYER_NAME; exports.BIT_DEPTHS = _chunkCWM3CUUXcjs.BIT_DEPTHS; exports.BIT_DEPTH_OPTIONS = BIT_DEPTH_OPTIONS; exports.BLEND_MODES = _chunkCWM3CUUXcjs.BLEND_MODES; exports.BLUR_FILTER_ID = _chunkUHMSMUHKcjs.BLUR_FILTER_ID; exports.BODY_SCATTER = _chunkV7GWZIZKcjs.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 = _chunkEBDCRTZIcjs.BrushstrokeCache; exports.CANVAS_SIZE_PRESETS = CANVAS_SIZE_PRESETS; exports.CLONE_TRANSFORM_CONTROLS = CLONE_TRANSFORM_CONTROLS; exports.COLOR_MODE_OPTIONS = COLOR_MODE_OPTIONS; exports.CoverageMap = _chunkEBDCRTZIcjs.CoverageMap; exports.D50 = _chunkUHMSMUHKcjs.D50; exports.D65 = _chunkUHMSMUHKcjs.D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_AUTO_LEADING = _chunkEGZM52EOcjs.DEFAULT_AUTO_LEADING; exports.DEFAULT_BLENDER = _chunkEBDCRTZIcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkEBDCRTZIcjs.DEFAULT_BRUSH; exports.DEFAULT_CANVAS_VIEWPORT = DEFAULT_CANVAS_VIEWPORT; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_FLOW = _chunkV7GWZIZKcjs.DEFAULT_FLOW; exports.DEFAULT_GLOBAL_LIGHT = _chunkHGTDMKNEcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MITER_LIMIT = _chunkUHMSMUHKcjs.DEFAULT_MITER_LIMIT; exports.DEFAULT_MIXER = _chunkEBDCRTZIcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PROOF = DEFAULT_PROOF; exports.DEFAULT_REFINE_EDGE_PARAMS = DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_RETOUCH = _chunk7NW46N7Icjs.DEFAULT_RETOUCH; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_SHAPE_TOOL_OPTIONS = DEFAULT_SHAPE_TOOL_OPTIONS; exports.DEFAULT_SMUDGE = _chunkEBDCRTZIcjs.DEFAULT_SMUDGE; exports.DEFAULT_TEXT_STYLE = _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEFAULT_TYPE_TOOL_OPTIONS = DEFAULT_TYPE_TOOL_OPTIONS; exports.DEFAULT_WET_PAPER = _chunkV7GWZIZKcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkV7GWZIZKcjs.DEFAULT_WET_PARAMS; exports.DEPTH_MASK_CONTROLS = DEPTH_MASK_CONTROLS; exports.DEVELOP_FILTER_ID = _chunkUHMSMUHKcjs.DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkHGTDMKNEcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DRY_EPS = _chunkV7GWZIZKcjs.DRY_EPS; exports.DabWalker = _chunkEBDCRTZIcjs.DabWalker; exports.EFFECT_LAYER_USES = EFFECT_LAYER_USES; exports.EMPTY_DISTANCE = _chunkUHMSMUHKcjs.EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkEBDCRTZIcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkV7GWZIZKcjs.EX; exports.EY = _chunkV7GWZIZKcjs.EY; exports.FLAG_ALIVE = _chunkV7GWZIZKcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkV7GWZIZKcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkV7GWZIZKcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkV7GWZIZKcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkV7GWZIZKcjs.FLAG_TOP; exports.FLAG_WET = _chunkV7GWZIZKcjs.FLAG_WET; exports.FLAT = _chunkV7GWZIZKcjs.FLAT; exports.FREE_INTERVAL = _chunkV7GWZIZKcjs.FREE_INTERVAL; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = _chunkUHMSMUHKcjs.FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GRAIN_PATTERNS = _chunkEBDCRTZIcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkEBDCRTZIcjs.GRAIN_TILE; exports.GUIDED_FILTER_EPS = GUIDED_FILTER_EPS; exports.HIDE = _chunkV7GWZIZKcjs.HIDE; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = _chunkUHMSMUHKcjs.HUE_RANGE_LABELS; exports.IDENTITY_CLONE_TRANSFORM = _chunk7NW46N7Icjs.IDENTITY_CLONE_TRANSFORM; exports.IDENTITY_MATRIX3 = _chunkUHMSMUHKcjs.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.INTENTS = _chunkBROJYMWUcjs.INTENTS; exports.INTENT_OPTIONS = INTENT_OPTIONS; exports.INTERPOLATIONS = _chunkHGTDMKNEcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.ImageEffectsEngine = ImageEffectsEngine; exports.LATEST_PROCESS_VERSION = _chunkUHMSMUHKcjs.LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = _chunkUHMSMUHKcjs.LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkHGTDMKNEcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = _chunkUHMSMUHKcjs.LEGACY_PROCESS_VERSION; exports.LIVE_SHAPE_KINDS = _chunkUHMSMUHKcjs.LIVE_SHAPE_KINDS; exports.LUMA_709 = _chunkUHMSMUHKcjs.LUMA_709; exports.LayerCompositor = _chunkUHMSMUHKcjs.LayerCompositor; exports.LayerEffectError = _chunkHGTDMKNEcjs.LayerEffectError; exports.LayerOperationError = _chunkUHMSMUHKcjs.LayerOperationError; exports.MARCHING_ANTS_STEP_MS = MARCHING_ANTS_STEP_MS; exports.MAX_BATCH = _chunkV7GWZIZKcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkEBDCRTZIcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_BACKING_SIDE = MAX_CANVAS_BACKING_SIDE; exports.MAX_EFFECT_ANIMATION_MS = _chunkUHMSMUHKcjs.MAX_EFFECT_ANIMATION_MS; exports.MAX_EFFECT_REACH = _chunkHGTDMKNEcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = _chunkUHMSMUHKcjs.MAX_KELVIN; exports.MAX_TILT_ACCEL = _chunkV7GWZIZKcjs.MAX_TILT_ACCEL; exports.MAX_TRANSFORM_PIXELS = _chunkHGTDMKNEcjs.MAX_TRANSFORM_PIXELS; exports.MAX_WET_LANES = _chunkV7GWZIZKcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkV7GWZIZKcjs.MAX_WET_SLOTS; exports.MIN_KELVIN = _chunkUHMSMUHKcjs.MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = _chunkUHMSMUHKcjs.MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkEBDCRTZIcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkEBDCRTZIcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkEBDCRTZIcjs.MIXING_MODELS; exports.MixerStroke = _chunkEBDCRTZIcjs.MixerStroke; exports.OPP = _chunkV7GWZIZKcjs.OPP; exports.PAINTERLY_BLEND_MODES = _chunkCWM3CUUXcjs.PAINTERLY_BLEND_MODES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkEBDCRTZIcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkEBDCRTZIcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_CAPACITY = _chunkV7GWZIZKcjs.PAPER_CAPACITY; exports.PARAGRAPH_STYLE_FIELDS = _chunkUHMSMUHKcjs.PARAGRAPH_STYLE_FIELDS; exports.PARAM = _chunkV7GWZIZKcjs.PARAM; exports.PARAM_FLOATS = _chunkV7GWZIZKcjs.PARAM_FLOATS; exports.PATTERN_BLOCK_KEYS = _chunkUHMSMUHKcjs.PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkCWM3CUUXcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkV7GWZIZKcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkV7GWZIZKcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkCWM3CUUXcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkV7GWZIZKcjs.PLANE; exports.PLANE_BYTES = _chunkV7GWZIZKcjs.PLANE_BYTES; exports.PROOF_PROFILE_OPTIONS = PROOF_PROFILE_OPTIONS; exports.PSD_BLEND_KEYS = _chunkUHMSMUHKcjs.PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.P_D0 = _chunkV7GWZIZKcjs.P_D0; exports.P_EDGE = _chunkV7GWZIZKcjs.P_EDGE; exports.P_FX = _chunkV7GWZIZKcjs.P_FX; exports.P_FY = _chunkV7GWZIZKcjs.P_FY; exports.P_H = _chunkV7GWZIZKcjs.P_H; exports.P_P0 = _chunkV7GWZIZKcjs.P_P0; exports.P_RHO = _chunkV7GWZIZKcjs.P_RHO; exports.P_SW = _chunkV7GWZIZKcjs.P_SW; exports.P_UX = _chunkV7GWZIZKcjs.P_UX; exports.P_UY = _chunkV7GWZIZKcjs.P_UY; exports.PaintExchange = _chunkEBDCRTZIcjs.PaintExchange; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkEBDCRTZIcjs.PaintGradientSampler; exports.PaintSourceError = _chunkEBDCRTZIcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaperGrain = _chunkEBDCRTZIcjs.PaperGrain; exports.PatternPlacement = _chunkHGTDMKNEcjs.PatternPlacement; exports.PatternTile = _chunkHGTDMKNEcjs.PatternTile; exports.PsdError = _chunkUHMSMUHKcjs.PsdError; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.RETOUCH_CHOICES = RETOUCH_CHOICES; exports.RETOUCH_OPTION_CONTROLS = RETOUCH_OPTION_CONTROLS; exports.RETOUCH_SAMPLES = _chunk7NW46N7Icjs.RETOUCH_SAMPLES; exports.RETOUCH_TOGGLES = RETOUCH_TOGGLES; exports.RETOUCH_TOOLS = RETOUCH_TOOLS; exports.RegionPixelSource = _chunk7NW46N7Icjs.RegionPixelSource; exports.RetouchDabStroke = _chunk7NW46N7Icjs.RetouchDabStroke; exports.SELECTION_MODES = _chunkUHMSMUHKcjs.SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = _chunkUHMSMUHKcjs.SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SET_PLANES = _chunkV7GWZIZKcjs.SET_PLANES; exports.SHADOW_AMBIENT = _chunkCWM3CUUXcjs.SHADOW_AMBIENT; exports.SHAPE_KIND_LABELS = SHAPE_KIND_LABELS; exports.SHAPE_OPERATIONS = _chunkUHMSMUHKcjs.SHAPE_OPERATIONS; exports.SHAPE_RENDER_MARGIN = _chunkUHMSMUHKcjs.SHAPE_RENDER_MARGIN; exports.SLOT_BYTES = _chunkV7GWZIZKcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkV7GWZIZKcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkV7GWZIZKcjs.SLOT_SIDE; exports.SMART_RENDER_MARGIN = _chunkUHMSMUHKcjs.SMART_RENDER_MARGIN; exports.SPOT_HEAL_TYPES = _chunk7NW46N7Icjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkV7GWZIZKcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkV7GWZIZKcjs.STRIP; exports.SUPPORTED_ADJUSTMENT_KEYS = _chunkUHMSMUHKcjs.SUPPORTED_ADJUSTMENT_KEYS; exports.SelectionGesture = SelectionGesture; exports.ShapeDrawGesture = ShapeDrawGesture; exports.SmudgeTip = _chunkEBDCRTZIcjs.SmudgeTip; exports.StrokeCoverage = _chunkEBDCRTZIcjs.StrokeCoverage; exports.SurfaceDraft = _chunkCWM3CUUXcjs.SurfaceDraft; exports.TEXT_ALIGNS = _chunkUHMSMUHKcjs.TEXT_ALIGNS; exports.TEXT_RENDER_MARGIN = _chunkUHMSMUHKcjs.TEXT_RENDER_MARGIN; exports.TEXT_STYLE_FIELDS = _chunkUHMSMUHKcjs.TEXT_STYLE_FIELDS; exports.TILE = _chunkCWM3CUUXcjs.TILE; exports.TILE_SHIFT = _chunkCWM3CUUXcjs.TILE_SHIFT; exports.TINT_SCALE = _chunkUHMSMUHKcjs.TINT_SCALE; exports.TIP_GRADIENT_STEPS = _chunkEBDCRTZIcjs.TIP_GRADIENT_STEPS; exports.TONE_LUT_SIZE = _chunkUHMSMUHKcjs.TONE_LUT_SIZE; exports.TONE_RANGES = _chunk7NW46N7Icjs.TONE_RANGES; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = _chunkUHMSMUHKcjs.TRANSFORM_ANCHORS; exports.TRANSFORM_ROTATE_HANDLE_OFFSET = TRANSFORM_ROTATE_HANDLE_OFFSET; exports.TextEditSession = TextEditSession; exports.TileMedium = _chunkEBDCRTZIcjs.TileMedium; exports.TilePixelSource = _chunk7NW46N7Icjs.TilePixelSource; exports.TileableNoise = _chunkEBDCRTZIcjs.TileableNoise; exports.TiledSurface = _chunkCWM3CUUXcjs.TiledSurface; exports.TransformTooLargeError = _chunkHGTDMKNEcjs.TransformTooLargeError; exports.TransformedPixelSource = _chunk7NW46N7Icjs.TransformedPixelSource; exports.TypeToolGesture = TypeToolGesture; exports.U_MAX = _chunkV7GWZIZKcjs.U_MAX; exports.VIBRANCE_GREY = _chunkUHMSMUHKcjs.VIBRANCE_GREY; exports.W9 = _chunkV7GWZIZKcjs.W9; exports.WARP_GRID_OPTIONS = WARP_GRID_OPTIONS; exports.WARP_STYLES = _chunkEGZM52EOcjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkEGZM52EOcjs.WARP_STYLE_LABELS; exports.WARP_STYLE_OPTIONS = WARP_STYLE_OPTIONS; exports.WET_FLOW_KINDS = _chunkV7GWZIZKcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkV7GWZIZKcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkV7GWZIZKcjs.WET_TILE; exports.WGSL_HALO = _chunkV7GWZIZKcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkV7GWZIZKcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkV7GWZIZKcjs.WGSL_STEP; exports.WORKING_SPACE_OPTIONS = WORKING_SPACE_OPTIONS; exports.WetGpuEngine = _chunkV7GWZIZKcjs.WetGpuEngine; exports.WetMedium = _chunkV7GWZIZKcjs.WetMedium; exports.WetWorkerPool = _chunkV7GWZIZKcjs.WetWorkerPool; exports.WetWorld = _chunkV7GWZIZKcjs.WetWorld; exports.WetWorldError = _chunkV7GWZIZKcjs.WetWorldError; exports.XYZ_D50_TO_SRGB = _chunkUHMSMUHKcjs.XYZ_D50_TO_SRGB; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeAdjustmentLayers = _chunkUHMSMUHKcjs.activeAdjustmentLayers; exports.activeEffectSmartFilters = _chunkUHMSMUHKcjs.activeEffectSmartFilters; exports.activeLayerAfterRemoval = _chunkUHMSMUHKcjs.activeLayerAfterRemoval; exports.activeSmartFilters = _chunkUHMSMUHKcjs.activeSmartFilters; exports.addLayerEffect = _chunkUHMSMUHKcjs.addLayerEffect; exports.addLayerFilter = _chunkUHMSMUHKcjs.addLayerFilter; exports.addLayerOfKind = addLayerOfKind; exports.addPaintGradientStop = _chunkEBDCRTZIcjs.addPaintGradientStop; exports.addSmartFilter = _chunkUHMSMUHKcjs.addSmartFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = _chunkUHMSMUHKcjs.adjustmentKindLabel; exports.adjustmentLayersKey = _chunkUHMSMUHKcjs.adjustmentLayersKey; exports.adjustmentNodeAsLayer = _chunkUHMSMUHKcjs.adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = _chunkUHMSMUHKcjs.adjustmentNodeFromLegacy; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.agentDragDraft = agentDragDraft; exports.anchorPoint = _chunkUHMSMUHKcjs.anchorPoint; exports.annotationBlend = _chunkUHMSMUHKcjs.annotationBlend; exports.annotationLayerFor = _chunkUHMSMUHKcjs.annotationLayerFor; exports.annotationLayerName = _chunkUHMSMUHKcjs.annotationLayerName; exports.annotationOfLayer = _chunkUHMSMUHKcjs.annotationOfLayer; exports.annotationOfShape = _chunkUHMSMUHKcjs.annotationOfShape; exports.annotationOfType = _chunkUHMSMUHKcjs.annotationOfType; exports.applyAdjustmentLayers = _chunkUHMSMUHKcjs.applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = _chunkUHMSMUHKcjs.applyAdjustmentLayersFloat; exports.applyAdjustments = _chunkUHMSMUHKcjs.applyAdjustments; exports.applyBoxBlur = _chunkUHMSMUHKcjs.applyBoxBlur; exports.applyBoxBlurFloat = _chunkUHMSMUHKcjs.applyBoxBlurFloat; exports.applyDepthMask = _chunkUHMSMUHKcjs.applyDepthMask; exports.applyHomography = _chunkQT26RHKKcjs.applyHomography; exports.applyImageProjectionToContext = _chunkUHMSMUHKcjs.applyImageProjectionToContext; exports.applyLegacyAdjustments = _chunkUHMSMUHKcjs.applyLegacyAdjustments; exports.applyLegacyFloat = _chunkUHMSMUHKcjs.applyLegacyFloat; exports.applyMatrix3 = _chunkUHMSMUHKcjs.applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = _chunkUHMSMUHKcjs.applyParams; exports.applyProcess2Adjustments = _chunkUHMSMUHKcjs.applyProcess2Adjustments; exports.applyProcess2Float = _chunkUHMSMUHKcjs.applyProcess2Float; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyRetouchToTile = _chunk7NW46N7Icjs.applyRetouchToTile; exports.applyShapeOptions = applyShapeOptions; exports.applySmartFilters = _chunkUHMSMUHKcjs.applySmartFilters; exports.applyStrokeToDeepTile = _chunkEBDCRTZIcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkEBDCRTZIcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk7NW46N7Icjs.applyToneToDeepTile; exports.backgroundLayer = _chunkUHMSMUHKcjs.backgroundLayer; exports.base64ToBytes = _chunkCWM3CUUXcjs.base64ToBytes; exports.baseProjection = baseProjection; exports.bestOffset = _chunk7NW46N7Icjs.bestOffset; exports.blackWhiteGray = _chunkUHMSMUHKcjs.blackWhiteGray; exports.blendChannel = _chunkCWM3CUUXcjs.blendChannel; exports.blendImageData = _chunkCWM3CUUXcjs.blendImageData; exports.blendLum = _chunkCWM3CUUXcjs.blendLum; exports.blendPixel = _chunkCWM3CUUXcjs.blendPixel; exports.blendRadius = _chunkEBDCRTZIcjs.blendRadius; exports.blendRgb = _chunkCWM3CUUXcjs.blendRgb; exports.blendTile = _chunkHGTDMKNEcjs.blendTile; exports.blenderDab = _chunkEBDCRTZIcjs.blenderDab; exports.blurFilter = _chunkUHMSMUHKcjs.blurFilter; exports.borderCoverage = _chunkUHMSMUHKcjs.borderCoverage; exports.boxBlurPixels = _chunk7NW46N7Icjs.boxBlurPixels; exports.boxFrameHit = boxFrameHit; exports.boxFrameOverlay = boxFrameOverlay; exports.boxMean = boxMean; exports.boxPointOf = _chunkUHMSMUHKcjs.boxPointOf; exports.boxQuad = _chunkQT26RHKKcjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = _chunkUHMSMUHKcjs.bradfordAdaptation; exports.brushstrokeDataUrl = _chunkEBDCRTZIcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkEBDCRTZIcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkEBDCRTZIcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkEBDCRTZIcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkEBDCRTZIcjs.brushstrokeToCanvas; exports.buildLayerMaskPlanes = _chunkUHMSMUHKcjs.buildLayerMaskPlanes; exports.buildToneLut = _chunkUHMSMUHKcjs.buildToneLut; exports.builtinPattern = _chunkHGTDMKNEcjs.builtinPattern; exports.builtinPatternIds = _chunkHGTDMKNEcjs.builtinPatternIds; exports.bytesToBase64 = _chunkCWM3CUUXcjs.bytesToBase64; exports.calculateCropDrag = _chunkUHMSMUHKcjs.calculateCropDrag; exports.canShareMemory = _chunkV7GWZIZKcjs.canShareMemory; exports.canvasCompositeOperation = _chunkCWM3CUUXcjs.canvasCompositeOperation; exports.canvasToImagePoint = _chunkUHMSMUHKcjs.canvasToImagePoint; exports.caretAt = _chunkEGZM52EOcjs.caretAt; exports.changedTiles = _chunkHGTDMKNEcjs.changedTiles; exports.checkEffectAnimation = checkEffectAnimation; exports.checkEffectTime = checkEffectTime; exports.checkImageEffectPlace = checkImageEffectPlace; exports.clampControlValue = clampControlValue; exports.clampCropToImage = _chunkUHMSMUHKcjs.clampCropToImage; exports.cleanMixer = _chunkEBDCRTZIcjs.cleanMixer; exports.cloneSamplePoint = _chunk7NW46N7Icjs.cloneSamplePoint; exports.cloneSourceLabel = cloneSourceLabel; exports.cloneTransformView = cloneTransformView; exports.collectTiles = _chunkCWM3CUUXcjs.collectTiles; exports.colorBalanceChannel = _chunkUHMSMUHKcjs.colorBalanceChannel; exports.colorModePlanes = colorModePlanes; exports.colorModePlanes16 = colorModePlanes16; exports.colorPanelView = colorPanelView; exports.colorRange = colorRange; exports.combineSelections = _chunkUHMSMUHKcjs.combineSelections; exports.compileAdjustmentLayer = _chunkUHMSMUHKcjs.compileAdjustmentLayer; exports.componentPath = _chunkUHMSMUHKcjs.componentPath; exports.compositeDeep = _chunkUHMSMUHKcjs.compositeDeep; exports.compositeSurfaceOver = _chunkHGTDMKNEcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = _chunkUHMSMUHKcjs.computeSelectionBounds; exports.contentAwareFill = _chunk7NW46N7Icjs.contentAwareFill; exports.contentBounds = _chunkCWM3CUUXcjs.contentBounds; exports.contentsBox = _chunkUHMSMUHKcjs.contentsBox; exports.contentsSurface = _chunkUHMSMUHKcjs.contentsSurface; exports.contractCoverage = _chunkUHMSMUHKcjs.contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.convertColorFields = convertColorFields; exports.convertHex = convertHex; exports.convertSurfaceColors = convertSurfaceColors; exports.convertSurfaceDepth = _chunkCWM3CUUXcjs.convertSurfaceDepth; exports.convertToSmartObject = _chunkUHMSMUHKcjs.convertToSmartObject; exports.copySmartObject = _chunkUHMSMUHKcjs.copySmartObject; exports.cornersFromMatrix = _chunkUHMSMUHKcjs.cornersFromMatrix; exports.coverageTileCoord = _chunkEBDCRTZIcjs.coverageTileCoord; exports.coverageToByte = _chunkUHMSMUHKcjs.coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = _chunkUHMSMUHKcjs.createAdjustmentLayer; exports.createBlenderScratch = _chunkEBDCRTZIcjs.createBlenderScratch; exports.createCanvasTextShaper = _chunkEGZM52EOcjs.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 = _chunkEGZM52EOcjs.createMetricTextShaper; exports.createOutlineTextShaper = _chunkEGZM52EOcjs.createOutlineTextShaper; exports.createPigment = _chunkCWM3CUUXcjs.createPigment; exports.createPigmentTools = _chunkV7GWZIZKcjs.createPigmentTools; exports.createSelectionMask = _chunkUHMSMUHKcjs.createSelectionMask; exports.createShapeLayer = _chunkUHMSMUHKcjs.createShapeLayer; exports.createTypeLayer = _chunkUHMSMUHKcjs.createTypeLayer; exports.createWetGpuEngine = _chunkV7GWZIZKcjs.createWetGpuEngine; exports.cssFont = _chunkEGZM52EOcjs.cssFont; exports.cssFontFamily = _chunkEGZM52EOcjs.cssFontFamily; exports.curveLut = _chunkHGTDMKNEcjs.curveLut; exports.curveLutFromLevels = _chunkUHMSMUHKcjs.curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkEBDCRTZIcjs.dabCoverage; exports.dabRect = _chunkEBDCRTZIcjs.dabRect; exports.decodeDeepSurface = _chunkUHMSMUHKcjs.decodeDeepSurface; exports.decodeLayerChannel = _chunkUHMSMUHKcjs.decodeLayerChannel; exports.decodeLayerMask = _chunkUHMSMUHKcjs.decodeLayerMask; exports.decodeMergedImage = _chunkUHMSMUHKcjs.decodeMergedImage; exports.decodePlanes = _chunkUHMSMUHKcjs.decodePlanes; exports.decodePng = _chunkCWM3CUUXcjs.decodePng; exports.decodePngDataUrl = _chunkUHMSMUHKcjs.decodePngDataUrl; exports.decodeSelectionRle = _chunkUHMSMUHKcjs.decodeSelectionRle; exports.deepBytes = _chunkCWM3CUUXcjs.deepBytes; exports.deepTile = _chunkCWM3CUUXcjs.deepTile; exports.defaultActiveLayerId = _chunkUHMSMUHKcjs.defaultActiveLayerId; exports.defaultAdjustmentParams = _chunkUHMSMUHKcjs.defaultAdjustmentParams; exports.defaultEffectGradient = _chunkHGTDMKNEcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkHGTDMKNEcjs.defaultLayerEffect; exports.defaultShapeName = _chunkUHMSMUHKcjs.defaultShapeName; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthMaskAlpha = _chunkUHMSMUHKcjs.depthMaskAlpha; exports.depthOf = _chunkCWM3CUUXcjs.depthOf; exports.depthRasterMask = _chunkUHMSMUHKcjs.depthRasterMask; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = _chunkUHMSMUHKcjs.describeTransform; exports.deserializeColorMode = deserializeColorMode; exports.deserializeColorProfile = deserializeColorProfile; exports.deserializeEffects = _chunkUHMSMUHKcjs.deserializeEffects; exports.deserializeLayer = _chunkUHMSMUHKcjs.deserializeLayer; exports.deserializeLayers = _chunkUHMSMUHKcjs.deserializeLayers; exports.deserializePatterns = _chunkUHMSMUHKcjs.deserializePatterns; exports.deserializeSelection = _chunkUHMSMUHKcjs.deserializeSelection; exports.developFilter = _chunkUHMSMUHKcjs.developFilter; exports.developFromAdjustments = _chunkUHMSMUHKcjs.developFromAdjustments; exports.developTarget = _chunkUHMSMUHKcjs.developTarget; exports.dexp = _chunkV7GWZIZKcjs.dexp; exports.dilateMask = _chunk7NW46N7Icjs.dilateMask; exports.displayTransform = displayTransform; exports.distanceTransform = _chunkUHMSMUHKcjs.distanceTransform; exports.dlog = _chunkV7GWZIZKcjs.dlog; exports.documentContents = _chunkUHMSMUHKcjs.documentContents; exports.documentProfile = documentProfile; exports.dodgeBurn = _chunk7NW46N7Icjs.dodgeBurn; exports.dodgeBurnCurve = _chunk7NW46N7Icjs.dodgeBurnCurve; exports.downloadPsd = downloadPsd; exports.dpow = _chunkV7GWZIZKcjs.dpow; exports.dragWarpMeshPoint = _chunkEGZM52EOcjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.dsincos = _chunkV7GWZIZKcjs.dsincos; exports.duplicateLayer = _chunkUHMSMUHKcjs.duplicateLayer; exports.edgeBits = _chunkV7GWZIZKcjs.edgeBits; exports.edgeWidth = edgeWidth; exports.effectColorHex = _chunkHGTDMKNEcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectLayerTiming = effectLayerTiming; exports.effectPixelsToSurface = effectPixelsToSurface; exports.effectReach = _chunkHGTDMKNEcjs.effectReach; exports.effectiveProof = effectiveProof; exports.effectsFingerprint = _chunkHGTDMKNEcjs.effectsFingerprint; exports.effectsMargin = _chunkHGTDMKNEcjs.effectsMargin; exports.effectsScale = _chunkHGTDMKNEcjs.effectsScale; exports.ellipsePoints = ellipsePoints; exports.ellipseSelection = ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunkCWM3CUUXcjs.emptySurface; exports.encodeDeepSurface = _chunkUHMSMUHKcjs.encodeDeepSurface; exports.encodePng = _chunkCWM3CUUXcjs.encodePng; exports.encodeRle = _chunkUHMSMUHKcjs.encodeRle; exports.encodeSelectionRle = _chunkUHMSMUHKcjs.encodeSelectionRle; exports.encodeSurface = _chunkUHMSMUHKcjs.encodeSurface; exports.evalWarpMesh = _chunkEGZM52EOcjs.evalWarpMesh; exports.evaluateAdjustmentLayers = _chunkUHMSMUHKcjs.evaluateAdjustmentLayers; exports.exchangeRates = _chunkEBDCRTZIcjs.exchangeRates; exports.expNeg = _chunkV7GWZIZKcjs.expNeg; exports.expandCoverage = _chunkUHMSMUHKcjs.expandCoverage; exports.exportPsd = _chunkUHMSMUHKcjs.exportPsd; exports.extractNormalizedLayerItems = extractNormalizedLayerItems; exports.featherCoverage = _chunkUHMSMUHKcjs.featherCoverage; exports.fillRect = _chunkCWM3CUUXcjs.fillRect; exports.filmPixel = _chunkV7GWZIZKcjs.filmPixel; exports.filmReflectance = _chunkV7GWZIZKcjs.filmReflectance; exports.filterMaskCoverage = _chunkUHMSMUHKcjs.filterMaskCoverage; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkHGTDMKNEcjs.findLayer; exports.findLayerControl = findLayerControl; exports.findWebGpu = _chunkV7GWZIZKcjs.findWebGpu; exports.finishTile = _chunkCWM3CUUXcjs.finishTile; exports.fitParagraphRuns = _chunkEGZM52EOcjs.fitParagraphRuns; exports.fitRuns = _chunkEGZM52EOcjs.fitRuns; exports.flattenLayers = _chunkHGTDMKNEcjs.flattenLayers; exports.flattenPath = _chunkUHMSMUHKcjs.flattenPath; exports.flipCorners = _chunkUHMSMUHKcjs.flipCorners; exports.flowField = _chunkV7GWZIZKcjs.flowField; exports.fontOf = _chunkEGZM52EOcjs.fontOf; exports.formatControlValue = formatControlValue; exports.fullSelection = _chunkUHMSMUHKcjs.fullSelection; exports.gaussianBlur = _chunkHGTDMKNEcjs.gaussianBlur; exports.geometryHomography = _chunkUHMSMUHKcjs.geometryHomography; exports.getAnnotationBounds = _chunkUHMSMUHKcjs.getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = _chunkUHMSMUHKcjs.getCropCursor; exports.getRotatedSize = _chunkUHMSMUHKcjs.getRotatedSize; exports.getViewportMetrics = _chunkUHMSMUHKcjs.getViewportMetrics; exports.getViewportProjection = _chunkUHMSMUHKcjs.getViewportProjection; exports.globalImageCache = globalImageCache; exports.gradientDabColor = _chunkEBDCRTZIcjs.gradientDabColor; exports.grainCatch = _chunkEBDCRTZIcjs.grainCatch; exports.grainHeights = _chunkEBDCRTZIcjs.grainHeights; exports.greyMorphology = _chunkUHMSMUHKcjs.greyMorphology; exports.groupLayers = _chunkUHMSMUHKcjs.groupLayers; exports.guidePlanes = guidePlanes; exports.guidedFilterColor = guidedFilterColor; exports.handlePaintShortcut = handlePaintShortcut; exports.hasActiveEffects = _chunkHGTDMKNEcjs.hasActiveEffects; exports.hasLayersBelow = hasLayersBelow; exports.hasResampledLegacyMask = _chunkUHMSMUHKcjs.hasResampledLegacyMask; exports.hasSurface = _chunkUHMSMUHKcjs.hasSurface; exports.hasWarp = _chunkUHMSMUHKcjs.hasWarp; exports.hash2 = _chunkEBDCRTZIcjs.hash2; exports.hashMaskContent = _chunkUHMSMUHKcjs.hashMaskContent; exports.hashNoise = _chunkHGTDMKNEcjs.hashNoise; exports.healPixels = _chunk7NW46N7Icjs.healPixels; exports.hexToPaintRgb = _chunkEBDCRTZIcjs.hexToPaintRgb; exports.hexToRgb = _chunkUHMSMUHKcjs.hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = _chunkUHMSMUHKcjs.hitTestAnnotation; exports.hitTestCrop = _chunkUHMSMUHKcjs.hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkQT26RHKKcjs.homographyFromAffine; exports.homographyFromPoints = _chunkQT26RHKKcjs.homographyFromPoints; exports.hslToRgb = _chunkUHMSMUHKcjs.hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = _chunkUHMSMUHKcjs.hueRangeTables; exports.hueRangeWeight = _chunkUHMSMUHKcjs.hueRangeWeight; exports.hueSaturation = _chunkUHMSMUHKcjs.hueSaturation; exports.identityCurve = _chunkUHMSMUHKcjs.identityCurve; exports.identityLevels = _chunkUHMSMUHKcjs.identityLevels; exports.identityTransform = _chunkUHMSMUHKcjs.identityTransform; exports.identityWarpMesh = _chunkEGZM52EOcjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageLayerAppliedEffects = imageLayerAppliedEffects; exports.imagePlaybackPanel = imagePlaybackPanel; exports.imageToCanvasPoint = _chunkUHMSMUHKcjs.imageToCanvasPoint; exports.importPsd = _chunkUHMSMUHKcjs.importPsd; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkHGTDMKNEcjs.insertLayer; exports.instancesOf = _chunkUHMSMUHKcjs.instancesOf; exports.invertHomography = _chunkQT26RHKKcjs.invertHomography; exports.invertMatrix3 = _chunkUHMSMUHKcjs.invertMatrix3; exports.invertSelection = _chunkUHMSMUHKcjs.invertSelection; exports.isActiveFilter = _chunkUHMSMUHKcjs.isActiveFilter; exports.isAdjustmentKind = _chunkUHMSMUHKcjs.isAdjustmentKind; exports.isBitDepth = _chunkCWM3CUUXcjs.isBitDepth; exports.isBlendMode = _chunkCWM3CUUXcjs.isBlendMode; exports.isBrushstrokeBrush = _chunkEBDCRTZIcjs.isBrushstrokeBrush; exports.isContentsDecoded = _chunkUHMSMUHKcjs.isContentsDecoded; exports.isDefaultDepthMask = _chunkUHMSMUHKcjs.isDefaultDepthMask; exports.isGradientPaint = _chunkEBDCRTZIcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk7NW46N7Icjs.isIdentityCloneTransform; exports.isIdentityTransform = _chunkUHMSMUHKcjs.isIdentityTransform; exports.isInterpolation = _chunkHGTDMKNEcjs.isInterpolation; exports.isLayerEffectKind = _chunkHGTDMKNEcjs.isLayerEffectKind; exports.isLayerLocked = _chunkHGTDMKNEcjs.isLayerLocked; exports.isLegacyShape = _chunkUHMSMUHKcjs.isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPaintableLayer = _chunkUHMSMUHKcjs.isPaintableLayer; exports.isPainterlyBlendMode = _chunkCWM3CUUXcjs.isPainterlyBlendMode; exports.isPng = _chunkCWM3CUUXcjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = _chunkUHMSMUHKcjs.isQuarterTurnSwapped; exports.isRenderedLayer = _chunkUHMSMUHKcjs.isRenderedLayer; exports.isRetouchPaintTool = isRetouchPaintTool; exports.isRetouchTool = isRetouchTool; exports.isSelectionEmpty = _chunkUHMSMUHKcjs.isSelectionEmpty; exports.isSelectionMode = _chunkUHMSMUHKcjs.isSelectionMode; exports.isSeparableBlendMode = _chunkCWM3CUUXcjs.isSeparableBlendMode; exports.isSmartSurfaceIncomplete = _chunkUHMSMUHKcjs.isSmartSurfaceIncomplete; exports.isSpatialFilter = _chunkUHMSMUHKcjs.isSpatialFilter; exports.isSrgb = isSrgb; exports.isTransformAnchor = _chunkUHMSMUHKcjs.isTransformAnchor; exports.isValidWarp = _chunkUHMSMUHKcjs.isValidWarp; exports.keepDeepSamples = _chunkCWM3CUUXcjs.keepDeepSamples; exports.kelvinToTemperature = _chunkUHMSMUHKcjs.kelvinToTemperature; exports.keysWeight = _chunkHGTDMKNEcjs.keysWeight; exports.latticeViscosity = _chunkV7GWZIZKcjs.latticeViscosity; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkHGTDMKNEcjs.layerEffectFields; exports.layerEffectLabel = _chunkHGTDMKNEcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = _chunkUHMSMUHKcjs.layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerHasThumbnail = layerHasThumbnail; exports.layerLabel = layerLabel; exports.layerMaskCoverage = _chunkUHMSMUHKcjs.layerMaskCoverage; exports.layerMaskFromSelection = _chunkUHMSMUHKcjs.layerMaskFromSelection; exports.layerMaskKey = _chunkUHMSMUHKcjs.layerMaskKey; exports.layerMenu = layerMenu; exports.layerName = _chunkUHMSMUHKcjs.layerName; exports.layerPanelRows = layerPanelRows; exports.layerPanels = layerPanels; exports.layerTree = _chunkUHMSMUHKcjs.layerTree; exports.layerTypeLabel = _chunkUHMSMUHKcjs.layerTypeLabel; exports.layerWarning = layerWarning; exports.layersFromLegacy = _chunkUHMSMUHKcjs.layersFromLegacy; exports.layoutText = _chunkEGZM52EOcjs.layoutText; exports.legacyAdjustmentLayer = _chunkUHMSMUHKcjs.legacyAdjustmentLayer; exports.legacyMaskOf = _chunkUHMSMUHKcjs.legacyMaskOf; exports.legacyView = _chunkUHMSMUHKcjs.legacyView; exports.lerpPigment = _chunkCWM3CUUXcjs.lerpPigment; exports.lerpPigmentInto = _chunkCWM3CUUXcjs.lerpPigmentInto; exports.levelsValue = _chunkUHMSMUHKcjs.levelsValue; exports.linearSrgbToXy = _chunkUHMSMUHKcjs.linearSrgbToXy; exports.linearToSrgb = _chunkUHMSMUHKcjs.linearToSrgb; exports.linearToSrgb8 = _chunkV7GWZIZKcjs.linearToSrgb8; exports.liveComponent = _chunkUHMSMUHKcjs.liveComponent; exports.liveShapeForDrag = liveShapeForDrag; exports.liveShapeSubpaths = _chunkUHMSMUHKcjs.liveShapeSubpaths; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkEBDCRTZIcjs.loadMixer; exports.loadOpenTypeFont = _chunk5UEFNX24cjs.loadOpenTypeFont; exports.loadWetKernel = _chunkV7GWZIZKcjs.loadWetKernel; exports.luma = _chunk7NW46N7Icjs.luma; exports.magicWand = magicWand; exports.mapCropHandle = _chunkUHMSMUHKcjs.mapCropHandle; exports.mapLayer = _chunkHGTDMKNEcjs.mapLayer; exports.mapSubpaths = _chunkUHMSMUHKcjs.mapSubpaths; exports.maskBounds = _chunk7NW46N7Icjs.maskBounds; exports.maskSummary = maskSummary; exports.matrixFromCorners = _chunkUHMSMUHKcjs.matrixFromCorners; exports.matrixFromParams = _chunkUHMSMUHKcjs.matrixFromParams; exports.measureCanvasViewport = measureCanvasViewport; exports.membraneFill = _chunk7NW46N7Icjs.membraneFill; exports.mergeLayerEffect = _chunkHGTDMKNEcjs.mergeLayerEffect; exports.mergeShapeComponents = _chunkUHMSMUHKcjs.mergeShapeComponents; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mix32 = _chunkEBDCRTZIcjs.mix32; exports.mixPigment8 = _chunkCWM3CUUXcjs.mixPigment8; exports.mixPigmentRgb = _chunkCWM3CUUXcjs.mixPigmentRgb; exports.mixPigments = _chunkCWM3CUUXcjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.mixerRates = _chunkEBDCRTZIcjs.mixerRates; exports.modifySelection = _chunkUHMSMUHKcjs.modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = _chunkUHMSMUHKcjs.moveLayer; exports.moveSmartFilter = _chunkUHMSMUHKcjs.moveSmartFilter; exports.mulMatrix3 = _chunkUHMSMUHKcjs.mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = _chunkUHMSMUHKcjs.neutralHueRange; exports.newContentsId = _chunkUHMSMUHKcjs.newContentsId; exports.newEffectId = _chunkHGTDMKNEcjs.newEffectId; exports.newLayerId = _chunkUHMSMUHKcjs.newLayerId; exports.newLayerOptions = newLayerOptions; exports.normalizeAdjustmentLayer = _chunkUHMSMUHKcjs.normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = _chunkUHMSMUHKcjs.normalizeAdjustmentLayers; exports.normalizeAngle = _chunkUHMSMUHKcjs.normalizeAngle; exports.normalizeBlendMode = _chunkCWM3CUUXcjs.normalizeBlendMode; exports.normalizeBlender = _chunkEBDCRTZIcjs.normalizeBlender; exports.normalizeBrush = _chunkEBDCRTZIcjs.normalizeBrush; exports.normalizeFilter = _chunkUHMSMUHKcjs.normalizeFilter; exports.normalizeFlow = _chunkV7GWZIZKcjs.normalizeFlow; exports.normalizeHexColor = _chunkEBDCRTZIcjs.normalizeHexColor; exports.normalizeLayerEffects = _chunkHGTDMKNEcjs.normalizeLayerEffects; exports.normalizeLayerMask = _chunkUHMSMUHKcjs.normalizeLayerMask; exports.normalizeLiveShape = _chunkUHMSMUHKcjs.normalizeLiveShape; exports.normalizeMixer = _chunkEBDCRTZIcjs.normalizeMixer; exports.normalizePlacement = _chunkUHMSMUHKcjs.normalizePlacement; exports.normalizeProcessVersion = _chunkUHMSMUHKcjs.normalizeProcessVersion; exports.normalizeRect = normalizeRect; exports.normalizeRefineEdgeParams = normalizeRefineEdgeParams; exports.normalizeRetouch = _chunk7NW46N7Icjs.normalizeRetouch; exports.normalizeShapePaint = _chunkUHMSMUHKcjs.normalizeShapePaint; exports.normalizeShapeStroke = _chunkUHMSMUHKcjs.normalizeShapeStroke; exports.normalizeSmartFilter = _chunkUHMSMUHKcjs.normalizeSmartFilter; exports.normalizeSmudge = _chunkEBDCRTZIcjs.normalizeSmudge; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.normalizeSubpaths = _chunkUHMSMUHKcjs.normalizeSubpaths; exports.normalizeText = _chunkUHMSMUHKcjs.normalizeText; exports.normalizeTilt = _chunkV7GWZIZKcjs.normalizeTilt; exports.normalizeWetParams = _chunkV7GWZIZKcjs.normalizeWetParams; exports.offsetLayer = _chunkUHMSMUHKcjs.offsetLayer; exports.offsetShape = _chunkUHMSMUHKcjs.offsetShape; exports.offsetSmartObject = _chunkUHMSMUHKcjs.offsetSmartObject; exports.openPsdFile = openPsdFile; exports.packRgba = _chunkCWM3CUUXcjs.packRgba; exports.packWetParams = _chunkV7GWZIZKcjs.packWetParams; exports.paintGradientMappingFor = _chunkEBDCRTZIcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkEBDCRTZIcjs.paintPathStroke; exports.paintSourceColor = _chunkEBDCRTZIcjs.paintSourceColor; exports.paintSourceCss = _chunkEBDCRTZIcjs.paintSourceCss; exports.paragraphRanges = _chunkEGZM52EOcjs.paragraphRanges; exports.parseAdjustmentBlock = _chunkUHMSMUHKcjs.parseAdjustmentBlock; exports.parseBlend = _chunkUHMSMUHKcjs.parseBlend; exports.parseColor = parseColor; exports.parseCssColor = _chunkA2IS7EHEcjs.parseCssColor; exports.parseDataUrl = _chunkCWM3CUUXcjs.parseDataUrl; exports.parseEffectColor = _chunkHGTDMKNEcjs.parseEffectColor; exports.parseLfx2 = _chunkUHMSMUHKcjs.parseLfx2; exports.parseLrfx = _chunkUHMSMUHKcjs.parseLrfx; exports.parseOpenTypeFont = _chunk5UEFNX24cjs.parseOpenTypeFont; exports.parsePaintSource = _chunkEBDCRTZIcjs.parsePaintSource; exports.parsePatternBlock = _chunkUHMSMUHKcjs.parsePatternBlock; exports.parseSelectionMode = _chunkUHMSMUHKcjs.parseSelectionMode; exports.parseVersionedDescriptor = _chunkUHMSMUHKcjs.parseVersionedDescriptor; exports.patchParagraphStyle = _chunkUHMSMUHKcjs.patchParagraphStyle; exports.patchTextStyle = _chunkUHMSMUHKcjs.patchTextStyle; exports.pathStrokeCoverage = _chunkEBDCRTZIcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkEBDCRTZIcjs.pathStrokeDabs; exports.perDabStrength = _chunk7NW46N7Icjs.perDabStrength; exports.photoFilterMatrix = _chunkUHMSMUHKcjs.photoFilterMatrix; exports.pigment8 = _chunkCWM3CUUXcjs.pigment8; exports.pigmentColor = _chunkV7GWZIZKcjs.pigmentColor; exports.pigmentOf = _chunkV7GWZIZKcjs.pigmentOf; exports.pixelLayerBounds = _chunkUHMSMUHKcjs.pixelLayerBounds; exports.pixelLayers = _chunkUHMSMUHKcjs.pixelLayers; exports.pixelPigment = _chunkV7GWZIZKcjs.pixelPigment; exports.placeContents = _chunkUHMSMUHKcjs.placeContents; exports.placeLayer = _chunkUHMSMUHKcjs.placeLayer; exports.placementAt = _chunkUHMSMUHKcjs.placementAt; exports.placementBounds = _chunkUHMSMUHKcjs.placementBounds; exports.placementGeometry = _chunkUHMSMUHKcjs.placementGeometry; exports.planImageToolPlayback = planImageToolPlayback; exports.pngDataUrl = _chunkCWM3CUUXcjs.pngDataUrl; exports.pointerPressure = _chunkV7GWZIZKcjs.pointerPressure; exports.pointerStrokeSample = _chunkV7GWZIZKcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkV7GWZIZKcjs.pointerStrokeSamples; exports.polygonCoverage = polygonCoverage; exports.polygonSelection = polygonSelection; exports.posterizeValue = _chunkUHMSMUHKcjs.posterizeValue; exports.presetWarp = _chunkUHMSMUHKcjs.presetWarp; exports.previewStep = previewStep; exports.profileBytes = profileBytes; exports.projectImagePoint = _chunkUHMSMUHKcjs.projectImagePoint; exports.projectImageRect = _chunkUHMSMUHKcjs.projectImageRect; exports.projectMaskCoverage = _chunkUHMSMUHKcjs.projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.proxyOf = _chunkCWM3CUUXcjs.proxyOf; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = _chunkUHMSMUHKcjs.psdPatternToEffectPattern; exports.psdToLayers = _chunkUHMSMUHKcjs.psdToLayers; exports.pullWarpMesh = _chunkEGZM52EOcjs.pullWarpMesh; exports.put255 = _chunkEBDCRTZIcjs.put255; exports.quadFrameOverlay = quadFrameOverlay; exports.quickMaskPixels = quickMaskPixels; exports.rand01 = _chunkEBDCRTZIcjs.rand01; exports.randSigned = _chunkEBDCRTZIcjs.randSigned; exports.rangeLightness = _chunkUHMSMUHKcjs.rangeLightness; exports.rasterContents = _chunkUHMSMUHKcjs.rasterContents; exports.rasterMaskFromLegacy = _chunkUHMSMUHKcjs.rasterMaskFromLegacy; exports.rasterizeCoverage = _chunkUHMSMUHKcjs.rasterizeCoverage; exports.rasterizeDab = _chunkEBDCRTZIcjs.rasterizeDab; exports.rasterizeSmartObject = _chunkUHMSMUHKcjs.rasterizeSmartObject; exports.readAdjustmentControls = readAdjustmentControls; exports.readDeepRegion = _chunkCWM3CUUXcjs.readDeepRegion; exports.readPaintSource = _chunkEBDCRTZIcjs.readPaintSource; exports.readPixel = _chunkCWM3CUUXcjs.readPixel; exports.readPsd = _chunkUHMSMUHKcjs.readPsd; exports.readRegion = _chunkCWM3CUUXcjs.readRegion; exports.readSourceRegion = _chunk7NW46N7Icjs.readSourceRegion; exports.rectSelection = rectSelection; exports.rectToQuad = _chunkQT26RHKKcjs.rectToQuad; exports.reduceSurface = _chunkHGTDMKNEcjs.reduceSurface; exports.referencePoint = _chunkUHMSMUHKcjs.referencePoint; exports.refineCoverage = refineCoverage; exports.refineEdgeHalo = refineEdgeHalo; exports.refineSelection = refineSelection; exports.reflectanceToRgb = _chunkCWM3CUUXcjs.reflectanceToRgb; exports.removeAlpha = _chunkUHMSMUHKcjs.removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = _chunkUHMSMUHKcjs.removeLayer; exports.removeLayerEffect = _chunkUHMSMUHKcjs.removeLayerEffect; exports.removeLayerFilter = _chunkUHMSMUHKcjs.removeLayerFilter; exports.removePaintGradientStop = _chunkEBDCRTZIcjs.removePaintGradientStop; exports.removeSmartFilter = _chunkUHMSMUHKcjs.removeSmartFilter; exports.renderBrushstroke = _chunkEBDCRTZIcjs.renderBrushstroke; exports.renderLayerEffects = _chunkHGTDMKNEcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.renderShape = _chunkUHMSMUHKcjs.renderShape; exports.renderShapeRect = _chunkUHMSMUHKcjs.renderShapeRect; exports.renderSmartObject = _chunkUHMSMUHKcjs.renderSmartObject; exports.renderText = _chunkUHMSMUHKcjs.renderText; exports.replaceContents = _chunkUHMSMUHKcjs.replaceContents; exports.replaceTextRange = _chunkUHMSMUHKcjs.replaceTextRange; exports.requireLayer = _chunkUHMSMUHKcjs.requireLayer; exports.requireOperation = _chunkUHMSMUHKcjs.requireOperation; exports.requireShapeLayer = _chunkUHMSMUHKcjs.requireShapeLayer; exports.requireSmartObject = _chunkUHMSMUHKcjs.requireSmartObject; exports.requireTypeLayer = _chunkUHMSMUHKcjs.requireTypeLayer; exports.requireUnlocked = _chunkUHMSMUHKcjs.requireUnlocked; exports.rerender = _chunkUHMSMUHKcjs.rerender; exports.rerenderShape = _chunkUHMSMUHKcjs.rerenderShape; exports.rerenderText = _chunkUHMSMUHKcjs.rerenderText; exports.resizePixels = resizePixels; exports.resizeSelection = _chunkUHMSMUHKcjs.resizeSelection; exports.resizeWarpMesh = _chunkEGZM52EOcjs.resizeWarpMesh; exports.resolveExternalAssets = _chunkUHMSMUHKcjs.resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.resolvePaintGradient = _chunkEBDCRTZIcjs.resolvePaintGradient; exports.resolveProfile = resolveProfile; exports.restyleRange = _chunkEGZM52EOcjs.restyleRange; exports.retouchFilter = _chunk7NW46N7Icjs.retouchFilter; exports.reversePaintGradient = _chunkEBDCRTZIcjs.reversePaintGradient; exports.rgbToGray = _chunkUHMSMUHKcjs.rgbToGray; exports.rgbToHsl = _chunkUHMSMUHKcjs.rgbToHsl; exports.rgbToReflectance = _chunkCWM3CUUXcjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.rgbaViewOfGrey = _chunk7NW46N7Icjs.rgbaViewOfGrey; exports.runLayerFilters = _chunkUHMSMUHKcjs.runLayerFilters; exports.runLayerFiltersFloat = _chunkUHMSMUHKcjs.runLayerFiltersFloat; exports.runLayerMenuAction = runLayerMenuAction; exports.sameCanvasViewport = sameCanvasViewport; exports.sampleLut = _chunkUHMSMUHKcjs.sampleLut; exports.sampleToneLut = _chunkUHMSMUHKcjs.sampleToneLut; exports.saturationOf = _chunk7NW46N7Icjs.saturationOf; exports.scaleLayerEffect = _chunkHGTDMKNEcjs.scaleLayerEffect; exports.scalePaintGradient = _chunkEBDCRTZIcjs.scalePaintGradient; exports.seamlessClone = _chunk7NW46N7Icjs.seamlessClone; exports.seedFromString = _chunkEBDCRTZIcjs.seedFromString; exports.segmentToSelection = segmentToSelection; exports.segmentsToSelection = segmentsToSelection; exports.selectionArea = _chunkUHMSMUHKcjs.selectionArea; exports.selectionFromCoverage = _chunkUHMSMUHKcjs.selectionFromCoverage; exports.selectionFromPixels = _chunkUHMSMUHKcjs.selectionFromPixels; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionToCoverage = _chunkUHMSMUHKcjs.selectionToCoverage; exports.selectionToPixels = _chunkUHMSMUHKcjs.selectionToPixels; exports.selectionValueAt = _chunkUHMSMUHKcjs.selectionValueAt; exports.serializeColorMode = serializeColorMode; exports.serializeColorProfile = serializeColorProfile; exports.serializeContents = _chunkUHMSMUHKcjs.serializeContents; exports.serializeEffects = _chunkUHMSMUHKcjs.serializeEffects; exports.serializeLayer = _chunkUHMSMUHKcjs.serializeLayer; exports.serializeLayers = _chunkUHMSMUHKcjs.serializeLayers; exports.serializeLayersExternal = _chunkUHMSMUHKcjs.serializeLayersExternal; exports.serializePatterns = _chunkUHMSMUHKcjs.serializePatterns; exports.serializeSelection = _chunkUHMSMUHKcjs.serializeSelection; exports.setCloneTransformValue = setCloneTransformValue; exports.setControlPath = setControlPath; exports.setLayerEffects = _chunkUHMSMUHKcjs.setLayerEffects; exports.setLayerEffectsEnabled = _chunkUHMSMUHKcjs.setLayerEffectsEnabled; exports.setLayerMask = _chunkUHMSMUHKcjs.setLayerMask; exports.setLayerProperties = _chunkUHMSMUHKcjs.setLayerProperties; exports.setLum = _chunkCWM3CUUXcjs.setLum; exports.setPigmentColor = _chunkCWM3CUUXcjs.setPigmentColor; exports.setRetouchChoice = setRetouchChoice; exports.setSmartFilterMask = _chunkUHMSMUHKcjs.setSmartFilterMask; exports.setSmartFiltersEnabled = _chunkUHMSMUHKcjs.setSmartFiltersEnabled; exports.setSmartPlacement = _chunkUHMSMUHKcjs.setSmartPlacement; exports.shadeTile = _chunkV7GWZIZKcjs.shadeTile; exports.shapeAsPixelLayer = _chunkUHMSMUHKcjs.shapeAsPixelLayer; exports.shapeFromAnnotation = _chunkUHMSMUHKcjs.shapeFromAnnotation; exports.shapeGeometryBounds = _chunkUHMSMUHKcjs.shapeGeometryBounds; exports.shapeLayers = _chunkUHMSMUHKcjs.shapeLayers; exports.shapeOutline = _chunkUHMSMUHKcjs.shapeOutline; exports.shapeRenderClip = _chunkUHMSMUHKcjs.shapeRenderClip; exports.shiftCoverage = _chunkUHMSMUHKcjs.shiftCoverage; exports.smartFilterRows = smartFilterRows; exports.smartObjectLayers = _chunkUHMSMUHKcjs.smartObjectLayers; exports.smoothCoverage = _chunkUHMSMUHKcjs.smoothCoverage; exports.smoothPoints = _chunkEBDCRTZIcjs.smoothPoints; exports.smudgeEffect = _chunk7NW46N7Icjs.smudgeEffect; exports.solidPaint = _chunkEBDCRTZIcjs.solidPaint; exports.solidSurface = _chunkCWM3CUUXcjs.solidSurface; exports.solveMembrane = _chunk7NW46N7Icjs.solveMembrane; exports.spliceRuns = _chunkEGZM52EOcjs.spliceRuns; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.sponge = _chunk7NW46N7Icjs.sponge; exports.spongeEffect = _chunk7NW46N7Icjs.spongeEffect; exports.spotHealPixels = _chunk7NW46N7Icjs.spotHealPixels; exports.spotHealWindow = _chunk7NW46N7Icjs.spotHealWindow; exports.srgb8ToLab = srgb8ToLab; exports.srgbByteToLinear = _chunkV7GWZIZKcjs.srgbByteToLinear; exports.srgbDecode = _chunkCWM3CUUXcjs.srgbDecode; exports.srgbEncode = _chunkCWM3CUUXcjs.srgbEncode; exports.srgbToLinear = _chunkUHMSMUHKcjs.srgbToLinear; exports.standardBlendMode = _chunkCWM3CUUXcjs.standardBlendMode; exports.startMarchingAnts = startMarchingAnts; exports.stepSlotTs = _chunkV7GWZIZKcjs.stepSlotTs; exports.strokeGrainCatch = _chunkEBDCRTZIcjs.strokeGrainCatch; exports.styleAt = _chunkEGZM52EOcjs.styleAt; exports.sumHistograms = sumHistograms; exports.surfaceBytes = _chunkCWM3CUUXcjs.surfaceBytes; exports.surfaceDepth = _chunkCWM3CUUXcjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunkCWM3CUUXcjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunkCWM3CUUXcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCWM3CUUXcjs.surfacesEqual; exports.tempTintToXy = _chunkUHMSMUHKcjs.tempTintToXy; exports.temperatureToKelvin = _chunkUHMSMUHKcjs.temperatureToKelvin; exports.textIndexAt = _chunkEGZM52EOcjs.textIndexAt; exports.textMatrix = _chunkUHMSMUHKcjs.textMatrix; exports.textOutlines = _chunkUHMSMUHKcjs.textOutlines; exports.textRange = _chunkUHMSMUHKcjs.textRange; exports.tileCoord = _chunkCWM3CUUXcjs.tileCoord; exports.tileKey = _chunkCWM3CUUXcjs.tileKey; exports.tileRect = _chunkCWM3CUUXcjs.tileRect; exports.tileSamples = _chunkCWM3CUUXcjs.tileSamples; exports.tileSamples16 = _chunkCWM3CUUXcjs.tileSamples16; exports.tileSamples32 = _chunkCWM3CUUXcjs.tileSamples32; exports.tilesInRect = _chunkCWM3CUUXcjs.tilesInRect; exports.tipFalloff = _chunkEBDCRTZIcjs.tipFalloff; exports.tipReach = _chunkEBDCRTZIcjs.tipReach; exports.tipShape = _chunkEBDCRTZIcjs.tipShape; exports.to16From32 = _chunkCWM3CUUXcjs.to16From32; exports.to16From8 = _chunkCWM3CUUXcjs.to16From8; exports.to32From16 = _chunkCWM3CUUXcjs.to32From16; exports.to32From8 = _chunkCWM3CUUXcjs.to32From8; exports.to8From16 = _chunkCWM3CUUXcjs.to8From16; exports.to8From32 = _chunkCWM3CUUXcjs.to8From32; exports.toHex = toHex; exports.toTextSpace = _chunkUHMSMUHKcjs.toTextSpace; exports.toneCurve = _chunkUHMSMUHKcjs.toneCurve; exports.toneLuts = _chunkUHMSMUHKcjs.toneLuts; exports.toneOf = _chunk7NW46N7Icjs.toneOf; exports.toneRange = toneRange; exports.transformHomography = _chunkUHMSMUHKcjs.transformHomography; exports.transformMap = _chunkUHMSMUHKcjs.transformMap; exports.transformShapeComponents = _chunkUHMSMUHKcjs.transformShapeComponents; exports.transformSurface = _chunkHGTDMKNEcjs.transformSurface; exports.transformTypeLayer = _chunkUHMSMUHKcjs.transformTypeLayer; exports.transformedBounds = _chunkHGTDMKNEcjs.transformedBounds; exports.transformedBox = _chunkUHMSMUHKcjs.transformedBox; exports.transformedPoint = _chunkUHMSMUHKcjs.transformedPoint; exports.translateLayer = _chunkUHMSMUHKcjs.translateLayer; exports.translateSurface = _chunkCWM3CUUXcjs.translateSurface; exports.typeAsPixelLayer = _chunkUHMSMUHKcjs.typeAsPixelLayer; exports.typeFrame = _chunkUHMSMUHKcjs.typeFrame; exports.typeFromAnnotation = _chunkUHMSMUHKcjs.typeFromAnnotation; exports.typeLayerAt = typeLayerAt; exports.typeLayerName = _chunkUHMSMUHKcjs.typeLayerName; exports.ungroupLayer = _chunkUHMSMUHKcjs.ungroupLayer; exports.uniformTile = _chunkCWM3CUUXcjs.uniformTile; exports.unionRect = _chunkUHMSMUHKcjs.unionRect; exports.unprojectCanvasPoint = _chunkUHMSMUHKcjs.unprojectCanvasPoint; exports.updateLayerEffect = _chunkUHMSMUHKcjs.updateLayerEffect; exports.updateLayerFilter = _chunkUHMSMUHKcjs.updateLayerFilter; exports.updateLayerMaskProps = _chunkUHMSMUHKcjs.updateLayerMaskProps; exports.updatePaintGradientStop = _chunkEBDCRTZIcjs.updatePaintGradientStop; exports.updateShapeLayer = _chunkUHMSMUHKcjs.updateShapeLayer; exports.updateSmartFilter = _chunkUHMSMUHKcjs.updateSmartFilter; exports.updateTypeLayer = _chunkUHMSMUHKcjs.updateTypeLayer; exports.userErrorMessage = _chunkUHMSMUHKcjs.userErrorMessage; exports.uvToXy = _chunkUHMSMUHKcjs.uvToXy; exports.validateEffectGradient = _chunkHGTDMKNEcjs.validateEffectGradient; exports.validateLayerEffect = _chunkHGTDMKNEcjs.validateLayerEffect; exports.validateLayerEffects = _chunkHGTDMKNEcjs.validateLayerEffects; exports.versionedDescriptorBytes = _chunkUHMSMUHKcjs.versionedDescriptorBytes; exports.vibranceLinear = _chunkUHMSMUHKcjs.vibranceLinear; exports.vibrancePixel = _chunkUHMSMUHKcjs.vibrancePixel; exports.walkDabs = _chunkEBDCRTZIcjs.walkDabs; exports.warpMeshEditPoints = _chunkEGZM52EOcjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkEGZM52EOcjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkEGZM52EOcjs.warpMeshParamAt; exports.warpPresetMesh = _chunkEGZM52EOcjs.warpPresetMesh; exports.warpSurface = _chunkHGTDMKNEcjs.warpSurface; exports.watchCanvasViewport = watchCanvasViewport; exports.wbMatrix = _chunkUHMSMUHKcjs.wbMatrix; exports.wetGpuSupport = _chunkV7GWZIZKcjs.wetGpuSupport; exports.wetSimdSupported = _chunkV7GWZIZKcjs.wetSimdSupported; exports.wetSupport = _chunkV7GWZIZKcjs.wetSupport; exports.whiteBalanceFromSample = _chunkUHMSMUHKcjs.whiteBalanceFromSample; exports.whiteBalanceMatrix = _chunkUHMSMUHKcjs.whiteBalanceMatrix; exports.withBackgroundOpacity = withBackgroundOpacity; exports.withFilterMaskSurface = _chunkUHMSMUHKcjs.withFilterMaskSurface; exports.withImagePlayback = withImagePlayback; exports.withNewIds = _chunkUHMSMUHKcjs.withNewIds; exports.writeAdjustmentBlock = _chunkUHMSMUHKcjs.writeAdjustmentBlock; exports.writeDeepRegion = _chunkCWM3CUUXcjs.writeDeepRegion; exports.writeLfx2 = _chunkUHMSMUHKcjs.writeLfx2; exports.writePatternBlock = _chunkUHMSMUHKcjs.writePatternBlock; exports.writePsd = _chunkUHMSMUHKcjs.writePsd; exports.writeRegion = _chunkCWM3CUUXcjs.writeRegion; exports.xyToTempTint = _chunkUHMSMUHKcjs.xyToTempTint; exports.xyToUv = _chunkUHMSMUHKcjs.xyToUv;