@pixerate/editor 0.98.0 → 0.99.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,4 +1,4 @@
1
- "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10;
1
+ "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; } var _class; var _class2; var _class3; var _class4; var _class5; var _class6; var _class7; var _class8; var _class9; var _class10; var _class11;
2
2
 
3
3
  var _chunkD6FH2YAXcjs = require('../chunk-D6FH2YAX.cjs');
4
4
 
@@ -3193,6 +3193,44 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
3193
3193
  }
3194
3194
  ctx.restore();
3195
3195
  }
3196
+ if (options.freeTransform) {
3197
+ const t = options.freeTransform;
3198
+ ctx.save();
3199
+ try {
3200
+ const scr = (p) => projectImagePoint(p, projection);
3201
+ const outline = t.outline.map(scr);
3202
+ ctx.beginPath();
3203
+ outline.forEach((p, i) => i ? ctx.lineTo(p.x, p.y) : ctx.moveTo(p.x, p.y));
3204
+ ctx.closePath();
3205
+ ctx.lineWidth = 3;
3206
+ ctx.strokeStyle = "rgba(0,0,0,0.5)";
3207
+ ctx.stroke();
3208
+ ctx.lineWidth = 1;
3209
+ ctx.strokeStyle = "#ffffff";
3210
+ ctx.stroke();
3211
+ for (const h of t.handles.map(scr)) {
3212
+ ctx.fillStyle = "#ffffff";
3213
+ ctx.strokeStyle = "#1e293b";
3214
+ ctx.fillRect(h.x - 4, h.y - 4, 8, 8);
3215
+ ctx.strokeRect(h.x - 4, h.y - 4, 8, 8);
3216
+ }
3217
+ const r = scr(t.reference);
3218
+ ctx.beginPath();
3219
+ ctx.arc(r.x, r.y, 5, 0, Math.PI * 2);
3220
+ ctx.moveTo(r.x - 8, r.y);
3221
+ ctx.lineTo(r.x + 8, r.y);
3222
+ ctx.moveTo(r.x, r.y - 8);
3223
+ ctx.lineTo(r.x, r.y + 8);
3224
+ ctx.lineWidth = 3;
3225
+ ctx.strokeStyle = "rgba(0,0,0,0.5)";
3226
+ ctx.stroke();
3227
+ ctx.lineWidth = 1;
3228
+ ctx.strokeStyle = "#ffffff";
3229
+ ctx.stroke();
3230
+ } catch (e6) {
3231
+ }
3232
+ ctx.restore();
3233
+ }
3196
3234
  if (isActivelyCropping) {
3197
3235
  const activeCrop = options.draftCrop !== void 0 && options.draftCrop !== null ? options.draftCrop : _nullishCoalesce(crop, () => ( { x: 0, y: 0, width: naturalWidth, height: naturalHeight }));
3198
3236
  this.drawCropOverlay(ctx, getViewportMetrics(geoState, vpWidth, vpHeight, true, activeCrop));
@@ -3257,7 +3295,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
3257
3295
  applyDepthMask(imageData, maskData, depthMask);
3258
3296
  }
3259
3297
  }
3260
- } catch (e6) {
3298
+ } catch (e7) {
3261
3299
  }
3262
3300
  }
3263
3301
  _optionalChain([onPixels, 'optionalCall', _46 => _46(imageData)]);
@@ -3319,14 +3357,14 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
3319
3357
  this.depthMaps.set(key, { width, height, data: data.data });
3320
3358
  this.assetVersion++;
3321
3359
  }
3322
- } catch (e7) {
3360
+ } catch (e8) {
3323
3361
  }
3324
3362
  }
3325
3363
  if (l.type === "annotation" && l.annotation.type === "image" && !this.imageCache.peek(l.annotation.src)) {
3326
3364
  try {
3327
3365
  await this.imageCache.get(l.annotation.src);
3328
3366
  this.assetVersion++;
3329
- } catch (e8) {
3367
+ } catch (e9) {
3330
3368
  }
3331
3369
  }
3332
3370
  }
@@ -3354,7 +3392,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
3354
3392
  this.drawAnnotationShape(ctx, annotation, img);
3355
3393
  ctx.setTransform(1, 0, 0, 1, 0, 0);
3356
3394
  return new Uint8ClampedArray(ctx.getImageData(0, 0, rect.width, rect.height).data);
3357
- } catch (e9) {
3395
+ } catch (e10) {
3358
3396
  return null;
3359
3397
  }
3360
3398
  }
@@ -3553,7 +3591,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
3553
3591
  _chunkCRMAXIUVcjs.blendImageData.call(void 0, backdrop, source, _chunkCRMAXIUVcjs.normalizeBlendMode.call(void 0, ann.blend));
3554
3592
  lctx.setTransform(1, 0, 0, 1, 0, 0);
3555
3593
  lctx.putImageData(backdrop, 0, 0);
3556
- } catch (e10) {
3594
+ } catch (e11) {
3557
3595
  return false;
3558
3596
  }
3559
3597
  ctx.save();
@@ -3569,7 +3607,7 @@ var ImageEditorRenderer = (_class2 = class {constructor() { _class2.prototype.__
3569
3607
  if (ann.type === "image") {
3570
3608
  try {
3571
3609
  img = await this.imageCache.get(ann.src);
3572
- } catch (e11) {
3610
+ } catch (e12) {
3573
3611
  }
3574
3612
  }
3575
3613
  this.drawAnnotationShape(ctx, ann, img);
@@ -4001,7 +4039,7 @@ function removeAnnotationLayers(layers) {
4001
4039
  function polygonCoverage(points, width, height, antiAlias = true) {
4002
4040
  const m = new Float32Array(width * height);
4003
4041
  if (points.length < 3 || width <= 0 || height <= 0) return m;
4004
- const sub = antiAlias ? 4 : 1;
4042
+ const sub2 = antiAlias ? 4 : 1;
4005
4043
  const edges = [];
4006
4044
  for (let i = 0; i < points.length; i++) {
4007
4045
  const a = points[i];
@@ -4016,8 +4054,8 @@ function polygonCoverage(points, width, height, antiAlias = true) {
4016
4054
  const xs = [];
4017
4055
  for (let py = 0; py < height; py++) {
4018
4056
  const row = py * width;
4019
- for (let s = 0; s < sub; s++) {
4020
- const y = py + (s + 0.5) / sub;
4057
+ for (let s = 0; s < sub2; s++) {
4058
+ const y = py + (s + 0.5) / sub2;
4021
4059
  while (next < edges.length && edges[next].top <= y) active.push(edges[next++]);
4022
4060
  if (active.length) active = active.filter((e) => e.bottom > y);
4023
4061
  if (!active.length) continue;
@@ -4039,7 +4077,7 @@ function polygonCoverage(points, width, height, antiAlias = true) {
4039
4077
  const c = cx + 0.5;
4040
4078
  cov = c >= x0 && c < x1 ? 1 : 0;
4041
4079
  }
4042
- if (cov > 0) m[row + cx] += cov / sub;
4080
+ if (cov > 0) m[row + cx] += cov / sub2;
4043
4081
  }
4044
4082
  }
4045
4083
  }
@@ -4606,7 +4644,7 @@ function deserializeEffects(raw) {
4606
4644
  if (p && typeof p.key === "string" && typeof p.data === "string") {
4607
4645
  try {
4608
4646
  psd = { key: p.key, data: _chunkWT6ZAWJPcjs.base64ToBytes.call(void 0, p.data) };
4609
- } catch (e12) {
4647
+ } catch (e13) {
4610
4648
  psd = void 0;
4611
4649
  }
4612
4650
  }
@@ -5413,7 +5451,7 @@ var PsdWriter = (_class4 = class {constructor() { _class4.prototype.__init24.cal
5413
5451
  function decodeLegacyName(b) {
5414
5452
  try {
5415
5453
  return new TextDecoder("utf-8", { fatal: true }).decode(b);
5416
- } catch (e13) {
5454
+ } catch (e14) {
5417
5455
  return String.fromCharCode(...b);
5418
5456
  }
5419
5457
  }
@@ -5915,7 +5953,7 @@ function parseAdjustmentBlock(key, data) {
5915
5953
  default:
5916
5954
  return null;
5917
5955
  }
5918
- } catch (e14) {
5956
+ } catch (e15) {
5919
5957
  return null;
5920
5958
  }
5921
5959
  }
@@ -6333,7 +6371,7 @@ function parseMask(d) {
6333
6371
  }
6334
6372
  if (!realFirst) m.real = readReal();
6335
6373
  return m;
6336
- } catch (e15) {
6374
+ } catch (e16) {
6337
6375
  return void 0;
6338
6376
  }
6339
6377
  }
@@ -6414,7 +6452,7 @@ function layerName(rec) {
6414
6452
  if (luni) {
6415
6453
  try {
6416
6454
  return new PsdReader(luni).unicode();
6417
- } catch (e16) {
6455
+ } catch (e17) {
6418
6456
  }
6419
6457
  }
6420
6458
  return rec.legacyName;
@@ -7165,7 +7203,7 @@ function parseLfx2(data) {
7165
7203
  let d;
7166
7204
  try {
7167
7205
  d = parseVersionedDescriptor(data.subarray(4));
7168
- } catch (e17) {
7206
+ } catch (e18) {
7169
7207
  return null;
7170
7208
  }
7171
7209
  const notes = /* @__PURE__ */ new Set();
@@ -7386,7 +7424,7 @@ function parseLrfx(data) {
7386
7424
  } else if (key === "bevl") notes.add("legacy bevels are not read");
7387
7425
  }
7388
7426
  return { effects: { enabled: true, items }, notes: [...notes] };
7389
- } catch (e18) {
7427
+ } catch (e19) {
7390
7428
  return null;
7391
7429
  }
7392
7430
  }
@@ -8919,7 +8957,7 @@ var ImageEditorController = (_class8 = class {
8919
8957
  if (_optionalChain([options, 'access', _173 => _173.initialState, 'optionalAccess', _174 => _174.selection])) {
8920
8958
  try {
8921
8959
  this.state.selection = normalizeSelection(deserializeSelection(options.initialState.selection));
8922
- } catch (e19) {
8960
+ } catch (e20) {
8923
8961
  }
8924
8962
  }
8925
8963
  this.initialSnapshot = this.captureHistoryEntry();
@@ -8960,7 +8998,7 @@ var ImageEditorController = (_class8 = class {
8960
8998
  height: img.naturalHeight || img.height || 600
8961
8999
  }
8962
9000
  };
8963
- } catch (e20) {
9001
+ } catch (e21) {
8964
9002
  return { sourceUrl: src, element: null, dimensions: { ...this.state.imageDimensions } };
8965
9003
  }
8966
9004
  }
@@ -9361,7 +9399,7 @@ var ImageEditorController = (_class8 = class {
9361
9399
  const data = ctx.getImageData(0, 0, width, height);
9362
9400
  if (!_optionalChain([data, 'optionalAccess', _183 => _183.data]) || data.data.length < width * height * 4) return null;
9363
9401
  return { width, height, data: data.data };
9364
- } catch (e21) {
9402
+ } catch (e22) {
9365
9403
  return null;
9366
9404
  }
9367
9405
  }
@@ -9439,7 +9477,7 @@ var ImageEditorController = (_class8 = class {
9439
9477
  try {
9440
9478
  const bytes = _chunkWT6ZAWJPcjs.base64ToBytes.call(void 0, trimmed);
9441
9479
  if (_chunkWT6ZAWJPcjs.isPng.call(void 0, bytes)) png = bytes;
9442
- } catch (e22) {
9480
+ } catch (e23) {
9443
9481
  png = null;
9444
9482
  }
9445
9483
  }
@@ -9447,14 +9485,14 @@ var ImageEditorController = (_class8 = class {
9447
9485
  try {
9448
9486
  const d = _chunkWT6ZAWJPcjs.decodePng.call(void 0, png);
9449
9487
  return { width: d.width, height: d.height, data: d.data };
9450
- } catch (e23) {
9488
+ } catch (e24) {
9451
9489
  }
9452
9490
  }
9453
9491
  const src = png ? `data:image/png;base64,${_chunkWT6ZAWJPcjs.bytesToBase64.call(void 0, png)}` : trimmed;
9454
9492
  let img;
9455
9493
  try {
9456
9494
  img = await this.renderer.imageCache.get(src);
9457
- } catch (e24) {
9495
+ } catch (e25) {
9458
9496
  throw new 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.");
9459
9497
  }
9460
9498
  const w = img.naturalWidth || img.width;
@@ -10602,7 +10640,7 @@ var ImageEditorController = (_class8 = class {
10602
10640
  this.samplePixels = base;
10603
10641
  this.samplePixelsOverride = false;
10604
10642
  }
10605
- } catch (e25) {
10643
+ } catch (e26) {
10606
10644
  base = null;
10607
10645
  }
10608
10646
  }
@@ -10912,7 +10950,7 @@ var ImageEditorController = (_class8 = class {
10912
10950
  dirty: dirty === "all" ? void 0 : dirty,
10913
10951
  checkpointLayerId: this.state.activeLayerId
10914
10952
  });
10915
- } catch (e26) {
10953
+ } catch (e27) {
10916
10954
  }
10917
10955
  }
10918
10956
  async renderExport(options) {
@@ -11180,7 +11218,7 @@ var ImageEditorController = (_class8 = class {
11180
11218
  const canvas = { x: 0, y: 0, width, height };
11181
11219
  const warnings = [];
11182
11220
  const note = /* @__PURE__ */ new Map();
11183
- const add = (msg, name) => note.set(msg, [..._nullishCoalesce(note.get(msg), () => ( [])), name]);
11221
+ const add2 = (msg, name) => note.set(msg, [..._nullishCoalesce(note.get(msg), () => ( [])), name]);
11184
11222
  const canRasterize = this.renderer.canRasterize();
11185
11223
  await this.renderer.prepareLayerAssets(this.state.layers, width, height);
11186
11224
  const sources = this.renderer.compositorSources(width, height);
@@ -11188,7 +11226,7 @@ var ImageEditorController = (_class8 = class {
11188
11226
  const bakeMask = (layer) => {
11189
11227
  const mask = layer.mask;
11190
11228
  if (!_optionalChain([mask, 'optionalAccess', _250 => _250.source])) return mask;
11191
- add("Parametric (depth) masks were baked into pixel masks", layer.name);
11229
+ add2("Parametric (depth) masks were baked into pixel masks", layer.name);
11192
11230
  const plain3 = { ...layer, mask: { ...mask, density: 1, feather: 0, enabled: true } };
11193
11231
  const ox = layer.type === "pixel" ? layer.offset.x : 0;
11194
11232
  const oy = layer.type === "pixel" ? layer.offset.y : 0;
@@ -11204,7 +11242,7 @@ var ImageEditorController = (_class8 = class {
11204
11242
  };
11205
11243
  const prepare = async (layer) => {
11206
11244
  const p = await prepareLayer(layer);
11207
- if (_optionalChain([p, 'optionalAccess', _251 => _251.blend]) === "pigment") add("The Pigment blend mode has no PSD equivalent and was written as Normal", layer.name);
11245
+ if (_optionalChain([p, 'optionalAccess', _251 => _251.blend]) === "pigment") add2("The Pigment blend mode has no PSD equivalent and was written as Normal", layer.name);
11208
11246
  return p;
11209
11247
  };
11210
11248
  const prepareLayer = async (layer) => {
@@ -11219,10 +11257,10 @@ var ImageEditorController = (_class8 = class {
11219
11257
  if (layer.type === "adjustment") return { ...layer, mask: bakeMask(layer) };
11220
11258
  if (layer.type === "annotation") {
11221
11259
  if (!canRasterize) {
11222
- add("Annotation layers need a canvas (a browser) to rasterize and were left out", layer.name);
11260
+ add2("Annotation layers need a canvas (a browser) to rasterize and were left out", layer.name);
11223
11261
  return null;
11224
11262
  }
11225
- add("Annotation layers were written as pixel layers", layer.name);
11263
+ add2("Annotation layers were written as pixel layers", layer.name);
11226
11264
  const blend = layer.blend === "normal" && layer.annotation.blend ? layer.annotation.blend : layer.blend;
11227
11265
  const content = { ...layer, visible: true, opacity: 1, blend: "normal", annotation: { ...layer.annotation, blend: void 0 } };
11228
11266
  delete content.mask;
@@ -11253,7 +11291,7 @@ var ImageEditorController = (_class8 = class {
11253
11291
  }
11254
11292
  const active = _nullishCoalesce(_optionalChain([layer, 'access', _252 => _252.filters, 'optionalAccess', _253 => _253.filter, 'call', _254 => _254(isActiveFilter)]), () => ( []));
11255
11293
  if (active.length) {
11256
- add("Layer filters (develop, blur) were baked into the pixels", layer.name);
11294
+ add2("Layer filters (develop, blur) were baked into the pixels", layer.name);
11257
11295
  const content = { ...out, visible: true, opacity: 1, blend: "normal" };
11258
11296
  delete content.mask;
11259
11297
  delete content.clipped;
@@ -11262,7 +11300,7 @@ var ImageEditorController = (_class8 = class {
11262
11300
  const data = compositor.composite([content], canvas, sources);
11263
11301
  out = { ...out, surface: _chunkCRMAXIUVcjs.surfaceFromPixels.call(void 0, { width, height, data }, 4, -layer.offset.x, -layer.offset.y) };
11264
11302
  }
11265
- if (_optionalChain([layer, 'access', _255 => _255.filters, 'optionalAccess', _256 => _256.some, 'call', _257 => _257((f) => !f.enabled)])) add("Disabled layer filters were left out", layer.name);
11303
+ if (_optionalChain([layer, 'access', _255 => _255.filters, 'optionalAccess', _256 => _256.some, 'call', _257 => _257((f) => !f.enabled)])) add2("Disabled layer filters were left out", layer.name);
11266
11304
  delete out.filters;
11267
11305
  const mask = bakeMask(layer);
11268
11306
  if (mask) out.mask = mask;
@@ -11359,7 +11397,7 @@ var ImageEditorController = (_class8 = class {
11359
11397
  if (data.selection) {
11360
11398
  try {
11361
11399
  selection = normalizeSelection(deserializeSelection(data.selection));
11362
- } catch (e27) {
11400
+ } catch (e28) {
11363
11401
  selection = null;
11364
11402
  }
11365
11403
  }
@@ -11746,7 +11784,7 @@ function loadImageEditorDocument(input) {
11746
11784
  if (typeof input === "string") {
11747
11785
  try {
11748
11786
  parsed = JSON.parse(input);
11749
- } catch (e28) {
11787
+ } catch (e29) {
11750
11788
  parsed = input;
11751
11789
  }
11752
11790
  }
@@ -13416,7 +13454,7 @@ function createImageEffectTools(controller) {
13416
13454
  annotations: { title: "List layer effects", ...READ3 },
13417
13455
  handler: ({ layerId }) => result(layerArg(layerId), { globalLight: controller.getGlobalLight(), patterns: patternList(controller), kinds: [..._chunkWT6ZAWJPcjs.LAYER_EFFECT_KINDS] })
13418
13456
  };
13419
- const add = {
13457
+ const add2 = {
13420
13458
  name: "add_layer_effect",
13421
13459
  title: "Add a layer effect",
13422
13460
  description: "Adds a live effect to a pixel, annotation or group layer with Photoshop's defaults, changed by settings: drop-shadow, inner-shadow, outer-glow, inner-glow, bevel-emboss, satin, color-overlay, gradient-overlay, pattern-overlay or stroke. Several of one kind are allowed (the first listed is on top). One undo step. Returns the new effect's id and the layer's effects.",
@@ -13514,7 +13552,7 @@ function createImageEffectTools(controller) {
13514
13552
  return { globalLight: controller.setGlobalLight(next) };
13515
13553
  }
13516
13554
  };
13517
- return [list2, add, update, remove, setEnabled, light];
13555
+ return [list2, add2, update, remove, setEnabled, light];
13518
13556
  }
13519
13557
 
13520
13558
  // src/image-editor/layers/paint-ui.ts
@@ -14779,13 +14817,14 @@ function layerMenu(controller) {
14779
14817
  { action: "apply-mask", label: "Apply Layer Mask", enabled: isPixel && Boolean(_optionalChain([active, 'optionalAccess', _307 => _307.mask])) },
14780
14818
  { action: "delete-mask", label: "Delete Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _308 => _308.mask])) },
14781
14819
  { action: "toggle-mask", label: _optionalChain([active, 'optionalAccess', _309 => _309.mask, 'optionalAccess', _310 => _310.enabled]) === false ? "Enable Layer Mask" : "Disable Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _311 => _311.mask])) },
14782
- { action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess', _312 => _312.type]) === "annotation" || isPixel && Boolean(_optionalChain([active, 'optionalAccess', _313 => _313.type]) === "pixel" && _optionalChain([active, 'access', _314 => _314.filters, 'optionalAccess', _315 => _315.length])) },
14783
- { action: "toggle-clip", label: _optionalChain([active, 'optionalAccess', _316 => _316.clipped]) ? "Release Clipping Mask" : "Create Clipping Mask", enabled: Boolean(loc && loc.index > 0) }
14820
+ { action: "toggle-mask-link", label: _optionalChain([active, 'optionalAccess', _312 => _312.mask, 'optionalAccess', _313 => _313.linked]) === false ? "Link Layer Mask" : "Unlink Layer Mask", enabled: Boolean(_optionalChain([active, 'optionalAccess', _314 => _314.mask]) && !active.mask.source) },
14821
+ { action: "rasterize", label: "Rasterize Layer", enabled: _optionalChain([active, 'optionalAccess', _315 => _315.type]) === "annotation" || isPixel && Boolean(_optionalChain([active, 'optionalAccess', _316 => _316.type]) === "pixel" && _optionalChain([active, 'access', _317 => _317.filters, 'optionalAccess', _318 => _318.length])) },
14822
+ { action: "toggle-clip", label: _optionalChain([active, 'optionalAccess', _319 => _319.clipped]) ? "Release Clipping Mask" : "Create Clipping Mask", enabled: Boolean(loc && loc.index > 0) }
14784
14823
  ];
14785
14824
  }
14786
14825
  async function runLayerMenuAction(controller, action) {
14787
14826
  const active = controller.getActiveLayer();
14788
- const id = _optionalChain([active, 'optionalAccess', _317 => _317.id]);
14827
+ const id = _optionalChain([active, 'optionalAccess', _320 => _320.id]);
14789
14828
  try {
14790
14829
  switch (action) {
14791
14830
  case "new-layer":
@@ -14832,13 +14871,16 @@ async function runLayerMenuAction(controller, action) {
14832
14871
  if (id) controller.removeLayerMask(id);
14833
14872
  break;
14834
14873
  case "toggle-mask":
14835
- if (id && _optionalChain([active, 'optionalAccess', _318 => _318.mask])) controller.setLayerMaskProps(id, { enabled: active.mask.enabled === false });
14874
+ if (id && _optionalChain([active, 'optionalAccess', _321 => _321.mask])) controller.setLayerMaskProps(id, { enabled: active.mask.enabled === false });
14875
+ break;
14876
+ case "toggle-mask-link":
14877
+ if (id && _optionalChain([active, 'optionalAccess', _322 => _322.mask])) controller.setLayerMaskProps(id, { linked: active.mask.linked === false });
14836
14878
  break;
14837
14879
  case "rasterize":
14838
14880
  if (id) await controller.rasterizeLayer(id);
14839
14881
  break;
14840
14882
  case "toggle-clip":
14841
- if (id) controller.setLayerProperties(id, { clipped: !_optionalChain([active, 'optionalAccess', _319 => _319.clipped]) });
14883
+ if (id) controller.setLayerProperties(id, { clipped: !_optionalChain([active, 'optionalAccess', _323 => _323.clipped]) });
14842
14884
  break;
14843
14885
  }
14844
14886
  return null;
@@ -14853,18 +14895,18 @@ function layerEffectsPanel(layer) {
14853
14895
  if (!layer) return { ...empty, available: false, reason: "Select a layer to add effects." };
14854
14896
  if (layer.type === "adjustment") return { ...empty, available: false, reason: "Adjustment layers cannot have effects." };
14855
14897
  const fx = layer.effects;
14856
- const readOnly = Boolean(_optionalChain([layer, 'access', _320 => _320.locks, 'optionalAccess', _321 => _321.all]));
14898
+ const readOnly = Boolean(_optionalChain([layer, 'access', _324 => _324.locks, 'optionalAccess', _325 => _325.all]));
14857
14899
  return {
14858
14900
  available: true,
14859
14901
  readOnly,
14860
14902
  reason: readOnly ? "The layer is locked; unlock it to change its effects." : void 0,
14861
- enabled: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _322 => _322.enabled]), () => ( true)),
14862
- scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _323 => _323.scale]), () => ( 1)),
14863
- rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess', _324 => _324.items]), () => ( []))).map((e) => ({ id: e.id, kind: e.kind, label: _chunkWT6ZAWJPcjs.layerEffectLabel.call(void 0, e.kind), enabled: e.enabled }))
14903
+ enabled: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _326 => _326.enabled]), () => ( true)),
14904
+ scale: _nullishCoalesce(_optionalChain([fx, 'optionalAccess', _327 => _327.scale]), () => ( 1)),
14905
+ rows: (_nullishCoalesce(_optionalChain([fx, 'optionalAccess', _328 => _328.items]), () => ( []))).map((e) => ({ id: e.id, kind: e.kind, label: _chunkWT6ZAWJPcjs.layerEffectLabel.call(void 0, e.kind), enabled: e.enabled }))
14864
14906
  };
14865
14907
  }
14866
14908
  function layerEffectsBadge(layer) {
14867
- if (!_optionalChain([layer, 'access', _325 => _325.effects, 'optionalAccess', _326 => _326.items, 'access', _327 => _327.length])) return null;
14909
+ if (!_optionalChain([layer, 'access', _329 => _329.effects, 'optionalAccess', _330 => _330.items, 'access', _331 => _331.length])) return null;
14868
14910
  return _chunkWT6ZAWJPcjs.hasActiveEffects.call(void 0, layer.effects) ? "on" : "off";
14869
14911
  }
14870
14912
  var LAYER_EFFECT_MENU = _chunkWT6ZAWJPcjs.LAYER_EFFECT_KINDS.map((kind) => ({ kind, label: _chunkWT6ZAWJPcjs.layerEffectLabel.call(void 0, kind) }));
@@ -14909,8 +14951,8 @@ function fillControls(f, allowPattern, patterns) {
14909
14951
  }
14910
14952
  function gradientControls(prefix, g) {
14911
14953
  return [
14912
- { key: `${prefix}.stops.0.color`, label: "Start colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _328 => _328.stops, 'access', _329 => _329[0], 'optionalAccess', _330 => _330.color]), () => ( "#000000")) },
14913
- { key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _331 => _331.stops, 'access', _332 => _332[g.stops.length - 1], 'optionalAccess', _333 => _333.color]), () => ( "#ffffff")) },
14954
+ { key: `${prefix}.stops.0.color`, label: "Start colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _332 => _332.stops, 'access', _333 => _333[0], 'optionalAccess', _334 => _334.color]), () => ( "#000000")) },
14955
+ { key: `${prefix}.stops.last.color`, label: "End colour", type: "color", value: _nullishCoalesce(_optionalChain([g, 'access', _335 => _335.stops, 'access', _336 => _336[g.stops.length - 1], 'optionalAccess', _337 => _337.color]), () => ( "#ffffff")) },
14914
14956
  { key: `${prefix}.style`, label: "Style", type: "select", value: g.style, options: opt(["linear", "Linear"], ["radial", "Radial"], ["angle", "Angle"], ["reflected", "Reflected"], ["diamond", "Diamond"]) },
14915
14957
  { key: `${prefix}.angle`, label: "Angle", type: "range", min: -180, max: 180, step: 1, value: g.angle, unit: "\xB0" },
14916
14958
  { key: `${prefix}.scale`, label: "Scale", type: "range", min: 0.1, max: 1.5, step: 0.01, value: g.scale, percent: true, unit: "%" },
@@ -15002,19 +15044,19 @@ function layerEffectControls(e, patterns = []) {
15002
15044
  }
15003
15045
  function fillOfType(current, type, patterns) {
15004
15046
  if (type === "gradient") return { type: "gradient", gradient: _chunkWT6ZAWJPcjs.defaultEffectGradient.call(void 0, ) };
15005
- if (type === "pattern") return { type: "pattern", patternId: _nullishCoalesce(_optionalChain([patterns, 'access', _334 => _334[0], 'optionalAccess', _335 => _335.id]), () => ( "checker")), scale: 1 };
15047
+ if (type === "pattern") return { type: "pattern", patternId: _nullishCoalesce(_optionalChain([patterns, 'access', _338 => _338[0], 'optionalAccess', _339 => _339.id]), () => ( "checker")), scale: 1 };
15006
15048
  return { type: "color", color: current.type === "color" ? current.color : "#000000" };
15007
15049
  }
15008
15050
  function effectControlChange(effect, key, value, patterns = []) {
15009
15051
  const [top, ...rest] = key.split(".");
15010
15052
  if (top === "fill" && rest[0] === "type") return { fill: fillOfType(effect.fill, String(value), patterns) };
15011
15053
  if (top === "patternId" && !rest.length) {
15012
- const name = _optionalChain([patternOptions, 'call', _336 => _336(patterns), 'access', _337 => _337.find, 'call', _338 => _338((o) => o.value === value), 'optionalAccess', _339 => _339.label]);
15054
+ const name = _optionalChain([patternOptions, 'call', _340 => _340(patterns), 'access', _341 => _341.find, 'call', _342 => _342((o) => o.value === value), 'optionalAccess', _343 => _343.label]);
15013
15055
  return name ? { patternId: value, name } : { patternId: value };
15014
15056
  }
15015
15057
  if (!rest.length) return { [top]: value };
15016
15058
  if (top === "fill" && rest[0] === "patternId") {
15017
- const name = _optionalChain([patternOptions, 'call', _340 => _340(patterns), 'access', _341 => _341.find, 'call', _342 => _342((o) => o.value === value), 'optionalAccess', _343 => _343.label]);
15059
+ const name = _optionalChain([patternOptions, 'call', _344 => _344(patterns), 'access', _345 => _345.find, 'call', _346 => _346((o) => o.value === value), 'optionalAccess', _347 => _347.label]);
15018
15060
  return { fill: { ...effect.fill, patternId: value, ...name ? { name } : {} } };
15019
15061
  }
15020
15062
  return { [top]: setPath(getPath(effect, top), rest, value) };
@@ -15053,6 +15095,448 @@ async function downloadPsd(controller, name = "image") {
15053
15095
  return { fileName, warnings: res.warnings };
15054
15096
  }
15055
15097
 
15098
+ // src/image-editor/layers/transform-ui.ts
15099
+ var CORNERS = ["nw", "ne", "se", "sw"];
15100
+ var SIDES = ["n", "e", "s", "w"];
15101
+ var CORNER_INDEX = { nw: 0, ne: 1, se: 2, sw: 3 };
15102
+ var SIDE_CORNERS = { n: [0, 1], e: [1, 2], s: [2, 3], w: [3, 0] };
15103
+ var HANDLE_FRACTION = { nw: [0, 0], n: [0.5, 0], ne: [1, 0], e: [1, 0.5], se: [1, 1], s: [0.5, 1], sw: [0, 1], w: [0, 0.5] };
15104
+ var ANCHOR_FRACTION2 = {
15105
+ "top-left": [0, 0],
15106
+ top: [0.5, 0],
15107
+ "top-right": [1, 0],
15108
+ left: [0, 0.5],
15109
+ center: [0.5, 0.5],
15110
+ right: [1, 0.5],
15111
+ "bottom-left": [0, 1],
15112
+ bottom: [0.5, 1],
15113
+ "bottom-right": [1, 1]
15114
+ };
15115
+ var FREE_TRANSFORM_MODE_OPTIONS = [
15116
+ { id: "scale", label: "Free", title: "Free Transform: corners scale, outside rotates, Ctrl/Cmd distorts" },
15117
+ { id: "rotate", label: "Rotate", title: "Every handle rotates about the reference point" },
15118
+ { id: "skew", label: "Skew", title: "Sides slide along themselves" },
15119
+ { id: "distort", label: "Distort", title: "Each corner moves freely" },
15120
+ { id: "perspective", label: "Perspective", title: "A corner and its partner move symmetrically" }
15121
+ ];
15122
+ var FREE_TRANSFORM_FIELDS = [
15123
+ { id: "x", label: "X", unit: "px", title: "Reference point X (document pixels)" },
15124
+ { id: "y", label: "Y", unit: "px", title: "Reference point Y (document pixels)" },
15125
+ { id: "scaleX", label: "W", unit: "%", title: "Width in percent of the original" },
15126
+ { id: "scaleY", label: "H", unit: "%", title: "Height in percent of the original" },
15127
+ { id: "rotate", label: "\u2220", unit: "\xB0", title: "Rotation in degrees, clockwise" },
15128
+ { id: "skewX", label: "H skew", unit: "\xB0", title: "Horizontal skew in degrees" },
15129
+ { id: "skewY", label: "V skew", unit: "\xB0", title: "Vertical skew in degrees" }
15130
+ ];
15131
+ var CURSOR = {
15132
+ nw: "nwse-resize",
15133
+ se: "nwse-resize",
15134
+ ne: "nesw-resize",
15135
+ sw: "nesw-resize",
15136
+ n: "ns-resize",
15137
+ s: "ns-resize",
15138
+ e: "ew-resize",
15139
+ w: "ew-resize",
15140
+ reference: "move",
15141
+ inside: "move",
15142
+ outside: "alias"
15143
+ };
15144
+ var mod = (m) => Boolean(m.ctrlKey || m.metaKey);
15145
+ var add = (a, b) => ({ x: a.x + b.x, y: a.y + b.y });
15146
+ var sub = (a, b) => ({ x: a.x - b.x, y: a.y - b.y });
15147
+ function rotateAbout(p, c, rad) {
15148
+ const cos = Math.cos(rad);
15149
+ const sin = Math.sin(rad);
15150
+ const d = sub(p, c);
15151
+ return { x: c.x + d.x * cos - d.y * sin, y: c.y + d.x * sin + d.y * cos };
15152
+ }
15153
+ function insideQuad(q2, p) {
15154
+ let sign = 0;
15155
+ for (let i = 0; i < 4; i++) {
15156
+ const a = q2[i];
15157
+ const b = q2[(i + 1) % 4];
15158
+ const c = (b.x - a.x) * (p.y - a.y) - (b.y - a.y) * (p.x - a.x);
15159
+ if (Math.abs(c) < 1e-12) continue;
15160
+ const s = Math.sign(c);
15161
+ if (sign && s !== sign) return false;
15162
+ sign = s;
15163
+ }
15164
+ return true;
15165
+ }
15166
+ var FreeTransformTool = (_class11 = class {
15167
+ constructor(controller, options = {}) {;_class11.prototype.__init65.call(this);_class11.prototype.__init66.call(this);_class11.prototype.__init67.call(this);_class11.prototype.__init68.call(this);_class11.prototype.__init69.call(this);_class11.prototype.__init70.call(this);_class11.prototype.__init71.call(this);_class11.prototype.__init72.call(this);_class11.prototype.__init73.call(this);_class11.prototype.__init74.call(this);_class11.prototype.__init75.call(this);_class11.prototype.__init76.call(this);
15168
+ this.controller = controller;
15169
+ this.options = options;
15170
+ }
15171
+
15172
+
15173
+ __init65() {this.sessionRef = null}
15174
+ __init66() {this.modeValue = "scale"}
15175
+ /** The reference point in the untransformed frame's space (follows the transform). */
15176
+ __init67() {this.refBox = { x: 0, y: 0 }}
15177
+ __init68() {this.corners = null}
15178
+ __init69() {this.drag = null}
15179
+ __init70() {this.pending = false}
15180
+ __init71() {this.viewScale = 1}
15181
+
15182
+ /** Values typed into the options bar since the last drag (V skew is not recovered from the shape). */
15183
+ __init72() {this.typed = {}}
15184
+ /** Width and height scale together when typed (the chain icon). */
15185
+ __init73() {this.proportional = true}
15186
+ __init74() {this.error = null}
15187
+ __init75() {this.lastResult = null}
15188
+ get active() {
15189
+ return Boolean(_optionalChain([this, 'access', _348 => _348.sessionRef, 'optionalAccess', _349 => _349.isOpen]));
15190
+ }
15191
+ get session() {
15192
+ return this.active ? this.sessionRef : null;
15193
+ }
15194
+ get mode() {
15195
+ return this.modeValue;
15196
+ }
15197
+ get interpolation() {
15198
+ return _nullishCoalesce(_optionalChain([this, 'access', _350 => _350.sessionRef, 'optionalAccess', _351 => _351.interpolation]), () => ( "bicubic"));
15199
+ }
15200
+ __init76() {this.listeners = /* @__PURE__ */ new Set()}
15201
+ /** Calls `listener` whenever the overlay, readout, mode or error changes. Returns the unsubscribe. */
15202
+ subscribe(listener) {
15203
+ this.listeners.add(listener);
15204
+ return () => {
15205
+ this.listeners.delete(listener);
15206
+ };
15207
+ }
15208
+ changed() {
15209
+ _optionalChain([this, 'access', _352 => _352.options, 'access', _353 => _353.onChange, 'optionalCall', _354 => _354()]);
15210
+ for (const l of this.listeners) l();
15211
+ }
15212
+ /** Opens a Free Transform (default: the selected pixels of the active layer, or the whole layer). Returns an error message or `null`. */
15213
+ begin(init = {}) {
15214
+ if (this.active) return null;
15215
+ try {
15216
+ if (!init.layerId && init.content !== "selection-outline" && !this.controller.getState().activeLayerId) {
15217
+ const top = [..._chunkWT6ZAWJPcjs.flattenLayers.call(void 0, this.controller.getState().layers)].reverse().find((l) => l.type === "pixel" && l.visible);
15218
+ if (top) this.controller.setActiveLayer(top.id);
15219
+ }
15220
+ const s = this.controller.beginFreeTransform(init);
15221
+ this.sessionRef = s;
15222
+ this.corners = s.geometry.corners;
15223
+ this.refBox = { x: s.box.x + s.box.width / 2, y: s.box.y + s.box.height / 2 };
15224
+ this.modeValue = "scale";
15225
+ this.typed = {};
15226
+ this.error = null;
15227
+ } catch (e) {
15228
+ this.error = e instanceof Error ? e.message : String(e);
15229
+ }
15230
+ this.changed();
15231
+ return this.error;
15232
+ }
15233
+ setMode(mode) {
15234
+ this.modeValue = mode;
15235
+ this.changed();
15236
+ }
15237
+ /** Sets the reference point to an anchor of the frame (the options bar's locator). */
15238
+ setReference(anchor) {
15239
+ const s = this.session;
15240
+ if (!s) return;
15241
+ const [fx, fy] = ANCHOR_FRACTION2[anchor];
15242
+ this.refBox = { x: s.box.x + fx * s.box.width, y: s.box.y + fy * s.box.height };
15243
+ this.changed();
15244
+ }
15245
+ setInterpolation(interpolation) {
15246
+ const s = this.session;
15247
+ if (!s) return;
15248
+ this.run(() => s.update({ interpolation }, false));
15249
+ }
15250
+ /** Screen pixels per document pixel and the visible document area, for previews. */
15251
+ setView(scale, clip) {
15252
+ this.viewScale = scale > 0 ? scale : 1;
15253
+ this.viewClip = clip;
15254
+ }
15255
+ homography() {
15256
+ const s = this.session;
15257
+ return s && this.corners ? _chunkMUUXNRU4cjs.rectToQuad.call(void 0, s.box, this.corners) : null;
15258
+ }
15259
+ /** The reference point in document pixels. */
15260
+ referencePoint() {
15261
+ const h = this.homography();
15262
+ return h ? _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, this.refBox) : null;
15263
+ }
15264
+ /** The outline, handles and reference point to draw, or `null` when no transform is open. */
15265
+ overlay() {
15266
+ const s = this.session;
15267
+ const h = this.homography();
15268
+ if (!s || !h || !this.corners) return null;
15269
+ const handles = [...CORNERS, ...SIDES].map((id) => {
15270
+ const [fx, fy] = HANDLE_FRACTION[id];
15271
+ const p = _nullishCoalesce(_chunkMUUXNRU4cjs.applyHomography.call(void 0, h, { x: s.box.x + fx * s.box.width, y: s.box.y + fy * s.box.height }), () => ( { x: 0, y: 0 }));
15272
+ return { id, x: p.x, y: p.y };
15273
+ });
15274
+ return { outline: this.corners.map((p) => ({ x: p.x, y: p.y })), handles, reference: _nullishCoalesce(this.referencePoint(), () => ( { x: 0, y: 0 })) };
15275
+ }
15276
+ /** What a document point is over (`tolerance` in document pixels: a few screen pixels / scale). */
15277
+ hit(p, tolerance) {
15278
+ const o = this.overlay();
15279
+ if (!o) return null;
15280
+ let best = null;
15281
+ let bestD = tolerance;
15282
+ for (const h of o.handles) {
15283
+ const d = Math.hypot(h.x - p.x, h.y - p.y);
15284
+ if (d <= bestD) {
15285
+ best = h.id;
15286
+ bestD = d;
15287
+ }
15288
+ }
15289
+ if (Math.hypot(o.reference.x - p.x, o.reference.y - p.y) < bestD) best = "reference";
15290
+ if (best) return best;
15291
+ return insideQuad(o.outline, p) ? "inside" : "outside";
15292
+ }
15293
+ /** The CSS cursor for a handle. */
15294
+ cursor(handle) {
15295
+ if (!handle) return "default";
15296
+ if (this.modeValue === "rotate" && handle !== "inside" && handle !== "reference") return CURSOR.outside;
15297
+ return CURSOR[handle];
15298
+ }
15299
+ /** Starts a drag on what `p` is over. */
15300
+ down(p, tolerance) {
15301
+ if (!this.session || !this.corners) return null;
15302
+ const handle = this.hit(p, tolerance);
15303
+ if (!handle) return null;
15304
+ this.drag = { handle, start: { x: p.x, y: p.y }, corners: this.corners, refBox: { ...this.refBox }, ref: _nullishCoalesce(this.referencePoint(), () => ( p)) };
15305
+ return handle;
15306
+ }
15307
+ /** Continues the drag to `p` with the modifiers held now. */
15308
+ move(p, m = {}) {
15309
+ const d = this.drag;
15310
+ const s = this.session;
15311
+ if (!d || !s) return;
15312
+ if (d.handle === "reference") {
15313
+ const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, s.box, d.corners);
15314
+ const inv = h && _chunkMUUXNRU4cjs.invertHomography.call(void 0, h);
15315
+ const q2 = inv && _chunkMUUXNRU4cjs.applyHomography.call(void 0, inv, p);
15316
+ if (q2) this.refBox = q2;
15317
+ this.changed();
15318
+ return;
15319
+ }
15320
+ const corners = this.dragCorners(d, p, m);
15321
+ if (corners) this.setCorners(corners);
15322
+ }
15323
+ /** Ends the drag (the transform stays open). */
15324
+ up() {
15325
+ this.drag = null;
15326
+ }
15327
+ dragCorners(d, p, m) {
15328
+ const s = this.session;
15329
+ const c0 = d.corners;
15330
+ let delta = sub(p, d.start);
15331
+ const map = (f) => c0.map(f);
15332
+ const handle = d.handle;
15333
+ const isCorner = handle in CORNER_INDEX;
15334
+ const isSide = handle in SIDE_CORNERS;
15335
+ const rotating = handle === "outside" || this.modeValue === "rotate" && (isCorner || isSide);
15336
+ if (handle === "inside") {
15337
+ if (m.shiftKey) delta = Math.abs(delta.x) >= Math.abs(delta.y) ? { x: delta.x, y: 0 } : { x: 0, y: delta.y };
15338
+ return map((q3) => add(q3, delta));
15339
+ }
15340
+ if (rotating) {
15341
+ const r = d.ref;
15342
+ let a = Math.atan2(p.y - r.y, p.x - r.x) - Math.atan2(d.start.y - r.y, d.start.x - r.x);
15343
+ if (m.shiftKey) a = Math.round(a / (Math.PI / 12)) * (Math.PI / 12);
15344
+ return map((q3) => rotateAbout(q3, r, a));
15345
+ }
15346
+ const perspective = this.modeValue === "perspective" || mod(m) && m.altKey && m.shiftKey;
15347
+ const distort = this.modeValue === "distort" || mod(m) && !perspective;
15348
+ const skew = this.modeValue === "skew" || mod(m) && isSide;
15349
+ if (isSide && (skew || perspective)) {
15350
+ const [i, j] = SIDE_CORNERS[handle];
15351
+ const dir = sub(c0[j], c0[i]);
15352
+ const len = Math.hypot(dir.x, dir.y) || 1;
15353
+ const t = (delta.x * dir.x + delta.y * dir.y) / len;
15354
+ const v = { x: dir.x / len * t, y: dir.y / len * t };
15355
+ const [oi, oj] = SIDE_CORNERS[{ n: "s", s: "n", e: "w", w: "e" }[handle]];
15356
+ return map((q3, k) => k === i || k === j ? add(q3, v) : m.altKey && (k === oi || k === oj) ? sub(q3, v) : q3);
15357
+ }
15358
+ if (isCorner && perspective) {
15359
+ const k = CORNER_INDEX[handle];
15360
+ if (Math.abs(delta.x) >= Math.abs(delta.y)) {
15361
+ const partner2 = [1, 0, 3, 2][k];
15362
+ return map((q3, i) => i === k ? { x: q3.x + delta.x, y: q3.y } : i === partner2 ? { x: q3.x - delta.x, y: q3.y } : q3);
15363
+ }
15364
+ const partner = [3, 2, 1, 0][k];
15365
+ return map((q3, i) => i === k ? { x: q3.x, y: q3.y + delta.y } : i === partner ? { x: q3.x, y: q3.y - delta.y } : q3);
15366
+ }
15367
+ if (distort || isCorner && this.modeValue === "skew") {
15368
+ if (isCorner) return map((q3, i2) => i2 === CORNER_INDEX[handle] ? add(q3, delta) : q3);
15369
+ const [i, j] = SIDE_CORNERS[handle];
15370
+ return map((q3, k) => k === i || k === j ? add(q3, delta) : q3);
15371
+ }
15372
+ const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, s.box, c0);
15373
+ const inv = h && _chunkMUUXNRU4cjs.invertHomography.call(void 0, h);
15374
+ if (!h || !inv) return null;
15375
+ const q2 = _chunkMUUXNRU4cjs.applyHomography.call(void 0, inv, p);
15376
+ const q0 = _chunkMUUXNRU4cjs.applyHomography.call(void 0, inv, d.start);
15377
+ if (!q2 || !q0) return null;
15378
+ const b = s.box;
15379
+ const [fx, fy] = HANDLE_FRACTION[handle];
15380
+ const grab = { x: b.x + fx * b.width, y: b.y + fy * b.height };
15381
+ const anchor = m.altKey ? d.refBox : { x: b.x + (1 - fx) * b.width, y: b.y + (1 - fy) * b.height };
15382
+ const target = add(grab, sub(q2, q0));
15383
+ const ax = grab.x - anchor.x;
15384
+ const ay = grab.y - anchor.y;
15385
+ let sx = isCorner || handle === "e" || handle === "w" ? Math.abs(ax) > 1e-9 ? (target.x - anchor.x) / ax : 1 : 1;
15386
+ let sy = isCorner || handle === "n" || handle === "s" ? Math.abs(ay) > 1e-9 ? (target.y - anchor.y) / ay : 1 : 1;
15387
+ if (isCorner && !m.shiftKey) {
15388
+ const k = Math.abs(sx) >= Math.abs(sy) ? sx : sy;
15389
+ sx = k;
15390
+ sy = k;
15391
+ }
15392
+ const scaled = [
15393
+ { x: b.x, y: b.y },
15394
+ { x: b.x + b.width, y: b.y },
15395
+ { x: b.x + b.width, y: b.y + b.height },
15396
+ { x: b.x, y: b.y + b.height }
15397
+ ].map((c) => _chunkMUUXNRU4cjs.applyHomography.call(void 0, h, { x: anchor.x + (c.x - anchor.x) * sx, y: anchor.y + (c.y - anchor.y) * sy }));
15398
+ return scaled.every(Boolean) ? scaled : null;
15399
+ }
15400
+ /** Sets new corners and refreshes the preview (scheduled). Invalid shapes keep the last good one. */
15401
+ setCorners(corners) {
15402
+ const s = this.session;
15403
+ if (!s) return;
15404
+ const h = _chunkMUUXNRU4cjs.rectToQuad.call(void 0, s.box, corners);
15405
+ if (!h) return;
15406
+ this.corners = corners;
15407
+ this.typed = {};
15408
+ this.changed();
15409
+ this.preview();
15410
+ }
15411
+ preview() {
15412
+ if (this.pending) return;
15413
+ this.pending = true;
15414
+ const run = () => {
15415
+ this.pending = false;
15416
+ const s = this.session;
15417
+ if (!s || !this.corners) return;
15418
+ this.run(() => s.update({ corners: this.corners }, { scale: this.viewScale, clip: this.viewClip }));
15419
+ };
15420
+ if (this.options.schedule) this.options.schedule(run);
15421
+ else run();
15422
+ }
15423
+ run(fn) {
15424
+ try {
15425
+ fn();
15426
+ this.error = null;
15427
+ } catch (e) {
15428
+ this.error = e instanceof Error ? e.message : String(e);
15429
+ if (this.sessionRef && !this.sessionRef.isOpen) this.sessionRef = null;
15430
+ }
15431
+ this.changed();
15432
+ }
15433
+ /** The options bar's numbers for the current shape. */
15434
+ bar() {
15435
+ const s = this.session;
15436
+ if (!s || !this.corners) return null;
15437
+ const read = describeTransform({ box: s.box, corners: this.corners }, this.refBox);
15438
+ return {
15439
+ affine: read.affine,
15440
+ x: _nullishCoalesce(this.typed.x, () => ( read.x)),
15441
+ y: _nullishCoalesce(this.typed.y, () => ( read.y)),
15442
+ scaleX: _nullishCoalesce(this.typed.scaleX, () => ( read.scaleX)),
15443
+ scaleY: _nullishCoalesce(this.typed.scaleY, () => ( read.scaleY)),
15444
+ rotate: _nullishCoalesce(this.typed.rotate, () => ( read.rotate)),
15445
+ skewX: _nullishCoalesce(this.typed.skewX, () => ( read.skewX)),
15446
+ skewY: _nullishCoalesce(this.typed.skewY, () => ( 0))
15447
+ };
15448
+ }
15449
+ /** Applies a typed options-bar value (W and H together while `proportional`). */
15450
+ setField(field, value) {
15451
+ const s = this.session;
15452
+ const cur = this.bar();
15453
+ if (!s || !cur || !Number.isFinite(value)) return;
15454
+ const next = { ...cur, [field]: value };
15455
+ if (this.proportional && field === "scaleX") next.scaleY = cur.scaleY === 0 ? value : value / cur.scaleX * cur.scaleY;
15456
+ if (this.proportional && field === "scaleY") next.scaleX = cur.scaleX === 0 ? value : value / cur.scaleY * cur.scaleX;
15457
+ if (!next.scaleX || !next.scaleY) {
15458
+ this.error = "Width and height must not be 0 %.";
15459
+ this.changed();
15460
+ return;
15461
+ }
15462
+ const m = matrixFromParams(s.box, {
15463
+ scaleX: next.scaleX,
15464
+ scaleY: next.scaleY,
15465
+ rotate: next.rotate,
15466
+ skewX: next.skewX,
15467
+ skewY: next.skewY,
15468
+ reference: this.refBox,
15469
+ dx: next.x - this.refBox.x,
15470
+ dy: next.y - this.refBox.y
15471
+ });
15472
+ this.setCorners(cornersFromMatrix(s.box, m));
15473
+ this.typed = { scaleX: next.scaleX, scaleY: next.scaleY, rotate: next.rotate, skewX: next.skewX, skewY: next.skewY, x: next.x, y: next.y };
15474
+ this.changed();
15475
+ }
15476
+ /** Finishes with full-quality resampling (one undo step). */
15477
+ commit() {
15478
+ const s = this.session;
15479
+ if (!s) return null;
15480
+ let res = null;
15481
+ this.pending = false;
15482
+ this.run(() => {
15483
+ if (this.corners) s.update({ corners: this.corners }, false);
15484
+ res = s.commit();
15485
+ });
15486
+ this.lastResult = res;
15487
+ this.sessionRef = null;
15488
+ this.corners = null;
15489
+ this.drag = null;
15490
+ this.changed();
15491
+ return res;
15492
+ }
15493
+ /** Abandons the transform and restores everything. */
15494
+ cancel() {
15495
+ _optionalChain([this, 'access', _355 => _355.sessionRef, 'optionalAccess', _356 => _356.cancel, 'call', _357 => _357()]);
15496
+ this.sessionRef = null;
15497
+ this.corners = null;
15498
+ this.drag = null;
15499
+ this.pending = false;
15500
+ this.error = null;
15501
+ this.changed();
15502
+ }
15503
+ /**
15504
+ * Keyboard: Enter commits, Escape cancels, arrows nudge by 1 px (Shift: 10). Ctrl/Cmd+T opens a
15505
+ * Free Transform when none is open. Returns true when the key was used (prevent its default).
15506
+ */
15507
+ key(e) {
15508
+ const t = e.target;
15509
+ const typing = Boolean(t && (t.isContentEditable || t.tagName === "INPUT" || t.tagName === "TEXTAREA" || t.tagName === "SELECT"));
15510
+ if (!this.active) {
15511
+ if ((e.ctrlKey || e.metaKey) && !e.altKey && e.key.toLowerCase() === "t" && !typing) {
15512
+ this.begin();
15513
+ return true;
15514
+ }
15515
+ return false;
15516
+ }
15517
+ if (e.key === "Enter") {
15518
+ this.commit();
15519
+ return true;
15520
+ }
15521
+ if (e.key === "Escape") {
15522
+ this.cancel();
15523
+ return true;
15524
+ }
15525
+ if (typing) return false;
15526
+ const step = e.shiftKey ? 10 : 1;
15527
+ const nudge = { ArrowLeft: { x: -step, y: 0 }, ArrowRight: { x: step, y: 0 }, ArrowUp: { x: 0, y: -step }, ArrowDown: { x: 0, y: step } };
15528
+ const v = nudge[e.key];
15529
+ if (v && this.corners) {
15530
+ this.setCorners(this.corners.map((q2) => add(q2, v)));
15531
+ return true;
15532
+ }
15533
+ return false;
15534
+ }
15535
+ }, _class11);
15536
+
15537
+
15538
+
15539
+
15056
15540
 
15057
15541
 
15058
15542
 
@@ -15581,5 +16065,5 @@ async function downloadPsd(controller, name = "image") {
15581
16065
 
15582
16066
 
15583
16067
 
15584
- exports.ADJUSTMENT_KEYS = ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = ADJUSTMENT_LUT_SIZE; exports.AS_SHOT_KELVIN = AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = BACKGROUND_LAYER_NAME; exports.BLEND_MODES = _chunkCRMAXIUVcjs.BLEND_MODES; exports.BLUR_FILTER_ID = BLUR_FILTER_ID; exports.BRUSH_OPTION_CONTROLS = BRUSH_OPTION_CONTROLS; exports.CoverageMap = _chunkZZOTHJ4Kcjs.CoverageMap; exports.D50 = D50; exports.D65 = D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_BRUSH = _chunkZZOTHJ4Kcjs.DEFAULT_BRUSH; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_GLOBAL_LIGHT = _chunkWT6ZAWJPcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MIXER = _chunkZZOTHJ4Kcjs.DEFAULT_MIXER; exports.DEFAULT_REFINE_EDGE_PARAMS = DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEVELOP_FILTER_ID = DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkWT6ZAWJPcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DabWalker = _chunkZZOTHJ4Kcjs.DabWalker; exports.EMPTY_DISTANCE = EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkZZOTHJ4Kcjs.EMPTY_MIXER_LOAD; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_MODES = FREE_TRANSFORM_MODES; exports.FreeTransformSession = FreeTransformSession; exports.GUIDED_FILTER_EPS = GUIDED_FILTER_EPS; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = HUE_RANGE_LABELS; exports.IDENTITY_MATRIX3 = IDENTITY_MATRIX3; exports.IMAGE_ADJUSTMENT_CONTROLS = IMAGE_ADJUSTMENT_CONTROLS; exports.IMAGE_EDITOR_SCHEMA_VERSION = IMAGE_EDITOR_SCHEMA_VERSION; exports.IMAGE_EDITOR_STATE_VERSION = IMAGE_EDITOR_STATE_VERSION; exports.INTERPOLATIONS = _chunkWT6ZAWJPcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.LATEST_PROCESS_VERSION = LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkWT6ZAWJPcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = LEGACY_PROCESS_VERSION; exports.LUMA_709 = LUMA_709; exports.LayerCompositor = LayerCompositor; exports.LayerEffectError = _chunkWT6ZAWJPcjs.LayerEffectError; exports.LayerOperationError = LayerOperationError; exports.MAX_BRUSH_SIZE = _chunkZZOTHJ4Kcjs.MAX_BRUSH_SIZE; exports.MAX_EFFECT_REACH = _chunkWT6ZAWJPcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = MAX_KELVIN; exports.MAX_TRANSFORM_PIXELS = _chunkWT6ZAWJPcjs.MAX_TRANSFORM_PIXELS; exports.MIN_KELVIN = MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkZZOTHJ4Kcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkZZOTHJ4Kcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkZZOTHJ4Kcjs.MIXING_MODELS; exports.MixerStroke = _chunkZZOTHJ4Kcjs.MixerStroke; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PATTERN_BLOCK_KEYS = PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkCRMAXIUVcjs.PIGMENT_BANDS; exports.PIGMENT_LAMBDA_MIN = _chunkCRMAXIUVcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCRMAXIUVcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_WAVELENGTHS = _chunkCRMAXIUVcjs.PIGMENT_WAVELENGTHS; exports.PSD_BLEND_KEYS = PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.PaintGesture = PaintGesture; exports.PaintStrokeSession = PaintStrokeSession; exports.PatternPlacement = _chunkWT6ZAWJPcjs.PatternPlacement; exports.PatternTile = _chunkWT6ZAWJPcjs.PatternTile; exports.PsdError = PsdError; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.SELECTION_MODES = SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SUPPORTED_ADJUSTMENT_KEYS = SUPPORTED_ADJUSTMENT_KEYS; exports.SelectionGesture = SelectionGesture; exports.StrokeCoverage = _chunkZZOTHJ4Kcjs.StrokeCoverage; exports.SurfaceDraft = _chunkCRMAXIUVcjs.SurfaceDraft; exports.TILE = _chunkCRMAXIUVcjs.TILE; exports.TILE_SHIFT = _chunkCRMAXIUVcjs.TILE_SHIFT; exports.TINT_SCALE = TINT_SCALE; exports.TONE_LUT_SIZE = TONE_LUT_SIZE; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = TRANSFORM_ANCHORS; exports.TiledSurface = _chunkCRMAXIUVcjs.TiledSurface; exports.TransformTooLargeError = _chunkWT6ZAWJPcjs.TransformTooLargeError; exports.VIBRANCE_GREY = VIBRANCE_GREY; exports.WARP_STYLES = _chunkDWGZUSEScjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkDWGZUSEScjs.WARP_STYLE_LABELS; exports.XYZ_D50_TO_SRGB = XYZ_D50_TO_SRGB; exports.ZlibError = _chunkWT6ZAWJPcjs.ZlibError; exports.activeAdjustmentLayers = activeAdjustmentLayers; exports.addLayerEffect = addLayerEffect; exports.addLayerFilter = addLayerFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = adjustmentKindLabel; exports.adjustmentLayersKey = adjustmentLayersKey; exports.adjustmentNodeAsLayer = adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = adjustmentNodeFromLegacy; exports.adler32 = _chunkWT6ZAWJPcjs.adler32; exports.anchorPoint = anchorPoint; exports.annotationLayerFor = annotationLayerFor; exports.annotationLayerName = annotationLayerName; exports.applyAdjustmentLayers = applyAdjustmentLayers; exports.applyAdjustments = applyAdjustments; exports.applyBoxBlur = applyBoxBlur; exports.applyDepthMask = applyDepthMask; exports.applyHomography = _chunkMUUXNRU4cjs.applyHomography; exports.applyImageProjectionToContext = applyImageProjectionToContext; exports.applyLegacyAdjustments = applyLegacyAdjustments; exports.applyMatrix3 = applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = applyParams; exports.applyProcess2Adjustments = applyProcess2Adjustments; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyStrokeToTile = _chunkZZOTHJ4Kcjs.applyStrokeToTile; exports.backgroundLayer = backgroundLayer; exports.base64ToBytes = _chunkWT6ZAWJPcjs.base64ToBytes; exports.baseProjection = baseProjection; exports.blackWhiteGray = blackWhiteGray; exports.blendChannel = _chunkCRMAXIUVcjs.blendChannel; exports.blendImageData = _chunkCRMAXIUVcjs.blendImageData; exports.blendLum = _chunkCRMAXIUVcjs.blendLum; exports.blendPixel = _chunkCRMAXIUVcjs.blendPixel; exports.blendRgb = _chunkCRMAXIUVcjs.blendRgb; exports.blendTile = _chunkWT6ZAWJPcjs.blendTile; exports.blurFilter = blurFilter; exports.borderCoverage = borderCoverage; exports.boxMean = boxMean; exports.boxPointOf = boxPointOf; exports.boxQuad = _chunkMUUXNRU4cjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = bradfordAdaptation; exports.buildLayerMaskPlanes = buildLayerMaskPlanes; exports.buildToneLut = buildToneLut; exports.builtinPattern = _chunkWT6ZAWJPcjs.builtinPattern; exports.builtinPatternIds = _chunkWT6ZAWJPcjs.builtinPatternIds; exports.bytesToBase64 = _chunkWT6ZAWJPcjs.bytesToBase64; exports.calculateCropDrag = calculateCropDrag; exports.canvasCompositeOperation = _chunkCRMAXIUVcjs.canvasCompositeOperation; exports.canvasToImagePoint = canvasToImagePoint; exports.changedTiles = _chunkWT6ZAWJPcjs.changedTiles; exports.clampControlValue = clampControlValue; exports.clampCropToImage = clampCropToImage; exports.cleanMixer = _chunkZZOTHJ4Kcjs.cleanMixer; exports.collectTiles = _chunkCRMAXIUVcjs.collectTiles; exports.colorBalanceChannel = colorBalanceChannel; exports.colorRange = colorRange; exports.combineSelections = combineSelections; exports.compileAdjustmentLayer = compileAdjustmentLayer; exports.compositeSurfaceOver = _chunkWT6ZAWJPcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = computeSelectionBounds; exports.contentBounds = _chunkCRMAXIUVcjs.contentBounds; exports.contractCoverage = contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.cornersFromMatrix = cornersFromMatrix; exports.coverageTileCoord = _chunkZZOTHJ4Kcjs.coverageTileCoord; exports.coverageToByte = coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = createAdjustmentLayer; exports.createImageCaptureSurface = createImageCaptureSurface; exports.createImageEditTools = createImageEditTools; exports.createImageEditorToolProvider = createImageEditorToolProvider; exports.createImageEffectTools = createImageEffectTools; exports.createImageLayerTools = createImageLayerTools; exports.createImagePaintTools = createImagePaintTools; exports.createImagePsdTools = createImagePsdTools; exports.createImageSelectionTools = createImageSelectionTools; exports.createImageTransformTools = createImageTransformTools; exports.createPigment = _chunkCRMAXIUVcjs.createPigment; exports.createPigmentTools = _chunkZZOTHJ4Kcjs.createPigmentTools; exports.createSelectionMask = createSelectionMask; exports.curveLut = _chunkWT6ZAWJPcjs.curveLut; exports.curveLutFromLevels = curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkZZOTHJ4Kcjs.dabCoverage; exports.dabRect = _chunkZZOTHJ4Kcjs.dabRect; exports.decodeLayerChannel = decodeLayerChannel; exports.decodeLayerMask = decodeLayerMask; exports.decodeMergedImage = decodeMergedImage; exports.decodePlanes = decodePlanes; exports.decodePng = _chunkWT6ZAWJPcjs.decodePng; exports.decodePngDataUrl = decodePngDataUrl; exports.decodeSelectionRle = decodeSelectionRle; exports.defaultAdjustmentParams = defaultAdjustmentParams; exports.defaultEffectGradient = _chunkWT6ZAWJPcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkWT6ZAWJPcjs.defaultLayerEffect; exports.deflate = _chunkWT6ZAWJPcjs.deflate; exports.deflateRaw = _chunkWT6ZAWJPcjs.deflateRaw; exports.depthMaskAlpha = depthMaskAlpha; exports.depthRasterMask = depthRasterMask; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = describeTransform; exports.deserializeEffects = deserializeEffects; exports.deserializeLayer = deserializeLayer; exports.deserializeLayers = deserializeLayers; exports.deserializePatterns = deserializePatterns; exports.deserializeSelection = deserializeSelection; exports.developFilter = developFilter; exports.developFromAdjustments = developFromAdjustments; exports.developTarget = developTarget; exports.distanceTransform = distanceTransform; exports.downloadPsd = downloadPsd; exports.dragWarpMeshPoint = _chunkDWGZUSEScjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.duplicateLayer = duplicateLayer; exports.edgeWidth = edgeWidth; exports.effectColorHex = _chunkWT6ZAWJPcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectReach = _chunkWT6ZAWJPcjs.effectReach; exports.effectsFingerprint = _chunkWT6ZAWJPcjs.effectsFingerprint; exports.effectsMargin = _chunkWT6ZAWJPcjs.effectsMargin; exports.effectsScale = _chunkWT6ZAWJPcjs.effectsScale; exports.ellipsePoints = ellipsePoints; exports.ellipseSelection = ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunkCRMAXIUVcjs.emptySurface; exports.encodePng = _chunkWT6ZAWJPcjs.encodePng; exports.encodeRle = encodeRle; exports.encodeSelectionRle = encodeSelectionRle; exports.encodeSurface = encodeSurface; exports.evalWarpMesh = _chunkDWGZUSEScjs.evalWarpMesh; exports.evaluateAdjustmentLayers = evaluateAdjustmentLayers; exports.expandCoverage = expandCoverage; exports.exportPsd = exportPsd; exports.featherCoverage = featherCoverage; exports.fillRect = _chunkCRMAXIUVcjs.fillRect; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkWT6ZAWJPcjs.findLayer; exports.findLayerControl = findLayerControl; exports.finishTile = _chunkCRMAXIUVcjs.finishTile; exports.flattenLayers = _chunkWT6ZAWJPcjs.flattenLayers; exports.flipCorners = flipCorners; exports.formatControlValue = formatControlValue; exports.fullSelection = fullSelection; exports.gaussianBlur = _chunkWT6ZAWJPcjs.gaussianBlur; exports.geometryHomography = geometryHomography; exports.getAnnotationBounds = getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = getCropCursor; exports.getRotatedSize = getRotatedSize; exports.getViewportMetrics = getViewportMetrics; exports.getViewportProjection = getViewportProjection; exports.globalImageCache = globalImageCache; exports.greyMorphology = greyMorphology; exports.groupLayers = groupLayers; exports.guidePlanes = guidePlanes; exports.guidedFilterColor = guidedFilterColor; exports.handlePaintShortcut = handlePaintShortcut; exports.hasActiveEffects = _chunkWT6ZAWJPcjs.hasActiveEffects; exports.hasResampledLegacyMask = hasResampledLegacyMask; exports.hasWarp = hasWarp; exports.hashMaskContent = hashMaskContent; exports.hashNoise = _chunkWT6ZAWJPcjs.hashNoise; exports.hexToRgb = hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = hitTestAnnotation; exports.hitTestCrop = hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkMUUXNRU4cjs.homographyFromAffine; exports.homographyFromPoints = _chunkMUUXNRU4cjs.homographyFromPoints; exports.hslToRgb = hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = hueRangeTables; exports.hueRangeWeight = hueRangeWeight; exports.hueSaturation = hueSaturation; exports.identityCurve = identityCurve; exports.identityLevels = identityLevels; exports.identityTransform = identityTransform; exports.identityWarpMesh = _chunkDWGZUSEScjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageToCanvasPoint = imageToCanvasPoint; exports.importPsd = importPsd; exports.inflate = _chunkWT6ZAWJPcjs.inflate; exports.inflateRaw = _chunkWT6ZAWJPcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkWT6ZAWJPcjs.insertLayer; exports.invertHomography = _chunkMUUXNRU4cjs.invertHomography; exports.invertMatrix3 = invertMatrix3; exports.invertSelection = invertSelection; exports.isActiveFilter = isActiveFilter; exports.isAdjustmentKind = isAdjustmentKind; exports.isBlendMode = _chunkCRMAXIUVcjs.isBlendMode; exports.isDefaultDepthMask = isDefaultDepthMask; exports.isIdentityTransform = isIdentityTransform; exports.isInterpolation = _chunkWT6ZAWJPcjs.isInterpolation; exports.isLayerEffectKind = _chunkWT6ZAWJPcjs.isLayerEffectKind; exports.isLayerLocked = _chunkWT6ZAWJPcjs.isLayerLocked; exports.isLegacyShape = isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPng = _chunkWT6ZAWJPcjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = isQuarterTurnSwapped; exports.isSelectionEmpty = isSelectionEmpty; exports.isSelectionMode = isSelectionMode; exports.isSeparableBlendMode = _chunkCRMAXIUVcjs.isSeparableBlendMode; exports.isSpatialFilter = isSpatialFilter; exports.isTransformAnchor = isTransformAnchor; exports.isValidWarp = isValidWarp; exports.kelvinToTemperature = kelvinToTemperature; exports.keysWeight = _chunkWT6ZAWJPcjs.keysWeight; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkWT6ZAWJPcjs.layerEffectFields; exports.layerEffectLabel = _chunkWT6ZAWJPcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerLabel = layerLabel; exports.layerMaskCoverage = layerMaskCoverage; exports.layerMaskFromSelection = layerMaskFromSelection; exports.layerMaskKey = layerMaskKey; exports.layerMenu = layerMenu; exports.layerName = layerName; exports.layerPanelRows = layerPanelRows; exports.layerTree = layerTree; exports.layerTypeLabel = layerTypeLabel; exports.layersFromLegacy = layersFromLegacy; exports.legacyAdjustmentLayer = legacyAdjustmentLayer; exports.legacyMaskOf = legacyMaskOf; exports.legacyView = legacyView; exports.lerpPigment = _chunkCRMAXIUVcjs.lerpPigment; exports.lerpPigmentInto = _chunkCRMAXIUVcjs.lerpPigmentInto; exports.levelsValue = levelsValue; exports.linearSrgbToXy = linearSrgbToXy; exports.linearToSrgb = linearToSrgb; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkZZOTHJ4Kcjs.loadMixer; exports.magicWand = magicWand; exports.mapCropHandle = mapCropHandle; exports.mapLayer = _chunkWT6ZAWJPcjs.mapLayer; exports.maskSummary = maskSummary; exports.matrixFromCorners = matrixFromCorners; exports.matrixFromParams = matrixFromParams; exports.mergeLayerEffect = _chunkWT6ZAWJPcjs.mergeLayerEffect; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mixPigment8 = _chunkCRMAXIUVcjs.mixPigment8; exports.mixPigmentRgb = _chunkCRMAXIUVcjs.mixPigmentRgb; exports.mixPigments = _chunkCRMAXIUVcjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.modifySelection = modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = moveLayer; exports.mulMatrix3 = mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = neutralHueRange; exports.newEffectId = _chunkWT6ZAWJPcjs.newEffectId; exports.newLayerId = newLayerId; exports.normalizeAdjustmentLayer = normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = normalizeAdjustmentLayers; exports.normalizeAngle = normalizeAngle; exports.normalizeBlendMode = _chunkCRMAXIUVcjs.normalizeBlendMode; exports.normalizeBrush = _chunkZZOTHJ4Kcjs.normalizeBrush; exports.normalizeFilter = normalizeFilter; exports.normalizeLayerEffects = _chunkWT6ZAWJPcjs.normalizeLayerEffects; exports.normalizeLayerMask = normalizeLayerMask; exports.normalizeMixer = _chunkZZOTHJ4Kcjs.normalizeMixer; exports.normalizeProcessVersion = normalizeProcessVersion; exports.normalizeRect = normalizeRect; exports.normalizeRefineEdgeParams = normalizeRefineEdgeParams; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.offsetLayer = offsetLayer; exports.openPsdFile = openPsdFile; exports.packRgba = _chunkCRMAXIUVcjs.packRgba; exports.parseAdjustmentBlock = parseAdjustmentBlock; exports.parseBlend = parseBlend; exports.parseColor = parseColor; exports.parseDataUrl = _chunkWT6ZAWJPcjs.parseDataUrl; exports.parseEffectColor = _chunkWT6ZAWJPcjs.parseEffectColor; exports.parseLfx2 = parseLfx2; exports.parseLrfx = parseLrfx; exports.parsePatternBlock = parsePatternBlock; exports.parseSelectionMode = parseSelectionMode; exports.parseVersionedDescriptor = parseVersionedDescriptor; exports.photoFilterMatrix = photoFilterMatrix; exports.pixelLayerBounds = pixelLayerBounds; exports.pixelLayers = pixelLayers; exports.placeLayer = placeLayer; exports.pngDataUrl = _chunkWT6ZAWJPcjs.pngDataUrl; exports.pointerPressure = pointerPressure; exports.polygonCoverage = polygonCoverage; exports.polygonSelection = polygonSelection; exports.posterizeValue = posterizeValue; exports.presetWarp = presetWarp; exports.previewStep = previewStep; exports.projectImagePoint = projectImagePoint; exports.projectImageRect = projectImageRect; exports.projectMaskCoverage = projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = psdPatternToEffectPattern; exports.psdToLayers = psdToLayers; exports.pullWarpMesh = _chunkDWGZUSEScjs.pullWarpMesh; exports.quickMaskPixels = quickMaskPixels; exports.rangeLightness = rangeLightness; exports.rasterMaskFromLegacy = rasterMaskFromLegacy; exports.rasterizeDab = _chunkZZOTHJ4Kcjs.rasterizeDab; exports.readAdjustmentControls = readAdjustmentControls; exports.readPixel = _chunkCRMAXIUVcjs.readPixel; exports.readPsd = readPsd; exports.readRegion = _chunkCRMAXIUVcjs.readRegion; exports.rectSelection = rectSelection; exports.rectToQuad = _chunkMUUXNRU4cjs.rectToQuad; exports.reduceSurface = _chunkWT6ZAWJPcjs.reduceSurface; exports.referencePoint = referencePoint; exports.refineCoverage = refineCoverage; exports.refineEdgeHalo = refineEdgeHalo; exports.refineSelection = refineSelection; exports.reflectanceToRgb = _chunkCRMAXIUVcjs.reflectanceToRgb; exports.removeAlpha = removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = removeLayer; exports.removeLayerEffect = removeLayerEffect; exports.removeLayerFilter = removeLayerFilter; exports.renderLayerEffects = _chunkWT6ZAWJPcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.requireLayer = requireLayer; exports.requireUnlocked = requireUnlocked; exports.resizePixels = resizePixels; exports.resizeSelection = resizeSelection; exports.resizeWarpMesh = _chunkDWGZUSEScjs.resizeWarpMesh; exports.resolveExternalAssets = resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.rgbToGray = rgbToGray; exports.rgbToHsl = rgbToHsl; exports.rgbToReflectance = _chunkCRMAXIUVcjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.runLayerMenuAction = runLayerMenuAction; exports.sampleLut = sampleLut; exports.sampleToneLut = sampleToneLut; exports.scaleLayerEffect = _chunkWT6ZAWJPcjs.scaleLayerEffect; exports.selectionArea = selectionArea; exports.selectionFromCoverage = selectionFromCoverage; exports.selectionFromPixels = selectionFromPixels; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionToCoverage = selectionToCoverage; exports.selectionToPixels = selectionToPixels; exports.selectionValueAt = selectionValueAt; exports.serializeEffects = serializeEffects; exports.serializeLayer = serializeLayer; exports.serializeLayers = serializeLayers; exports.serializeLayersExternal = serializeLayersExternal; exports.serializePatterns = serializePatterns; exports.serializeSelection = serializeSelection; exports.setControlPath = setControlPath; exports.setLayerEffects = setLayerEffects; exports.setLayerEffectsEnabled = setLayerEffectsEnabled; exports.setLayerMask = setLayerMask; exports.setLayerProperties = setLayerProperties; exports.setLum = _chunkCRMAXIUVcjs.setLum; exports.setPigmentColor = _chunkCRMAXIUVcjs.setPigmentColor; exports.shiftCoverage = shiftCoverage; exports.smoothCoverage = smoothCoverage; exports.smoothPoints = _chunkZZOTHJ4Kcjs.smoothPoints; exports.solidSurface = _chunkCRMAXIUVcjs.solidSurface; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.srgb8ToLab = srgb8ToLab; exports.srgbToLinear = srgbToLinear; exports.sumHistograms = sumHistograms; exports.surfaceBytes = _chunkCRMAXIUVcjs.surfaceBytes; exports.surfaceFromPixels = _chunkCRMAXIUVcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCRMAXIUVcjs.surfacesEqual; exports.tempTintToXy = tempTintToXy; exports.temperatureToKelvin = temperatureToKelvin; exports.tileCoord = _chunkCRMAXIUVcjs.tileCoord; exports.tileKey = _chunkCRMAXIUVcjs.tileKey; exports.tileRect = _chunkCRMAXIUVcjs.tileRect; exports.tilesInRect = _chunkCRMAXIUVcjs.tilesInRect; exports.tipFalloff = _chunkZZOTHJ4Kcjs.tipFalloff; exports.tipReach = _chunkZZOTHJ4Kcjs.tipReach; exports.tipShape = _chunkZZOTHJ4Kcjs.tipShape; exports.toHex = toHex2; exports.toneCurve = toneCurve; exports.toneLuts = toneLuts; exports.toneRange = toneRange; exports.transformHomography = transformHomography; exports.transformMap = transformMap; exports.transformSurface = _chunkWT6ZAWJPcjs.transformSurface; exports.transformedBounds = _chunkWT6ZAWJPcjs.transformedBounds; exports.transformedBox = transformedBox; exports.transformedPoint = transformedPoint; exports.translateSurface = _chunkCRMAXIUVcjs.translateSurface; exports.ungroupLayer = ungroupLayer; exports.uniformTile = _chunkCRMAXIUVcjs.uniformTile; exports.unionRect = unionRect; exports.unprojectCanvasPoint = unprojectCanvasPoint; exports.updateLayerEffect = updateLayerEffect; exports.updateLayerFilter = updateLayerFilter; exports.updateLayerMaskProps = updateLayerMaskProps; exports.uvToXy = uvToXy; exports.validateEffectGradient = _chunkWT6ZAWJPcjs.validateEffectGradient; exports.validateLayerEffect = _chunkWT6ZAWJPcjs.validateLayerEffect; exports.validateLayerEffects = _chunkWT6ZAWJPcjs.validateLayerEffects; exports.versionedDescriptorBytes = versionedDescriptorBytes; exports.vibranceLinear = vibranceLinear; exports.vibrancePixel = vibrancePixel; exports.walkDabs = _chunkZZOTHJ4Kcjs.walkDabs; exports.warpMeshEditPoints = _chunkDWGZUSEScjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkDWGZUSEScjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkDWGZUSEScjs.warpMeshParamAt; exports.warpPresetMesh = _chunkDWGZUSEScjs.warpPresetMesh; exports.warpSurface = _chunkWT6ZAWJPcjs.warpSurface; exports.wbMatrix = wbMatrix; exports.whiteBalanceFromSample = whiteBalanceFromSample; exports.whiteBalanceMatrix = whiteBalanceMatrix; exports.withNewIds = withNewIds; exports.writeAdjustmentBlock = writeAdjustmentBlock; exports.writeLfx2 = writeLfx2; exports.writePatternBlock = writePatternBlock; exports.writePsd = writePsd; exports.writeRegion = _chunkCRMAXIUVcjs.writeRegion; exports.xyToTempTint = xyToTempTint; exports.xyToUv = xyToUv;
16068
+ exports.ADJUSTMENT_KEYS = ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = ADJUSTMENT_LUT_SIZE; exports.AS_SHOT_KELVIN = AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = BACKGROUND_LAYER_NAME; exports.BLEND_MODES = _chunkCRMAXIUVcjs.BLEND_MODES; exports.BLUR_FILTER_ID = BLUR_FILTER_ID; exports.BRUSH_OPTION_CONTROLS = BRUSH_OPTION_CONTROLS; exports.CoverageMap = _chunkZZOTHJ4Kcjs.CoverageMap; exports.D50 = D50; exports.D65 = D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_BRUSH = _chunkZZOTHJ4Kcjs.DEFAULT_BRUSH; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_GLOBAL_LIGHT = _chunkWT6ZAWJPcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MIXER = _chunkZZOTHJ4Kcjs.DEFAULT_MIXER; exports.DEFAULT_REFINE_EDGE_PARAMS = DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEVELOP_FILTER_ID = DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkWT6ZAWJPcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DabWalker = _chunkZZOTHJ4Kcjs.DabWalker; exports.EMPTY_DISTANCE = EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkZZOTHJ4Kcjs.EMPTY_MIXER_LOAD; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GUIDED_FILTER_EPS = GUIDED_FILTER_EPS; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = HUE_RANGE_LABELS; exports.IDENTITY_MATRIX3 = IDENTITY_MATRIX3; exports.IMAGE_ADJUSTMENT_CONTROLS = IMAGE_ADJUSTMENT_CONTROLS; exports.IMAGE_EDITOR_SCHEMA_VERSION = IMAGE_EDITOR_SCHEMA_VERSION; exports.IMAGE_EDITOR_STATE_VERSION = IMAGE_EDITOR_STATE_VERSION; exports.INTERPOLATIONS = _chunkWT6ZAWJPcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.LATEST_PROCESS_VERSION = LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkWT6ZAWJPcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = LEGACY_PROCESS_VERSION; exports.LUMA_709 = LUMA_709; exports.LayerCompositor = LayerCompositor; exports.LayerEffectError = _chunkWT6ZAWJPcjs.LayerEffectError; exports.LayerOperationError = LayerOperationError; exports.MAX_BRUSH_SIZE = _chunkZZOTHJ4Kcjs.MAX_BRUSH_SIZE; exports.MAX_EFFECT_REACH = _chunkWT6ZAWJPcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = MAX_KELVIN; exports.MAX_TRANSFORM_PIXELS = _chunkWT6ZAWJPcjs.MAX_TRANSFORM_PIXELS; exports.MIN_KELVIN = MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkZZOTHJ4Kcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkZZOTHJ4Kcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkZZOTHJ4Kcjs.MIXING_MODELS; exports.MixerStroke = _chunkZZOTHJ4Kcjs.MixerStroke; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PATTERN_BLOCK_KEYS = PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkCRMAXIUVcjs.PIGMENT_BANDS; exports.PIGMENT_LAMBDA_MIN = _chunkCRMAXIUVcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCRMAXIUVcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_WAVELENGTHS = _chunkCRMAXIUVcjs.PIGMENT_WAVELENGTHS; exports.PSD_BLEND_KEYS = PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.PaintGesture = PaintGesture; exports.PaintStrokeSession = PaintStrokeSession; exports.PatternPlacement = _chunkWT6ZAWJPcjs.PatternPlacement; exports.PatternTile = _chunkWT6ZAWJPcjs.PatternTile; exports.PsdError = PsdError; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.SELECTION_MODES = SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SUPPORTED_ADJUSTMENT_KEYS = SUPPORTED_ADJUSTMENT_KEYS; exports.SelectionGesture = SelectionGesture; exports.StrokeCoverage = _chunkZZOTHJ4Kcjs.StrokeCoverage; exports.SurfaceDraft = _chunkCRMAXIUVcjs.SurfaceDraft; exports.TILE = _chunkCRMAXIUVcjs.TILE; exports.TILE_SHIFT = _chunkCRMAXIUVcjs.TILE_SHIFT; exports.TINT_SCALE = TINT_SCALE; exports.TONE_LUT_SIZE = TONE_LUT_SIZE; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = TRANSFORM_ANCHORS; exports.TiledSurface = _chunkCRMAXIUVcjs.TiledSurface; exports.TransformTooLargeError = _chunkWT6ZAWJPcjs.TransformTooLargeError; exports.VIBRANCE_GREY = VIBRANCE_GREY; exports.WARP_STYLES = _chunkDWGZUSEScjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkDWGZUSEScjs.WARP_STYLE_LABELS; exports.XYZ_D50_TO_SRGB = XYZ_D50_TO_SRGB; exports.ZlibError = _chunkWT6ZAWJPcjs.ZlibError; exports.activeAdjustmentLayers = activeAdjustmentLayers; exports.addLayerEffect = addLayerEffect; exports.addLayerFilter = addLayerFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = adjustmentKindLabel; exports.adjustmentLayersKey = adjustmentLayersKey; exports.adjustmentNodeAsLayer = adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = adjustmentNodeFromLegacy; exports.adler32 = _chunkWT6ZAWJPcjs.adler32; exports.anchorPoint = anchorPoint; exports.annotationLayerFor = annotationLayerFor; exports.annotationLayerName = annotationLayerName; exports.applyAdjustmentLayers = applyAdjustmentLayers; exports.applyAdjustments = applyAdjustments; exports.applyBoxBlur = applyBoxBlur; exports.applyDepthMask = applyDepthMask; exports.applyHomography = _chunkMUUXNRU4cjs.applyHomography; exports.applyImageProjectionToContext = applyImageProjectionToContext; exports.applyLegacyAdjustments = applyLegacyAdjustments; exports.applyMatrix3 = applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = applyParams; exports.applyProcess2Adjustments = applyProcess2Adjustments; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyStrokeToTile = _chunkZZOTHJ4Kcjs.applyStrokeToTile; exports.backgroundLayer = backgroundLayer; exports.base64ToBytes = _chunkWT6ZAWJPcjs.base64ToBytes; exports.baseProjection = baseProjection; exports.blackWhiteGray = blackWhiteGray; exports.blendChannel = _chunkCRMAXIUVcjs.blendChannel; exports.blendImageData = _chunkCRMAXIUVcjs.blendImageData; exports.blendLum = _chunkCRMAXIUVcjs.blendLum; exports.blendPixel = _chunkCRMAXIUVcjs.blendPixel; exports.blendRgb = _chunkCRMAXIUVcjs.blendRgb; exports.blendTile = _chunkWT6ZAWJPcjs.blendTile; exports.blurFilter = blurFilter; exports.borderCoverage = borderCoverage; exports.boxMean = boxMean; exports.boxPointOf = boxPointOf; exports.boxQuad = _chunkMUUXNRU4cjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = bradfordAdaptation; exports.buildLayerMaskPlanes = buildLayerMaskPlanes; exports.buildToneLut = buildToneLut; exports.builtinPattern = _chunkWT6ZAWJPcjs.builtinPattern; exports.builtinPatternIds = _chunkWT6ZAWJPcjs.builtinPatternIds; exports.bytesToBase64 = _chunkWT6ZAWJPcjs.bytesToBase64; exports.calculateCropDrag = calculateCropDrag; exports.canvasCompositeOperation = _chunkCRMAXIUVcjs.canvasCompositeOperation; exports.canvasToImagePoint = canvasToImagePoint; exports.changedTiles = _chunkWT6ZAWJPcjs.changedTiles; exports.clampControlValue = clampControlValue; exports.clampCropToImage = clampCropToImage; exports.cleanMixer = _chunkZZOTHJ4Kcjs.cleanMixer; exports.collectTiles = _chunkCRMAXIUVcjs.collectTiles; exports.colorBalanceChannel = colorBalanceChannel; exports.colorRange = colorRange; exports.combineSelections = combineSelections; exports.compileAdjustmentLayer = compileAdjustmentLayer; exports.compositeSurfaceOver = _chunkWT6ZAWJPcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = computeSelectionBounds; exports.contentBounds = _chunkCRMAXIUVcjs.contentBounds; exports.contractCoverage = contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.cornersFromMatrix = cornersFromMatrix; exports.coverageTileCoord = _chunkZZOTHJ4Kcjs.coverageTileCoord; exports.coverageToByte = coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = createAdjustmentLayer; exports.createImageCaptureSurface = createImageCaptureSurface; exports.createImageEditTools = createImageEditTools; exports.createImageEditorToolProvider = createImageEditorToolProvider; exports.createImageEffectTools = createImageEffectTools; exports.createImageLayerTools = createImageLayerTools; exports.createImagePaintTools = createImagePaintTools; exports.createImagePsdTools = createImagePsdTools; exports.createImageSelectionTools = createImageSelectionTools; exports.createImageTransformTools = createImageTransformTools; exports.createPigment = _chunkCRMAXIUVcjs.createPigment; exports.createPigmentTools = _chunkZZOTHJ4Kcjs.createPigmentTools; exports.createSelectionMask = createSelectionMask; exports.curveLut = _chunkWT6ZAWJPcjs.curveLut; exports.curveLutFromLevels = curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkZZOTHJ4Kcjs.dabCoverage; exports.dabRect = _chunkZZOTHJ4Kcjs.dabRect; exports.decodeLayerChannel = decodeLayerChannel; exports.decodeLayerMask = decodeLayerMask; exports.decodeMergedImage = decodeMergedImage; exports.decodePlanes = decodePlanes; exports.decodePng = _chunkWT6ZAWJPcjs.decodePng; exports.decodePngDataUrl = decodePngDataUrl; exports.decodeSelectionRle = decodeSelectionRle; exports.defaultAdjustmentParams = defaultAdjustmentParams; exports.defaultEffectGradient = _chunkWT6ZAWJPcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkWT6ZAWJPcjs.defaultLayerEffect; exports.deflate = _chunkWT6ZAWJPcjs.deflate; exports.deflateRaw = _chunkWT6ZAWJPcjs.deflateRaw; exports.depthMaskAlpha = depthMaskAlpha; exports.depthRasterMask = depthRasterMask; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = describeTransform; exports.deserializeEffects = deserializeEffects; exports.deserializeLayer = deserializeLayer; exports.deserializeLayers = deserializeLayers; exports.deserializePatterns = deserializePatterns; exports.deserializeSelection = deserializeSelection; exports.developFilter = developFilter; exports.developFromAdjustments = developFromAdjustments; exports.developTarget = developTarget; exports.distanceTransform = distanceTransform; exports.downloadPsd = downloadPsd; exports.dragWarpMeshPoint = _chunkDWGZUSEScjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.duplicateLayer = duplicateLayer; exports.edgeWidth = edgeWidth; exports.effectColorHex = _chunkWT6ZAWJPcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectReach = _chunkWT6ZAWJPcjs.effectReach; exports.effectsFingerprint = _chunkWT6ZAWJPcjs.effectsFingerprint; exports.effectsMargin = _chunkWT6ZAWJPcjs.effectsMargin; exports.effectsScale = _chunkWT6ZAWJPcjs.effectsScale; exports.ellipsePoints = ellipsePoints; exports.ellipseSelection = ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunkCRMAXIUVcjs.emptySurface; exports.encodePng = _chunkWT6ZAWJPcjs.encodePng; exports.encodeRle = encodeRle; exports.encodeSelectionRle = encodeSelectionRle; exports.encodeSurface = encodeSurface; exports.evalWarpMesh = _chunkDWGZUSEScjs.evalWarpMesh; exports.evaluateAdjustmentLayers = evaluateAdjustmentLayers; exports.expandCoverage = expandCoverage; exports.exportPsd = exportPsd; exports.featherCoverage = featherCoverage; exports.fillRect = _chunkCRMAXIUVcjs.fillRect; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkWT6ZAWJPcjs.findLayer; exports.findLayerControl = findLayerControl; exports.finishTile = _chunkCRMAXIUVcjs.finishTile; exports.flattenLayers = _chunkWT6ZAWJPcjs.flattenLayers; exports.flipCorners = flipCorners; exports.formatControlValue = formatControlValue; exports.fullSelection = fullSelection; exports.gaussianBlur = _chunkWT6ZAWJPcjs.gaussianBlur; exports.geometryHomography = geometryHomography; exports.getAnnotationBounds = getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = getCropCursor; exports.getRotatedSize = getRotatedSize; exports.getViewportMetrics = getViewportMetrics; exports.getViewportProjection = getViewportProjection; exports.globalImageCache = globalImageCache; exports.greyMorphology = greyMorphology; exports.groupLayers = groupLayers; exports.guidePlanes = guidePlanes; exports.guidedFilterColor = guidedFilterColor; exports.handlePaintShortcut = handlePaintShortcut; exports.hasActiveEffects = _chunkWT6ZAWJPcjs.hasActiveEffects; exports.hasResampledLegacyMask = hasResampledLegacyMask; exports.hasWarp = hasWarp; exports.hashMaskContent = hashMaskContent; exports.hashNoise = _chunkWT6ZAWJPcjs.hashNoise; exports.hexToRgb = hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = hitTestAnnotation; exports.hitTestCrop = hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkMUUXNRU4cjs.homographyFromAffine; exports.homographyFromPoints = _chunkMUUXNRU4cjs.homographyFromPoints; exports.hslToRgb = hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = hueRangeTables; exports.hueRangeWeight = hueRangeWeight; exports.hueSaturation = hueSaturation; exports.identityCurve = identityCurve; exports.identityLevels = identityLevels; exports.identityTransform = identityTransform; exports.identityWarpMesh = _chunkDWGZUSEScjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageToCanvasPoint = imageToCanvasPoint; exports.importPsd = importPsd; exports.inflate = _chunkWT6ZAWJPcjs.inflate; exports.inflateRaw = _chunkWT6ZAWJPcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkWT6ZAWJPcjs.insertLayer; exports.invertHomography = _chunkMUUXNRU4cjs.invertHomography; exports.invertMatrix3 = invertMatrix3; exports.invertSelection = invertSelection; exports.isActiveFilter = isActiveFilter; exports.isAdjustmentKind = isAdjustmentKind; exports.isBlendMode = _chunkCRMAXIUVcjs.isBlendMode; exports.isDefaultDepthMask = isDefaultDepthMask; exports.isIdentityTransform = isIdentityTransform; exports.isInterpolation = _chunkWT6ZAWJPcjs.isInterpolation; exports.isLayerEffectKind = _chunkWT6ZAWJPcjs.isLayerEffectKind; exports.isLayerLocked = _chunkWT6ZAWJPcjs.isLayerLocked; exports.isLegacyShape = isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPng = _chunkWT6ZAWJPcjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = isQuarterTurnSwapped; exports.isSelectionEmpty = isSelectionEmpty; exports.isSelectionMode = isSelectionMode; exports.isSeparableBlendMode = _chunkCRMAXIUVcjs.isSeparableBlendMode; exports.isSpatialFilter = isSpatialFilter; exports.isTransformAnchor = isTransformAnchor; exports.isValidWarp = isValidWarp; exports.kelvinToTemperature = kelvinToTemperature; exports.keysWeight = _chunkWT6ZAWJPcjs.keysWeight; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkWT6ZAWJPcjs.layerEffectFields; exports.layerEffectLabel = _chunkWT6ZAWJPcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerLabel = layerLabel; exports.layerMaskCoverage = layerMaskCoverage; exports.layerMaskFromSelection = layerMaskFromSelection; exports.layerMaskKey = layerMaskKey; exports.layerMenu = layerMenu; exports.layerName = layerName; exports.layerPanelRows = layerPanelRows; exports.layerTree = layerTree; exports.layerTypeLabel = layerTypeLabel; exports.layersFromLegacy = layersFromLegacy; exports.legacyAdjustmentLayer = legacyAdjustmentLayer; exports.legacyMaskOf = legacyMaskOf; exports.legacyView = legacyView; exports.lerpPigment = _chunkCRMAXIUVcjs.lerpPigment; exports.lerpPigmentInto = _chunkCRMAXIUVcjs.lerpPigmentInto; exports.levelsValue = levelsValue; exports.linearSrgbToXy = linearSrgbToXy; exports.linearToSrgb = linearToSrgb; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkZZOTHJ4Kcjs.loadMixer; exports.magicWand = magicWand; exports.mapCropHandle = mapCropHandle; exports.mapLayer = _chunkWT6ZAWJPcjs.mapLayer; exports.maskSummary = maskSummary; exports.matrixFromCorners = matrixFromCorners; exports.matrixFromParams = matrixFromParams; exports.mergeLayerEffect = _chunkWT6ZAWJPcjs.mergeLayerEffect; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mixPigment8 = _chunkCRMAXIUVcjs.mixPigment8; exports.mixPigmentRgb = _chunkCRMAXIUVcjs.mixPigmentRgb; exports.mixPigments = _chunkCRMAXIUVcjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.modifySelection = modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = moveLayer; exports.mulMatrix3 = mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = neutralHueRange; exports.newEffectId = _chunkWT6ZAWJPcjs.newEffectId; exports.newLayerId = newLayerId; exports.normalizeAdjustmentLayer = normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = normalizeAdjustmentLayers; exports.normalizeAngle = normalizeAngle; exports.normalizeBlendMode = _chunkCRMAXIUVcjs.normalizeBlendMode; exports.normalizeBrush = _chunkZZOTHJ4Kcjs.normalizeBrush; exports.normalizeFilter = normalizeFilter; exports.normalizeLayerEffects = _chunkWT6ZAWJPcjs.normalizeLayerEffects; exports.normalizeLayerMask = normalizeLayerMask; exports.normalizeMixer = _chunkZZOTHJ4Kcjs.normalizeMixer; exports.normalizeProcessVersion = normalizeProcessVersion; exports.normalizeRect = normalizeRect; exports.normalizeRefineEdgeParams = normalizeRefineEdgeParams; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.offsetLayer = offsetLayer; exports.openPsdFile = openPsdFile; exports.packRgba = _chunkCRMAXIUVcjs.packRgba; exports.parseAdjustmentBlock = parseAdjustmentBlock; exports.parseBlend = parseBlend; exports.parseColor = parseColor; exports.parseDataUrl = _chunkWT6ZAWJPcjs.parseDataUrl; exports.parseEffectColor = _chunkWT6ZAWJPcjs.parseEffectColor; exports.parseLfx2 = parseLfx2; exports.parseLrfx = parseLrfx; exports.parsePatternBlock = parsePatternBlock; exports.parseSelectionMode = parseSelectionMode; exports.parseVersionedDescriptor = parseVersionedDescriptor; exports.photoFilterMatrix = photoFilterMatrix; exports.pixelLayerBounds = pixelLayerBounds; exports.pixelLayers = pixelLayers; exports.placeLayer = placeLayer; exports.pngDataUrl = _chunkWT6ZAWJPcjs.pngDataUrl; exports.pointerPressure = pointerPressure; exports.polygonCoverage = polygonCoverage; exports.polygonSelection = polygonSelection; exports.posterizeValue = posterizeValue; exports.presetWarp = presetWarp; exports.previewStep = previewStep; exports.projectImagePoint = projectImagePoint; exports.projectImageRect = projectImageRect; exports.projectMaskCoverage = projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = psdPatternToEffectPattern; exports.psdToLayers = psdToLayers; exports.pullWarpMesh = _chunkDWGZUSEScjs.pullWarpMesh; exports.quickMaskPixels = quickMaskPixels; exports.rangeLightness = rangeLightness; exports.rasterMaskFromLegacy = rasterMaskFromLegacy; exports.rasterizeDab = _chunkZZOTHJ4Kcjs.rasterizeDab; exports.readAdjustmentControls = readAdjustmentControls; exports.readPixel = _chunkCRMAXIUVcjs.readPixel; exports.readPsd = readPsd; exports.readRegion = _chunkCRMAXIUVcjs.readRegion; exports.rectSelection = rectSelection; exports.rectToQuad = _chunkMUUXNRU4cjs.rectToQuad; exports.reduceSurface = _chunkWT6ZAWJPcjs.reduceSurface; exports.referencePoint = referencePoint; exports.refineCoverage = refineCoverage; exports.refineEdgeHalo = refineEdgeHalo; exports.refineSelection = refineSelection; exports.reflectanceToRgb = _chunkCRMAXIUVcjs.reflectanceToRgb; exports.removeAlpha = removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = removeLayer; exports.removeLayerEffect = removeLayerEffect; exports.removeLayerFilter = removeLayerFilter; exports.renderLayerEffects = _chunkWT6ZAWJPcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.requireLayer = requireLayer; exports.requireUnlocked = requireUnlocked; exports.resizePixels = resizePixels; exports.resizeSelection = resizeSelection; exports.resizeWarpMesh = _chunkDWGZUSEScjs.resizeWarpMesh; exports.resolveExternalAssets = resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.rgbToGray = rgbToGray; exports.rgbToHsl = rgbToHsl; exports.rgbToReflectance = _chunkCRMAXIUVcjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.runLayerMenuAction = runLayerMenuAction; exports.sampleLut = sampleLut; exports.sampleToneLut = sampleToneLut; exports.scaleLayerEffect = _chunkWT6ZAWJPcjs.scaleLayerEffect; exports.selectionArea = selectionArea; exports.selectionFromCoverage = selectionFromCoverage; exports.selectionFromPixels = selectionFromPixels; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionToCoverage = selectionToCoverage; exports.selectionToPixels = selectionToPixels; exports.selectionValueAt = selectionValueAt; exports.serializeEffects = serializeEffects; exports.serializeLayer = serializeLayer; exports.serializeLayers = serializeLayers; exports.serializeLayersExternal = serializeLayersExternal; exports.serializePatterns = serializePatterns; exports.serializeSelection = serializeSelection; exports.setControlPath = setControlPath; exports.setLayerEffects = setLayerEffects; exports.setLayerEffectsEnabled = setLayerEffectsEnabled; exports.setLayerMask = setLayerMask; exports.setLayerProperties = setLayerProperties; exports.setLum = _chunkCRMAXIUVcjs.setLum; exports.setPigmentColor = _chunkCRMAXIUVcjs.setPigmentColor; exports.shiftCoverage = shiftCoverage; exports.smoothCoverage = smoothCoverage; exports.smoothPoints = _chunkZZOTHJ4Kcjs.smoothPoints; exports.solidSurface = _chunkCRMAXIUVcjs.solidSurface; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.srgb8ToLab = srgb8ToLab; exports.srgbToLinear = srgbToLinear; exports.sumHistograms = sumHistograms; exports.surfaceBytes = _chunkCRMAXIUVcjs.surfaceBytes; exports.surfaceFromPixels = _chunkCRMAXIUVcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCRMAXIUVcjs.surfacesEqual; exports.tempTintToXy = tempTintToXy; exports.temperatureToKelvin = temperatureToKelvin; exports.tileCoord = _chunkCRMAXIUVcjs.tileCoord; exports.tileKey = _chunkCRMAXIUVcjs.tileKey; exports.tileRect = _chunkCRMAXIUVcjs.tileRect; exports.tilesInRect = _chunkCRMAXIUVcjs.tilesInRect; exports.tipFalloff = _chunkZZOTHJ4Kcjs.tipFalloff; exports.tipReach = _chunkZZOTHJ4Kcjs.tipReach; exports.tipShape = _chunkZZOTHJ4Kcjs.tipShape; exports.toHex = toHex2; exports.toneCurve = toneCurve; exports.toneLuts = toneLuts; exports.toneRange = toneRange; exports.transformHomography = transformHomography; exports.transformMap = transformMap; exports.transformSurface = _chunkWT6ZAWJPcjs.transformSurface; exports.transformedBounds = _chunkWT6ZAWJPcjs.transformedBounds; exports.transformedBox = transformedBox; exports.transformedPoint = transformedPoint; exports.translateSurface = _chunkCRMAXIUVcjs.translateSurface; exports.ungroupLayer = ungroupLayer; exports.uniformTile = _chunkCRMAXIUVcjs.uniformTile; exports.unionRect = unionRect; exports.unprojectCanvasPoint = unprojectCanvasPoint; exports.updateLayerEffect = updateLayerEffect; exports.updateLayerFilter = updateLayerFilter; exports.updateLayerMaskProps = updateLayerMaskProps; exports.uvToXy = uvToXy; exports.validateEffectGradient = _chunkWT6ZAWJPcjs.validateEffectGradient; exports.validateLayerEffect = _chunkWT6ZAWJPcjs.validateLayerEffect; exports.validateLayerEffects = _chunkWT6ZAWJPcjs.validateLayerEffects; exports.versionedDescriptorBytes = versionedDescriptorBytes; exports.vibranceLinear = vibranceLinear; exports.vibrancePixel = vibrancePixel; exports.walkDabs = _chunkZZOTHJ4Kcjs.walkDabs; exports.warpMeshEditPoints = _chunkDWGZUSEScjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkDWGZUSEScjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkDWGZUSEScjs.warpMeshParamAt; exports.warpPresetMesh = _chunkDWGZUSEScjs.warpPresetMesh; exports.warpSurface = _chunkWT6ZAWJPcjs.warpSurface; exports.wbMatrix = wbMatrix; exports.whiteBalanceFromSample = whiteBalanceFromSample; exports.whiteBalanceMatrix = whiteBalanceMatrix; exports.withNewIds = withNewIds; exports.writeAdjustmentBlock = writeAdjustmentBlock; exports.writeLfx2 = writeLfx2; exports.writePatternBlock = writePatternBlock; exports.writePsd = writePsd; exports.writeRegion = _chunkCRMAXIUVcjs.writeRegion; exports.xyToTempTint = xyToTempTint; exports.xyToUv = xyToUv;
15585
16069
  //# sourceMappingURL=index.cjs.map