@pixerate/editor 0.186.0 → 0.187.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.
@@ -113,6 +113,12 @@ export interface SelectionCommandOptions {
113
113
  }
114
114
  /** How the canvas shows the selection: marching ants, a Quick Mask tint, or not at all. */
115
115
  export type SelectionDisplay = 'ants' | 'quickMask' | 'none';
116
+ /** What `exportMaskImage` writes: the selection, an alpha channel or a layer's painted mask. */
117
+ export type MaskImageSource = 'selection' | {
118
+ channelId: string;
119
+ } | {
120
+ layerId: string;
121
+ };
116
122
  /** Where an AI result goes (see `applyInpaintedImage`, `applyBackgroundRemovedImage`). */
117
123
  export interface AIResultOptions {
118
124
  /** `new-layer`: a new layer (inpainting) or a mask (background removal); `replace`: the Background's pixels. Default: by `isMultiLayer`. */
@@ -1448,6 +1454,29 @@ export declare class ImageEditorController {
1448
1454
  threshold?: number;
1449
1455
  mode?: SelectionMode;
1450
1456
  }): Promise<SelectionMask | null>;
1457
+ /**
1458
+ * Loads a mask image (a data URL / URL or RGBA pixels, any size, resampled) into a new alpha
1459
+ * channel, read like `loadSelectionFromImage`. The selection does not change. One undo step.
1460
+ */
1461
+ loadChannelFromImage(source: string | PixelBuffer, options?: {
1462
+ name?: string;
1463
+ channel?: SelectionChannel;
1464
+ invert?: boolean;
1465
+ threshold?: number;
1466
+ }): Promise<AlphaChannel>;
1467
+ /**
1468
+ * A full-size greyscale PNG (white = selected / revealed) of the selection, an alpha channel or
1469
+ * a layer's painted mask, as a data URL; `invert` swaps black and white, `maxSide` scales it
1470
+ * down. Encoded in code, so it works without a canvas. Throws when the source is missing.
1471
+ */
1472
+ exportMaskImage(source: MaskImageSource, options?: {
1473
+ invert?: boolean;
1474
+ maxSide?: number;
1475
+ }): {
1476
+ width: number;
1477
+ height: number;
1478
+ dataUrl: string;
1479
+ };
1451
1480
  /** A mask image (data URL / URL, or pixels as they are) as RGBA pixels. */
1452
1481
  private decodeMaskImage;
1453
1482
  /**
@@ -1493,6 +1522,8 @@ export declare class ImageEditorController {
1493
1522
  name?: string;
1494
1523
  mode?: SelectionMode;
1495
1524
  }): AlphaChannel;
1525
+ /** Appends a new channel holding `mask` (canvas-sized) as one undo step. */
1526
+ private addChannel;
1496
1527
  /**
1497
1528
  * Select › Load Selection from an alpha channel (inverted with `invert`), combined with the
1498
1529
  * selection by `mode`. One undo step.
@@ -1546,6 +1577,8 @@ export declare class ImageEditorController {
1546
1577
  * with `invert`. False without a painted mask (a depth mask is computed, not painted).
1547
1578
  */
1548
1579
  selectionFromLayerMask(layerId: string, mode?: SelectionMode, invert?: boolean): boolean;
1580
+ /** A layer's painted mask over the canvas as a selection mask; null without one (or for a depth mask). */
1581
+ private layerMaskCoverage;
1549
1582
  /**
1550
1583
  * Histogram of the last rendered preview (after adjustments and layers, before annotations),
1551
1584
  * or `null` before the first render or without canvas pixel access.
@@ -113,6 +113,12 @@ export interface SelectionCommandOptions {
113
113
  }
114
114
  /** How the canvas shows the selection: marching ants, a Quick Mask tint, or not at all. */
115
115
  export type SelectionDisplay = 'ants' | 'quickMask' | 'none';
116
+ /** What `exportMaskImage` writes: the selection, an alpha channel or a layer's painted mask. */
117
+ export type MaskImageSource = 'selection' | {
118
+ channelId: string;
119
+ } | {
120
+ layerId: string;
121
+ };
116
122
  /** Where an AI result goes (see `applyInpaintedImage`, `applyBackgroundRemovedImage`). */
117
123
  export interface AIResultOptions {
118
124
  /** `new-layer`: a new layer (inpainting) or a mask (background removal); `replace`: the Background's pixels. Default: by `isMultiLayer`. */
@@ -1448,6 +1454,29 @@ export declare class ImageEditorController {
1448
1454
  threshold?: number;
1449
1455
  mode?: SelectionMode;
1450
1456
  }): Promise<SelectionMask | null>;
1457
+ /**
1458
+ * Loads a mask image (a data URL / URL or RGBA pixels, any size, resampled) into a new alpha
1459
+ * channel, read like `loadSelectionFromImage`. The selection does not change. One undo step.
1460
+ */
1461
+ loadChannelFromImage(source: string | PixelBuffer, options?: {
1462
+ name?: string;
1463
+ channel?: SelectionChannel;
1464
+ invert?: boolean;
1465
+ threshold?: number;
1466
+ }): Promise<AlphaChannel>;
1467
+ /**
1468
+ * A full-size greyscale PNG (white = selected / revealed) of the selection, an alpha channel or
1469
+ * a layer's painted mask, as a data URL; `invert` swaps black and white, `maxSide` scales it
1470
+ * down. Encoded in code, so it works without a canvas. Throws when the source is missing.
1471
+ */
1472
+ exportMaskImage(source: MaskImageSource, options?: {
1473
+ invert?: boolean;
1474
+ maxSide?: number;
1475
+ }): {
1476
+ width: number;
1477
+ height: number;
1478
+ dataUrl: string;
1479
+ };
1451
1480
  /** A mask image (data URL / URL, or pixels as they are) as RGBA pixels. */
1452
1481
  private decodeMaskImage;
1453
1482
  /**
@@ -1493,6 +1522,8 @@ export declare class ImageEditorController {
1493
1522
  name?: string;
1494
1523
  mode?: SelectionMode;
1495
1524
  }): AlphaChannel;
1525
+ /** Appends a new channel holding `mask` (canvas-sized) as one undo step. */
1526
+ private addChannel;
1496
1527
  /**
1497
1528
  * Select › Load Selection from an alpha channel (inverted with `invert`), combined with the
1498
1529
  * selection by `mode`. One undo step.
@@ -1546,6 +1577,8 @@ export declare class ImageEditorController {
1546
1577
  * with `invert`. False without a painted mask (a depth mask is computed, not painted).
1547
1578
  */
1548
1579
  selectionFromLayerMask(layerId: string, mode?: SelectionMode, invert?: boolean): boolean;
1580
+ /** A layer's painted mask over the canvas as a selection mask; null without one (or for a depth mask). */
1581
+ private layerMaskCoverage;
1549
1582
  /**
1550
1583
  * Histogram of the last rendered preview (after adjustments and layers, before annotations),
1551
1584
  * or `null` before the first render or without canvas pixel access.
@@ -8220,6 +8220,39 @@ var ImageEditorController = (_class10 = class {
8220
8220
  this.setSelection(_chunkX2KQQZBTcjs.selectionFromPixels.call(void 0, pixels, options), _nullishCoalesce(options.mode, () => ( "replace")));
8221
8221
  return this.getSelection();
8222
8222
  }
8223
+ /**
8224
+ * Loads a mask image (a data URL / URL or RGBA pixels, any size, resampled) into a new alpha
8225
+ * channel, read like `loadSelectionFromImage`. The selection does not change. One undo step.
8226
+ */
8227
+ async loadChannelFromImage(source, options = {}) {
8228
+ const mask = _chunkX2KQQZBTcjs.selectionFromPixels.call(void 0, await this.decodeMaskImage(source), options);
8229
+ const { width, height } = this.naturalSize;
8230
+ return this.addChannel(mask.width === width && mask.height === height ? mask : _chunkX2KQQZBTcjs.resizeSelection.call(void 0, mask, width, height), options.name);
8231
+ }
8232
+ /**
8233
+ * A full-size greyscale PNG (white = selected / revealed) of the selection, an alpha channel or
8234
+ * a layer's painted mask, as a data URL; `invert` swaps black and white, `maxSide` scales it
8235
+ * down. Encoded in code, so it works without a canvas. Throws when the source is missing.
8236
+ */
8237
+ exportMaskImage(source, options = {}) {
8238
+ let mask;
8239
+ if (source === "selection") {
8240
+ const sel = this.state.selection;
8241
+ if (!_optionalChain([sel, 'optionalAccess', _314 => _314.bounds])) throw new (0, _chunkX2KQQZBTcjs.LayerOperationError)("Nothing is selected; select first, or export a channel or a layer mask.");
8242
+ mask = sel;
8243
+ } else if ("channelId" in source) {
8244
+ mask = this.requireChannel(source.channelId).mask;
8245
+ } else {
8246
+ const layer = _chunkX2KQQZBTcjs.requireLayer.call(void 0, this.state.layers, source.layerId).layer;
8247
+ const coverage = this.layerMaskCoverage(source.layerId);
8248
+ if (!coverage) throw new (0, _chunkX2KQQZBTcjs.LayerOperationError)(`Layer "${layer.name || source.layerId}" has no painted mask to export.`);
8249
+ mask = coverage;
8250
+ }
8251
+ const k = options.maxSide ? Math.min(1, options.maxSide / Math.max(mask.width, mask.height)) : 1;
8252
+ if (k < 1) mask = _chunkX2KQQZBTcjs.resizeSelection.call(void 0, mask, Math.max(1, Math.round(mask.width * k)), Math.max(1, Math.round(mask.height * k)));
8253
+ if (options.invert) mask = _chunkX2KQQZBTcjs.invertSelection.call(void 0, mask);
8254
+ return { width: mask.width, height: mask.height, dataUrl: _chunkCWM3CUUXcjs.pngDataUrl.call(void 0, mask.width, mask.height, mask.data, 1) };
8255
+ }
8223
8256
  /** A mask image (data URL / URL, or pixels as they are) as RGBA pixels. */
8224
8257
  async decodeMaskImage(source) {
8225
8258
  if (typeof source !== "string") return source;
@@ -8229,7 +8262,7 @@ var ImageEditorController = (_class10 = class {
8229
8262
  const canvas = this.renderer.createCanvas(w, h);
8230
8263
  const ctx = canvas.getContext("2d");
8231
8264
  if (ctx) ctx.drawImage(img, 0, 0, w, h);
8232
- const data = _optionalChain([ctx, 'optionalAccess', _314 => _314.getImageData, 'optionalCall', _315 => _315(0, 0, w, h)]);
8265
+ const data = _optionalChain([ctx, 'optionalAccess', _315 => _315.getImageData, 'optionalCall', _316 => _316(0, 0, w, h)]);
8233
8266
  if (!data) throw new Error("The mask image pixels are not available (no canvas access); pass pixels.");
8234
8267
  return { width: w, height: h, data: data.data };
8235
8268
  }
@@ -8247,24 +8280,24 @@ var ImageEditorController = (_class10 = class {
8247
8280
  const { width, height } = this.naturalSize;
8248
8281
  const image = await this.toDataURL({ format: "image/png" });
8249
8282
  const results = await provider.segment({ image, width, height, target: description, maxSegments: options.maxSegments, signal: options.signal });
8250
- _optionalChain([options, 'access', _316 => _316.signal, 'optionalAccess', _317 => _317.throwIfAborted, 'call', _318 => _318()]);
8283
+ _optionalChain([options, 'access', _317 => _317.signal, 'optionalAccess', _318 => _318.throwIfAborted, 'call', _319 => _319()]);
8251
8284
  const decoded = [];
8252
8285
  for (const r of _nullishCoalesce(results, () => ( []))) {
8253
8286
  decoded.push({ ...r, mask: r.mask !== void 0 ? await this.decodeMaskImage(r.mask) : void 0 });
8254
8287
  }
8255
8288
  const segments = decoded.map((r) => {
8256
8289
  const one = segmentsToSelection(width, height, [r]);
8257
- return { label: r.label || description, bounds: _nullishCoalesce(_optionalChain([one, 'optionalAccess', _319 => _319.bounds]), () => ( null)), ...r.score !== void 0 ? { score: r.score } : {} };
8290
+ return { label: r.label || description, bounds: _nullishCoalesce(_optionalChain([one, 'optionalAccess', _320 => _320.bounds]), () => ( null)), ...r.score !== void 0 ? { score: r.score } : {} };
8258
8291
  });
8259
8292
  const mask = segmentsToSelection(width, height, decoded);
8260
8293
  if (mask && options.beforeApply) {
8261
8294
  const outlines = decoded.flatMap((r, i) => {
8262
8295
  const rings = segmentationOutlines(r);
8263
- const b = _optionalChain([segments, 'access', _320 => _320[i], 'optionalAccess', _321 => _321.bounds]);
8296
+ const b = _optionalChain([segments, 'access', _321 => _321[i], 'optionalAccess', _322 => _322.bounds]);
8264
8297
  return rings.length ? rings : b ? [[{ x: b.x, y: b.y }, { x: b.x + b.width, y: b.y }, { x: b.x + b.width, y: b.y + b.height }, { x: b.x, y: b.y + b.height }]] : [];
8265
8298
  });
8266
8299
  await options.beforeApply(outlines);
8267
- _optionalChain([options, 'access', _322 => _322.signal, 'optionalAccess', _323 => _323.throwIfAborted, 'call', _324 => _324()]);
8300
+ _optionalChain([options, 'access', _323 => _323.signal, 'optionalAccess', _324 => _324.throwIfAborted, 'call', _325 => _325()]);
8268
8301
  }
8269
8302
  if (mask) this.shapeCommand(mask, options);
8270
8303
  return { segments: segments.filter((s) => s.bounds) };
@@ -8297,7 +8330,7 @@ var ImageEditorController = (_class10 = class {
8297
8330
  return _nullishCoalesce(this.state.channels, () => ( []));
8298
8331
  }
8299
8332
  getChannel(id) {
8300
- return _nullishCoalesce(_optionalChain([this, 'access', _325 => _325.state, 'access', _326 => _326.channels, 'optionalAccess', _327 => _327.find, 'call', _328 => _328((c) => c.id === id)]), () => ( null));
8333
+ return _nullishCoalesce(_optionalChain([this, 'access', _326 => _326.state, 'access', _327 => _327.channels, 'optionalAccess', _328 => _328.find, 'call', _329 => _329((c) => c.id === id)]), () => ( null));
8301
8334
  }
8302
8335
  requireChannel(id) {
8303
8336
  const channel = this.getChannel(id);
@@ -8326,21 +8359,26 @@ var ImageEditorController = (_class10 = class {
8326
8359
  */
8327
8360
  saveSelection(options = {}) {
8328
8361
  const sel = this.state.selection;
8329
- if (!_optionalChain([sel, 'optionalAccess', _329 => _329.bounds])) throw new (0, _chunkX2KQQZBTcjs.LayerOperationError)("Nothing is selected; select first, then save the selection to a channel.");
8362
+ if (!_optionalChain([sel, 'optionalAccess', _330 => _330.bounds])) throw new (0, _chunkX2KQQZBTcjs.LayerOperationError)("Nothing is selected; select first, then save the selection to a channel.");
8330
8363
  const { width, height } = this.naturalSize;
8331
8364
  const sized = sel.width === width && sel.height === height ? sel : _chunkX2KQQZBTcjs.resizeSelection.call(void 0, sel, width, height);
8332
8365
  const channels = [...this.getChannels()];
8333
8366
  if (options.channelId !== void 0) {
8334
8367
  const existing = this.requireChannel(options.channelId);
8335
8368
  const mask = _nullishCoalesce(_chunkX2KQQZBTcjs.combineSelections.call(void 0, existing.mask.bounds ? existing.mask : null, sized, _nullishCoalesce(options.mode, () => ( "replace"))), () => ( _chunkX2KQQZBTcjs.createSelectionMask.call(void 0, width, height)));
8336
- const next = { ...existing, mask, ..._optionalChain([options, 'access', _330 => _330.name, 'optionalAccess', _331 => _331.trim, 'call', _332 => _332()]) ? { name: options.name.trim() } : {} };
8369
+ const next = { ...existing, mask, ..._optionalChain([options, 'access', _331 => _331.name, 'optionalAccess', _332 => _332.trim, 'call', _333 => _333()]) ? { name: options.name.trim() } : {} };
8337
8370
  this.setChannels(channels.map((c) => c.id === existing.id ? next : c));
8338
8371
  return next;
8339
8372
  }
8373
+ return this.addChannel(sized, options.name);
8374
+ }
8375
+ /** Appends a new channel holding `mask` (canvas-sized) as one undo step. */
8376
+ addChannel(mask, name) {
8377
+ const channels = this.getChannels();
8340
8378
  const channel = {
8341
8379
  id: this.newChannelId(),
8342
- name: _optionalChain([options, 'access', _333 => _333.name, 'optionalAccess', _334 => _334.trim, 'call', _335 => _335()]) || `Alpha ${channels.length + 1}`,
8343
- mask: sized,
8380
+ name: _optionalChain([name, 'optionalAccess', _334 => _334.trim, 'call', _335 => _335()]) || `Alpha ${channels.length + 1}`,
8381
+ mask,
8344
8382
  color: DEFAULT_CHANNEL_COLOR,
8345
8383
  opacity: 0.5,
8346
8384
  indicates: "masked",
@@ -8486,14 +8524,19 @@ var ImageEditorController = (_class10 = class {
8486
8524
  * with `invert`. False without a painted mask (a depth mask is computed, not painted).
8487
8525
  */
8488
8526
  selectionFromLayerMask(layerId, mode = "replace", invert2 = false) {
8527
+ const sel = this.layerMaskCoverage(layerId);
8528
+ if (!sel) return false;
8529
+ return this.setSelection(invert2 ? _chunkX2KQQZBTcjs.invertSelection.call(void 0, sel) : sel, mode);
8530
+ }
8531
+ /** A layer's painted mask over the canvas as a selection mask; null without one (or for a depth mask). */
8532
+ layerMaskCoverage(layerId) {
8489
8533
  const layer = this.getLayer(layerId);
8490
- if (!_optionalChain([layer, 'optionalAccess', _340 => _340.mask]) || layer.mask.source) return false;
8534
+ if (!_optionalChain([layer, 'optionalAccess', _340 => _340.mask]) || layer.mask.source) return null;
8491
8535
  const { width, height } = this.naturalSize;
8492
8536
  const ox = layer.type === "pixel" ? layer.offset.x : 0;
8493
8537
  const oy = layer.type === "pixel" ? layer.offset.y : 0;
8494
8538
  const data = _chunkCWM3CUUXcjs.readRegion.call(void 0, layer.mask.surface, { x: -ox, y: -oy, width, height });
8495
- const sel = _chunkX2KQQZBTcjs.createSelectionMask.call(void 0, width, height, new Uint8Array(data.buffer, data.byteOffset, data.length));
8496
- return this.setSelection(invert2 ? _chunkX2KQQZBTcjs.invertSelection.call(void 0, sel) : sel, mode);
8539
+ return _chunkX2KQQZBTcjs.createSelectionMask.call(void 0, width, height, new Uint8Array(data.buffer, data.byteOffset, data.length));
8497
8540
  }
8498
8541
  // --- Histogram ---
8499
8542
  /**
@@ -10851,7 +10894,7 @@ var DEPTH_MASK_CONTROLS = [
10851
10894
  // src/image-editor/playback.ts
10852
10895
  var IMAGE_PLAYBACK_KIND = "layer";
10853
10896
  var PAINT = /^(paint_stroke|clone_stamp|heal_brush|spot_heal|dodge|burn|sponge|smudge|blur_stroke|sharpen_stroke|history_brush|set_clone_source|set_clone_transform|fill_pixels|clear_pixels|set_paint|set_retouch_options|load_mixer_brush|clean_mixer_brush)$/;
10854
- var SELECT = /^(select_region|select_subject|select_by_color|select_all|deselect|invert_selection|select_rect|select_ellipse|select_polygon|select_line|magic_wand|grow_selection|select_similar|reselect|select_layer_transparency|select_color_range|load_selection_from_image|load_selection_from_mask|set_selection_display|modify_selection|refine_selection|transform_selection|apply_selection_as_mask|layer_via_copy|stroke_selection|content_aware_fill|copy_pixels|cut_pixels|paste_pixels|save_selection|load_selection_from_channel|set_channel_properties|duplicate_channel|delete_channel|set_quick_mask)$/;
10897
+ var SELECT = /^(select_region|select_subject|select_by_color|select_all|deselect|invert_selection|select_rect|select_ellipse|select_polygon|select_line|magic_wand|grow_selection|select_similar|reselect|select_layer_transparency|select_color_range|load_selection_from_image|load_selection_from_mask|set_selection_display|modify_selection|refine_selection|transform_selection|apply_selection_as_mask|layer_via_copy|stroke_selection|content_aware_fill|copy_pixels|cut_pixels|paste_pixels|save_selection|load_selection_from_channel|set_channel_properties|duplicate_channel|delete_channel|load_channel_from_image|set_quick_mask)$/;
10855
10898
  var ANNOTATE = /^(add_shape_layer|update_shape|add_shape_component|set_shape_component|remove_shape_component|merge_shape_components|add_text_layer|set_text|set_text_style|set_paragraph_style|set_text_frame|convert_text_to_shape)$/;
10856
10899
  var CROP = /^(set_crop|crop_to_selection|reset_crop|set_rotation|flip_image|transform_layer|warp_layer|flip_layer|offset_layer)$/;
10857
10900
  var ADJUST = /^(set_adjustments|add_adjustment_layer|update_adjustment_layer|remove_adjustment_layer|move_adjustment_layer)$/;
@@ -11867,6 +11910,64 @@ function createImageSelectionTools(controller) {
11867
11910
  return { quickMask: controller.quickMaskEditing, selection: summary(controller) };
11868
11911
  }
11869
11912
  };
11913
+ const exportMaskTool = {
11914
+ name: "export_mask_image",
11915
+ title: "Export a mask as a PNG",
11916
+ description: "Writes the selection, an alpha channel (channelId) or a layer's painted mask (layerId) as a greyscale PNG: white = selected / revealed. Use it to look at a mask on its own, or to hand it to another tool or service; load_channel_from_image and load_selection_from_image read it back. Give at most one of channelId and layerId (neither = the selection). Changes nothing. Returns the image and its size.",
11917
+ inputSchema: {
11918
+ type: "object",
11919
+ properties: {
11920
+ channelId: channelIdSchema,
11921
+ layerId: { type: "string", minLength: 1, description: "A layer whose painted mask to export (see list_layers)." },
11922
+ invert: { type: "boolean", description: "Black = selected instead (default false)." },
11923
+ maxSide: { type: "integer", minimum: 16, maximum: 16384, description: "Longest side in pixels; larger masks are scaled down (default 1024, never scaled up)." }
11924
+ },
11925
+ additionalProperties: false
11926
+ },
11927
+ annotations: { title: "Export a mask as a PNG", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
11928
+ handler: (args) => {
11929
+ if (args.channelId !== void 0 && args.layerId !== void 0) throw new Error("Give channelId or layerId, not both (neither exports the selection).");
11930
+ if (typeof args.layerId === "string" && !controller.getLayer(args.layerId)) throw new Error(`No layer "${args.layerId}". Call list_layers for ids.`);
11931
+ const source = typeof args.channelId === "string" ? { channelId: args.channelId } : typeof args.layerId === "string" ? { layerId: args.layerId } : "selection";
11932
+ const out = controller.exportMaskImage(source, { invert: args.invert === true, maxSide: typeof args.maxSide === "number" ? args.maxSide : 1024 });
11933
+ const what = source === "selection" ? "Selection" : "channelId" in source ? `Channel ${source.channelId}` : `Mask of layer ${source.layerId}`;
11934
+ return {
11935
+ content: [
11936
+ { type: "image", data: out.dataUrl.slice(out.dataUrl.indexOf(",") + 1), mimeType: "image/png" },
11937
+ { type: "text", text: `${what}, ${out.width}\xD7${out.height}` }
11938
+ ],
11939
+ structuredContent: { width: out.width, height: out.height }
11940
+ };
11941
+ }
11942
+ };
11943
+ const loadChannelFromImageTool = {
11944
+ name: "load_channel_from_image",
11945
+ title: "Load a mask image into a new channel",
11946
+ description: "Stores a mask image (an AI segmentation, a matte, a PNG from export_mask_image) in a new alpha channel without touching the selection: white = selected by luminance, or one channel. Any size; it is resampled to the image. Load it as the selection later with load_selection_from_channel. One undo step. Returns the channel.",
11947
+ inputSchema: {
11948
+ type: "object",
11949
+ properties: {
11950
+ image: { type: "string", minLength: 1, description: "The mask as a data URL (data:image/png;base64,\u2026) or an image URL." },
11951
+ name: { type: "string", minLength: 1, description: 'Channel name (default "Alpha n").' },
11952
+ channel: { type: "string", enum: ["luminance", "alpha", "red", "green", "blue"], description: "What to read as coverage (default luminance; alpha for a cutout PNG)." },
11953
+ threshold: { type: "number", minimum: 0, maximum: 255, description: "Values at or above this are selected, the rest not (default: keep soft values)." },
11954
+ invert: { type: "boolean", description: "Black = selected instead (default false)." }
11955
+ },
11956
+ required: ["image"],
11957
+ additionalProperties: false
11958
+ },
11959
+ annotations: { ...writeAnnotations("Load a mask image into a new channel"), openWorldHint: true },
11960
+ handler: async (args) => {
11961
+ if (typeof args.image !== "string" || !args.image.trim()) throw new Error("image must be a data URL or image URL.");
11962
+ const c = await controller.loadChannelFromImage(args.image, {
11963
+ name: args.name,
11964
+ channel: _nullishCoalesce(args.channel, () => ( "luminance")),
11965
+ invert: args.invert === true,
11966
+ threshold: typeof args.threshold === "number" ? Math.min(255, Math.max(0, args.threshold)) : void 0
11967
+ });
11968
+ return { channel: channelResult(c.id) };
11969
+ }
11970
+ };
11870
11971
  return [
11871
11972
  getSelection,
11872
11973
  selectAll,
@@ -11902,6 +12003,8 @@ function createImageSelectionTools(controller) {
11902
12003
  channelPropsTool,
11903
12004
  duplicateChannelTool,
11904
12005
  deleteChannelTool,
12006
+ exportMaskTool,
12007
+ loadChannelFromImageTool,
11905
12008
  quickMaskTool
11906
12009
  ];
11907
12010
  }
@@ -15963,6 +16066,39 @@ function handleQuickMaskKey(controller, e) {
15963
16066
  return true;
15964
16067
  }
15965
16068
 
16069
+ // src/image-editor/selection/mask-files.ts
16070
+ var MASK_FILE_ACCEPT = "image/png,image/jpeg,image/webp,image/gif,image/bmp";
16071
+ function blobDataUrl(file) {
16072
+ return new Promise((resolve, reject) => {
16073
+ const reader = new FileReader();
16074
+ reader.onload = () => resolve(String(reader.result));
16075
+ reader.onerror = () => reject(_nullishCoalesce(reader.error, () => ( new Error("The file could not be read."))));
16076
+ reader.readAsDataURL(file);
16077
+ });
16078
+ }
16079
+ function maskNameFromFile(file) {
16080
+ const name = file.name;
16081
+ return name ? name.replace(/\.[a-z0-9]{2,4}$/i, "").trim() || void 0 : void 0;
16082
+ }
16083
+ async function openMaskFile(controller, file) {
16084
+ return controller.loadChannelFromImage(await blobDataUrl(file), { name: maskNameFromFile(file) });
16085
+ }
16086
+ function maskFileName(name) {
16087
+ const base = name.replace(/\.[a-z0-9]{2,4}$/i, "").replace(/[\\/:*?"<>|]+/g, "-").trim() || "mask";
16088
+ return `${base}.png`;
16089
+ }
16090
+ function downloadMaskImage(controller, source, name = "mask") {
16091
+ const { dataUrl, width, height } = controller.exportMaskImage(source);
16092
+ const fileName = maskFileName(name);
16093
+ if (typeof document !== "undefined") {
16094
+ const a = document.createElement("a");
16095
+ a.href = dataUrl;
16096
+ a.download = fileName;
16097
+ a.click();
16098
+ }
16099
+ return { fileName, width, height };
16100
+ }
16101
+
15966
16102
  // src/image-editor/mosaic-filter.ts
15967
16103
  function resolveMosaicRegionBounds(region, imgWidth, imgHeight) {
15968
16104
  if (imgWidth <= 0 || imgHeight <= 0 || region.width <= 0 || region.height <= 0) {
@@ -18523,4 +18659,9 @@ function createImageEditorDocument(controller, options = {}) {
18523
18659
 
18524
18660
 
18525
18661
 
18526
- exports.ADJUSTMENT_KEYS = _chunkX2KQQZBTcjs.ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = _chunkX2KQQZBTcjs.ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = _chunkX2KQQZBTcjs.ADJUSTMENT_LUT_SIZE; exports.ANCHOR_FRACTION = _chunkX2KQQZBTcjs.ANCHOR_FRACTION; exports.AS_SHOT_KELVIN = _chunkX2KQQZBTcjs.AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = _chunkX2KQQZBTcjs.BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = _chunkX2KQQZBTcjs.BACKGROUND_LAYER_NAME; exports.BIT_DEPTHS = _chunkCWM3CUUXcjs.BIT_DEPTHS; exports.BIT_DEPTH_OPTIONS = BIT_DEPTH_OPTIONS; exports.BLEND_MODES = _chunkCWM3CUUXcjs.BLEND_MODES; exports.BLUR_FILTER_ID = _chunkX2KQQZBTcjs.BLUR_FILTER_ID; exports.BODY_SCATTER = _chunkV7GWZIZKcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BRUSH_OPTION_CONTROLS = BRUSH_OPTION_CONTROLS; exports.BUILTIN_PROFILES = _chunkBROJYMWUcjs.BUILTIN_PROFILES; exports.BrushstrokeCache = _chunkEBDCRTZIcjs.BrushstrokeCache; exports.CANVAS_SIZE_PRESETS = CANVAS_SIZE_PRESETS; exports.CLONE_TRANSFORM_CONTROLS = CLONE_TRANSFORM_CONTROLS; exports.COLOR_MODE_OPTIONS = COLOR_MODE_OPTIONS; exports.COLOR_RANGE_PRESETS = COLOR_RANGE_PRESETS; exports.COLOR_RANGE_PRESET_LABELS = COLOR_RANGE_PRESET_LABELS; exports.CoverageMap = _chunkEBDCRTZIcjs.CoverageMap; exports.D50 = _chunkX2KQQZBTcjs.D50; exports.D65 = _chunkX2KQQZBTcjs.D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_AUTO_LEADING = _chunkEGZM52EOcjs.DEFAULT_AUTO_LEADING; exports.DEFAULT_BLENDER = _chunkEBDCRTZIcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkEBDCRTZIcjs.DEFAULT_BRUSH; exports.DEFAULT_CANVAS_VIEWPORT = DEFAULT_CANVAS_VIEWPORT; exports.DEFAULT_CHANNEL_COLOR = DEFAULT_CHANNEL_COLOR; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_FLOW = _chunkV7GWZIZKcjs.DEFAULT_FLOW; exports.DEFAULT_GLOBAL_LIGHT = _chunkHGTDMKNEcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MITER_LIMIT = _chunkX2KQQZBTcjs.DEFAULT_MITER_LIMIT; exports.DEFAULT_MIXER = _chunkEBDCRTZIcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PROOF = DEFAULT_PROOF; exports.DEFAULT_REFINE_EDGE_PARAMS = DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_RETOUCH = _chunk7NW46N7Icjs.DEFAULT_RETOUCH; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_SHAPE_TOOL_OPTIONS = DEFAULT_SHAPE_TOOL_OPTIONS; exports.DEFAULT_SMUDGE = _chunkEBDCRTZIcjs.DEFAULT_SMUDGE; exports.DEFAULT_TEXT_STYLE = _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEFAULT_TYPE_TOOL_OPTIONS = DEFAULT_TYPE_TOOL_OPTIONS; exports.DEFAULT_WET_PAPER = _chunkV7GWZIZKcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkV7GWZIZKcjs.DEFAULT_WET_PARAMS; exports.DEPTH_MASK_CONTROLS = DEPTH_MASK_CONTROLS; exports.DEVELOP_FILTER_ID = _chunkX2KQQZBTcjs.DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkHGTDMKNEcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DRY_EPS = _chunkV7GWZIZKcjs.DRY_EPS; exports.DabWalker = _chunkEBDCRTZIcjs.DabWalker; exports.EFFECT_LAYER_USES = EFFECT_LAYER_USES; exports.EMPTY_DISTANCE = _chunkX2KQQZBTcjs.EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkEBDCRTZIcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkV7GWZIZKcjs.EX; exports.EY = _chunkV7GWZIZKcjs.EY; exports.FLAG_ALIVE = _chunkV7GWZIZKcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkV7GWZIZKcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkV7GWZIZKcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkV7GWZIZKcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkV7GWZIZKcjs.FLAG_TOP; exports.FLAG_WET = _chunkV7GWZIZKcjs.FLAG_WET; exports.FLAT = _chunkV7GWZIZKcjs.FLAT; exports.FREE_INTERVAL = _chunkV7GWZIZKcjs.FREE_INTERVAL; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = _chunkX2KQQZBTcjs.FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GRAIN_PATTERNS = _chunkEBDCRTZIcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkEBDCRTZIcjs.GRAIN_TILE; exports.GUIDED_FILTER_EPS = GUIDED_FILTER_EPS; exports.HIDE = _chunkV7GWZIZKcjs.HIDE; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = _chunkX2KQQZBTcjs.HUE_RANGE_LABELS; exports.HUE_RANGE_PRESETS = HUE_RANGE_PRESETS; exports.IDENTITY_CLONE_TRANSFORM = _chunk7NW46N7Icjs.IDENTITY_CLONE_TRANSFORM; exports.IDENTITY_MATRIX3 = _chunkX2KQQZBTcjs.IDENTITY_MATRIX3; exports.IMAGE_ADJUSTMENT_CONTROLS = IMAGE_ADJUSTMENT_CONTROLS; exports.IMAGE_CROP_PRESETS = IMAGE_CROP_PRESETS; exports.IMAGE_EDITOR_SCHEMA_VERSION = IMAGE_EDITOR_SCHEMA_VERSION; exports.IMAGE_EDITOR_STATE_VERSION = IMAGE_EDITOR_STATE_VERSION; exports.IMAGE_EFFECT_PLACES = IMAGE_EFFECT_PLACES; exports.IMAGE_FILTER_PRESETS = IMAGE_FILTER_PRESETS; exports.IMAGE_PLAYBACK_KIND = IMAGE_PLAYBACK_KIND; exports.INTENTS = _chunkBROJYMWUcjs.INTENTS; exports.INTENT_OPTIONS = INTENT_OPTIONS; exports.INTERPOLATIONS = _chunkHGTDMKNEcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.ImageEffectsEngine = ImageEffectsEngine; exports.LATEST_PROCESS_VERSION = _chunkX2KQQZBTcjs.LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = _chunkX2KQQZBTcjs.LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkHGTDMKNEcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = _chunkX2KQQZBTcjs.LEGACY_PROCESS_VERSION; exports.LIVE_SHAPE_KINDS = _chunkX2KQQZBTcjs.LIVE_SHAPE_KINDS; exports.LUMA_709 = _chunkX2KQQZBTcjs.LUMA_709; exports.LayerCompositor = _chunkX2KQQZBTcjs.LayerCompositor; exports.LayerEffectError = _chunkHGTDMKNEcjs.LayerEffectError; exports.LayerOperationError = _chunkX2KQQZBTcjs.LayerOperationError; exports.MARCHING_ANTS_STEP_MS = MARCHING_ANTS_STEP_MS; exports.MAX_BATCH = _chunkV7GWZIZKcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkEBDCRTZIcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_BACKING_SIDE = MAX_CANVAS_BACKING_SIDE; exports.MAX_EFFECT_ANIMATION_MS = _chunkX2KQQZBTcjs.MAX_EFFECT_ANIMATION_MS; exports.MAX_EFFECT_REACH = _chunkHGTDMKNEcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = _chunkX2KQQZBTcjs.MAX_KELVIN; exports.MAX_TILT_ACCEL = _chunkV7GWZIZKcjs.MAX_TILT_ACCEL; exports.MAX_TRANSFORM_PIXELS = _chunkHGTDMKNEcjs.MAX_TRANSFORM_PIXELS; exports.MAX_WET_LANES = _chunkV7GWZIZKcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkV7GWZIZKcjs.MAX_WET_SLOTS; exports.MIN_KELVIN = _chunkX2KQQZBTcjs.MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = _chunkX2KQQZBTcjs.MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkEBDCRTZIcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkEBDCRTZIcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkEBDCRTZIcjs.MIXING_MODELS; exports.MixerStroke = _chunkEBDCRTZIcjs.MixerStroke; exports.OPP = _chunkV7GWZIZKcjs.OPP; exports.PAINTERLY_BLEND_MODES = _chunkCWM3CUUXcjs.PAINTERLY_BLEND_MODES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkEBDCRTZIcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkEBDCRTZIcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_CAPACITY = _chunkV7GWZIZKcjs.PAPER_CAPACITY; exports.PARAGRAPH_STYLE_FIELDS = _chunkX2KQQZBTcjs.PARAGRAPH_STYLE_FIELDS; exports.PARAM = _chunkV7GWZIZKcjs.PARAM; exports.PARAM_FLOATS = _chunkV7GWZIZKcjs.PARAM_FLOATS; exports.PASTE_MODES = PASTE_MODES; exports.PATTERN_BLOCK_KEYS = _chunkX2KQQZBTcjs.PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkCWM3CUUXcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkV7GWZIZKcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkV7GWZIZKcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkCWM3CUUXcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkV7GWZIZKcjs.PLANE; exports.PLANE_BYTES = _chunkV7GWZIZKcjs.PLANE_BYTES; exports.PROOF_PROFILE_OPTIONS = PROOF_PROFILE_OPTIONS; exports.PSD_BLEND_KEYS = _chunkX2KQQZBTcjs.PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.P_D0 = _chunkV7GWZIZKcjs.P_D0; exports.P_EDGE = _chunkV7GWZIZKcjs.P_EDGE; exports.P_FX = _chunkV7GWZIZKcjs.P_FX; exports.P_FY = _chunkV7GWZIZKcjs.P_FY; exports.P_H = _chunkV7GWZIZKcjs.P_H; exports.P_P0 = _chunkV7GWZIZKcjs.P_P0; exports.P_RHO = _chunkV7GWZIZKcjs.P_RHO; exports.P_SW = _chunkV7GWZIZKcjs.P_SW; exports.P_UX = _chunkV7GWZIZKcjs.P_UX; exports.P_UY = _chunkV7GWZIZKcjs.P_UY; exports.PaintExchange = _chunkEBDCRTZIcjs.PaintExchange; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkEBDCRTZIcjs.PaintGradientSampler; exports.PaintSourceError = _chunkEBDCRTZIcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaperGrain = _chunkEBDCRTZIcjs.PaperGrain; exports.PatternPlacement = _chunkHGTDMKNEcjs.PatternPlacement; exports.PatternTile = _chunkHGTDMKNEcjs.PatternTile; exports.PsdError = _chunkX2KQQZBTcjs.PsdError; exports.QUICK_MASK_TARGET = QUICK_MASK_TARGET; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.RETOUCH_CHOICES = RETOUCH_CHOICES; exports.RETOUCH_OPTION_CONTROLS = RETOUCH_OPTION_CONTROLS; exports.RETOUCH_SAMPLES = _chunk7NW46N7Icjs.RETOUCH_SAMPLES; exports.RETOUCH_TOGGLES = RETOUCH_TOGGLES; exports.RETOUCH_TOOLS = RETOUCH_TOOLS; exports.RegionPixelSource = _chunk7NW46N7Icjs.RegionPixelSource; exports.RetouchDabStroke = _chunk7NW46N7Icjs.RetouchDabStroke; exports.SELECTION_MODES = _chunkX2KQQZBTcjs.SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = _chunkX2KQQZBTcjs.SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SET_PLANES = _chunkV7GWZIZKcjs.SET_PLANES; exports.SHADOW_AMBIENT = _chunkCWM3CUUXcjs.SHADOW_AMBIENT; exports.SHAPE_KIND_LABELS = SHAPE_KIND_LABELS; exports.SHAPE_OPERATIONS = _chunkX2KQQZBTcjs.SHAPE_OPERATIONS; exports.SHAPE_RENDER_MARGIN = _chunkX2KQQZBTcjs.SHAPE_RENDER_MARGIN; exports.SLOT_BYTES = _chunkV7GWZIZKcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkV7GWZIZKcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkV7GWZIZKcjs.SLOT_SIDE; exports.SMART_RENDER_MARGIN = _chunkX2KQQZBTcjs.SMART_RENDER_MARGIN; exports.SPOT_HEAL_TYPES = _chunk7NW46N7Icjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkV7GWZIZKcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkV7GWZIZKcjs.STRIP; exports.SUPPORTED_ADJUSTMENT_KEYS = _chunkX2KQQZBTcjs.SUPPORTED_ADJUSTMENT_KEYS; exports.SelectionGesture = SelectionGesture; exports.ShapeDrawGesture = ShapeDrawGesture; exports.SmudgeTip = _chunkEBDCRTZIcjs.SmudgeTip; exports.StrokeCoverage = _chunkEBDCRTZIcjs.StrokeCoverage; exports.SurfaceDraft = _chunkCWM3CUUXcjs.SurfaceDraft; exports.TEXT_ALIGNS = _chunkX2KQQZBTcjs.TEXT_ALIGNS; exports.TEXT_RENDER_MARGIN = _chunkX2KQQZBTcjs.TEXT_RENDER_MARGIN; exports.TEXT_STYLE_FIELDS = _chunkX2KQQZBTcjs.TEXT_STYLE_FIELDS; exports.TILE = _chunkCWM3CUUXcjs.TILE; exports.TILE_SHIFT = _chunkCWM3CUUXcjs.TILE_SHIFT; exports.TINT_SCALE = _chunkX2KQQZBTcjs.TINT_SCALE; exports.TIP_GRADIENT_STEPS = _chunkEBDCRTZIcjs.TIP_GRADIENT_STEPS; exports.TONE_LUT_SIZE = _chunkX2KQQZBTcjs.TONE_LUT_SIZE; exports.TONE_RANGES = _chunk7NW46N7Icjs.TONE_RANGES; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = _chunkX2KQQZBTcjs.TRANSFORM_ANCHORS; exports.TRANSFORM_ROTATE_HANDLE_OFFSET = TRANSFORM_ROTATE_HANDLE_OFFSET; exports.TextEditSession = TextEditSession; exports.TileMedium = _chunkEBDCRTZIcjs.TileMedium; exports.TilePixelSource = _chunk7NW46N7Icjs.TilePixelSource; exports.TileableNoise = _chunkEBDCRTZIcjs.TileableNoise; exports.TiledSurface = _chunkCWM3CUUXcjs.TiledSurface; exports.TransformTooLargeError = _chunkHGTDMKNEcjs.TransformTooLargeError; exports.TransformedPixelSource = _chunk7NW46N7Icjs.TransformedPixelSource; exports.TypeToolGesture = TypeToolGesture; exports.U_MAX = _chunkV7GWZIZKcjs.U_MAX; exports.VIBRANCE_GREY = _chunkX2KQQZBTcjs.VIBRANCE_GREY; exports.W9 = _chunkV7GWZIZKcjs.W9; exports.WARP_GRID_OPTIONS = WARP_GRID_OPTIONS; exports.WARP_STYLES = _chunkEGZM52EOcjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkEGZM52EOcjs.WARP_STYLE_LABELS; exports.WARP_STYLE_OPTIONS = WARP_STYLE_OPTIONS; exports.WET_FLOW_KINDS = _chunkV7GWZIZKcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkV7GWZIZKcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkV7GWZIZKcjs.WET_TILE; exports.WGSL_HALO = _chunkV7GWZIZKcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkV7GWZIZKcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkV7GWZIZKcjs.WGSL_STEP; exports.WORKING_SPACE_OPTIONS = WORKING_SPACE_OPTIONS; exports.WetGpuEngine = _chunkV7GWZIZKcjs.WetGpuEngine; exports.WetMedium = _chunkV7GWZIZKcjs.WetMedium; exports.WetWorkerPool = _chunkV7GWZIZKcjs.WetWorkerPool; exports.WetWorld = _chunkV7GWZIZKcjs.WetWorld; exports.WetWorldError = _chunkV7GWZIZKcjs.WetWorldError; exports.XYZ_D50_TO_SRGB = _chunkX2KQQZBTcjs.XYZ_D50_TO_SRGB; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeAdjustmentLayers = _chunkX2KQQZBTcjs.activeAdjustmentLayers; exports.activeEffectSmartFilters = _chunkX2KQQZBTcjs.activeEffectSmartFilters; exports.activeLayerAfterRemoval = _chunkX2KQQZBTcjs.activeLayerAfterRemoval; exports.activeSmartFilters = _chunkX2KQQZBTcjs.activeSmartFilters; exports.addLayerEffect = _chunkX2KQQZBTcjs.addLayerEffect; exports.addLayerFilter = _chunkX2KQQZBTcjs.addLayerFilter; exports.addLayerOfKind = addLayerOfKind; exports.addPaintGradientStop = _chunkEBDCRTZIcjs.addPaintGradientStop; exports.addSmartFilter = _chunkX2KQQZBTcjs.addSmartFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = _chunkX2KQQZBTcjs.adjustmentKindLabel; exports.adjustmentLayersKey = _chunkX2KQQZBTcjs.adjustmentLayersKey; exports.adjustmentNodeAsLayer = _chunkX2KQQZBTcjs.adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = _chunkX2KQQZBTcjs.adjustmentNodeFromLegacy; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.agentDragDraft = agentDragDraft; exports.anchorPoint = _chunkX2KQQZBTcjs.anchorPoint; exports.annotationBlend = _chunkX2KQQZBTcjs.annotationBlend; exports.annotationLayerFor = _chunkX2KQQZBTcjs.annotationLayerFor; exports.annotationLayerName = _chunkX2KQQZBTcjs.annotationLayerName; exports.annotationOfLayer = _chunkX2KQQZBTcjs.annotationOfLayer; exports.annotationOfShape = _chunkX2KQQZBTcjs.annotationOfShape; exports.annotationOfType = _chunkX2KQQZBTcjs.annotationOfType; exports.applyAdjustmentLayers = _chunkX2KQQZBTcjs.applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = _chunkX2KQQZBTcjs.applyAdjustmentLayersFloat; exports.applyAdjustments = _chunkX2KQQZBTcjs.applyAdjustments; exports.applyBoxBlur = _chunkX2KQQZBTcjs.applyBoxBlur; exports.applyBoxBlurFloat = _chunkX2KQQZBTcjs.applyBoxBlurFloat; exports.applyDepthMask = _chunkX2KQQZBTcjs.applyDepthMask; exports.applyHomography = _chunkQT26RHKKcjs.applyHomography; exports.applyImageProjectionToContext = _chunkX2KQQZBTcjs.applyImageProjectionToContext; exports.applyLegacyAdjustments = _chunkX2KQQZBTcjs.applyLegacyAdjustments; exports.applyLegacyFloat = _chunkX2KQQZBTcjs.applyLegacyFloat; exports.applyMatrix3 = _chunkX2KQQZBTcjs.applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = _chunkX2KQQZBTcjs.applyParams; exports.applyProcess2Adjustments = _chunkX2KQQZBTcjs.applyProcess2Adjustments; exports.applyProcess2Float = _chunkX2KQQZBTcjs.applyProcess2Float; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyRetouchToTile = _chunk7NW46N7Icjs.applyRetouchToTile; exports.applyShapeOptions = applyShapeOptions; exports.applySmartFilters = _chunkX2KQQZBTcjs.applySmartFilters; exports.applyStrokeToDeepTile = _chunkEBDCRTZIcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkEBDCRTZIcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk7NW46N7Icjs.applyToneToDeepTile; exports.backgroundLayer = _chunkX2KQQZBTcjs.backgroundLayer; exports.base64ToBytes = _chunkCWM3CUUXcjs.base64ToBytes; exports.baseProjection = baseProjection; exports.bestOffset = _chunk7NW46N7Icjs.bestOffset; exports.blackWhiteGray = _chunkX2KQQZBTcjs.blackWhiteGray; exports.blendChannel = _chunkCWM3CUUXcjs.blendChannel; exports.blendImageData = _chunkCWM3CUUXcjs.blendImageData; exports.blendLum = _chunkCWM3CUUXcjs.blendLum; exports.blendPixel = _chunkCWM3CUUXcjs.blendPixel; exports.blendRadius = _chunkEBDCRTZIcjs.blendRadius; exports.blendRgb = _chunkCWM3CUUXcjs.blendRgb; exports.blendTile = _chunkHGTDMKNEcjs.blendTile; exports.blenderDab = _chunkEBDCRTZIcjs.blenderDab; exports.blurFilter = _chunkX2KQQZBTcjs.blurFilter; exports.borderCoverage = _chunkX2KQQZBTcjs.borderCoverage; exports.boxBlurPixels = _chunk7NW46N7Icjs.boxBlurPixels; exports.boxFrameHit = boxFrameHit; exports.boxFrameOverlay = boxFrameOverlay; exports.boxMean = boxMean; exports.boxPointOf = _chunkX2KQQZBTcjs.boxPointOf; exports.boxQuad = _chunkQT26RHKKcjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = _chunkX2KQQZBTcjs.bradfordAdaptation; exports.brushstrokeDataUrl = _chunkEBDCRTZIcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkEBDCRTZIcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkEBDCRTZIcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkEBDCRTZIcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkEBDCRTZIcjs.brushstrokeToCanvas; exports.buildLayerMaskPlanes = _chunkX2KQQZBTcjs.buildLayerMaskPlanes; exports.buildToneLut = _chunkX2KQQZBTcjs.buildToneLut; exports.builtinPattern = _chunkHGTDMKNEcjs.builtinPattern; exports.builtinPatternIds = _chunkHGTDMKNEcjs.builtinPatternIds; exports.bytesToBase64 = _chunkCWM3CUUXcjs.bytesToBase64; exports.calculateCropDrag = _chunkX2KQQZBTcjs.calculateCropDrag; exports.canShareMemory = _chunkV7GWZIZKcjs.canShareMemory; exports.canvasCompositeOperation = _chunkCWM3CUUXcjs.canvasCompositeOperation; exports.canvasToImagePoint = _chunkX2KQQZBTcjs.canvasToImagePoint; exports.caretAt = _chunkEGZM52EOcjs.caretAt; exports.changedTiles = _chunkHGTDMKNEcjs.changedTiles; exports.channelThumbnail = channelThumbnail; exports.checkEffectAnimation = checkEffectAnimation; exports.checkEffectTime = checkEffectTime; exports.checkImageEffectPlace = checkImageEffectPlace; exports.clampControlValue = clampControlValue; exports.clampCropToImage = _chunkX2KQQZBTcjs.clampCropToImage; exports.cleanMixer = _chunkEBDCRTZIcjs.cleanMixer; exports.cloneSamplePoint = _chunk7NW46N7Icjs.cloneSamplePoint; exports.cloneSourceLabel = cloneSourceLabel; exports.cloneTransformView = cloneTransformView; exports.collectTiles = _chunkCWM3CUUXcjs.collectTiles; exports.colorBalanceChannel = _chunkX2KQQZBTcjs.colorBalanceChannel; exports.colorModePlanes = colorModePlanes; exports.colorModePlanes16 = colorModePlanes16; exports.colorPanelView = colorPanelView; exports.colorRange = colorRange; exports.colorRangePreset = colorRangePreset; exports.combineSelections = _chunkX2KQQZBTcjs.combineSelections; exports.compileAdjustmentLayer = _chunkX2KQQZBTcjs.compileAdjustmentLayer; exports.componentPath = _chunkX2KQQZBTcjs.componentPath; exports.compositeDeep = _chunkX2KQQZBTcjs.compositeDeep; exports.compositeSurfaceOver = _chunkHGTDMKNEcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = _chunkX2KQQZBTcjs.computeSelectionBounds; exports.contentAwareFill = _chunk7NW46N7Icjs.contentAwareFill; exports.contentBounds = _chunkCWM3CUUXcjs.contentBounds; exports.contentsBox = _chunkX2KQQZBTcjs.contentsBox; exports.contentsSurface = _chunkX2KQQZBTcjs.contentsSurface; exports.contractCoverage = _chunkX2KQQZBTcjs.contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.convertColorFields = convertColorFields; exports.convertHex = convertHex; exports.convertSurfaceColors = convertSurfaceColors; exports.convertSurfaceDepth = _chunkCWM3CUUXcjs.convertSurfaceDepth; exports.convertToSmartObject = _chunkX2KQQZBTcjs.convertToSmartObject; exports.copySmartObject = _chunkX2KQQZBTcjs.copySmartObject; exports.cornersFromMatrix = _chunkX2KQQZBTcjs.cornersFromMatrix; exports.coverageTileCoord = _chunkEBDCRTZIcjs.coverageTileCoord; exports.coverageToByte = _chunkX2KQQZBTcjs.coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = _chunkX2KQQZBTcjs.createAdjustmentLayer; exports.createBlenderScratch = _chunkEBDCRTZIcjs.createBlenderScratch; exports.createCanvasTextShaper = _chunkEGZM52EOcjs.createCanvasTextShaper; exports.createImageCaptureSurface = createImageCaptureSurface; exports.createImageColorTools = createImageColorTools; exports.createImageEditTools = createImageEditTools; exports.createImageEditorDocument = createImageEditorDocument; exports.createImageEditorToolProvider = createImageEditorToolProvider; exports.createImageEffectTools = createImageEffectTools; exports.createImageEffectsToolProvider = createImageEffectsToolProvider; exports.createImageLayerTools = createImageLayerTools; exports.createImagePaintTools = createImagePaintTools; exports.createImagePlaybackLocator = createImagePlaybackLocator; exports.createImagePsdTools = createImagePsdTools; exports.createImageRetouchTools = createImageRetouchTools; exports.createImageSegmentationToolProvider = createImageSegmentationToolProvider; exports.createImageSelectionTools = createImageSelectionTools; exports.createImageShapeTools = createImageShapeTools; exports.createImageSmartObjectTools = createImageSmartObjectTools; exports.createImageSubjectSelectionTool = createImageSubjectSelectionTool; exports.createImageTransformTools = createImageTransformTools; exports.createImageTypeTools = createImageTypeTools; exports.createMetricTextShaper = _chunkEGZM52EOcjs.createMetricTextShaper; exports.createOutlineTextShaper = _chunkEGZM52EOcjs.createOutlineTextShaper; exports.createPigment = _chunkCWM3CUUXcjs.createPigment; exports.createPigmentTools = _chunkV7GWZIZKcjs.createPigmentTools; exports.createSelectionMask = _chunkX2KQQZBTcjs.createSelectionMask; exports.createShapeLayer = _chunkX2KQQZBTcjs.createShapeLayer; exports.createTypeLayer = _chunkX2KQQZBTcjs.createTypeLayer; exports.createWetGpuEngine = _chunkV7GWZIZKcjs.createWetGpuEngine; exports.cssFont = _chunkEGZM52EOcjs.cssFont; exports.cssFontFamily = _chunkEGZM52EOcjs.cssFontFamily; exports.curveLut = _chunkHGTDMKNEcjs.curveLut; exports.curveLutFromLevels = _chunkX2KQQZBTcjs.curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkEBDCRTZIcjs.dabCoverage; exports.dabRect = _chunkEBDCRTZIcjs.dabRect; exports.decodeDeepSurface = _chunkX2KQQZBTcjs.decodeDeepSurface; exports.decodeLayerChannel = _chunkX2KQQZBTcjs.decodeLayerChannel; exports.decodeLayerMask = _chunkX2KQQZBTcjs.decodeLayerMask; exports.decodeMergedImage = _chunkX2KQQZBTcjs.decodeMergedImage; exports.decodePlanes = _chunkX2KQQZBTcjs.decodePlanes; exports.decodePng = _chunkCWM3CUUXcjs.decodePng; exports.decodePngDataUrl = _chunkX2KQQZBTcjs.decodePngDataUrl; exports.decodeSelectionRle = _chunkX2KQQZBTcjs.decodeSelectionRle; exports.deepBytes = _chunkCWM3CUUXcjs.deepBytes; exports.deepTile = _chunkCWM3CUUXcjs.deepTile; exports.defaultActiveLayerId = _chunkX2KQQZBTcjs.defaultActiveLayerId; exports.defaultAdjustmentParams = _chunkX2KQQZBTcjs.defaultAdjustmentParams; exports.defaultEffectGradient = _chunkHGTDMKNEcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkHGTDMKNEcjs.defaultLayerEffect; exports.defaultShapeName = _chunkX2KQQZBTcjs.defaultShapeName; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthMaskAlpha = _chunkX2KQQZBTcjs.depthMaskAlpha; exports.depthOf = _chunkCWM3CUUXcjs.depthOf; exports.depthRasterMask = _chunkX2KQQZBTcjs.depthRasterMask; exports.describeChannel = describeChannel; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = _chunkX2KQQZBTcjs.describeTransform; exports.deserializeChannels = deserializeChannels; exports.deserializeColorMode = deserializeColorMode; exports.deserializeColorProfile = deserializeColorProfile; exports.deserializeEffects = _chunkX2KQQZBTcjs.deserializeEffects; exports.deserializeLayer = _chunkX2KQQZBTcjs.deserializeLayer; exports.deserializeLayers = _chunkX2KQQZBTcjs.deserializeLayers; exports.deserializePatterns = _chunkX2KQQZBTcjs.deserializePatterns; exports.deserializeSelection = _chunkX2KQQZBTcjs.deserializeSelection; exports.developFilter = _chunkX2KQQZBTcjs.developFilter; exports.developFromAdjustments = _chunkX2KQQZBTcjs.developFromAdjustments; exports.developTarget = _chunkX2KQQZBTcjs.developTarget; exports.dexp = _chunkV7GWZIZKcjs.dexp; exports.dilateMask = _chunk7NW46N7Icjs.dilateMask; exports.displayTransform = displayTransform; exports.distanceTransform = _chunkX2KQQZBTcjs.distanceTransform; exports.dlog = _chunkV7GWZIZKcjs.dlog; exports.documentContents = _chunkX2KQQZBTcjs.documentContents; exports.documentProfile = documentProfile; exports.dodgeBurn = _chunk7NW46N7Icjs.dodgeBurn; exports.dodgeBurnCurve = _chunk7NW46N7Icjs.dodgeBurnCurve; exports.downloadPsd = downloadPsd; exports.dpow = _chunkV7GWZIZKcjs.dpow; exports.dragWarpMeshPoint = _chunkEGZM52EOcjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.dsincos = _chunkV7GWZIZKcjs.dsincos; exports.duplicateLayer = _chunkX2KQQZBTcjs.duplicateLayer; exports.edgeBits = _chunkV7GWZIZKcjs.edgeBits; exports.edgeWidth = edgeWidth; exports.effectColorHex = _chunkHGTDMKNEcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectLayerTiming = effectLayerTiming; exports.effectPixelsToSurface = effectPixelsToSurface; exports.effectReach = _chunkHGTDMKNEcjs.effectReach; exports.effectiveProof = effectiveProof; exports.effectsFingerprint = _chunkHGTDMKNEcjs.effectsFingerprint; exports.effectsMargin = _chunkHGTDMKNEcjs.effectsMargin; exports.effectsScale = _chunkHGTDMKNEcjs.effectsScale; exports.ellipsePoints = ellipsePoints; exports.ellipseSelection = ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunkCWM3CUUXcjs.emptySurface; exports.encodeDeepSurface = _chunkX2KQQZBTcjs.encodeDeepSurface; exports.encodePng = _chunkCWM3CUUXcjs.encodePng; exports.encodeRle = _chunkX2KQQZBTcjs.encodeRle; exports.encodeSelectionRle = _chunkX2KQQZBTcjs.encodeSelectionRle; exports.encodeSurface = _chunkX2KQQZBTcjs.encodeSurface; exports.evalWarpMesh = _chunkEGZM52EOcjs.evalWarpMesh; exports.evaluateAdjustmentLayers = _chunkX2KQQZBTcjs.evaluateAdjustmentLayers; exports.exchangeRates = _chunkEBDCRTZIcjs.exchangeRates; exports.expNeg = _chunkV7GWZIZKcjs.expNeg; exports.expandCoverage = _chunkX2KQQZBTcjs.expandCoverage; exports.exportPsd = _chunkX2KQQZBTcjs.exportPsd; exports.extractNormalizedLayerItems = extractNormalizedLayerItems; exports.featherCoverage = _chunkX2KQQZBTcjs.featherCoverage; exports.fillRect = _chunkCWM3CUUXcjs.fillRect; exports.filmPixel = _chunkV7GWZIZKcjs.filmPixel; exports.filmReflectance = _chunkV7GWZIZKcjs.filmReflectance; exports.filterMaskCoverage = _chunkX2KQQZBTcjs.filterMaskCoverage; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkHGTDMKNEcjs.findLayer; exports.findLayerControl = findLayerControl; exports.findWebGpu = _chunkV7GWZIZKcjs.findWebGpu; exports.finishTile = _chunkCWM3CUUXcjs.finishTile; exports.fitParagraphRuns = _chunkEGZM52EOcjs.fitParagraphRuns; exports.fitRuns = _chunkEGZM52EOcjs.fitRuns; exports.flattenLayers = _chunkHGTDMKNEcjs.flattenLayers; exports.flattenPath = _chunkX2KQQZBTcjs.flattenPath; exports.flipCorners = _chunkX2KQQZBTcjs.flipCorners; exports.flowField = _chunkV7GWZIZKcjs.flowField; exports.fontOf = _chunkEGZM52EOcjs.fontOf; exports.formatControlValue = formatControlValue; exports.fullSelection = _chunkX2KQQZBTcjs.fullSelection; exports.gaussianBlur = _chunkHGTDMKNEcjs.gaussianBlur; exports.geometryHomography = _chunkX2KQQZBTcjs.geometryHomography; exports.getAnnotationBounds = _chunkX2KQQZBTcjs.getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = _chunkX2KQQZBTcjs.getCropCursor; exports.getRotatedSize = _chunkX2KQQZBTcjs.getRotatedSize; exports.getViewportMetrics = _chunkX2KQQZBTcjs.getViewportMetrics; exports.getViewportProjection = _chunkX2KQQZBTcjs.getViewportProjection; exports.globalImageCache = globalImageCache; exports.gradientDabColor = _chunkEBDCRTZIcjs.gradientDabColor; exports.grainCatch = _chunkEBDCRTZIcjs.grainCatch; exports.grainHeights = _chunkEBDCRTZIcjs.grainHeights; exports.greyMorphology = _chunkX2KQQZBTcjs.greyMorphology; exports.groupLayers = _chunkX2KQQZBTcjs.groupLayers; exports.growSelection = growSelection; exports.guidePlanes = guidePlanes; exports.guidedFilterColor = guidedFilterColor; exports.handlePaintShortcut = handlePaintShortcut; exports.handleQuickMaskKey = handleQuickMaskKey; exports.handleSelectionShortcut = handleSelectionShortcut; exports.hasActiveEffects = _chunkHGTDMKNEcjs.hasActiveEffects; exports.hasLayersBelow = hasLayersBelow; exports.hasResampledLegacyMask = _chunkX2KQQZBTcjs.hasResampledLegacyMask; exports.hasSurface = _chunkX2KQQZBTcjs.hasSurface; exports.hasWarp = _chunkX2KQQZBTcjs.hasWarp; exports.hash2 = _chunkEBDCRTZIcjs.hash2; exports.hashMaskContent = _chunkX2KQQZBTcjs.hashMaskContent; exports.hashNoise = _chunkHGTDMKNEcjs.hashNoise; exports.healPixels = _chunk7NW46N7Icjs.healPixels; exports.hexToPaintRgb = _chunkEBDCRTZIcjs.hexToPaintRgb; exports.hexToRgb = _chunkX2KQQZBTcjs.hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = _chunkX2KQQZBTcjs.hitTestAnnotation; exports.hitTestCrop = _chunkX2KQQZBTcjs.hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkQT26RHKKcjs.homographyFromAffine; exports.homographyFromPoints = _chunkQT26RHKKcjs.homographyFromPoints; exports.hslToRgb = _chunkX2KQQZBTcjs.hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = _chunkX2KQQZBTcjs.hueRangeTables; exports.hueRangeWeight = _chunkX2KQQZBTcjs.hueRangeWeight; exports.hueSaturation = _chunkX2KQQZBTcjs.hueSaturation; exports.identityCurve = _chunkX2KQQZBTcjs.identityCurve; exports.identityLevels = _chunkX2KQQZBTcjs.identityLevels; exports.identityTransform = _chunkX2KQQZBTcjs.identityTransform; exports.identityWarpMesh = _chunkEGZM52EOcjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageLayerAppliedEffects = imageLayerAppliedEffects; exports.imagePlaybackPanel = imagePlaybackPanel; exports.imageToCanvasPoint = _chunkX2KQQZBTcjs.imageToCanvasPoint; exports.importPsd = _chunkX2KQQZBTcjs.importPsd; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkHGTDMKNEcjs.insertLayer; exports.instancesOf = _chunkX2KQQZBTcjs.instancesOf; exports.invertHomography = _chunkQT26RHKKcjs.invertHomography; exports.invertMatrix3 = _chunkX2KQQZBTcjs.invertMatrix3; exports.invertSelection = _chunkX2KQQZBTcjs.invertSelection; exports.isActiveFilter = _chunkX2KQQZBTcjs.isActiveFilter; exports.isAdjustmentKind = _chunkX2KQQZBTcjs.isAdjustmentKind; exports.isBitDepth = _chunkCWM3CUUXcjs.isBitDepth; exports.isBlendMode = _chunkCWM3CUUXcjs.isBlendMode; exports.isBrushstrokeBrush = _chunkEBDCRTZIcjs.isBrushstrokeBrush; exports.isColorRangePreset = isColorRangePreset; exports.isContentsDecoded = _chunkX2KQQZBTcjs.isContentsDecoded; exports.isDefaultDepthMask = _chunkX2KQQZBTcjs.isDefaultDepthMask; exports.isGradientPaint = _chunkEBDCRTZIcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk7NW46N7Icjs.isIdentityCloneTransform; exports.isIdentityTransform = _chunkX2KQQZBTcjs.isIdentityTransform; exports.isInterpolation = _chunkHGTDMKNEcjs.isInterpolation; exports.isLayerEffectKind = _chunkHGTDMKNEcjs.isLayerEffectKind; exports.isLayerLocked = _chunkHGTDMKNEcjs.isLayerLocked; exports.isLegacyShape = _chunkX2KQQZBTcjs.isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPaintableLayer = _chunkX2KQQZBTcjs.isPaintableLayer; exports.isPainterlyBlendMode = _chunkCWM3CUUXcjs.isPainterlyBlendMode; exports.isPng = _chunkCWM3CUUXcjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = _chunkX2KQQZBTcjs.isQuarterTurnSwapped; exports.isRenderedLayer = _chunkX2KQQZBTcjs.isRenderedLayer; exports.isRetouchPaintTool = isRetouchPaintTool; exports.isRetouchTool = isRetouchTool; exports.isSelectionEmpty = _chunkX2KQQZBTcjs.isSelectionEmpty; exports.isSelectionMode = _chunkX2KQQZBTcjs.isSelectionMode; exports.isSeparableBlendMode = _chunkCWM3CUUXcjs.isSeparableBlendMode; exports.isSmartSurfaceIncomplete = _chunkX2KQQZBTcjs.isSmartSurfaceIncomplete; exports.isSpatialFilter = _chunkX2KQQZBTcjs.isSpatialFilter; exports.isSrgb = isSrgb; exports.isTransformAnchor = _chunkX2KQQZBTcjs.isTransformAnchor; exports.isValidWarp = _chunkX2KQQZBTcjs.isValidWarp; exports.keepDeepSamples = _chunkCWM3CUUXcjs.keepDeepSamples; exports.kelvinToTemperature = _chunkX2KQQZBTcjs.kelvinToTemperature; exports.keysWeight = _chunkHGTDMKNEcjs.keysWeight; exports.latticeViscosity = _chunkV7GWZIZKcjs.latticeViscosity; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkHGTDMKNEcjs.layerEffectFields; exports.layerEffectLabel = _chunkHGTDMKNEcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = _chunkX2KQQZBTcjs.layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerHasThumbnail = layerHasThumbnail; exports.layerLabel = layerLabel; exports.layerMaskCoverage = _chunkX2KQQZBTcjs.layerMaskCoverage; exports.layerMaskFromSelection = _chunkX2KQQZBTcjs.layerMaskFromSelection; exports.layerMaskKey = _chunkX2KQQZBTcjs.layerMaskKey; exports.layerMenu = layerMenu; exports.layerName = _chunkX2KQQZBTcjs.layerName; exports.layerPanelRows = layerPanelRows; exports.layerPanels = layerPanels; exports.layerThumbnailClick = layerThumbnailClick; exports.layerTree = _chunkX2KQQZBTcjs.layerTree; exports.layerTypeLabel = _chunkX2KQQZBTcjs.layerTypeLabel; exports.layerWarning = layerWarning; exports.layersFromLegacy = _chunkX2KQQZBTcjs.layersFromLegacy; exports.layoutText = _chunkEGZM52EOcjs.layoutText; exports.legacyAdjustmentLayer = _chunkX2KQQZBTcjs.legacyAdjustmentLayer; exports.legacyMaskOf = _chunkX2KQQZBTcjs.legacyMaskOf; exports.legacyView = _chunkX2KQQZBTcjs.legacyView; exports.lerpPigment = _chunkCWM3CUUXcjs.lerpPigment; exports.lerpPigmentInto = _chunkCWM3CUUXcjs.lerpPigmentInto; exports.levelsValue = _chunkX2KQQZBTcjs.levelsValue; exports.linearSrgbToXy = _chunkX2KQQZBTcjs.linearSrgbToXy; exports.linearToSrgb = _chunkX2KQQZBTcjs.linearToSrgb; exports.linearToSrgb8 = _chunkV7GWZIZKcjs.linearToSrgb8; exports.liveComponent = _chunkX2KQQZBTcjs.liveComponent; exports.liveShapeForDrag = liveShapeForDrag; exports.liveShapeSubpaths = _chunkX2KQQZBTcjs.liveShapeSubpaths; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkEBDCRTZIcjs.loadMixer; exports.loadOpenTypeFont = _chunk5UEFNX24cjs.loadOpenTypeFont; exports.loadWetKernel = _chunkV7GWZIZKcjs.loadWetKernel; exports.luma = _chunk7NW46N7Icjs.luma; exports.magicWand = magicWand; exports.mapCropHandle = _chunkX2KQQZBTcjs.mapCropHandle; exports.mapLayer = _chunkHGTDMKNEcjs.mapLayer; exports.mapSubpaths = _chunkX2KQQZBTcjs.mapSubpaths; exports.maskBounds = _chunk7NW46N7Icjs.maskBounds; exports.maskSummary = maskSummary; exports.maskThumbnailClick = maskThumbnailClick; exports.matrixFromCorners = _chunkX2KQQZBTcjs.matrixFromCorners; exports.matrixFromParams = _chunkX2KQQZBTcjs.matrixFromParams; exports.measureCanvasViewport = measureCanvasViewport; exports.membraneFill = _chunk7NW46N7Icjs.membraneFill; exports.mergeLayerEffect = _chunkHGTDMKNEcjs.mergeLayerEffect; exports.mergeShapeComponents = _chunkX2KQQZBTcjs.mergeShapeComponents; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mix32 = _chunkEBDCRTZIcjs.mix32; exports.mixPigment8 = _chunkCWM3CUUXcjs.mixPigment8; exports.mixPigmentRgb = _chunkCWM3CUUXcjs.mixPigmentRgb; exports.mixPigments = _chunkCWM3CUUXcjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.mixerRates = _chunkEBDCRTZIcjs.mixerRates; exports.modifySelection = _chunkX2KQQZBTcjs.modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = _chunkX2KQQZBTcjs.moveLayer; exports.moveSmartFilter = _chunkX2KQQZBTcjs.moveSmartFilter; exports.mulMatrix3 = _chunkX2KQQZBTcjs.mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = _chunkX2KQQZBTcjs.neutralHueRange; exports.newContentsId = _chunkX2KQQZBTcjs.newContentsId; exports.newEffectId = _chunkHGTDMKNEcjs.newEffectId; exports.newLayerId = _chunkX2KQQZBTcjs.newLayerId; exports.newLayerOptions = newLayerOptions; exports.normalizeAdjustmentLayer = _chunkX2KQQZBTcjs.normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = _chunkX2KQQZBTcjs.normalizeAdjustmentLayers; exports.normalizeAngle = _chunkX2KQQZBTcjs.normalizeAngle; exports.normalizeBlendMode = _chunkCWM3CUUXcjs.normalizeBlendMode; exports.normalizeBlender = _chunkEBDCRTZIcjs.normalizeBlender; exports.normalizeBrush = _chunkEBDCRTZIcjs.normalizeBrush; exports.normalizeFilter = _chunkX2KQQZBTcjs.normalizeFilter; exports.normalizeFlow = _chunkV7GWZIZKcjs.normalizeFlow; exports.normalizeHexColor = _chunkEBDCRTZIcjs.normalizeHexColor; exports.normalizeLayerEffects = _chunkHGTDMKNEcjs.normalizeLayerEffects; exports.normalizeLayerMask = _chunkX2KQQZBTcjs.normalizeLayerMask; exports.normalizeLiveShape = _chunkX2KQQZBTcjs.normalizeLiveShape; exports.normalizeMixer = _chunkEBDCRTZIcjs.normalizeMixer; exports.normalizePlacement = _chunkX2KQQZBTcjs.normalizePlacement; exports.normalizeProcessVersion = _chunkX2KQQZBTcjs.normalizeProcessVersion; exports.normalizeRect = normalizeRect; exports.normalizeRefineEdgeParams = normalizeRefineEdgeParams; exports.normalizeRetouch = _chunk7NW46N7Icjs.normalizeRetouch; exports.normalizeShapePaint = _chunkX2KQQZBTcjs.normalizeShapePaint; exports.normalizeShapeStroke = _chunkX2KQQZBTcjs.normalizeShapeStroke; exports.normalizeSmartFilter = _chunkX2KQQZBTcjs.normalizeSmartFilter; exports.normalizeSmudge = _chunkEBDCRTZIcjs.normalizeSmudge; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.normalizeSubpaths = _chunkX2KQQZBTcjs.normalizeSubpaths; exports.normalizeText = _chunkX2KQQZBTcjs.normalizeText; exports.normalizeTilt = _chunkV7GWZIZKcjs.normalizeTilt; exports.normalizeWetParams = _chunkV7GWZIZKcjs.normalizeWetParams; exports.offsetLayer = _chunkX2KQQZBTcjs.offsetLayer; exports.offsetShape = _chunkX2KQQZBTcjs.offsetShape; exports.offsetSmartObject = _chunkX2KQQZBTcjs.offsetSmartObject; exports.openPsdFile = openPsdFile; exports.packRgba = _chunkCWM3CUUXcjs.packRgba; exports.packWetParams = _chunkV7GWZIZKcjs.packWetParams; exports.paintGradientMappingFor = _chunkEBDCRTZIcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkEBDCRTZIcjs.paintPathStroke; exports.paintSourceColor = _chunkEBDCRTZIcjs.paintSourceColor; exports.paintSourceCss = _chunkEBDCRTZIcjs.paintSourceCss; exports.paragraphRanges = _chunkEGZM52EOcjs.paragraphRanges; exports.parseAdjustmentBlock = _chunkX2KQQZBTcjs.parseAdjustmentBlock; exports.parseBlend = _chunkX2KQQZBTcjs.parseBlend; exports.parseColor = parseColor; exports.parseCssColor = _chunkA2IS7EHEcjs.parseCssColor; exports.parseDataUrl = _chunkCWM3CUUXcjs.parseDataUrl; exports.parseEffectColor = _chunkHGTDMKNEcjs.parseEffectColor; exports.parseLfx2 = _chunkX2KQQZBTcjs.parseLfx2; exports.parseLrfx = _chunkX2KQQZBTcjs.parseLrfx; exports.parseOpenTypeFont = _chunk5UEFNX24cjs.parseOpenTypeFont; exports.parsePaintSource = _chunkEBDCRTZIcjs.parsePaintSource; exports.parsePatternBlock = _chunkX2KQQZBTcjs.parsePatternBlock; exports.parseSelectionMode = _chunkX2KQQZBTcjs.parseSelectionMode; exports.parseVersionedDescriptor = _chunkX2KQQZBTcjs.parseVersionedDescriptor; exports.patchParagraphStyle = _chunkX2KQQZBTcjs.patchParagraphStyle; exports.patchTextStyle = _chunkX2KQQZBTcjs.patchTextStyle; exports.pathStrokeCoverage = _chunkEBDCRTZIcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkEBDCRTZIcjs.pathStrokeDabs; exports.perDabStrength = _chunk7NW46N7Icjs.perDabStrength; exports.photoFilterMatrix = _chunkX2KQQZBTcjs.photoFilterMatrix; exports.pigment8 = _chunkCWM3CUUXcjs.pigment8; exports.pigmentColor = _chunkV7GWZIZKcjs.pigmentColor; exports.pigmentOf = _chunkV7GWZIZKcjs.pigmentOf; exports.pixelLayerBounds = _chunkX2KQQZBTcjs.pixelLayerBounds; exports.pixelLayers = _chunkX2KQQZBTcjs.pixelLayers; exports.pixelPigment = _chunkV7GWZIZKcjs.pixelPigment; exports.placeContents = _chunkX2KQQZBTcjs.placeContents; exports.placeLayer = _chunkX2KQQZBTcjs.placeLayer; exports.placementAt = _chunkX2KQQZBTcjs.placementAt; exports.placementBounds = _chunkX2KQQZBTcjs.placementBounds; exports.placementGeometry = _chunkX2KQQZBTcjs.placementGeometry; exports.planImageToolPlayback = planImageToolPlayback; exports.planOutlineTrace = planOutlineTrace; exports.pngDataUrl = _chunkCWM3CUUXcjs.pngDataUrl; exports.pointerPressure = _chunkV7GWZIZKcjs.pointerPressure; exports.pointerStrokeSample = _chunkV7GWZIZKcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkV7GWZIZKcjs.pointerStrokeSamples; exports.polygonCoverage = polygonCoverage; exports.polygonSelection = polygonSelection; exports.posterizeValue = _chunkX2KQQZBTcjs.posterizeValue; exports.presetWarp = _chunkX2KQQZBTcjs.presetWarp; exports.previewStep = previewStep; exports.profileBytes = profileBytes; exports.projectImagePoint = _chunkX2KQQZBTcjs.projectImagePoint; exports.projectImageRect = _chunkX2KQQZBTcjs.projectImageRect; exports.projectMaskCoverage = _chunkX2KQQZBTcjs.projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.proxyOf = _chunkCWM3CUUXcjs.proxyOf; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = _chunkX2KQQZBTcjs.psdPatternToEffectPattern; exports.psdToLayers = _chunkX2KQQZBTcjs.psdToLayers; exports.pullWarpMesh = _chunkEGZM52EOcjs.pullWarpMesh; exports.put255 = _chunkEBDCRTZIcjs.put255; exports.quadFrameOverlay = quadFrameOverlay; exports.quickMaskPixels = quickMaskPixels; exports.rand01 = _chunkEBDCRTZIcjs.rand01; exports.randSigned = _chunkEBDCRTZIcjs.randSigned; exports.rangeLightness = _chunkX2KQQZBTcjs.rangeLightness; exports.rasterContents = _chunkX2KQQZBTcjs.rasterContents; exports.rasterMaskFromLegacy = _chunkX2KQQZBTcjs.rasterMaskFromLegacy; exports.rasterizeCoverage = _chunkX2KQQZBTcjs.rasterizeCoverage; exports.rasterizeDab = _chunkEBDCRTZIcjs.rasterizeDab; exports.rasterizeSmartObject = _chunkX2KQQZBTcjs.rasterizeSmartObject; exports.readAdjustmentControls = readAdjustmentControls; exports.readDeepRegion = _chunkCWM3CUUXcjs.readDeepRegion; exports.readPaintSource = _chunkEBDCRTZIcjs.readPaintSource; exports.readPixel = _chunkCWM3CUUXcjs.readPixel; exports.readPsd = _chunkX2KQQZBTcjs.readPsd; exports.readRegion = _chunkCWM3CUUXcjs.readRegion; exports.readSourceRegion = _chunk7NW46N7Icjs.readSourceRegion; exports.rectSelection = rectSelection; exports.rectToQuad = _chunkQT26RHKKcjs.rectToQuad; exports.reduceSurface = _chunkHGTDMKNEcjs.reduceSurface; exports.referencePoint = _chunkX2KQQZBTcjs.referencePoint; exports.refineCoverage = refineCoverage; exports.refineEdgeHalo = refineEdgeHalo; exports.refineSelection = refineSelection; exports.reflectanceToRgb = _chunkCWM3CUUXcjs.reflectanceToRgb; exports.removeAlpha = _chunkX2KQQZBTcjs.removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = _chunkX2KQQZBTcjs.removeLayer; exports.removeLayerEffect = _chunkX2KQQZBTcjs.removeLayerEffect; exports.removeLayerFilter = _chunkX2KQQZBTcjs.removeLayerFilter; exports.removePaintGradientStop = _chunkEBDCRTZIcjs.removePaintGradientStop; exports.removeSmartFilter = _chunkX2KQQZBTcjs.removeSmartFilter; exports.renderBrushstroke = _chunkEBDCRTZIcjs.renderBrushstroke; exports.renderLayerEffects = _chunkHGTDMKNEcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.renderShape = _chunkX2KQQZBTcjs.renderShape; exports.renderShapeRect = _chunkX2KQQZBTcjs.renderShapeRect; exports.renderSmartObject = _chunkX2KQQZBTcjs.renderSmartObject; exports.renderText = _chunkX2KQQZBTcjs.renderText; exports.replaceContents = _chunkX2KQQZBTcjs.replaceContents; exports.replaceTextRange = _chunkX2KQQZBTcjs.replaceTextRange; exports.requireLayer = _chunkX2KQQZBTcjs.requireLayer; exports.requireOperation = _chunkX2KQQZBTcjs.requireOperation; exports.requireShapeLayer = _chunkX2KQQZBTcjs.requireShapeLayer; exports.requireSmartObject = _chunkX2KQQZBTcjs.requireSmartObject; exports.requireTypeLayer = _chunkX2KQQZBTcjs.requireTypeLayer; exports.requireUnlocked = _chunkX2KQQZBTcjs.requireUnlocked; exports.rerender = _chunkX2KQQZBTcjs.rerender; exports.rerenderShape = _chunkX2KQQZBTcjs.rerenderShape; exports.rerenderText = _chunkX2KQQZBTcjs.rerenderText; exports.resizePixels = resizePixels; exports.resizeSelection = _chunkX2KQQZBTcjs.resizeSelection; exports.resizeWarpMesh = _chunkEGZM52EOcjs.resizeWarpMesh; exports.resolveExternalAssets = _chunkX2KQQZBTcjs.resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.resolvePaintGradient = _chunkEBDCRTZIcjs.resolvePaintGradient; exports.resolveProfile = resolveProfile; exports.restyleRange = _chunkEGZM52EOcjs.restyleRange; exports.retouchFilter = _chunk7NW46N7Icjs.retouchFilter; exports.reversePaintGradient = _chunkEBDCRTZIcjs.reversePaintGradient; exports.rgbToGray = _chunkX2KQQZBTcjs.rgbToGray; exports.rgbToHsl = _chunkX2KQQZBTcjs.rgbToHsl; exports.rgbToReflectance = _chunkCWM3CUUXcjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.rgbaViewOfGrey = _chunk7NW46N7Icjs.rgbaViewOfGrey; exports.runLayerFilters = _chunkX2KQQZBTcjs.runLayerFilters; exports.runLayerFiltersFloat = _chunkX2KQQZBTcjs.runLayerFiltersFloat; exports.runLayerMenuAction = runLayerMenuAction; exports.sameCanvasViewport = sameCanvasViewport; exports.sampleLut = _chunkX2KQQZBTcjs.sampleLut; exports.sampleToneLut = _chunkX2KQQZBTcjs.sampleToneLut; exports.saturationOf = _chunk7NW46N7Icjs.saturationOf; exports.scaleLayerEffect = _chunkHGTDMKNEcjs.scaleLayerEffect; exports.scalePaintGradient = _chunkEBDCRTZIcjs.scalePaintGradient; exports.seamlessClone = _chunk7NW46N7Icjs.seamlessClone; exports.seedFromString = _chunkEBDCRTZIcjs.seedFromString; exports.segmentToSelection = segmentToSelection; exports.segmentationOutlines = segmentationOutlines; exports.segmentsToSelection = segmentsToSelection; exports.selectSimilar = selectSimilar; exports.selectionArea = _chunkX2KQQZBTcjs.selectionArea; exports.selectionFromCoverage = _chunkX2KQQZBTcjs.selectionFromCoverage; exports.selectionFromPixels = _chunkX2KQQZBTcjs.selectionFromPixels; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionRing = selectionRing; exports.selectionToCoverage = _chunkX2KQQZBTcjs.selectionToCoverage; exports.selectionToPixels = _chunkX2KQQZBTcjs.selectionToPixels; exports.selectionValueAt = _chunkX2KQQZBTcjs.selectionValueAt; exports.serializeChannels = serializeChannels; exports.serializeColorMode = serializeColorMode; exports.serializeColorProfile = serializeColorProfile; exports.serializeContents = _chunkX2KQQZBTcjs.serializeContents; exports.serializeEffects = _chunkX2KQQZBTcjs.serializeEffects; exports.serializeLayer = _chunkX2KQQZBTcjs.serializeLayer; exports.serializeLayers = _chunkX2KQQZBTcjs.serializeLayers; exports.serializeLayersExternal = _chunkX2KQQZBTcjs.serializeLayersExternal; exports.serializePatterns = _chunkX2KQQZBTcjs.serializePatterns; exports.serializeSelection = _chunkX2KQQZBTcjs.serializeSelection; exports.setCloneTransformValue = setCloneTransformValue; exports.setControlPath = setControlPath; exports.setLayerEffects = _chunkX2KQQZBTcjs.setLayerEffects; exports.setLayerEffectsEnabled = _chunkX2KQQZBTcjs.setLayerEffectsEnabled; exports.setLayerMask = _chunkX2KQQZBTcjs.setLayerMask; exports.setLayerProperties = _chunkX2KQQZBTcjs.setLayerProperties; exports.setLum = _chunkCWM3CUUXcjs.setLum; exports.setPigmentColor = _chunkCWM3CUUXcjs.setPigmentColor; exports.setRetouchChoice = setRetouchChoice; exports.setSmartFilterMask = _chunkX2KQQZBTcjs.setSmartFilterMask; exports.setSmartFiltersEnabled = _chunkX2KQQZBTcjs.setSmartFiltersEnabled; exports.setSmartPlacement = _chunkX2KQQZBTcjs.setSmartPlacement; exports.shadeTile = _chunkV7GWZIZKcjs.shadeTile; exports.shapeAsPixelLayer = _chunkX2KQQZBTcjs.shapeAsPixelLayer; exports.shapeFromAnnotation = _chunkX2KQQZBTcjs.shapeFromAnnotation; exports.shapeGeometryBounds = _chunkX2KQQZBTcjs.shapeGeometryBounds; exports.shapeLayers = _chunkX2KQQZBTcjs.shapeLayers; exports.shapeOutline = _chunkX2KQQZBTcjs.shapeOutline; exports.shapeRenderClip = _chunkX2KQQZBTcjs.shapeRenderClip; exports.shiftCoverage = _chunkX2KQQZBTcjs.shiftCoverage; exports.skinToneRange = skinToneRange; exports.smartFilterRows = smartFilterRows; exports.smartObjectLayers = _chunkX2KQQZBTcjs.smartObjectLayers; exports.smoothCoverage = _chunkX2KQQZBTcjs.smoothCoverage; exports.smoothPoints = _chunkEBDCRTZIcjs.smoothPoints; exports.smudgeEffect = _chunk7NW46N7Icjs.smudgeEffect; exports.snapTo45 = snapTo45; exports.solidPaint = _chunkEBDCRTZIcjs.solidPaint; exports.solidSurface = _chunkCWM3CUUXcjs.solidSurface; exports.solveMembrane = _chunk7NW46N7Icjs.solveMembrane; exports.spliceRuns = _chunkEGZM52EOcjs.spliceRuns; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.sponge = _chunk7NW46N7Icjs.sponge; exports.spongeEffect = _chunk7NW46N7Icjs.spongeEffect; exports.spotHealPixels = _chunk7NW46N7Icjs.spotHealPixels; exports.spotHealWindow = _chunk7NW46N7Icjs.spotHealWindow; exports.srgb8ToLab = srgb8ToLab; exports.srgbByteToLinear = _chunkV7GWZIZKcjs.srgbByteToLinear; exports.srgbDecode = _chunkCWM3CUUXcjs.srgbDecode; exports.srgbEncode = _chunkCWM3CUUXcjs.srgbEncode; exports.srgbToLinear = _chunkX2KQQZBTcjs.srgbToLinear; exports.standardBlendMode = _chunkCWM3CUUXcjs.standardBlendMode; exports.startMarchingAnts = startMarchingAnts; exports.stepSlotTs = _chunkV7GWZIZKcjs.stepSlotTs; exports.strokeGrainCatch = _chunkEBDCRTZIcjs.strokeGrainCatch; exports.styleAt = _chunkEGZM52EOcjs.styleAt; exports.sumHistograms = sumHistograms; exports.surfaceBytes = _chunkCWM3CUUXcjs.surfaceBytes; exports.surfaceDepth = _chunkCWM3CUUXcjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunkCWM3CUUXcjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunkCWM3CUUXcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCWM3CUUXcjs.surfacesEqual; exports.tempTintToXy = _chunkX2KQQZBTcjs.tempTintToXy; exports.temperatureToKelvin = _chunkX2KQQZBTcjs.temperatureToKelvin; exports.textIndexAt = _chunkEGZM52EOcjs.textIndexAt; exports.textMatrix = _chunkX2KQQZBTcjs.textMatrix; exports.textOutlines = _chunkX2KQQZBTcjs.textOutlines; exports.textRange = _chunkX2KQQZBTcjs.textRange; exports.tileCoord = _chunkCWM3CUUXcjs.tileCoord; exports.tileKey = _chunkCWM3CUUXcjs.tileKey; exports.tileRect = _chunkCWM3CUUXcjs.tileRect; exports.tileSamples = _chunkCWM3CUUXcjs.tileSamples; exports.tileSamples16 = _chunkCWM3CUUXcjs.tileSamples16; exports.tileSamples32 = _chunkCWM3CUUXcjs.tileSamples32; exports.tilesInRect = _chunkCWM3CUUXcjs.tilesInRect; exports.tipFalloff = _chunkEBDCRTZIcjs.tipFalloff; exports.tipReach = _chunkEBDCRTZIcjs.tipReach; exports.tipShape = _chunkEBDCRTZIcjs.tipShape; exports.to16From32 = _chunkCWM3CUUXcjs.to16From32; exports.to16From8 = _chunkCWM3CUUXcjs.to16From8; exports.to32From16 = _chunkCWM3CUUXcjs.to32From16; exports.to32From8 = _chunkCWM3CUUXcjs.to32From8; exports.to8From16 = _chunkCWM3CUUXcjs.to8From16; exports.to8From32 = _chunkCWM3CUUXcjs.to8From32; exports.toHex = toHex; exports.toTextSpace = _chunkX2KQQZBTcjs.toTextSpace; exports.toneCurve = _chunkX2KQQZBTcjs.toneCurve; exports.toneLuts = _chunkX2KQQZBTcjs.toneLuts; exports.toneOf = _chunk7NW46N7Icjs.toneOf; exports.toneRange = toneRange; exports.transformHomography = _chunkX2KQQZBTcjs.transformHomography; exports.transformMap = _chunkX2KQQZBTcjs.transformMap; exports.transformShapeComponents = _chunkX2KQQZBTcjs.transformShapeComponents; exports.transformSurface = _chunkHGTDMKNEcjs.transformSurface; exports.transformTypeLayer = _chunkX2KQQZBTcjs.transformTypeLayer; exports.transformedBounds = _chunkHGTDMKNEcjs.transformedBounds; exports.transformedBox = _chunkX2KQQZBTcjs.transformedBox; exports.transformedPoint = _chunkX2KQQZBTcjs.transformedPoint; exports.translateLayer = _chunkX2KQQZBTcjs.translateLayer; exports.translateSurface = _chunkCWM3CUUXcjs.translateSurface; exports.typeAsPixelLayer = _chunkX2KQQZBTcjs.typeAsPixelLayer; exports.typeFrame = _chunkX2KQQZBTcjs.typeFrame; exports.typeFromAnnotation = _chunkX2KQQZBTcjs.typeFromAnnotation; exports.typeLayerAt = typeLayerAt; exports.typeLayerName = _chunkX2KQQZBTcjs.typeLayerName; exports.ungroupLayer = _chunkX2KQQZBTcjs.ungroupLayer; exports.uniformTile = _chunkCWM3CUUXcjs.uniformTile; exports.unionRect = _chunkX2KQQZBTcjs.unionRect; exports.unprojectCanvasPoint = _chunkX2KQQZBTcjs.unprojectCanvasPoint; exports.updateLayerEffect = _chunkX2KQQZBTcjs.updateLayerEffect; exports.updateLayerFilter = _chunkX2KQQZBTcjs.updateLayerFilter; exports.updateLayerMaskProps = _chunkX2KQQZBTcjs.updateLayerMaskProps; exports.updatePaintGradientStop = _chunkEBDCRTZIcjs.updatePaintGradientStop; exports.updateShapeLayer = _chunkX2KQQZBTcjs.updateShapeLayer; exports.updateSmartFilter = _chunkX2KQQZBTcjs.updateSmartFilter; exports.updateTypeLayer = _chunkX2KQQZBTcjs.updateTypeLayer; exports.userErrorMessage = _chunkX2KQQZBTcjs.userErrorMessage; exports.uvToXy = _chunkX2KQQZBTcjs.uvToXy; exports.validateEffectGradient = _chunkHGTDMKNEcjs.validateEffectGradient; exports.validateLayerEffect = _chunkHGTDMKNEcjs.validateLayerEffect; exports.validateLayerEffects = _chunkHGTDMKNEcjs.validateLayerEffects; exports.versionedDescriptorBytes = _chunkX2KQQZBTcjs.versionedDescriptorBytes; exports.vibranceLinear = _chunkX2KQQZBTcjs.vibranceLinear; exports.vibrancePixel = _chunkX2KQQZBTcjs.vibrancePixel; exports.walkDabs = _chunkEBDCRTZIcjs.walkDabs; exports.warpMeshEditPoints = _chunkEGZM52EOcjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkEGZM52EOcjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkEGZM52EOcjs.warpMeshParamAt; exports.warpPresetMesh = _chunkEGZM52EOcjs.warpPresetMesh; exports.warpSurface = _chunkHGTDMKNEcjs.warpSurface; exports.watchCanvasViewport = watchCanvasViewport; exports.wbMatrix = _chunkX2KQQZBTcjs.wbMatrix; exports.wetGpuSupport = _chunkV7GWZIZKcjs.wetGpuSupport; exports.wetSimdSupported = _chunkV7GWZIZKcjs.wetSimdSupported; exports.wetSupport = _chunkV7GWZIZKcjs.wetSupport; exports.whiteBalanceFromSample = _chunkX2KQQZBTcjs.whiteBalanceFromSample; exports.whiteBalanceMatrix = _chunkX2KQQZBTcjs.whiteBalanceMatrix; exports.withBackgroundOpacity = withBackgroundOpacity; exports.withFilterMaskSurface = _chunkX2KQQZBTcjs.withFilterMaskSurface; exports.withImagePlayback = withImagePlayback; exports.withNewIds = _chunkX2KQQZBTcjs.withNewIds; exports.writeAdjustmentBlock = _chunkX2KQQZBTcjs.writeAdjustmentBlock; exports.writeDeepRegion = _chunkCWM3CUUXcjs.writeDeepRegion; exports.writeLfx2 = _chunkX2KQQZBTcjs.writeLfx2; exports.writePatternBlock = _chunkX2KQQZBTcjs.writePatternBlock; exports.writePsd = _chunkX2KQQZBTcjs.writePsd; exports.writeRegion = _chunkCWM3CUUXcjs.writeRegion; exports.xyToTempTint = _chunkX2KQQZBTcjs.xyToTempTint; exports.xyToUv = _chunkX2KQQZBTcjs.xyToUv;
18662
+
18663
+
18664
+
18665
+
18666
+
18667
+ exports.ADJUSTMENT_KEYS = _chunkX2KQQZBTcjs.ADJUSTMENT_KEYS; exports.ADJUSTMENT_KINDS = _chunkX2KQQZBTcjs.ADJUSTMENT_KINDS; exports.ADJUSTMENT_LAYER_CONTROLS = ADJUSTMENT_LAYER_CONTROLS; exports.ADJUSTMENT_LAYER_OPACITY_CONTROL = ADJUSTMENT_LAYER_OPACITY_CONTROL; exports.ADJUSTMENT_LUT_SIZE = _chunkX2KQQZBTcjs.ADJUSTMENT_LUT_SIZE; exports.ANCHOR_FRACTION = _chunkX2KQQZBTcjs.ANCHOR_FRACTION; exports.AS_SHOT_KELVIN = _chunkX2KQQZBTcjs.AS_SHOT_KELVIN; exports.BACKGROUND_LAYER_ID = _chunkX2KQQZBTcjs.BACKGROUND_LAYER_ID; exports.BACKGROUND_LAYER_NAME = _chunkX2KQQZBTcjs.BACKGROUND_LAYER_NAME; exports.BIT_DEPTHS = _chunkCWM3CUUXcjs.BIT_DEPTHS; exports.BIT_DEPTH_OPTIONS = BIT_DEPTH_OPTIONS; exports.BLEND_MODES = _chunkCWM3CUUXcjs.BLEND_MODES; exports.BLUR_FILTER_ID = _chunkX2KQQZBTcjs.BLUR_FILTER_ID; exports.BODY_SCATTER = _chunkV7GWZIZKcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BRUSH_OPTION_CONTROLS = BRUSH_OPTION_CONTROLS; exports.BUILTIN_PROFILES = _chunkBROJYMWUcjs.BUILTIN_PROFILES; exports.BrushstrokeCache = _chunkEBDCRTZIcjs.BrushstrokeCache; exports.CANVAS_SIZE_PRESETS = CANVAS_SIZE_PRESETS; exports.CLONE_TRANSFORM_CONTROLS = CLONE_TRANSFORM_CONTROLS; exports.COLOR_MODE_OPTIONS = COLOR_MODE_OPTIONS; exports.COLOR_RANGE_PRESETS = COLOR_RANGE_PRESETS; exports.COLOR_RANGE_PRESET_LABELS = COLOR_RANGE_PRESET_LABELS; exports.CoverageMap = _chunkEBDCRTZIcjs.CoverageMap; exports.D50 = _chunkX2KQQZBTcjs.D50; exports.D65 = _chunkX2KQQZBTcjs.D65; exports.DEFAULT_ADJUSTMENTS = DEFAULT_ADJUSTMENTS; exports.DEFAULT_AUTO_LEADING = _chunkEGZM52EOcjs.DEFAULT_AUTO_LEADING; exports.DEFAULT_BLENDER = _chunkEBDCRTZIcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkEBDCRTZIcjs.DEFAULT_BRUSH; exports.DEFAULT_CANVAS_VIEWPORT = DEFAULT_CANVAS_VIEWPORT; exports.DEFAULT_CHANNEL_COLOR = DEFAULT_CHANNEL_COLOR; exports.DEFAULT_DEPTH_MASK = DEFAULT_DEPTH_MASK; exports.DEFAULT_FLOW = _chunkV7GWZIZKcjs.DEFAULT_FLOW; exports.DEFAULT_GLOBAL_LIGHT = _chunkHGTDMKNEcjs.DEFAULT_GLOBAL_LIGHT; exports.DEFAULT_MITER_LIMIT = _chunkX2KQQZBTcjs.DEFAULT_MITER_LIMIT; exports.DEFAULT_MIXER = _chunkEBDCRTZIcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkEBDCRTZIcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PROOF = DEFAULT_PROOF; exports.DEFAULT_REFINE_EDGE_PARAMS = DEFAULT_REFINE_EDGE_PARAMS; exports.DEFAULT_RETOUCH = _chunk7NW46N7Icjs.DEFAULT_RETOUCH; exports.DEFAULT_SELECTION_TOOL_OPTIONS = DEFAULT_SELECTION_TOOL_OPTIONS; exports.DEFAULT_SHAPE_TOOL_OPTIONS = DEFAULT_SHAPE_TOOL_OPTIONS; exports.DEFAULT_SMUDGE = _chunkEBDCRTZIcjs.DEFAULT_SMUDGE; exports.DEFAULT_TEXT_STYLE = _chunkEGZM52EOcjs.DEFAULT_TEXT_STYLE; exports.DEFAULT_TRANSFORM = DEFAULT_TRANSFORM; exports.DEFAULT_TYPE_TOOL_OPTIONS = DEFAULT_TYPE_TOOL_OPTIONS; exports.DEFAULT_WET_PAPER = _chunkV7GWZIZKcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkV7GWZIZKcjs.DEFAULT_WET_PARAMS; exports.DEPTH_MASK_CONTROLS = DEPTH_MASK_CONTROLS; exports.DEVELOP_FILTER_ID = _chunkX2KQQZBTcjs.DEVELOP_FILTER_ID; exports.DIRECT_GAUSSIAN_MAX_SIGMA = _chunkHGTDMKNEcjs.DIRECT_GAUSSIAN_MAX_SIGMA; exports.DRY_EPS = _chunkV7GWZIZKcjs.DRY_EPS; exports.DabWalker = _chunkEBDCRTZIcjs.DabWalker; exports.EFFECT_LAYER_USES = EFFECT_LAYER_USES; exports.EMPTY_DISTANCE = _chunkX2KQQZBTcjs.EMPTY_DISTANCE; exports.EMPTY_MIXER_LOAD = _chunkEBDCRTZIcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkV7GWZIZKcjs.EX; exports.EY = _chunkV7GWZIZKcjs.EY; exports.FLAG_ALIVE = _chunkV7GWZIZKcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkV7GWZIZKcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkV7GWZIZKcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkV7GWZIZKcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkV7GWZIZKcjs.FLAG_TOP; exports.FLAG_WET = _chunkV7GWZIZKcjs.FLAG_WET; exports.FLAT = _chunkV7GWZIZKcjs.FLAT; exports.FREE_INTERVAL = _chunkV7GWZIZKcjs.FREE_INTERVAL; exports.FREE_TRANSFORM_CONTENTS = FREE_TRANSFORM_CONTENTS; exports.FREE_TRANSFORM_FIELDS = FREE_TRANSFORM_FIELDS; exports.FREE_TRANSFORM_MODES = _chunkX2KQQZBTcjs.FREE_TRANSFORM_MODES; exports.FREE_TRANSFORM_MODE_OPTIONS = FREE_TRANSFORM_MODE_OPTIONS; exports.FreeTransformSession = FreeTransformSession; exports.FreeTransformTool = FreeTransformTool; exports.GRAIN_PATTERNS = _chunkEBDCRTZIcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkEBDCRTZIcjs.GRAIN_TILE; exports.GUIDED_FILTER_EPS = GUIDED_FILTER_EPS; exports.HIDE = _chunkV7GWZIZKcjs.HIDE; exports.HISTOGRAM_BINS = HISTOGRAM_BINS; exports.HUE_RANGE_LABELS = _chunkX2KQQZBTcjs.HUE_RANGE_LABELS; exports.HUE_RANGE_PRESETS = HUE_RANGE_PRESETS; exports.IDENTITY_CLONE_TRANSFORM = _chunk7NW46N7Icjs.IDENTITY_CLONE_TRANSFORM; exports.IDENTITY_MATRIX3 = _chunkX2KQQZBTcjs.IDENTITY_MATRIX3; exports.IMAGE_ADJUSTMENT_CONTROLS = IMAGE_ADJUSTMENT_CONTROLS; exports.IMAGE_CROP_PRESETS = IMAGE_CROP_PRESETS; exports.IMAGE_EDITOR_SCHEMA_VERSION = IMAGE_EDITOR_SCHEMA_VERSION; exports.IMAGE_EDITOR_STATE_VERSION = IMAGE_EDITOR_STATE_VERSION; exports.IMAGE_EFFECT_PLACES = IMAGE_EFFECT_PLACES; exports.IMAGE_FILTER_PRESETS = IMAGE_FILTER_PRESETS; exports.IMAGE_PLAYBACK_KIND = IMAGE_PLAYBACK_KIND; exports.INTENTS = _chunkBROJYMWUcjs.INTENTS; exports.INTENT_OPTIONS = INTENT_OPTIONS; exports.INTERPOLATIONS = _chunkHGTDMKNEcjs.INTERPOLATIONS; exports.ImageEditorController = ImageEditorController; exports.ImageEditorRenderer = ImageEditorRenderer; exports.ImageEffectsEngine = ImageEffectsEngine; exports.LATEST_PROCESS_VERSION = _chunkX2KQQZBTcjs.LATEST_PROCESS_VERSION; exports.LAYERED_SCHEMA_VERSION = _chunkX2KQQZBTcjs.LAYERED_SCHEMA_VERSION; exports.LAYER_EFFECT_KINDS = _chunkHGTDMKNEcjs.LAYER_EFFECT_KINDS; exports.LAYER_EFFECT_MENU = LAYER_EFFECT_MENU; exports.LEGACY_PROCESS_VERSION = _chunkX2KQQZBTcjs.LEGACY_PROCESS_VERSION; exports.LIVE_SHAPE_KINDS = _chunkX2KQQZBTcjs.LIVE_SHAPE_KINDS; exports.LUMA_709 = _chunkX2KQQZBTcjs.LUMA_709; exports.LayerCompositor = _chunkX2KQQZBTcjs.LayerCompositor; exports.LayerEffectError = _chunkHGTDMKNEcjs.LayerEffectError; exports.LayerOperationError = _chunkX2KQQZBTcjs.LayerOperationError; exports.MARCHING_ANTS_STEP_MS = MARCHING_ANTS_STEP_MS; exports.MASK_FILE_ACCEPT = MASK_FILE_ACCEPT; exports.MAX_BATCH = _chunkV7GWZIZKcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkEBDCRTZIcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_BACKING_SIDE = MAX_CANVAS_BACKING_SIDE; exports.MAX_EFFECT_ANIMATION_MS = _chunkX2KQQZBTcjs.MAX_EFFECT_ANIMATION_MS; exports.MAX_EFFECT_REACH = _chunkHGTDMKNEcjs.MAX_EFFECT_REACH; exports.MAX_KELVIN = _chunkX2KQQZBTcjs.MAX_KELVIN; exports.MAX_TILT_ACCEL = _chunkV7GWZIZKcjs.MAX_TILT_ACCEL; exports.MAX_TRANSFORM_PIXELS = _chunkHGTDMKNEcjs.MAX_TRANSFORM_PIXELS; exports.MAX_WET_LANES = _chunkV7GWZIZKcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkV7GWZIZKcjs.MAX_WET_SLOTS; exports.MIN_KELVIN = _chunkX2KQQZBTcjs.MIN_KELVIN; exports.MIRED_PER_TEMPERATURE_UNIT = _chunkX2KQQZBTcjs.MIRED_PER_TEMPERATURE_UNIT; exports.MIXER_DRAIN = _chunkEBDCRTZIcjs.MIXER_DRAIN; exports.MIXER_MIXING_OPTIONS = MIXER_MIXING_OPTIONS; exports.MIXER_OPTION_CONTROLS = MIXER_OPTION_CONTROLS; exports.MIXER_PICKUP_RATE = _chunkEBDCRTZIcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkEBDCRTZIcjs.MIXING_MODELS; exports.MixerStroke = _chunkEBDCRTZIcjs.MixerStroke; exports.OPP = _chunkV7GWZIZKcjs.OPP; exports.PAINTERLY_BLEND_MODES = _chunkCWM3CUUXcjs.PAINTERLY_BLEND_MODES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkEBDCRTZIcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkEBDCRTZIcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkEBDCRTZIcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkEBDCRTZIcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_CAPACITY = _chunkV7GWZIZKcjs.PAPER_CAPACITY; exports.PARAGRAPH_STYLE_FIELDS = _chunkX2KQQZBTcjs.PARAGRAPH_STYLE_FIELDS; exports.PARAM = _chunkV7GWZIZKcjs.PARAM; exports.PARAM_FLOATS = _chunkV7GWZIZKcjs.PARAM_FLOATS; exports.PASTE_MODES = PASTE_MODES; exports.PATTERN_BLOCK_KEYS = _chunkX2KQQZBTcjs.PATTERN_BLOCK_KEYS; exports.PIGMENT_BANDS = _chunkCWM3CUUXcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkV7GWZIZKcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkCWM3CUUXcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkV7GWZIZKcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkCWM3CUUXcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkV7GWZIZKcjs.PLANE; exports.PLANE_BYTES = _chunkV7GWZIZKcjs.PLANE_BYTES; exports.PROOF_PROFILE_OPTIONS = PROOF_PROFILE_OPTIONS; exports.PSD_BLEND_KEYS = _chunkX2KQQZBTcjs.PSD_BLEND_KEYS; exports.PSD_FILE_ACCEPT = PSD_FILE_ACCEPT; exports.P_D0 = _chunkV7GWZIZKcjs.P_D0; exports.P_EDGE = _chunkV7GWZIZKcjs.P_EDGE; exports.P_FX = _chunkV7GWZIZKcjs.P_FX; exports.P_FY = _chunkV7GWZIZKcjs.P_FY; exports.P_H = _chunkV7GWZIZKcjs.P_H; exports.P_P0 = _chunkV7GWZIZKcjs.P_P0; exports.P_RHO = _chunkV7GWZIZKcjs.P_RHO; exports.P_SW = _chunkV7GWZIZKcjs.P_SW; exports.P_UX = _chunkV7GWZIZKcjs.P_UX; exports.P_UY = _chunkV7GWZIZKcjs.P_UY; exports.PaintExchange = _chunkEBDCRTZIcjs.PaintExchange; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkEBDCRTZIcjs.PaintGradientSampler; exports.PaintSourceError = _chunkEBDCRTZIcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaperGrain = _chunkEBDCRTZIcjs.PaperGrain; exports.PatternPlacement = _chunkHGTDMKNEcjs.PatternPlacement; exports.PatternTile = _chunkHGTDMKNEcjs.PatternTile; exports.PsdError = _chunkX2KQQZBTcjs.PsdError; exports.QUICK_MASK_TARGET = QUICK_MASK_TARGET; exports.REFINE_EDGE_CONTROLS = REFINE_EDGE_CONTROLS; exports.RETOUCH_CHOICES = RETOUCH_CHOICES; exports.RETOUCH_OPTION_CONTROLS = RETOUCH_OPTION_CONTROLS; exports.RETOUCH_SAMPLES = _chunk7NW46N7Icjs.RETOUCH_SAMPLES; exports.RETOUCH_TOGGLES = RETOUCH_TOGGLES; exports.RETOUCH_TOOLS = RETOUCH_TOOLS; exports.RegionPixelSource = _chunk7NW46N7Icjs.RegionPixelSource; exports.RetouchDabStroke = _chunk7NW46N7Icjs.RetouchDabStroke; exports.SELECTION_MODES = _chunkX2KQQZBTcjs.SELECTION_MODES; exports.SELECTION_MODE_LABELS = SELECTION_MODE_LABELS; exports.SELECTION_MODIFY_OPS = _chunkX2KQQZBTcjs.SELECTION_MODIFY_OPS; exports.SELECTION_TOOLS = SELECTION_TOOLS; exports.SET_PLANES = _chunkV7GWZIZKcjs.SET_PLANES; exports.SHADOW_AMBIENT = _chunkCWM3CUUXcjs.SHADOW_AMBIENT; exports.SHAPE_KIND_LABELS = SHAPE_KIND_LABELS; exports.SHAPE_OPERATIONS = _chunkX2KQQZBTcjs.SHAPE_OPERATIONS; exports.SHAPE_RENDER_MARGIN = _chunkX2KQQZBTcjs.SHAPE_RENDER_MARGIN; exports.SLOT_BYTES = _chunkV7GWZIZKcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkV7GWZIZKcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkV7GWZIZKcjs.SLOT_SIDE; exports.SMART_RENDER_MARGIN = _chunkX2KQQZBTcjs.SMART_RENDER_MARGIN; exports.SPOT_HEAL_TYPES = _chunk7NW46N7Icjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkV7GWZIZKcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkV7GWZIZKcjs.STRIP; exports.SUPPORTED_ADJUSTMENT_KEYS = _chunkX2KQQZBTcjs.SUPPORTED_ADJUSTMENT_KEYS; exports.SelectionGesture = SelectionGesture; exports.ShapeDrawGesture = ShapeDrawGesture; exports.SmudgeTip = _chunkEBDCRTZIcjs.SmudgeTip; exports.StrokeCoverage = _chunkEBDCRTZIcjs.StrokeCoverage; exports.SurfaceDraft = _chunkCWM3CUUXcjs.SurfaceDraft; exports.TEXT_ALIGNS = _chunkX2KQQZBTcjs.TEXT_ALIGNS; exports.TEXT_RENDER_MARGIN = _chunkX2KQQZBTcjs.TEXT_RENDER_MARGIN; exports.TEXT_STYLE_FIELDS = _chunkX2KQQZBTcjs.TEXT_STYLE_FIELDS; exports.TILE = _chunkCWM3CUUXcjs.TILE; exports.TILE_SHIFT = _chunkCWM3CUUXcjs.TILE_SHIFT; exports.TINT_SCALE = _chunkX2KQQZBTcjs.TINT_SCALE; exports.TIP_GRADIENT_STEPS = _chunkEBDCRTZIcjs.TIP_GRADIENT_STEPS; exports.TONE_LUT_SIZE = _chunkX2KQQZBTcjs.TONE_LUT_SIZE; exports.TONE_RANGES = _chunk7NW46N7Icjs.TONE_RANGES; exports.TONE_RANGE_PRESETS = TONE_RANGE_PRESETS; exports.TRANSFORM_ANCHORS = _chunkX2KQQZBTcjs.TRANSFORM_ANCHORS; exports.TRANSFORM_ROTATE_HANDLE_OFFSET = TRANSFORM_ROTATE_HANDLE_OFFSET; exports.TextEditSession = TextEditSession; exports.TileMedium = _chunkEBDCRTZIcjs.TileMedium; exports.TilePixelSource = _chunk7NW46N7Icjs.TilePixelSource; exports.TileableNoise = _chunkEBDCRTZIcjs.TileableNoise; exports.TiledSurface = _chunkCWM3CUUXcjs.TiledSurface; exports.TransformTooLargeError = _chunkHGTDMKNEcjs.TransformTooLargeError; exports.TransformedPixelSource = _chunk7NW46N7Icjs.TransformedPixelSource; exports.TypeToolGesture = TypeToolGesture; exports.U_MAX = _chunkV7GWZIZKcjs.U_MAX; exports.VIBRANCE_GREY = _chunkX2KQQZBTcjs.VIBRANCE_GREY; exports.W9 = _chunkV7GWZIZKcjs.W9; exports.WARP_GRID_OPTIONS = WARP_GRID_OPTIONS; exports.WARP_STYLES = _chunkEGZM52EOcjs.WARP_STYLES; exports.WARP_STYLE_LABELS = _chunkEGZM52EOcjs.WARP_STYLE_LABELS; exports.WARP_STYLE_OPTIONS = WARP_STYLE_OPTIONS; exports.WET_FLOW_KINDS = _chunkV7GWZIZKcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkV7GWZIZKcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkV7GWZIZKcjs.WET_TILE; exports.WGSL_HALO = _chunkV7GWZIZKcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkV7GWZIZKcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkV7GWZIZKcjs.WGSL_STEP; exports.WORKING_SPACE_OPTIONS = WORKING_SPACE_OPTIONS; exports.WetGpuEngine = _chunkV7GWZIZKcjs.WetGpuEngine; exports.WetMedium = _chunkV7GWZIZKcjs.WetMedium; exports.WetWorkerPool = _chunkV7GWZIZKcjs.WetWorkerPool; exports.WetWorld = _chunkV7GWZIZKcjs.WetWorld; exports.WetWorldError = _chunkV7GWZIZKcjs.WetWorldError; exports.XYZ_D50_TO_SRGB = _chunkX2KQQZBTcjs.XYZ_D50_TO_SRGB; exports.ZlibError = _chunkXFM3OCHUcjs.ZlibError; exports.activeAdjustmentLayers = _chunkX2KQQZBTcjs.activeAdjustmentLayers; exports.activeEffectSmartFilters = _chunkX2KQQZBTcjs.activeEffectSmartFilters; exports.activeLayerAfterRemoval = _chunkX2KQQZBTcjs.activeLayerAfterRemoval; exports.activeSmartFilters = _chunkX2KQQZBTcjs.activeSmartFilters; exports.addLayerEffect = _chunkX2KQQZBTcjs.addLayerEffect; exports.addLayerFilter = _chunkX2KQQZBTcjs.addLayerFilter; exports.addLayerOfKind = addLayerOfKind; exports.addPaintGradientStop = _chunkEBDCRTZIcjs.addPaintGradientStop; exports.addSmartFilter = _chunkX2KQQZBTcjs.addSmartFilter; exports.addToHistogram = addToHistogram; exports.adjustmentKindLabel = _chunkX2KQQZBTcjs.adjustmentKindLabel; exports.adjustmentLayersKey = _chunkX2KQQZBTcjs.adjustmentLayersKey; exports.adjustmentNodeAsLayer = _chunkX2KQQZBTcjs.adjustmentNodeAsLayer; exports.adjustmentNodeFromLegacy = _chunkX2KQQZBTcjs.adjustmentNodeFromLegacy; exports.adler32 = _chunkXFM3OCHUcjs.adler32; exports.agentDragDraft = agentDragDraft; exports.anchorPoint = _chunkX2KQQZBTcjs.anchorPoint; exports.annotationBlend = _chunkX2KQQZBTcjs.annotationBlend; exports.annotationLayerFor = _chunkX2KQQZBTcjs.annotationLayerFor; exports.annotationLayerName = _chunkX2KQQZBTcjs.annotationLayerName; exports.annotationOfLayer = _chunkX2KQQZBTcjs.annotationOfLayer; exports.annotationOfShape = _chunkX2KQQZBTcjs.annotationOfShape; exports.annotationOfType = _chunkX2KQQZBTcjs.annotationOfType; exports.applyAdjustmentLayers = _chunkX2KQQZBTcjs.applyAdjustmentLayers; exports.applyAdjustmentLayersFloat = _chunkX2KQQZBTcjs.applyAdjustmentLayersFloat; exports.applyAdjustments = _chunkX2KQQZBTcjs.applyAdjustments; exports.applyBoxBlur = _chunkX2KQQZBTcjs.applyBoxBlur; exports.applyBoxBlurFloat = _chunkX2KQQZBTcjs.applyBoxBlurFloat; exports.applyDepthMask = _chunkX2KQQZBTcjs.applyDepthMask; exports.applyHomography = _chunkQT26RHKKcjs.applyHomography; exports.applyImageProjectionToContext = _chunkX2KQQZBTcjs.applyImageProjectionToContext; exports.applyLegacyAdjustments = _chunkX2KQQZBTcjs.applyLegacyAdjustments; exports.applyLegacyFloat = _chunkX2KQQZBTcjs.applyLegacyFloat; exports.applyMatrix3 = _chunkX2KQQZBTcjs.applyMatrix3; exports.applyOutputStage = applyOutputStage; exports.applyParams = _chunkX2KQQZBTcjs.applyParams; exports.applyProcess2Adjustments = _chunkX2KQQZBTcjs.applyProcess2Adjustments; exports.applyProcess2Float = _chunkX2KQQZBTcjs.applyProcess2Float; exports.applyRegionBlur = applyRegionBlur; exports.applyRegionMosaic = applyRegionMosaic; exports.applyRetouchToTile = _chunk7NW46N7Icjs.applyRetouchToTile; exports.applyShapeOptions = applyShapeOptions; exports.applySmartFilters = _chunkX2KQQZBTcjs.applySmartFilters; exports.applyStrokeToDeepTile = _chunkEBDCRTZIcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkEBDCRTZIcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk7NW46N7Icjs.applyToneToDeepTile; exports.backgroundLayer = _chunkX2KQQZBTcjs.backgroundLayer; exports.base64ToBytes = _chunkCWM3CUUXcjs.base64ToBytes; exports.baseProjection = baseProjection; exports.bestOffset = _chunk7NW46N7Icjs.bestOffset; exports.blackWhiteGray = _chunkX2KQQZBTcjs.blackWhiteGray; exports.blendChannel = _chunkCWM3CUUXcjs.blendChannel; exports.blendImageData = _chunkCWM3CUUXcjs.blendImageData; exports.blendLum = _chunkCWM3CUUXcjs.blendLum; exports.blendPixel = _chunkCWM3CUUXcjs.blendPixel; exports.blendRadius = _chunkEBDCRTZIcjs.blendRadius; exports.blendRgb = _chunkCWM3CUUXcjs.blendRgb; exports.blendTile = _chunkHGTDMKNEcjs.blendTile; exports.blenderDab = _chunkEBDCRTZIcjs.blenderDab; exports.blurFilter = _chunkX2KQQZBTcjs.blurFilter; exports.borderCoverage = _chunkX2KQQZBTcjs.borderCoverage; exports.boxBlurPixels = _chunk7NW46N7Icjs.boxBlurPixels; exports.boxFrameHit = boxFrameHit; exports.boxFrameOverlay = boxFrameOverlay; exports.boxMean = boxMean; exports.boxPointOf = _chunkX2KQQZBTcjs.boxPointOf; exports.boxQuad = _chunkQT26RHKKcjs.boxQuad; exports.boxToCurvePoint = boxToCurvePoint; exports.bradfordAdaptation = _chunkX2KQQZBTcjs.bradfordAdaptation; exports.brushstrokeDataUrl = _chunkEBDCRTZIcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkEBDCRTZIcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkEBDCRTZIcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkEBDCRTZIcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkEBDCRTZIcjs.brushstrokeToCanvas; exports.buildLayerMaskPlanes = _chunkX2KQQZBTcjs.buildLayerMaskPlanes; exports.buildToneLut = _chunkX2KQQZBTcjs.buildToneLut; exports.builtinPattern = _chunkHGTDMKNEcjs.builtinPattern; exports.builtinPatternIds = _chunkHGTDMKNEcjs.builtinPatternIds; exports.bytesToBase64 = _chunkCWM3CUUXcjs.bytesToBase64; exports.calculateCropDrag = _chunkX2KQQZBTcjs.calculateCropDrag; exports.canShareMemory = _chunkV7GWZIZKcjs.canShareMemory; exports.canvasCompositeOperation = _chunkCWM3CUUXcjs.canvasCompositeOperation; exports.canvasToImagePoint = _chunkX2KQQZBTcjs.canvasToImagePoint; exports.caretAt = _chunkEGZM52EOcjs.caretAt; exports.changedTiles = _chunkHGTDMKNEcjs.changedTiles; exports.channelThumbnail = channelThumbnail; exports.checkEffectAnimation = checkEffectAnimation; exports.checkEffectTime = checkEffectTime; exports.checkImageEffectPlace = checkImageEffectPlace; exports.clampControlValue = clampControlValue; exports.clampCropToImage = _chunkX2KQQZBTcjs.clampCropToImage; exports.cleanMixer = _chunkEBDCRTZIcjs.cleanMixer; exports.cloneSamplePoint = _chunk7NW46N7Icjs.cloneSamplePoint; exports.cloneSourceLabel = cloneSourceLabel; exports.cloneTransformView = cloneTransformView; exports.collectTiles = _chunkCWM3CUUXcjs.collectTiles; exports.colorBalanceChannel = _chunkX2KQQZBTcjs.colorBalanceChannel; exports.colorModePlanes = colorModePlanes; exports.colorModePlanes16 = colorModePlanes16; exports.colorPanelView = colorPanelView; exports.colorRange = colorRange; exports.colorRangePreset = colorRangePreset; exports.combineSelections = _chunkX2KQQZBTcjs.combineSelections; exports.compileAdjustmentLayer = _chunkX2KQQZBTcjs.compileAdjustmentLayer; exports.componentPath = _chunkX2KQQZBTcjs.componentPath; exports.compositeDeep = _chunkX2KQQZBTcjs.compositeDeep; exports.compositeSurfaceOver = _chunkHGTDMKNEcjs.compositeSurfaceOver; exports.computeHistogram = computeHistogram; exports.computeSelectionBounds = _chunkX2KQQZBTcjs.computeSelectionBounds; exports.contentAwareFill = _chunk7NW46N7Icjs.contentAwareFill; exports.contentBounds = _chunkCWM3CUUXcjs.contentBounds; exports.contentsBox = _chunkX2KQQZBTcjs.contentsBox; exports.contentsSurface = _chunkX2KQQZBTcjs.contentsSurface; exports.contractCoverage = _chunkX2KQQZBTcjs.contractCoverage; exports.controlPosition = controlPosition; exports.controlTrackBackground = controlTrackBackground; exports.convertColorFields = convertColorFields; exports.convertHex = convertHex; exports.convertSurfaceColors = convertSurfaceColors; exports.convertSurfaceDepth = _chunkCWM3CUUXcjs.convertSurfaceDepth; exports.convertToSmartObject = _chunkX2KQQZBTcjs.convertToSmartObject; exports.copySmartObject = _chunkX2KQQZBTcjs.copySmartObject; exports.cornersFromMatrix = _chunkX2KQQZBTcjs.cornersFromMatrix; exports.coverageTileCoord = _chunkEBDCRTZIcjs.coverageTileCoord; exports.coverageToByte = _chunkX2KQQZBTcjs.coverageToByte; exports.coveringRect = coveringRect; exports.createAdjustmentLayer = _chunkX2KQQZBTcjs.createAdjustmentLayer; exports.createBlenderScratch = _chunkEBDCRTZIcjs.createBlenderScratch; exports.createCanvasTextShaper = _chunkEGZM52EOcjs.createCanvasTextShaper; exports.createImageCaptureSurface = createImageCaptureSurface; exports.createImageColorTools = createImageColorTools; exports.createImageEditTools = createImageEditTools; exports.createImageEditorDocument = createImageEditorDocument; exports.createImageEditorToolProvider = createImageEditorToolProvider; exports.createImageEffectTools = createImageEffectTools; exports.createImageEffectsToolProvider = createImageEffectsToolProvider; exports.createImageLayerTools = createImageLayerTools; exports.createImagePaintTools = createImagePaintTools; exports.createImagePlaybackLocator = createImagePlaybackLocator; exports.createImagePsdTools = createImagePsdTools; exports.createImageRetouchTools = createImageRetouchTools; exports.createImageSegmentationToolProvider = createImageSegmentationToolProvider; exports.createImageSelectionTools = createImageSelectionTools; exports.createImageShapeTools = createImageShapeTools; exports.createImageSmartObjectTools = createImageSmartObjectTools; exports.createImageSubjectSelectionTool = createImageSubjectSelectionTool; exports.createImageTransformTools = createImageTransformTools; exports.createImageTypeTools = createImageTypeTools; exports.createMetricTextShaper = _chunkEGZM52EOcjs.createMetricTextShaper; exports.createOutlineTextShaper = _chunkEGZM52EOcjs.createOutlineTextShaper; exports.createPigment = _chunkCWM3CUUXcjs.createPigment; exports.createPigmentTools = _chunkV7GWZIZKcjs.createPigmentTools; exports.createSelectionMask = _chunkX2KQQZBTcjs.createSelectionMask; exports.createShapeLayer = _chunkX2KQQZBTcjs.createShapeLayer; exports.createTypeLayer = _chunkX2KQQZBTcjs.createTypeLayer; exports.createWetGpuEngine = _chunkV7GWZIZKcjs.createWetGpuEngine; exports.cssFont = _chunkEGZM52EOcjs.cssFont; exports.cssFontFamily = _chunkEGZM52EOcjs.cssFontFamily; exports.curveLut = _chunkHGTDMKNEcjs.curveLut; exports.curveLutFromLevels = _chunkX2KQQZBTcjs.curveLutFromLevels; exports.curvePointToBox = curvePointToBox; exports.curveSvgPath = curveSvgPath; exports.dabCoverage = _chunkEBDCRTZIcjs.dabCoverage; exports.dabRect = _chunkEBDCRTZIcjs.dabRect; exports.decodeDeepSurface = _chunkX2KQQZBTcjs.decodeDeepSurface; exports.decodeLayerChannel = _chunkX2KQQZBTcjs.decodeLayerChannel; exports.decodeLayerMask = _chunkX2KQQZBTcjs.decodeLayerMask; exports.decodeMergedImage = _chunkX2KQQZBTcjs.decodeMergedImage; exports.decodePlanes = _chunkX2KQQZBTcjs.decodePlanes; exports.decodePng = _chunkCWM3CUUXcjs.decodePng; exports.decodePngDataUrl = _chunkX2KQQZBTcjs.decodePngDataUrl; exports.decodeSelectionRle = _chunkX2KQQZBTcjs.decodeSelectionRle; exports.deepBytes = _chunkCWM3CUUXcjs.deepBytes; exports.deepTile = _chunkCWM3CUUXcjs.deepTile; exports.defaultActiveLayerId = _chunkX2KQQZBTcjs.defaultActiveLayerId; exports.defaultAdjustmentParams = _chunkX2KQQZBTcjs.defaultAdjustmentParams; exports.defaultEffectGradient = _chunkHGTDMKNEcjs.defaultEffectGradient; exports.defaultLayerEffect = _chunkHGTDMKNEcjs.defaultLayerEffect; exports.defaultShapeName = _chunkX2KQQZBTcjs.defaultShapeName; exports.deflate = _chunkXFM3OCHUcjs.deflate; exports.deflateRaw = _chunkXFM3OCHUcjs.deflateRaw; exports.depthMaskAlpha = _chunkX2KQQZBTcjs.depthMaskAlpha; exports.depthOf = _chunkCWM3CUUXcjs.depthOf; exports.depthRasterMask = _chunkX2KQQZBTcjs.depthRasterMask; exports.describeChannel = describeChannel; exports.describeLayer = describeLayer; exports.describeLayerEffects = describeLayerEffects; exports.describeSelection = describeSelection; exports.describeTransform = _chunkX2KQQZBTcjs.describeTransform; exports.deserializeChannels = deserializeChannels; exports.deserializeColorMode = deserializeColorMode; exports.deserializeColorProfile = deserializeColorProfile; exports.deserializeEffects = _chunkX2KQQZBTcjs.deserializeEffects; exports.deserializeLayer = _chunkX2KQQZBTcjs.deserializeLayer; exports.deserializeLayers = _chunkX2KQQZBTcjs.deserializeLayers; exports.deserializePatterns = _chunkX2KQQZBTcjs.deserializePatterns; exports.deserializeSelection = _chunkX2KQQZBTcjs.deserializeSelection; exports.developFilter = _chunkX2KQQZBTcjs.developFilter; exports.developFromAdjustments = _chunkX2KQQZBTcjs.developFromAdjustments; exports.developTarget = _chunkX2KQQZBTcjs.developTarget; exports.dexp = _chunkV7GWZIZKcjs.dexp; exports.dilateMask = _chunk7NW46N7Icjs.dilateMask; exports.displayTransform = displayTransform; exports.distanceTransform = _chunkX2KQQZBTcjs.distanceTransform; exports.dlog = _chunkV7GWZIZKcjs.dlog; exports.documentContents = _chunkX2KQQZBTcjs.documentContents; exports.documentProfile = documentProfile; exports.dodgeBurn = _chunk7NW46N7Icjs.dodgeBurn; exports.dodgeBurnCurve = _chunk7NW46N7Icjs.dodgeBurnCurve; exports.downloadMaskImage = downloadMaskImage; exports.downloadPsd = downloadPsd; exports.dpow = _chunkV7GWZIZKcjs.dpow; exports.dragWarpMeshPoint = _chunkEGZM52EOcjs.dragWarpMeshPoint; exports.dropPlacement = dropPlacement; exports.dropZone = dropZone; exports.dsincos = _chunkV7GWZIZKcjs.dsincos; exports.duplicateLayer = _chunkX2KQQZBTcjs.duplicateLayer; exports.edgeBits = _chunkV7GWZIZKcjs.edgeBits; exports.edgeWidth = edgeWidth; exports.effectColorHex = _chunkHGTDMKNEcjs.effectColorHex; exports.effectControlChange = effectControlChange; exports.effectLayerTiming = effectLayerTiming; exports.effectPixelsToSurface = effectPixelsToSurface; exports.effectReach = _chunkHGTDMKNEcjs.effectReach; exports.effectiveProof = effectiveProof; exports.effectsFingerprint = _chunkHGTDMKNEcjs.effectsFingerprint; exports.effectsMargin = _chunkHGTDMKNEcjs.effectsMargin; exports.effectsScale = _chunkHGTDMKNEcjs.effectsScale; exports.ellipsePoints = ellipsePoints; exports.ellipseSelection = ellipseSelection; exports.emptyHistogram = emptyHistogram; exports.emptySurface = _chunkCWM3CUUXcjs.emptySurface; exports.encodeDeepSurface = _chunkX2KQQZBTcjs.encodeDeepSurface; exports.encodePng = _chunkCWM3CUUXcjs.encodePng; exports.encodeRle = _chunkX2KQQZBTcjs.encodeRle; exports.encodeSelectionRle = _chunkX2KQQZBTcjs.encodeSelectionRle; exports.encodeSurface = _chunkX2KQQZBTcjs.encodeSurface; exports.evalWarpMesh = _chunkEGZM52EOcjs.evalWarpMesh; exports.evaluateAdjustmentLayers = _chunkX2KQQZBTcjs.evaluateAdjustmentLayers; exports.exchangeRates = _chunkEBDCRTZIcjs.exchangeRates; exports.expNeg = _chunkV7GWZIZKcjs.expNeg; exports.expandCoverage = _chunkX2KQQZBTcjs.expandCoverage; exports.exportPsd = _chunkX2KQQZBTcjs.exportPsd; exports.extractNormalizedLayerItems = extractNormalizedLayerItems; exports.featherCoverage = _chunkX2KQQZBTcjs.featherCoverage; exports.fillRect = _chunkCWM3CUUXcjs.fillRect; exports.filmPixel = _chunkV7GWZIZKcjs.filmPixel; exports.filmReflectance = _chunkV7GWZIZKcjs.filmReflectance; exports.filterMaskCoverage = _chunkX2KQQZBTcjs.filterMaskCoverage; exports.findAdjustmentControl = findAdjustmentControl; exports.findLayer = _chunkHGTDMKNEcjs.findLayer; exports.findLayerControl = findLayerControl; exports.findWebGpu = _chunkV7GWZIZKcjs.findWebGpu; exports.finishTile = _chunkCWM3CUUXcjs.finishTile; exports.fitParagraphRuns = _chunkEGZM52EOcjs.fitParagraphRuns; exports.fitRuns = _chunkEGZM52EOcjs.fitRuns; exports.flattenLayers = _chunkHGTDMKNEcjs.flattenLayers; exports.flattenPath = _chunkX2KQQZBTcjs.flattenPath; exports.flipCorners = _chunkX2KQQZBTcjs.flipCorners; exports.flowField = _chunkV7GWZIZKcjs.flowField; exports.fontOf = _chunkEGZM52EOcjs.fontOf; exports.formatControlValue = formatControlValue; exports.fullSelection = _chunkX2KQQZBTcjs.fullSelection; exports.gaussianBlur = _chunkHGTDMKNEcjs.gaussianBlur; exports.geometryHomography = _chunkX2KQQZBTcjs.geometryHomography; exports.getAnnotationBounds = _chunkX2KQQZBTcjs.getAnnotationBounds; exports.getControlPath = getControlPath; exports.getCropCursor = _chunkX2KQQZBTcjs.getCropCursor; exports.getRotatedSize = _chunkX2KQQZBTcjs.getRotatedSize; exports.getViewportMetrics = _chunkX2KQQZBTcjs.getViewportMetrics; exports.getViewportProjection = _chunkX2KQQZBTcjs.getViewportProjection; exports.globalImageCache = globalImageCache; exports.gradientDabColor = _chunkEBDCRTZIcjs.gradientDabColor; exports.grainCatch = _chunkEBDCRTZIcjs.grainCatch; exports.grainHeights = _chunkEBDCRTZIcjs.grainHeights; exports.greyMorphology = _chunkX2KQQZBTcjs.greyMorphology; exports.groupLayers = _chunkX2KQQZBTcjs.groupLayers; exports.growSelection = growSelection; exports.guidePlanes = guidePlanes; exports.guidedFilterColor = guidedFilterColor; exports.handlePaintShortcut = handlePaintShortcut; exports.handleQuickMaskKey = handleQuickMaskKey; exports.handleSelectionShortcut = handleSelectionShortcut; exports.hasActiveEffects = _chunkHGTDMKNEcjs.hasActiveEffects; exports.hasLayersBelow = hasLayersBelow; exports.hasResampledLegacyMask = _chunkX2KQQZBTcjs.hasResampledLegacyMask; exports.hasSurface = _chunkX2KQQZBTcjs.hasSurface; exports.hasWarp = _chunkX2KQQZBTcjs.hasWarp; exports.hash2 = _chunkEBDCRTZIcjs.hash2; exports.hashMaskContent = _chunkX2KQQZBTcjs.hashMaskContent; exports.hashNoise = _chunkHGTDMKNEcjs.hashNoise; exports.healPixels = _chunk7NW46N7Icjs.healPixels; exports.hexToPaintRgb = _chunkEBDCRTZIcjs.hexToPaintRgb; exports.hexToRgb = _chunkX2KQQZBTcjs.hexToRgb; exports.histogramPath = histogramPath; exports.hitTestAnnotation = _chunkX2KQQZBTcjs.hitTestAnnotation; exports.hitTestCrop = _chunkX2KQQZBTcjs.hitTestCrop; exports.hitTestCurvePoint = hitTestCurvePoint; exports.homographyFromAffine = _chunkQT26RHKKcjs.homographyFromAffine; exports.homographyFromPoints = _chunkQT26RHKKcjs.homographyFromPoints; exports.hslToRgb = _chunkX2KQQZBTcjs.hslToRgb; exports.hueRange = hueRange; exports.hueRangeTables = _chunkX2KQQZBTcjs.hueRangeTables; exports.hueRangeWeight = _chunkX2KQQZBTcjs.hueRangeWeight; exports.hueSaturation = _chunkX2KQQZBTcjs.hueSaturation; exports.identityCurve = _chunkX2KQQZBTcjs.identityCurve; exports.identityLevels = _chunkX2KQQZBTcjs.identityLevels; exports.identityTransform = _chunkX2KQQZBTcjs.identityTransform; exports.identityWarpMesh = _chunkEGZM52EOcjs.identityWarpMesh; exports.imageEditorStateMigrations = imageEditorStateMigrations; exports.imageLayerAppliedEffects = imageLayerAppliedEffects; exports.imagePlaybackPanel = imagePlaybackPanel; exports.imageToCanvasPoint = _chunkX2KQQZBTcjs.imageToCanvasPoint; exports.importPsd = _chunkX2KQQZBTcjs.importPsd; exports.inflate = _chunkXFM3OCHUcjs.inflate; exports.inflateRaw = _chunkXFM3OCHUcjs.inflateRaw; exports.insertCurvePoint = insertCurvePoint; exports.insertLayer = _chunkHGTDMKNEcjs.insertLayer; exports.instancesOf = _chunkX2KQQZBTcjs.instancesOf; exports.invertHomography = _chunkQT26RHKKcjs.invertHomography; exports.invertMatrix3 = _chunkX2KQQZBTcjs.invertMatrix3; exports.invertSelection = _chunkX2KQQZBTcjs.invertSelection; exports.isActiveFilter = _chunkX2KQQZBTcjs.isActiveFilter; exports.isAdjustmentKind = _chunkX2KQQZBTcjs.isAdjustmentKind; exports.isBitDepth = _chunkCWM3CUUXcjs.isBitDepth; exports.isBlendMode = _chunkCWM3CUUXcjs.isBlendMode; exports.isBrushstrokeBrush = _chunkEBDCRTZIcjs.isBrushstrokeBrush; exports.isColorRangePreset = isColorRangePreset; exports.isContentsDecoded = _chunkX2KQQZBTcjs.isContentsDecoded; exports.isDefaultDepthMask = _chunkX2KQQZBTcjs.isDefaultDepthMask; exports.isGradientPaint = _chunkEBDCRTZIcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk7NW46N7Icjs.isIdentityCloneTransform; exports.isIdentityTransform = _chunkX2KQQZBTcjs.isIdentityTransform; exports.isInterpolation = _chunkHGTDMKNEcjs.isInterpolation; exports.isLayerEffectKind = _chunkHGTDMKNEcjs.isLayerEffectKind; exports.isLayerLocked = _chunkHGTDMKNEcjs.isLayerLocked; exports.isLegacyShape = _chunkX2KQQZBTcjs.isLegacyShape; exports.isPaintTool = isPaintTool; exports.isPaintableLayer = _chunkX2KQQZBTcjs.isPaintableLayer; exports.isPainterlyBlendMode = _chunkCWM3CUUXcjs.isPainterlyBlendMode; exports.isPng = _chunkCWM3CUUXcjs.isPng; exports.isQuarterTurn = isQuarterTurn; exports.isQuarterTurnSwapped = _chunkX2KQQZBTcjs.isQuarterTurnSwapped; exports.isRenderedLayer = _chunkX2KQQZBTcjs.isRenderedLayer; exports.isRetouchPaintTool = isRetouchPaintTool; exports.isRetouchTool = isRetouchTool; exports.isSelectionEmpty = _chunkX2KQQZBTcjs.isSelectionEmpty; exports.isSelectionMode = _chunkX2KQQZBTcjs.isSelectionMode; exports.isSeparableBlendMode = _chunkCWM3CUUXcjs.isSeparableBlendMode; exports.isSmartSurfaceIncomplete = _chunkX2KQQZBTcjs.isSmartSurfaceIncomplete; exports.isSpatialFilter = _chunkX2KQQZBTcjs.isSpatialFilter; exports.isSrgb = isSrgb; exports.isTransformAnchor = _chunkX2KQQZBTcjs.isTransformAnchor; exports.isValidWarp = _chunkX2KQQZBTcjs.isValidWarp; exports.keepDeepSamples = _chunkCWM3CUUXcjs.keepDeepSamples; exports.kelvinToTemperature = _chunkX2KQQZBTcjs.kelvinToTemperature; exports.keysWeight = _chunkHGTDMKNEcjs.keysWeight; exports.latticeViscosity = _chunkV7GWZIZKcjs.latticeViscosity; exports.layerBadge = layerBadge; exports.layerEffectControls = layerEffectControls; exports.layerEffectFields = _chunkHGTDMKNEcjs.layerEffectFields; exports.layerEffectLabel = _chunkHGTDMKNEcjs.layerEffectLabel; exports.layerEffectsBadge = layerEffectsBadge; exports.layerEffectsOf = _chunkX2KQQZBTcjs.layerEffectsOf; exports.layerEffectsPanel = layerEffectsPanel; exports.layerHasThumbnail = layerHasThumbnail; exports.layerLabel = layerLabel; exports.layerMaskCoverage = _chunkX2KQQZBTcjs.layerMaskCoverage; exports.layerMaskFromSelection = _chunkX2KQQZBTcjs.layerMaskFromSelection; exports.layerMaskKey = _chunkX2KQQZBTcjs.layerMaskKey; exports.layerMenu = layerMenu; exports.layerName = _chunkX2KQQZBTcjs.layerName; exports.layerPanelRows = layerPanelRows; exports.layerPanels = layerPanels; exports.layerThumbnailClick = layerThumbnailClick; exports.layerTree = _chunkX2KQQZBTcjs.layerTree; exports.layerTypeLabel = _chunkX2KQQZBTcjs.layerTypeLabel; exports.layerWarning = layerWarning; exports.layersFromLegacy = _chunkX2KQQZBTcjs.layersFromLegacy; exports.layoutText = _chunkEGZM52EOcjs.layoutText; exports.legacyAdjustmentLayer = _chunkX2KQQZBTcjs.legacyAdjustmentLayer; exports.legacyMaskOf = _chunkX2KQQZBTcjs.legacyMaskOf; exports.legacyView = _chunkX2KQQZBTcjs.legacyView; exports.lerpPigment = _chunkCWM3CUUXcjs.lerpPigment; exports.lerpPigmentInto = _chunkCWM3CUUXcjs.lerpPigmentInto; exports.levelsValue = _chunkX2KQQZBTcjs.levelsValue; exports.linearSrgbToXy = _chunkX2KQQZBTcjs.linearSrgbToXy; exports.linearToSrgb = _chunkX2KQQZBTcjs.linearToSrgb; exports.linearToSrgb8 = _chunkV7GWZIZKcjs.linearToSrgb8; exports.liveComponent = _chunkX2KQQZBTcjs.liveComponent; exports.liveShapeForDrag = liveShapeForDrag; exports.liveShapeSubpaths = _chunkX2KQQZBTcjs.liveShapeSubpaths; exports.loadImageEditorDocument = loadImageEditorDocument; exports.loadMixer = _chunkEBDCRTZIcjs.loadMixer; exports.loadOpenTypeFont = _chunk5UEFNX24cjs.loadOpenTypeFont; exports.loadWetKernel = _chunkV7GWZIZKcjs.loadWetKernel; exports.luma = _chunk7NW46N7Icjs.luma; exports.magicWand = magicWand; exports.mapCropHandle = _chunkX2KQQZBTcjs.mapCropHandle; exports.mapLayer = _chunkHGTDMKNEcjs.mapLayer; exports.mapSubpaths = _chunkX2KQQZBTcjs.mapSubpaths; exports.maskBounds = _chunk7NW46N7Icjs.maskBounds; exports.maskFileName = maskFileName; exports.maskNameFromFile = maskNameFromFile; exports.maskSummary = maskSummary; exports.maskThumbnailClick = maskThumbnailClick; exports.matrixFromCorners = _chunkX2KQQZBTcjs.matrixFromCorners; exports.matrixFromParams = _chunkX2KQQZBTcjs.matrixFromParams; exports.measureCanvasViewport = measureCanvasViewport; exports.membraneFill = _chunk7NW46N7Icjs.membraneFill; exports.mergeLayerEffect = _chunkHGTDMKNEcjs.mergeLayerEffect; exports.mergeShapeComponents = _chunkX2KQQZBTcjs.mergeShapeComponents; exports.migrateSerializedImageEditorState = migrateSerializedImageEditorState; exports.migrateToLayeredState = migrateToLayeredState; exports.mix32 = _chunkEBDCRTZIcjs.mix32; exports.mixPigment8 = _chunkCWM3CUUXcjs.mixPigment8; exports.mixPigmentRgb = _chunkCWM3CUUXcjs.mixPigmentRgb; exports.mixPigments = _chunkCWM3CUUXcjs.mixPigments; exports.mixerLoadResult = mixerLoadResult; exports.mixerRates = _chunkEBDCRTZIcjs.mixerRates; exports.modifySelection = _chunkX2KQQZBTcjs.modifySelection; exports.moveCurvePoint = moveCurvePoint; exports.moveLayer = _chunkX2KQQZBTcjs.moveLayer; exports.moveSmartFilter = _chunkX2KQQZBTcjs.moveSmartFilter; exports.mulMatrix3 = _chunkX2KQQZBTcjs.mulMatrix3; exports.needsLegacyBase = needsLegacyBase; exports.neutralHueRange = _chunkX2KQQZBTcjs.neutralHueRange; exports.newContentsId = _chunkX2KQQZBTcjs.newContentsId; exports.newEffectId = _chunkHGTDMKNEcjs.newEffectId; exports.newLayerId = _chunkX2KQQZBTcjs.newLayerId; exports.newLayerOptions = newLayerOptions; exports.normalizeAdjustmentLayer = _chunkX2KQQZBTcjs.normalizeAdjustmentLayer; exports.normalizeAdjustmentLayers = _chunkX2KQQZBTcjs.normalizeAdjustmentLayers; exports.normalizeAngle = _chunkX2KQQZBTcjs.normalizeAngle; exports.normalizeBlendMode = _chunkCWM3CUUXcjs.normalizeBlendMode; exports.normalizeBlender = _chunkEBDCRTZIcjs.normalizeBlender; exports.normalizeBrush = _chunkEBDCRTZIcjs.normalizeBrush; exports.normalizeFilter = _chunkX2KQQZBTcjs.normalizeFilter; exports.normalizeFlow = _chunkV7GWZIZKcjs.normalizeFlow; exports.normalizeHexColor = _chunkEBDCRTZIcjs.normalizeHexColor; exports.normalizeLayerEffects = _chunkHGTDMKNEcjs.normalizeLayerEffects; exports.normalizeLayerMask = _chunkX2KQQZBTcjs.normalizeLayerMask; exports.normalizeLiveShape = _chunkX2KQQZBTcjs.normalizeLiveShape; exports.normalizeMixer = _chunkEBDCRTZIcjs.normalizeMixer; exports.normalizePlacement = _chunkX2KQQZBTcjs.normalizePlacement; exports.normalizeProcessVersion = _chunkX2KQQZBTcjs.normalizeProcessVersion; exports.normalizeRect = normalizeRect; exports.normalizeRefineEdgeParams = normalizeRefineEdgeParams; exports.normalizeRetouch = _chunk7NW46N7Icjs.normalizeRetouch; exports.normalizeShapePaint = _chunkX2KQQZBTcjs.normalizeShapePaint; exports.normalizeShapeStroke = _chunkX2KQQZBTcjs.normalizeShapeStroke; exports.normalizeSmartFilter = _chunkX2KQQZBTcjs.normalizeSmartFilter; exports.normalizeSmudge = _chunkEBDCRTZIcjs.normalizeSmudge; exports.normalizeStoredAdjustments = normalizeStoredAdjustments; exports.normalizeSubpaths = _chunkX2KQQZBTcjs.normalizeSubpaths; exports.normalizeText = _chunkX2KQQZBTcjs.normalizeText; exports.normalizeTilt = _chunkV7GWZIZKcjs.normalizeTilt; exports.normalizeWetParams = _chunkV7GWZIZKcjs.normalizeWetParams; exports.offsetLayer = _chunkX2KQQZBTcjs.offsetLayer; exports.offsetShape = _chunkX2KQQZBTcjs.offsetShape; exports.offsetSmartObject = _chunkX2KQQZBTcjs.offsetSmartObject; exports.openMaskFile = openMaskFile; exports.openPsdFile = openPsdFile; exports.packRgba = _chunkCWM3CUUXcjs.packRgba; exports.packWetParams = _chunkV7GWZIZKcjs.packWetParams; exports.paintGradientMappingFor = _chunkEBDCRTZIcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkEBDCRTZIcjs.paintPathStroke; exports.paintSourceColor = _chunkEBDCRTZIcjs.paintSourceColor; exports.paintSourceCss = _chunkEBDCRTZIcjs.paintSourceCss; exports.paragraphRanges = _chunkEGZM52EOcjs.paragraphRanges; exports.parseAdjustmentBlock = _chunkX2KQQZBTcjs.parseAdjustmentBlock; exports.parseBlend = _chunkX2KQQZBTcjs.parseBlend; exports.parseColor = parseColor; exports.parseCssColor = _chunkA2IS7EHEcjs.parseCssColor; exports.parseDataUrl = _chunkCWM3CUUXcjs.parseDataUrl; exports.parseEffectColor = _chunkHGTDMKNEcjs.parseEffectColor; exports.parseLfx2 = _chunkX2KQQZBTcjs.parseLfx2; exports.parseLrfx = _chunkX2KQQZBTcjs.parseLrfx; exports.parseOpenTypeFont = _chunk5UEFNX24cjs.parseOpenTypeFont; exports.parsePaintSource = _chunkEBDCRTZIcjs.parsePaintSource; exports.parsePatternBlock = _chunkX2KQQZBTcjs.parsePatternBlock; exports.parseSelectionMode = _chunkX2KQQZBTcjs.parseSelectionMode; exports.parseVersionedDescriptor = _chunkX2KQQZBTcjs.parseVersionedDescriptor; exports.patchParagraphStyle = _chunkX2KQQZBTcjs.patchParagraphStyle; exports.patchTextStyle = _chunkX2KQQZBTcjs.patchTextStyle; exports.pathStrokeCoverage = _chunkEBDCRTZIcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkEBDCRTZIcjs.pathStrokeDabs; exports.perDabStrength = _chunk7NW46N7Icjs.perDabStrength; exports.photoFilterMatrix = _chunkX2KQQZBTcjs.photoFilterMatrix; exports.pigment8 = _chunkCWM3CUUXcjs.pigment8; exports.pigmentColor = _chunkV7GWZIZKcjs.pigmentColor; exports.pigmentOf = _chunkV7GWZIZKcjs.pigmentOf; exports.pixelLayerBounds = _chunkX2KQQZBTcjs.pixelLayerBounds; exports.pixelLayers = _chunkX2KQQZBTcjs.pixelLayers; exports.pixelPigment = _chunkV7GWZIZKcjs.pixelPigment; exports.placeContents = _chunkX2KQQZBTcjs.placeContents; exports.placeLayer = _chunkX2KQQZBTcjs.placeLayer; exports.placementAt = _chunkX2KQQZBTcjs.placementAt; exports.placementBounds = _chunkX2KQQZBTcjs.placementBounds; exports.placementGeometry = _chunkX2KQQZBTcjs.placementGeometry; exports.planImageToolPlayback = planImageToolPlayback; exports.planOutlineTrace = planOutlineTrace; exports.pngDataUrl = _chunkCWM3CUUXcjs.pngDataUrl; exports.pointerPressure = _chunkV7GWZIZKcjs.pointerPressure; exports.pointerStrokeSample = _chunkV7GWZIZKcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkV7GWZIZKcjs.pointerStrokeSamples; exports.polygonCoverage = polygonCoverage; exports.polygonSelection = polygonSelection; exports.posterizeValue = _chunkX2KQQZBTcjs.posterizeValue; exports.presetWarp = _chunkX2KQQZBTcjs.presetWarp; exports.previewStep = previewStep; exports.profileBytes = profileBytes; exports.projectImagePoint = _chunkX2KQQZBTcjs.projectImagePoint; exports.projectImageRect = _chunkX2KQQZBTcjs.projectImageRect; exports.projectMaskCoverage = _chunkX2KQQZBTcjs.projectMaskCoverage; exports.projectQuarterTurn = projectQuarterTurn; exports.proxyOf = _chunkCWM3CUUXcjs.proxyOf; exports.psdBytesFromBase64 = psdBytesFromBase64; exports.psdFileName = psdFileName; exports.psdPatternToEffectPattern = _chunkX2KQQZBTcjs.psdPatternToEffectPattern; exports.psdToLayers = _chunkX2KQQZBTcjs.psdToLayers; exports.pullWarpMesh = _chunkEGZM52EOcjs.pullWarpMesh; exports.put255 = _chunkEBDCRTZIcjs.put255; exports.quadFrameOverlay = quadFrameOverlay; exports.quickMaskPixels = quickMaskPixels; exports.rand01 = _chunkEBDCRTZIcjs.rand01; exports.randSigned = _chunkEBDCRTZIcjs.randSigned; exports.rangeLightness = _chunkX2KQQZBTcjs.rangeLightness; exports.rasterContents = _chunkX2KQQZBTcjs.rasterContents; exports.rasterMaskFromLegacy = _chunkX2KQQZBTcjs.rasterMaskFromLegacy; exports.rasterizeCoverage = _chunkX2KQQZBTcjs.rasterizeCoverage; exports.rasterizeDab = _chunkEBDCRTZIcjs.rasterizeDab; exports.rasterizeSmartObject = _chunkX2KQQZBTcjs.rasterizeSmartObject; exports.readAdjustmentControls = readAdjustmentControls; exports.readDeepRegion = _chunkCWM3CUUXcjs.readDeepRegion; exports.readPaintSource = _chunkEBDCRTZIcjs.readPaintSource; exports.readPixel = _chunkCWM3CUUXcjs.readPixel; exports.readPsd = _chunkX2KQQZBTcjs.readPsd; exports.readRegion = _chunkCWM3CUUXcjs.readRegion; exports.readSourceRegion = _chunk7NW46N7Icjs.readSourceRegion; exports.rectSelection = rectSelection; exports.rectToQuad = _chunkQT26RHKKcjs.rectToQuad; exports.reduceSurface = _chunkHGTDMKNEcjs.reduceSurface; exports.referencePoint = _chunkX2KQQZBTcjs.referencePoint; exports.refineCoverage = refineCoverage; exports.refineEdgeHalo = refineEdgeHalo; exports.refineSelection = refineSelection; exports.reflectanceToRgb = _chunkCWM3CUUXcjs.reflectanceToRgb; exports.removeAlpha = _chunkX2KQQZBTcjs.removeAlpha; exports.removeCurvePoint = removeCurvePoint; exports.removeLayer = _chunkX2KQQZBTcjs.removeLayer; exports.removeLayerEffect = _chunkX2KQQZBTcjs.removeLayerEffect; exports.removeLayerFilter = _chunkX2KQQZBTcjs.removeLayerFilter; exports.removePaintGradientStop = _chunkEBDCRTZIcjs.removePaintGradientStop; exports.removeSmartFilter = _chunkX2KQQZBTcjs.removeSmartFilter; exports.renderBrushstroke = _chunkEBDCRTZIcjs.renderBrushstroke; exports.renderLayerEffects = _chunkHGTDMKNEcjs.renderLayerEffects; exports.renderLayeredBase = renderLayeredBase; exports.renderShape = _chunkX2KQQZBTcjs.renderShape; exports.renderShapeRect = _chunkX2KQQZBTcjs.renderShapeRect; exports.renderSmartObject = _chunkX2KQQZBTcjs.renderSmartObject; exports.renderText = _chunkX2KQQZBTcjs.renderText; exports.replaceContents = _chunkX2KQQZBTcjs.replaceContents; exports.replaceTextRange = _chunkX2KQQZBTcjs.replaceTextRange; exports.requireLayer = _chunkX2KQQZBTcjs.requireLayer; exports.requireOperation = _chunkX2KQQZBTcjs.requireOperation; exports.requireShapeLayer = _chunkX2KQQZBTcjs.requireShapeLayer; exports.requireSmartObject = _chunkX2KQQZBTcjs.requireSmartObject; exports.requireTypeLayer = _chunkX2KQQZBTcjs.requireTypeLayer; exports.requireUnlocked = _chunkX2KQQZBTcjs.requireUnlocked; exports.rerender = _chunkX2KQQZBTcjs.rerender; exports.rerenderShape = _chunkX2KQQZBTcjs.rerenderShape; exports.rerenderText = _chunkX2KQQZBTcjs.rerenderText; exports.resizePixels = resizePixels; exports.resizeSelection = _chunkX2KQQZBTcjs.resizeSelection; exports.resizeWarpMesh = _chunkEGZM52EOcjs.resizeWarpMesh; exports.resolveExternalAssets = _chunkX2KQQZBTcjs.resolveExternalAssets; exports.resolveMosaicRegionBounds = resolveMosaicRegionBounds; exports.resolvePaintGradient = _chunkEBDCRTZIcjs.resolvePaintGradient; exports.resolveProfile = resolveProfile; exports.restyleRange = _chunkEGZM52EOcjs.restyleRange; exports.retouchFilter = _chunk7NW46N7Icjs.retouchFilter; exports.reversePaintGradient = _chunkEBDCRTZIcjs.reversePaintGradient; exports.rgbToGray = _chunkX2KQQZBTcjs.rgbToGray; exports.rgbToHsl = _chunkX2KQQZBTcjs.rgbToHsl; exports.rgbToReflectance = _chunkCWM3CUUXcjs.rgbToReflectance; exports.rgbUnitToHex = rgbUnitToHex; exports.rgbaViewOfGrey = _chunk7NW46N7Icjs.rgbaViewOfGrey; exports.runLayerFilters = _chunkX2KQQZBTcjs.runLayerFilters; exports.runLayerFiltersFloat = _chunkX2KQQZBTcjs.runLayerFiltersFloat; exports.runLayerMenuAction = runLayerMenuAction; exports.sameCanvasViewport = sameCanvasViewport; exports.sampleLut = _chunkX2KQQZBTcjs.sampleLut; exports.sampleToneLut = _chunkX2KQQZBTcjs.sampleToneLut; exports.saturationOf = _chunk7NW46N7Icjs.saturationOf; exports.scaleLayerEffect = _chunkHGTDMKNEcjs.scaleLayerEffect; exports.scalePaintGradient = _chunkEBDCRTZIcjs.scalePaintGradient; exports.seamlessClone = _chunk7NW46N7Icjs.seamlessClone; exports.seedFromString = _chunkEBDCRTZIcjs.seedFromString; exports.segmentToSelection = segmentToSelection; exports.segmentationOutlines = segmentationOutlines; exports.segmentsToSelection = segmentsToSelection; exports.selectSimilar = selectSimilar; exports.selectionArea = _chunkX2KQQZBTcjs.selectionArea; exports.selectionFromCoverage = _chunkX2KQQZBTcjs.selectionFromCoverage; exports.selectionFromPixels = _chunkX2KQQZBTcjs.selectionFromPixels; exports.selectionModeFromModifiers = selectionModeFromModifiers; exports.selectionOutline = selectionOutline; exports.selectionRing = selectionRing; exports.selectionToCoverage = _chunkX2KQQZBTcjs.selectionToCoverage; exports.selectionToPixels = _chunkX2KQQZBTcjs.selectionToPixels; exports.selectionValueAt = _chunkX2KQQZBTcjs.selectionValueAt; exports.serializeChannels = serializeChannels; exports.serializeColorMode = serializeColorMode; exports.serializeColorProfile = serializeColorProfile; exports.serializeContents = _chunkX2KQQZBTcjs.serializeContents; exports.serializeEffects = _chunkX2KQQZBTcjs.serializeEffects; exports.serializeLayer = _chunkX2KQQZBTcjs.serializeLayer; exports.serializeLayers = _chunkX2KQQZBTcjs.serializeLayers; exports.serializeLayersExternal = _chunkX2KQQZBTcjs.serializeLayersExternal; exports.serializePatterns = _chunkX2KQQZBTcjs.serializePatterns; exports.serializeSelection = _chunkX2KQQZBTcjs.serializeSelection; exports.setCloneTransformValue = setCloneTransformValue; exports.setControlPath = setControlPath; exports.setLayerEffects = _chunkX2KQQZBTcjs.setLayerEffects; exports.setLayerEffectsEnabled = _chunkX2KQQZBTcjs.setLayerEffectsEnabled; exports.setLayerMask = _chunkX2KQQZBTcjs.setLayerMask; exports.setLayerProperties = _chunkX2KQQZBTcjs.setLayerProperties; exports.setLum = _chunkCWM3CUUXcjs.setLum; exports.setPigmentColor = _chunkCWM3CUUXcjs.setPigmentColor; exports.setRetouchChoice = setRetouchChoice; exports.setSmartFilterMask = _chunkX2KQQZBTcjs.setSmartFilterMask; exports.setSmartFiltersEnabled = _chunkX2KQQZBTcjs.setSmartFiltersEnabled; exports.setSmartPlacement = _chunkX2KQQZBTcjs.setSmartPlacement; exports.shadeTile = _chunkV7GWZIZKcjs.shadeTile; exports.shapeAsPixelLayer = _chunkX2KQQZBTcjs.shapeAsPixelLayer; exports.shapeFromAnnotation = _chunkX2KQQZBTcjs.shapeFromAnnotation; exports.shapeGeometryBounds = _chunkX2KQQZBTcjs.shapeGeometryBounds; exports.shapeLayers = _chunkX2KQQZBTcjs.shapeLayers; exports.shapeOutline = _chunkX2KQQZBTcjs.shapeOutline; exports.shapeRenderClip = _chunkX2KQQZBTcjs.shapeRenderClip; exports.shiftCoverage = _chunkX2KQQZBTcjs.shiftCoverage; exports.skinToneRange = skinToneRange; exports.smartFilterRows = smartFilterRows; exports.smartObjectLayers = _chunkX2KQQZBTcjs.smartObjectLayers; exports.smoothCoverage = _chunkX2KQQZBTcjs.smoothCoverage; exports.smoothPoints = _chunkEBDCRTZIcjs.smoothPoints; exports.smudgeEffect = _chunk7NW46N7Icjs.smudgeEffect; exports.snapTo45 = snapTo45; exports.solidPaint = _chunkEBDCRTZIcjs.solidPaint; exports.solidSurface = _chunkCWM3CUUXcjs.solidSurface; exports.solveMembrane = _chunk7NW46N7Icjs.solveMembrane; exports.spliceRuns = _chunkEGZM52EOcjs.spliceRuns; exports.splitOverlayAnnotations = splitOverlayAnnotations; exports.sponge = _chunk7NW46N7Icjs.sponge; exports.spongeEffect = _chunk7NW46N7Icjs.spongeEffect; exports.spotHealPixels = _chunk7NW46N7Icjs.spotHealPixels; exports.spotHealWindow = _chunk7NW46N7Icjs.spotHealWindow; exports.srgb8ToLab = srgb8ToLab; exports.srgbByteToLinear = _chunkV7GWZIZKcjs.srgbByteToLinear; exports.srgbDecode = _chunkCWM3CUUXcjs.srgbDecode; exports.srgbEncode = _chunkCWM3CUUXcjs.srgbEncode; exports.srgbToLinear = _chunkX2KQQZBTcjs.srgbToLinear; exports.standardBlendMode = _chunkCWM3CUUXcjs.standardBlendMode; exports.startMarchingAnts = startMarchingAnts; exports.stepSlotTs = _chunkV7GWZIZKcjs.stepSlotTs; exports.strokeGrainCatch = _chunkEBDCRTZIcjs.strokeGrainCatch; exports.styleAt = _chunkEGZM52EOcjs.styleAt; exports.sumHistograms = sumHistograms; exports.surfaceBytes = _chunkCWM3CUUXcjs.surfaceBytes; exports.surfaceDepth = _chunkCWM3CUUXcjs.surfaceDepth; exports.surfaceFromDeepPixels = _chunkCWM3CUUXcjs.surfaceFromDeepPixels; exports.surfaceFromPixels = _chunkCWM3CUUXcjs.surfaceFromPixels; exports.surfacesEqual = _chunkCWM3CUUXcjs.surfacesEqual; exports.tempTintToXy = _chunkX2KQQZBTcjs.tempTintToXy; exports.temperatureToKelvin = _chunkX2KQQZBTcjs.temperatureToKelvin; exports.textIndexAt = _chunkEGZM52EOcjs.textIndexAt; exports.textMatrix = _chunkX2KQQZBTcjs.textMatrix; exports.textOutlines = _chunkX2KQQZBTcjs.textOutlines; exports.textRange = _chunkX2KQQZBTcjs.textRange; exports.tileCoord = _chunkCWM3CUUXcjs.tileCoord; exports.tileKey = _chunkCWM3CUUXcjs.tileKey; exports.tileRect = _chunkCWM3CUUXcjs.tileRect; exports.tileSamples = _chunkCWM3CUUXcjs.tileSamples; exports.tileSamples16 = _chunkCWM3CUUXcjs.tileSamples16; exports.tileSamples32 = _chunkCWM3CUUXcjs.tileSamples32; exports.tilesInRect = _chunkCWM3CUUXcjs.tilesInRect; exports.tipFalloff = _chunkEBDCRTZIcjs.tipFalloff; exports.tipReach = _chunkEBDCRTZIcjs.tipReach; exports.tipShape = _chunkEBDCRTZIcjs.tipShape; exports.to16From32 = _chunkCWM3CUUXcjs.to16From32; exports.to16From8 = _chunkCWM3CUUXcjs.to16From8; exports.to32From16 = _chunkCWM3CUUXcjs.to32From16; exports.to32From8 = _chunkCWM3CUUXcjs.to32From8; exports.to8From16 = _chunkCWM3CUUXcjs.to8From16; exports.to8From32 = _chunkCWM3CUUXcjs.to8From32; exports.toHex = toHex; exports.toTextSpace = _chunkX2KQQZBTcjs.toTextSpace; exports.toneCurve = _chunkX2KQQZBTcjs.toneCurve; exports.toneLuts = _chunkX2KQQZBTcjs.toneLuts; exports.toneOf = _chunk7NW46N7Icjs.toneOf; exports.toneRange = toneRange; exports.transformHomography = _chunkX2KQQZBTcjs.transformHomography; exports.transformMap = _chunkX2KQQZBTcjs.transformMap; exports.transformShapeComponents = _chunkX2KQQZBTcjs.transformShapeComponents; exports.transformSurface = _chunkHGTDMKNEcjs.transformSurface; exports.transformTypeLayer = _chunkX2KQQZBTcjs.transformTypeLayer; exports.transformedBounds = _chunkHGTDMKNEcjs.transformedBounds; exports.transformedBox = _chunkX2KQQZBTcjs.transformedBox; exports.transformedPoint = _chunkX2KQQZBTcjs.transformedPoint; exports.translateLayer = _chunkX2KQQZBTcjs.translateLayer; exports.translateSurface = _chunkCWM3CUUXcjs.translateSurface; exports.typeAsPixelLayer = _chunkX2KQQZBTcjs.typeAsPixelLayer; exports.typeFrame = _chunkX2KQQZBTcjs.typeFrame; exports.typeFromAnnotation = _chunkX2KQQZBTcjs.typeFromAnnotation; exports.typeLayerAt = typeLayerAt; exports.typeLayerName = _chunkX2KQQZBTcjs.typeLayerName; exports.ungroupLayer = _chunkX2KQQZBTcjs.ungroupLayer; exports.uniformTile = _chunkCWM3CUUXcjs.uniformTile; exports.unionRect = _chunkX2KQQZBTcjs.unionRect; exports.unprojectCanvasPoint = _chunkX2KQQZBTcjs.unprojectCanvasPoint; exports.updateLayerEffect = _chunkX2KQQZBTcjs.updateLayerEffect; exports.updateLayerFilter = _chunkX2KQQZBTcjs.updateLayerFilter; exports.updateLayerMaskProps = _chunkX2KQQZBTcjs.updateLayerMaskProps; exports.updatePaintGradientStop = _chunkEBDCRTZIcjs.updatePaintGradientStop; exports.updateShapeLayer = _chunkX2KQQZBTcjs.updateShapeLayer; exports.updateSmartFilter = _chunkX2KQQZBTcjs.updateSmartFilter; exports.updateTypeLayer = _chunkX2KQQZBTcjs.updateTypeLayer; exports.userErrorMessage = _chunkX2KQQZBTcjs.userErrorMessage; exports.uvToXy = _chunkX2KQQZBTcjs.uvToXy; exports.validateEffectGradient = _chunkHGTDMKNEcjs.validateEffectGradient; exports.validateLayerEffect = _chunkHGTDMKNEcjs.validateLayerEffect; exports.validateLayerEffects = _chunkHGTDMKNEcjs.validateLayerEffects; exports.versionedDescriptorBytes = _chunkX2KQQZBTcjs.versionedDescriptorBytes; exports.vibranceLinear = _chunkX2KQQZBTcjs.vibranceLinear; exports.vibrancePixel = _chunkX2KQQZBTcjs.vibrancePixel; exports.walkDabs = _chunkEBDCRTZIcjs.walkDabs; exports.warpMeshEditPoints = _chunkEGZM52EOcjs.warpMeshEditPoints; exports.warpMeshGridCurves = _chunkEGZM52EOcjs.warpMeshGridCurves; exports.warpMeshParamAt = _chunkEGZM52EOcjs.warpMeshParamAt; exports.warpPresetMesh = _chunkEGZM52EOcjs.warpPresetMesh; exports.warpSurface = _chunkHGTDMKNEcjs.warpSurface; exports.watchCanvasViewport = watchCanvasViewport; exports.wbMatrix = _chunkX2KQQZBTcjs.wbMatrix; exports.wetGpuSupport = _chunkV7GWZIZKcjs.wetGpuSupport; exports.wetSimdSupported = _chunkV7GWZIZKcjs.wetSimdSupported; exports.wetSupport = _chunkV7GWZIZKcjs.wetSupport; exports.whiteBalanceFromSample = _chunkX2KQQZBTcjs.whiteBalanceFromSample; exports.whiteBalanceMatrix = _chunkX2KQQZBTcjs.whiteBalanceMatrix; exports.withBackgroundOpacity = withBackgroundOpacity; exports.withFilterMaskSurface = _chunkX2KQQZBTcjs.withFilterMaskSurface; exports.withImagePlayback = withImagePlayback; exports.withNewIds = _chunkX2KQQZBTcjs.withNewIds; exports.writeAdjustmentBlock = _chunkX2KQQZBTcjs.writeAdjustmentBlock; exports.writeDeepRegion = _chunkCWM3CUUXcjs.writeDeepRegion; exports.writeLfx2 = _chunkX2KQQZBTcjs.writeLfx2; exports.writePatternBlock = _chunkX2KQQZBTcjs.writePatternBlock; exports.writePsd = _chunkX2KQQZBTcjs.writePsd; exports.writeRegion = _chunkCWM3CUUXcjs.writeRegion; exports.xyToTempTint = _chunkX2KQQZBTcjs.xyToTempTint; exports.xyToUv = _chunkX2KQQZBTcjs.xyToUv;
@@ -8220,6 +8220,39 @@ var ImageEditorController = class {
8220
8220
  this.setSelection(selectionFromPixels(pixels, options), options.mode ?? "replace");
8221
8221
  return this.getSelection();
8222
8222
  }
8223
+ /**
8224
+ * Loads a mask image (a data URL / URL or RGBA pixels, any size, resampled) into a new alpha
8225
+ * channel, read like `loadSelectionFromImage`. The selection does not change. One undo step.
8226
+ */
8227
+ async loadChannelFromImage(source, options = {}) {
8228
+ const mask = selectionFromPixels(await this.decodeMaskImage(source), options);
8229
+ const { width, height } = this.naturalSize;
8230
+ return this.addChannel(mask.width === width && mask.height === height ? mask : resizeSelection(mask, width, height), options.name);
8231
+ }
8232
+ /**
8233
+ * A full-size greyscale PNG (white = selected / revealed) of the selection, an alpha channel or
8234
+ * a layer's painted mask, as a data URL; `invert` swaps black and white, `maxSide` scales it
8235
+ * down. Encoded in code, so it works without a canvas. Throws when the source is missing.
8236
+ */
8237
+ exportMaskImage(source, options = {}) {
8238
+ let mask;
8239
+ if (source === "selection") {
8240
+ const sel = this.state.selection;
8241
+ if (!sel?.bounds) throw new LayerOperationError("Nothing is selected; select first, or export a channel or a layer mask.");
8242
+ mask = sel;
8243
+ } else if ("channelId" in source) {
8244
+ mask = this.requireChannel(source.channelId).mask;
8245
+ } else {
8246
+ const layer = requireLayer(this.state.layers, source.layerId).layer;
8247
+ const coverage = this.layerMaskCoverage(source.layerId);
8248
+ if (!coverage) throw new LayerOperationError(`Layer "${layer.name || source.layerId}" has no painted mask to export.`);
8249
+ mask = coverage;
8250
+ }
8251
+ const k = options.maxSide ? Math.min(1, options.maxSide / Math.max(mask.width, mask.height)) : 1;
8252
+ if (k < 1) mask = resizeSelection(mask, Math.max(1, Math.round(mask.width * k)), Math.max(1, Math.round(mask.height * k)));
8253
+ if (options.invert) mask = invertSelection(mask);
8254
+ return { width: mask.width, height: mask.height, dataUrl: pngDataUrl(mask.width, mask.height, mask.data, 1) };
8255
+ }
8223
8256
  /** A mask image (data URL / URL, or pixels as they are) as RGBA pixels. */
8224
8257
  async decodeMaskImage(source) {
8225
8258
  if (typeof source !== "string") return source;
@@ -8337,10 +8370,15 @@ var ImageEditorController = class {
8337
8370
  this.setChannels(channels.map((c) => c.id === existing.id ? next : c));
8338
8371
  return next;
8339
8372
  }
8373
+ return this.addChannel(sized, options.name);
8374
+ }
8375
+ /** Appends a new channel holding `mask` (canvas-sized) as one undo step. */
8376
+ addChannel(mask, name) {
8377
+ const channels = this.getChannels();
8340
8378
  const channel = {
8341
8379
  id: this.newChannelId(),
8342
- name: options.name?.trim() || `Alpha ${channels.length + 1}`,
8343
- mask: sized,
8380
+ name: name?.trim() || `Alpha ${channels.length + 1}`,
8381
+ mask,
8344
8382
  color: DEFAULT_CHANNEL_COLOR,
8345
8383
  opacity: 0.5,
8346
8384
  indicates: "masked",
@@ -8486,14 +8524,19 @@ var ImageEditorController = class {
8486
8524
  * with `invert`. False without a painted mask (a depth mask is computed, not painted).
8487
8525
  */
8488
8526
  selectionFromLayerMask(layerId, mode = "replace", invert2 = false) {
8527
+ const sel = this.layerMaskCoverage(layerId);
8528
+ if (!sel) return false;
8529
+ return this.setSelection(invert2 ? invertSelection(sel) : sel, mode);
8530
+ }
8531
+ /** A layer's painted mask over the canvas as a selection mask; null without one (or for a depth mask). */
8532
+ layerMaskCoverage(layerId) {
8489
8533
  const layer = this.getLayer(layerId);
8490
- if (!layer?.mask || layer.mask.source) return false;
8534
+ if (!layer?.mask || layer.mask.source) return null;
8491
8535
  const { width, height } = this.naturalSize;
8492
8536
  const ox = layer.type === "pixel" ? layer.offset.x : 0;
8493
8537
  const oy = layer.type === "pixel" ? layer.offset.y : 0;
8494
8538
  const data = readRegion(layer.mask.surface, { x: -ox, y: -oy, width, height });
8495
- const sel = createSelectionMask(width, height, new Uint8Array(data.buffer, data.byteOffset, data.length));
8496
- return this.setSelection(invert2 ? invertSelection(sel) : sel, mode);
8539
+ return createSelectionMask(width, height, new Uint8Array(data.buffer, data.byteOffset, data.length));
8497
8540
  }
8498
8541
  // --- Histogram ---
8499
8542
  /**
@@ -10851,7 +10894,7 @@ var DEPTH_MASK_CONTROLS = [
10851
10894
  // src/image-editor/playback.ts
10852
10895
  var IMAGE_PLAYBACK_KIND = "layer";
10853
10896
  var PAINT = /^(paint_stroke|clone_stamp|heal_brush|spot_heal|dodge|burn|sponge|smudge|blur_stroke|sharpen_stroke|history_brush|set_clone_source|set_clone_transform|fill_pixels|clear_pixels|set_paint|set_retouch_options|load_mixer_brush|clean_mixer_brush)$/;
10854
- var SELECT = /^(select_region|select_subject|select_by_color|select_all|deselect|invert_selection|select_rect|select_ellipse|select_polygon|select_line|magic_wand|grow_selection|select_similar|reselect|select_layer_transparency|select_color_range|load_selection_from_image|load_selection_from_mask|set_selection_display|modify_selection|refine_selection|transform_selection|apply_selection_as_mask|layer_via_copy|stroke_selection|content_aware_fill|copy_pixels|cut_pixels|paste_pixels|save_selection|load_selection_from_channel|set_channel_properties|duplicate_channel|delete_channel|set_quick_mask)$/;
10897
+ var SELECT = /^(select_region|select_subject|select_by_color|select_all|deselect|invert_selection|select_rect|select_ellipse|select_polygon|select_line|magic_wand|grow_selection|select_similar|reselect|select_layer_transparency|select_color_range|load_selection_from_image|load_selection_from_mask|set_selection_display|modify_selection|refine_selection|transform_selection|apply_selection_as_mask|layer_via_copy|stroke_selection|content_aware_fill|copy_pixels|cut_pixels|paste_pixels|save_selection|load_selection_from_channel|set_channel_properties|duplicate_channel|delete_channel|load_channel_from_image|set_quick_mask)$/;
10855
10898
  var ANNOTATE = /^(add_shape_layer|update_shape|add_shape_component|set_shape_component|remove_shape_component|merge_shape_components|add_text_layer|set_text|set_text_style|set_paragraph_style|set_text_frame|convert_text_to_shape)$/;
10856
10899
  var CROP = /^(set_crop|crop_to_selection|reset_crop|set_rotation|flip_image|transform_layer|warp_layer|flip_layer|offset_layer)$/;
10857
10900
  var ADJUST = /^(set_adjustments|add_adjustment_layer|update_adjustment_layer|remove_adjustment_layer|move_adjustment_layer)$/;
@@ -11867,6 +11910,64 @@ function createImageSelectionTools(controller) {
11867
11910
  return { quickMask: controller.quickMaskEditing, selection: summary(controller) };
11868
11911
  }
11869
11912
  };
11913
+ const exportMaskTool = {
11914
+ name: "export_mask_image",
11915
+ title: "Export a mask as a PNG",
11916
+ description: "Writes the selection, an alpha channel (channelId) or a layer's painted mask (layerId) as a greyscale PNG: white = selected / revealed. Use it to look at a mask on its own, or to hand it to another tool or service; load_channel_from_image and load_selection_from_image read it back. Give at most one of channelId and layerId (neither = the selection). Changes nothing. Returns the image and its size.",
11917
+ inputSchema: {
11918
+ type: "object",
11919
+ properties: {
11920
+ channelId: channelIdSchema,
11921
+ layerId: { type: "string", minLength: 1, description: "A layer whose painted mask to export (see list_layers)." },
11922
+ invert: { type: "boolean", description: "Black = selected instead (default false)." },
11923
+ maxSide: { type: "integer", minimum: 16, maximum: 16384, description: "Longest side in pixels; larger masks are scaled down (default 1024, never scaled up)." }
11924
+ },
11925
+ additionalProperties: false
11926
+ },
11927
+ annotations: { title: "Export a mask as a PNG", readOnlyHint: true, destructiveHint: false, idempotentHint: true, openWorldHint: false },
11928
+ handler: (args) => {
11929
+ if (args.channelId !== void 0 && args.layerId !== void 0) throw new Error("Give channelId or layerId, not both (neither exports the selection).");
11930
+ if (typeof args.layerId === "string" && !controller.getLayer(args.layerId)) throw new Error(`No layer "${args.layerId}". Call list_layers for ids.`);
11931
+ const source = typeof args.channelId === "string" ? { channelId: args.channelId } : typeof args.layerId === "string" ? { layerId: args.layerId } : "selection";
11932
+ const out = controller.exportMaskImage(source, { invert: args.invert === true, maxSide: typeof args.maxSide === "number" ? args.maxSide : 1024 });
11933
+ const what = source === "selection" ? "Selection" : "channelId" in source ? `Channel ${source.channelId}` : `Mask of layer ${source.layerId}`;
11934
+ return {
11935
+ content: [
11936
+ { type: "image", data: out.dataUrl.slice(out.dataUrl.indexOf(",") + 1), mimeType: "image/png" },
11937
+ { type: "text", text: `${what}, ${out.width}\xD7${out.height}` }
11938
+ ],
11939
+ structuredContent: { width: out.width, height: out.height }
11940
+ };
11941
+ }
11942
+ };
11943
+ const loadChannelFromImageTool = {
11944
+ name: "load_channel_from_image",
11945
+ title: "Load a mask image into a new channel",
11946
+ description: "Stores a mask image (an AI segmentation, a matte, a PNG from export_mask_image) in a new alpha channel without touching the selection: white = selected by luminance, or one channel. Any size; it is resampled to the image. Load it as the selection later with load_selection_from_channel. One undo step. Returns the channel.",
11947
+ inputSchema: {
11948
+ type: "object",
11949
+ properties: {
11950
+ image: { type: "string", minLength: 1, description: "The mask as a data URL (data:image/png;base64,\u2026) or an image URL." },
11951
+ name: { type: "string", minLength: 1, description: 'Channel name (default "Alpha n").' },
11952
+ channel: { type: "string", enum: ["luminance", "alpha", "red", "green", "blue"], description: "What to read as coverage (default luminance; alpha for a cutout PNG)." },
11953
+ threshold: { type: "number", minimum: 0, maximum: 255, description: "Values at or above this are selected, the rest not (default: keep soft values)." },
11954
+ invert: { type: "boolean", description: "Black = selected instead (default false)." }
11955
+ },
11956
+ required: ["image"],
11957
+ additionalProperties: false
11958
+ },
11959
+ annotations: { ...writeAnnotations("Load a mask image into a new channel"), openWorldHint: true },
11960
+ handler: async (args) => {
11961
+ if (typeof args.image !== "string" || !args.image.trim()) throw new Error("image must be a data URL or image URL.");
11962
+ const c = await controller.loadChannelFromImage(args.image, {
11963
+ name: args.name,
11964
+ channel: args.channel ?? "luminance",
11965
+ invert: args.invert === true,
11966
+ threshold: typeof args.threshold === "number" ? Math.min(255, Math.max(0, args.threshold)) : void 0
11967
+ });
11968
+ return { channel: channelResult(c.id) };
11969
+ }
11970
+ };
11870
11971
  return [
11871
11972
  getSelection,
11872
11973
  selectAll,
@@ -11902,6 +12003,8 @@ function createImageSelectionTools(controller) {
11902
12003
  channelPropsTool,
11903
12004
  duplicateChannelTool,
11904
12005
  deleteChannelTool,
12006
+ exportMaskTool,
12007
+ loadChannelFromImageTool,
11905
12008
  quickMaskTool
11906
12009
  ];
11907
12010
  }
@@ -15963,6 +16066,39 @@ function handleQuickMaskKey(controller, e) {
15963
16066
  return true;
15964
16067
  }
15965
16068
 
16069
+ // src/image-editor/selection/mask-files.ts
16070
+ var MASK_FILE_ACCEPT = "image/png,image/jpeg,image/webp,image/gif,image/bmp";
16071
+ function blobDataUrl(file) {
16072
+ return new Promise((resolve, reject) => {
16073
+ const reader = new FileReader();
16074
+ reader.onload = () => resolve(String(reader.result));
16075
+ reader.onerror = () => reject(reader.error ?? new Error("The file could not be read."));
16076
+ reader.readAsDataURL(file);
16077
+ });
16078
+ }
16079
+ function maskNameFromFile(file) {
16080
+ const name = file.name;
16081
+ return name ? name.replace(/\.[a-z0-9]{2,4}$/i, "").trim() || void 0 : void 0;
16082
+ }
16083
+ async function openMaskFile(controller, file) {
16084
+ return controller.loadChannelFromImage(await blobDataUrl(file), { name: maskNameFromFile(file) });
16085
+ }
16086
+ function maskFileName(name) {
16087
+ const base = name.replace(/\.[a-z0-9]{2,4}$/i, "").replace(/[\\/:*?"<>|]+/g, "-").trim() || "mask";
16088
+ return `${base}.png`;
16089
+ }
16090
+ function downloadMaskImage(controller, source, name = "mask") {
16091
+ const { dataUrl, width, height } = controller.exportMaskImage(source);
16092
+ const fileName = maskFileName(name);
16093
+ if (typeof document !== "undefined") {
16094
+ const a = document.createElement("a");
16095
+ a.href = dataUrl;
16096
+ a.download = fileName;
16097
+ a.click();
16098
+ }
16099
+ return { fileName, width, height };
16100
+ }
16101
+
15966
16102
  // src/image-editor/mosaic-filter.ts
15967
16103
  function resolveMosaicRegionBounds(region, imgWidth, imgHeight) {
15968
16104
  if (imgWidth <= 0 || imgHeight <= 0 || region.width <= 0 || region.height <= 0) {
@@ -17624,6 +17760,7 @@ export {
17624
17760
  LayerEffectError,
17625
17761
  LayerOperationError,
17626
17762
  MARCHING_ANTS_STEP_MS,
17763
+ MASK_FILE_ACCEPT,
17627
17764
  MAX_BATCH,
17628
17765
  MAX_BRUSH_SIZE,
17629
17766
  MAX_CANVAS_BACKING_SIDE,
@@ -17975,6 +18112,7 @@ export {
17975
18112
  documentProfile,
17976
18113
  dodgeBurn,
17977
18114
  dodgeBurnCurve,
18115
+ downloadMaskImage,
17978
18116
  downloadPsd,
17979
18117
  dpow,
17980
18118
  dragWarpMeshPoint,
@@ -18167,6 +18305,8 @@ export {
18167
18305
  mapLayer,
18168
18306
  mapSubpaths,
18169
18307
  maskBounds,
18308
+ maskFileName,
18309
+ maskNameFromFile,
18170
18310
  maskSummary,
18171
18311
  maskThumbnailClick,
18172
18312
  matrixFromCorners,
@@ -18224,6 +18364,7 @@ export {
18224
18364
  offsetLayer,
18225
18365
  offsetShape,
18226
18366
  offsetSmartObject,
18367
+ openMaskFile,
18227
18368
  openPsdFile,
18228
18369
  packRgba,
18229
18370
  packWetParams,
@@ -10,3 +10,4 @@ export * from './gesture.cjs';
10
10
  export * from './segmentation.cjs';
11
11
  export * from './stroke.cjs';
12
12
  export * from './channels.cjs';
13
+ export * from './mask-files.cjs';
@@ -10,3 +10,4 @@ export * from './gesture.js';
10
10
  export * from './segmentation.js';
11
11
  export * from './stroke.js';
12
12
  export * from './channels.js';
13
+ export * from './mask-files.js';
@@ -0,0 +1,20 @@
1
+ /** Framework-free helpers behind the Import and Export PNG buttons of the React and Svelte Channels panels. */
2
+ import type { ImageEditorController, MaskImageSource } from '../controller.cjs';
3
+ import type { AlphaChannel } from './channels.cjs';
4
+ /** Types the mask file pickers accept. */
5
+ export declare const MASK_FILE_ACCEPT = "image/png,image/jpeg,image/webp,image/gif,image/bmp";
6
+ /** A channel name from a file name: without its extension, or `Alpha n`. */
7
+ export declare function maskNameFromFile(file: Blob): string | undefined;
8
+ /** Reads a picked mask image (white = selected) into a new alpha channel named after the file (one undo step). */
9
+ export declare function openMaskFile(controller: ImageEditorController, file: Blob): Promise<AlphaChannel>;
10
+ /** A file name for an exported mask: `name` with a `.png` extension. */
11
+ export declare function maskFileName(name: string): string;
12
+ /**
13
+ * Writes the selection, a channel or a layer mask as a full-size greyscale PNG and offers it as a
14
+ * download (in a browser). Returns the file name and size.
15
+ */
16
+ export declare function downloadMaskImage(controller: ImageEditorController, source: MaskImageSource, name?: string): {
17
+ fileName: string;
18
+ width: number;
19
+ height: number;
20
+ };
@@ -0,0 +1,20 @@
1
+ /** Framework-free helpers behind the Import and Export PNG buttons of the React and Svelte Channels panels. */
2
+ import type { ImageEditorController, MaskImageSource } from '../controller.js';
3
+ import type { AlphaChannel } from './channels.js';
4
+ /** Types the mask file pickers accept. */
5
+ export declare const MASK_FILE_ACCEPT = "image/png,image/jpeg,image/webp,image/gif,image/bmp";
6
+ /** A channel name from a file name: without its extension, or `Alpha n`. */
7
+ export declare function maskNameFromFile(file: Blob): string | undefined;
8
+ /** Reads a picked mask image (white = selected) into a new alpha channel named after the file (one undo step). */
9
+ export declare function openMaskFile(controller: ImageEditorController, file: Blob): Promise<AlphaChannel>;
10
+ /** A file name for an exported mask: `name` with a `.png` extension. */
11
+ export declare function maskFileName(name: string): string;
12
+ /**
13
+ * Writes the selection, a channel or a layer mask as a full-size greyscale PNG and offers it as a
14
+ * download (in a browser). Returns the file name and size.
15
+ */
16
+ export declare function downloadMaskImage(controller: ImageEditorController, source: MaskImageSource, name?: string): {
17
+ fileName: string;
18
+ width: number;
19
+ height: number;
20
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pixerate/editor",
3
- "version": "0.186.0",
3
+ "version": "0.187.0",
4
4
  "description": "UI-agnostic rich text and media editing core library",
5
5
  "author": "Pixerate",
6
6
  "license": "MIT",
@@ -126,30 +126,9 @@ drawing or editing either.
126
126
  overall strength and `flow` for gradual build-up within the stroke.
127
127
  4. **Limit paint with a selection**, or lock transparency (`set_layer_properties`
128
128
  `locks.transparency`) to paint only where the layer already has pixels.
129
- 5. **Mix paint colours with `mix_colors`** when the user names paints and amounts ("two parts
130
- ultramarine to one part yellow", "a tint of red"). It mixes like pigment, so blue and yellow
131
- make green and white makes a tint, where averaging RGB gives grey or a dull pastel. Pass its
132
- `mixed` hex as the `color` of `paint_stroke` or `fill_pixels`. Give a strong dark paint a
133
- `strength` above 1 when a little of it should tint a lot of white.
134
- 6. **Blend and smear with the Mixer Brush** (`paint_stroke` with `tool: "mixer"`) when the
135
- user wants paint to pick up and drag the colours already on the layer (wet blending, softening
136
- an edge, pulling one colour into another). `mixer.wet` is how much it picks up (0 paints only
137
- the loaded colour), `mixer.mix` how far each dab leans from the loaded colour to the picked-up
138
- one, and `mixer.load` below 1 makes long strokes run dry. Use `mixing: "pigment"` for
139
- painterly results (blue dragged through yellow goes green); keep `rgb` for retouching, where
140
- colours should stay between the two you started with. A brush with `blend: "pigment"` mixes
141
- its one colour into the layer; only the mixer carries picked-up colour along the stroke. A `brush.flow` around 0.3..0.6 keeps
142
- some of the canvas under each dab and blends more naturally than 1. The stroke samples the
143
- target layer only, so paint on the layer that holds the colours to blend.
144
- 7. **Keep the mixer stateless unless you need a carried load.** By default each mixer stroke
145
- loads `color` (or the foreground) and is cleaned afterwards, so every call is independent and
146
- replays the same. To carry dirty paint from stroke to stroke, pass `mixer.loadEachStroke:
147
- false` and `cleanEachStroke: false`, start with `load_mixer_brush`, read the brush with
148
- `get_mixer_brush` when unsure, and reset it with `clean_mixer_brush`.
149
- 8. **Gradient paint** (colour that changes as the stroke goes): `set_paint` with `{ type:
150
- "gradient", stops, map }`, or `paint_stroke` `paint` for one stroke (brush only). `map.by`
151
- `distance` (default 300 px, mirrored) for drag-it-out colour, `pressure`, `direction`,
152
- `across-tip`, `random`; stops may be `"paint"` / `"secondary"` (foreground / background).
129
+ 5. **Mixing paint, the Mixer Brush and gradient paint**: `mix_colors` mixes named paints like
130
+ pigment; `paint_stroke` `tool: "mixer"` picks up and smears the layer's colours; gradient paint
131
+ changes colour along a stroke. Read [references/painting.md](references/painting.md) first.
153
132
 
154
133
  ### Colour management
155
134
 
@@ -401,6 +380,8 @@ in the source frame at the document's bit depth, colour mode and profile. Read
401
380
  | `set_channel_properties` | Rename a channel or change its overlay `color`, `opacity`, `indicates` (`masked` / `selected`) and `visible`. Returns the `channel`. |
402
381
  | `duplicate_channel` | Copy a channel (`name`, default "<name> copy"). Returns the copy. |
403
382
  | `delete_channel` | Delete a channel (undoable). Returns the remaining channels. |
383
+ | `export_mask_image` | Read-only. The selection, a channel (`channelId`) or a layer's painted mask (`layerId`) as a greyscale PNG (white = selected), `invert`, `maxSide` (default 1024). Returns the image and its size. |
384
+ | `load_channel_from_image` | Store a mask image (`image` data URL / URL; `channel`, `threshold`, `invert`, `name`) in a new channel without changing the selection. Returns the `channel`. |
404
385
  | `set_quick_mask` | Quick Mask mode (`enabled`): paint, fill and retouch tools without `layerId` edit the selection (white selects, black deselects); turn it off before painting layers. Returns the mode. |
405
386
 
406
387
  ### Save and open
@@ -0,0 +1,29 @@
1
+ # Painting: mixing paint, the Mixer Brush and gradient paint
2
+
3
+ Read this before `mix_colors`, a `paint_stroke` with `tool: "mixer"`, or gradient paint
4
+ (`set_paint` / `paint_stroke` `paint`).
5
+
6
+ 1. **Mix paint colours with `mix_colors`** when the user names paints and amounts ("two parts
7
+ ultramarine to one part yellow", "a tint of red"). It mixes like pigment, so blue and yellow
8
+ make green and white makes a tint, where averaging RGB gives grey or a dull pastel. Pass its
9
+ `mixed` hex as the `color` of `paint_stroke` or `fill_pixels`. Give a strong dark paint a
10
+ `strength` above 1 when a little of it should tint a lot of white.
11
+ 2. **Blend and smear with the Mixer Brush** (`paint_stroke` with `tool: "mixer"`) when the
12
+ user wants paint to pick up and drag the colours already on the layer (wet blending, softening
13
+ an edge, pulling one colour into another). `mixer.wet` is how much it picks up (0 paints only
14
+ the loaded colour), `mixer.mix` how far each dab leans from the loaded colour to the picked-up
15
+ one, and `mixer.load` below 1 makes long strokes run dry. Use `mixing: "pigment"` for
16
+ painterly results (blue dragged through yellow goes green); keep `rgb` for retouching, where
17
+ colours should stay between the two you started with. A brush with `blend: "pigment"` mixes
18
+ its one colour into the layer; only the mixer carries picked-up colour along the stroke. A `brush.flow` around 0.3..0.6 keeps
19
+ some of the canvas under each dab and blends more naturally than 1. The stroke samples the
20
+ target layer only, so paint on the layer that holds the colours to blend.
21
+ 3. **Keep the mixer stateless unless you need a carried load.** By default each mixer stroke
22
+ loads `color` (or the foreground) and is cleaned afterwards, so every call is independent and
23
+ replays the same. To carry dirty paint from stroke to stroke, pass `mixer.loadEachStroke:
24
+ false` and `cleanEachStroke: false`, start with `load_mixer_brush`, read the brush with
25
+ `get_mixer_brush` when unsure, and reset it with `clean_mixer_brush`.
26
+ 4. **Gradient paint** (colour that changes as the stroke goes): `set_paint` with `{ type:
27
+ "gradient", stops, map }`, or `paint_stroke` `paint` for one stroke (brush only). `map.by`
28
+ `distance` (default 300 px, mirrored) for drag-it-out colour, `pressure`, `direction`,
29
+ `across-tip`, `random`; stops may be `"paint"` / `"secondary"` (foreground / background).
@@ -76,6 +76,10 @@ This skill is the method. `pixerate-image-editor` has the full tool reference.
76
76
  6. **Store.** `save_selection` with a clear name before you change a selection that took
77
77
  work, and whenever it will be needed again (a second adjustment, a later refinement). Load
78
78
  it with `load_selection_from_channel`; channels are saved with the document and in PSDs.
79
+ To hand a mask to another tool or service, or to look at it alone, `export_mask_image`
80
+ writes the selection, a channel or a layer mask as a greyscale PNG; a matte that comes
81
+ back goes into a channel with `load_channel_from_image` (or straight to the selection with
82
+ `load_selection_from_image`).
79
83
  7. **Verify.** `render_preview` at 1024 px or more, and `capture_view` on the edge at 2–8×.
80
84
  **Check:** no fringe of the old background colour, no stair-steps, no visible line where an
81
85
  adjustment ends. Fix by loading the mask back (`load_selection_from_mask`), refining, and
@@ -91,7 +95,7 @@ This skill is the method. `pixerate-image-editor` has the full tool reference.
91
95
  | A colour spread across the image (all the reds, a dress) | `select_color_range` with `samples` (several picks) or a hue `preset`; `localized` to keep one area |
92
96
  | Tones (shadows, highlights, a luminosity mask) | `select_color_range` with `preset` `shadows` / `midtones` / `highlights` |
93
97
  | Skin for retouching | `select_color_range` `preset: "skinTones"`, then `intersect` with a box around the face |
94
- | An AI matte or saved mask from the host | `load_selection_from_image` (soft: no `threshold`), then `refine_selection` |
98
+ | An AI matte or saved mask from the host | `load_selection_from_image` (soft: no `threshold`), then `refine_selection`; `load_channel_from_image` to keep it for later |
95
99
  | An existing layer mask | `load_selection_from_mask` |
96
100
  | A cutout, shape or text already on its own layer | `select_layer_transparency` (exact, soft where the layer is) |
97
101
  | A dead pixel row or column | `select_line`, then fill or heal it |
@@ -178,6 +182,8 @@ This skill is the method. `pixerate-image-editor` has the full tool reference.
178
182
  - `reselect`: undo a deselect
179
183
  - `save_selection`, `load_selection_from_channel`, `list_channels`: keep selections as alpha channels
180
184
  - `set_channel_properties`, `duplicate_channel`, `delete_channel`: manage channels
185
+ - `export_mask_image`: a selection, channel or layer mask as a greyscale PNG
186
+ - `load_channel_from_image`: a mask image into a new channel
181
187
  - `set_quick_mask`: paint the selection
182
188
  - `fill_pixels`, `blur_stroke`: fill or soften the selection in Quick Mask mode
183
189
  - `magic_wand`: similar colour from a seed