@pixerate/editor 0.279.0 → 0.279.1

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.
@@ -42,7 +42,7 @@ var _chunkYH6SKC7Pcjs = require('../chunk-YH6SKC7P.cjs');
42
42
 
43
43
 
44
44
 
45
- var _chunkQBZEC2JJcjs = require('../chunk-QBZEC2JJ.cjs');
45
+ var _chunkWCC4NXWYcjs = require('../chunk-WCC4NXWY.cjs');
46
46
  require('../chunk-YZWM6ZIP.cjs');
47
47
  require('../chunk-3ZRNK3RO.cjs');
48
48
 
@@ -125,7 +125,7 @@ var _chunkK7ENM55Pcjs = require('../chunk-K7ENM55P.cjs');
125
125
 
126
126
 
127
127
 
128
- var _chunkPEQWARCPcjs = require('../chunk-PEQWARCP.cjs');
128
+ var _chunkWZYRYYXNcjs = require('../chunk-WZYRYYXN.cjs');
129
129
 
130
130
 
131
131
 
@@ -250,7 +250,7 @@ require('../chunk-WOFXZ3XU.cjs');
250
250
 
251
251
 
252
252
 
253
- var _chunkMITQGHN3cjs = require('../chunk-MITQGHN3.cjs');
253
+ var _chunk4BMRQSPBcjs = require('../chunk-4BMRQSPB.cjs');
254
254
  require('../chunk-NPPMKMCU.cjs');
255
255
 
256
256
 
@@ -414,7 +414,7 @@ function normalizeCanvas(raw) {
414
414
  function createPaintDocument(options = {}) {
415
415
  const canvas = normalizeCanvas({ width: _nullishCoalesce(options.width, () => ( 2048)), height: _nullishCoalesce(options.height, () => ( 1536)), dpi: options.dpi });
416
416
  const layer = createPaintLayer("Layer 1");
417
- return { canvas, paper: _chunkPEQWARCPcjs.normalizePaper.call(void 0, _nullishCoalesce(options.paper, () => ( {}))), layers: [layer], activeLayerId: layer.id, strokes: [] };
417
+ return { canvas, paper: _chunkWZYRYYXNcjs.normalizePaper.call(void 0, _nullishCoalesce(options.paper, () => ( {}))), layers: [layer], activeLayerId: layer.id, strokes: [] };
418
418
  }
419
419
 
420
420
  // src/paint-editor/ferro.ts
@@ -973,17 +973,17 @@ function lightTile(color, height, heightAround, material, light, film = null, vi
973
973
  filmRgb = thinFilmRgb(opd);
974
974
  }
975
975
  for (let c = 0; c < 3; c++) {
976
- const a = _chunkMITQGHN3cjs.SRGB_TO_LINEAR[color[i + c]];
976
+ const a = _chunk4BMRQSPBcjs.SRGB_TO_LINEAR[color[i + c]];
977
977
  const fc = filmRgb ? filmRgb[c] : a;
978
978
  if (hasSlope) {
979
979
  const tint = metal * a + (1 - metal);
980
980
  const diff = fa > 0 ? a * (1 - fa * 0.75) + fc * fa * (0.45 + 0.55 * a) : a;
981
981
  const specTint = fa > 0 ? tint * (1 - fa) + fc * fa : tint;
982
982
  const v = diff * shade * (1 - 0.35 * metal) + spec * specTint * (1 + metal);
983
- out[i + c] = _chunkMITQGHN3cjs.linearToSrgb8.call(void 0, v);
983
+ out[i + c] = _chunk4BMRQSPBcjs.linearToSrgb8.call(void 0, v);
984
984
  } else {
985
985
  const v = a * (1 - fa * 0.75) + fc * fa * (0.45 + 0.55 * a);
986
- out[i + c] = _chunkMITQGHN3cjs.linearToSrgb8.call(void 0, v);
986
+ out[i + c] = _chunk4BMRQSPBcjs.linearToSrgb8.call(void 0, v);
987
987
  }
988
988
  }
989
989
  }
@@ -1275,12 +1275,12 @@ var ThickStrokeDriver = (_class3 = class {
1275
1275
  constructor(init) {;_class3.prototype.__init3.call(this);_class3.prototype.__init4.call(this);_class3.prototype.__init5.call(this);_class3.prototype.__init6.call(this);_class3.prototype.__init7.call(this);_class3.prototype.__init8.call(this);_class3.prototype.__init9.call(this);_class3.prototype.__init10.call(this);_class3.prototype.__init11.call(this);_class3.prototype.__init12.call(this);
1276
1276
  this.init = init;
1277
1277
  const b = init.brush;
1278
- this.smoother = new (0, _chunkPEQWARCPcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
1279
- const copies = init.copies.length ? init.copies : [_chunkPEQWARCPcjs.IDENTITY_COPY];
1278
+ this.smoother = new (0, _chunkWZYRYYXNcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
1279
+ const copies = init.copies.length ? init.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
1280
1280
  this.copies = copies;
1281
1281
  const rates = _chunkIFWLZZCWcjs.exchangeRates.call(void 0, b.behavior.pickup, b.behavior.mix, 1, b.behavior.mixing);
1282
1282
  this.states = copies.map((c, i) => ({
1283
- walker: new (0, _chunkPEQWARCPcjs.PenDabWalker)(b, init.seed + i * 7919 | 0, c.linear),
1283
+ walker: new (0, _chunkWZYRYYXNcjs.PenDabWalker)(b, init.seed + i * 7919 | 0, c.linear),
1284
1284
  exchange: new (0, _chunkIFWLZZCWcjs.PaintExchange)(rates, init.load),
1285
1285
  smudge: b.impasto.tool === "knife" ? new (0, _chunkIFWLZZCWcjs.SmudgeTip)({ strength: 0.85, length: 0.6 + 0.38 * b.impasto.drag, mixing: b.behavior.mixing }, b.tip.size * 1.2) : null,
1286
1286
  carried: null,
@@ -1433,7 +1433,7 @@ var ThickStrokeDriver = (_class3 = class {
1433
1433
  let flow = 1;
1434
1434
  const effect = this.init.effect;
1435
1435
  if (effect) {
1436
- _chunkPEQWARCPcjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
1436
+ _chunkWZYRYYXNcjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
1437
1437
  ex.setReservoirColor(this.centre[0], this.centre[1], this.centre[2]);
1438
1438
  } else if (this.sampler) {
1439
1439
  const g = this.sampler.dab(d, this.sample);
@@ -1450,7 +1450,7 @@ var ThickStrokeDriver = (_class3 = class {
1450
1450
  let field = null;
1451
1451
  if (effect) {
1452
1452
  field = new Float32Array(n * 3);
1453
- _chunkPEQWARCPcjs.effectDabField.call(void 0, effect, rect, cov, this.centre, this.paint, field, 0, d);
1453
+ _chunkWZYRYYXNcjs.effectDabField.call(void 0, effect, rect, cov, this.centre, this.paint, field, 0, d);
1454
1454
  }
1455
1455
  this.medium.deposit(rect, cov, dep, this.paint, ex.paintPigment, field);
1456
1456
  }
@@ -1870,7 +1870,7 @@ function uvPaper(paper, uv) {
1870
1870
  if (!uv.on || uv.ambient >= 1) return paper;
1871
1871
  const cached = uvPapers.get(paper);
1872
1872
  if (cached && cached.ambient === uv.ambient) return cached.paper;
1873
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, paper.color);
1873
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color);
1874
1874
  const toHex = (v) => Math.round(Math.min(255, Math.max(0, v * uv.ambient))).toString(16).padStart(2, "0");
1875
1875
  const next = { ...paper, color: `#${toHex(r)}${toHex(g)}${toHex(b)}` };
1876
1876
  uvPapers.set(paper, { ambient: uv.ambient, paper: next });
@@ -2073,9 +2073,9 @@ var UvCache = (_class5 = class {constructor() { _class5.prototype.__init15.call(
2073
2073
  const fGain = fa / 255 * str;
2074
2074
  const fCov = Math.min(1, fGain);
2075
2075
  for (let c = 0; c < 3; c++) {
2076
- const baseLin = ca > 0 ? _chunkMITQGHN3cjs.SRGB_TO_LINEAR[cd[i + c]] * amb : 0;
2077
- const emLin = fa > 0 ? _chunkMITQGHN3cjs.SRGB_TO_LINEAR[fd[i + c]] * (1 + 1.15 * fGain) : 0;
2078
- dst[i + c] = _chunkMITQGHN3cjs.linearToSrgb8.call(void 0, baseLin * (1 - fCov * 0.5) + emLin * fCov);
2076
+ const baseLin = ca > 0 ? _chunk4BMRQSPBcjs.SRGB_TO_LINEAR[cd[i + c]] * amb : 0;
2077
+ const emLin = fa > 0 ? _chunk4BMRQSPBcjs.SRGB_TO_LINEAR[fd[i + c]] * (1 + 1.15 * fGain) : 0;
2078
+ dst[i + c] = _chunk4BMRQSPBcjs.linearToSrgb8.call(void 0, baseLin * (1 - fCov * 0.5) + emLin * fCov);
2079
2079
  }
2080
2080
  dst[i + 3] = Math.min(255, Math.max(ca, Math.round(fa * Math.min(1, str))));
2081
2081
  }
@@ -2421,11 +2421,11 @@ var MarkStroke = (_class7 = class {
2421
2421
  this.options = options;
2422
2422
  this.sampler = options.paint ? new (0, _chunkIFWLZZCWcjs.PaintGradientSampler)(options.paint, _nullishCoalesce(options.seed, () => ( 0))) : null;
2423
2423
  this.tipTable = _optionalChain([this, 'access', _56 => _56.sampler, 'optionalAccess', _57 => _57.acrossTip]) ? this.sampler.tipTable(_chunkIFWLZZCWcjs.TIP_GRADIENT_STEPS) : null;
2424
- this.smoother = new (0, _chunkPEQWARCPcjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
2425
- this.copies = _optionalChain([options, 'access', _58 => _58.copies, 'optionalAccess', _59 => _59.length]) ? options.copies : [_chunkPEQWARCPcjs.IDENTITY_COPY];
2424
+ this.smoother = new (0, _chunkWZYRYYXNcjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
2425
+ this.copies = _optionalChain([options, 'access', _58 => _58.copies, 'optionalAccess', _59 => _59.length]) ? options.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
2426
2426
  this.seed = _nullishCoalesce(options.seed, () => ( 0));
2427
2427
  const fine = { ...brush, tip: { ...brush.tip, spacing: Math.max(0.01, Math.min(0.25, STEP_PX / Math.max(1, brush.tip.size))) } };
2428
- this.walkers = this.copies.map((c, i) => new (0, _chunkPEQWARCPcjs.PenDabWalker)(fine, (_nullishCoalesce(options.seed, () => ( 0))) + i * 7919 | 0, c.linear));
2428
+ this.walkers = this.copies.map((c, i) => new (0, _chunkWZYRYYXNcjs.PenDabWalker)(fine, (_nullishCoalesce(options.seed, () => ( 0))) + i * 7919 | 0, c.linear));
2429
2429
  this.depth = options.grain && !options.grain.flat ? Math.min(1, Math.max(0, options.paperDepth * brush.grain)) : 0;
2430
2430
  }
2431
2431
 
@@ -2504,7 +2504,7 @@ var MarkStroke = (_class7 = class {
2504
2504
  */
2505
2505
  stamp(x, y, r, kind, rotation, seed, alpha, opacity, pressure, rects) {
2506
2506
  if (!(r > 0.05) || !(alpha > 0)) return;
2507
- const sample = _chunkPEQWARCPcjs.stampSampler.call(void 0, kind, this.options.stampArt);
2507
+ const sample = _chunkWZYRYYXNcjs.stampSampler.call(void 0, kind, this.options.stampArt);
2508
2508
  if (!sample) return this.mark(x, y, r, alpha, opacity, pressure, rects);
2509
2509
  const reach = Math.max(0.5, r) * Math.SQRT2 + 1;
2510
2510
  const rect = { x: Math.floor(x - reach), y: Math.floor(y - reach), width: 0, height: 0 };
@@ -2554,7 +2554,7 @@ var MarkStroke = (_class7 = class {
2554
2554
  if (this.options.effect) {
2555
2555
  if (this.field.length < n * 3) this.field = new Float32Array(n * 3);
2556
2556
  const field = this.field.subarray(0, n * 3);
2557
- _chunkPEQWARCPcjs.sampleEffectField.call(void 0, this.options.effect, rect, vals, field, this.pen);
2557
+ _chunkWZYRYYXNcjs.sampleEffectField.call(void 0, this.options.effect, rect, vals, field, this.pen);
2558
2558
  this.coverage.accumulate(rect, vals, opacity, null, field);
2559
2559
  } else {
2560
2560
  const color = this.markColor(x, y);
@@ -3234,11 +3234,11 @@ var StickerSpray = (_class10 = class {
3234
3234
  constructor(init) {;_class10.prototype.__init33.call(this);_class10.prototype.__init34.call(this);_class10.prototype.__init35.call(this);_class10.prototype.__init36.call(this);_class10.prototype.__init37.call(this);
3235
3235
  this.init = init;
3236
3236
  const b = init.brush;
3237
- this.smoother = new (0, _chunkPEQWARCPcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
3238
- this.copies = init.copies.length ? init.copies : [_chunkPEQWARCPcjs.IDENTITY_COPY];
3237
+ this.smoother = new (0, _chunkWZYRYYXNcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
3238
+ this.copies = init.copies.length ? init.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
3239
3239
  const spacing = Math.max(0.05, 1 / Math.max(0.05, b.sticker.density * 4));
3240
3240
  const walk = { ...b, tip: { ...b.tip, spacing }, dynamics: { ...b.dynamics, scatter: 0, sizeJitter: 0, angleJitter: 0 } };
3241
- this.walkers = this.copies.map((c, i) => new (0, _chunkPEQWARCPcjs.PenDabWalker)(walk, init.seed + i * 7919 | 0, c.linear));
3241
+ this.walkers = this.copies.map((c, i) => new (0, _chunkWZYRYYXNcjs.PenDabWalker)(walk, init.seed + i * 7919 | 0, c.linear));
3242
3242
  this.medium = new (0, _chunkIFWLZZCWcjs.TileMedium)(init.target, {});
3243
3243
  this.next = init.nextId;
3244
3244
  }
@@ -3324,7 +3324,7 @@ var StickerSpray = (_class10 = class {
3324
3324
  const effect = this.init.effect;
3325
3325
  if (effect) {
3326
3326
  const rgb = [0, 0, 0];
3327
- const alpha = _chunkPEQWARCPcjs.sampleEffectAt.call(void 0, effect, d.x + dx, d.y + dy, rgb, d);
3327
+ const alpha = _chunkWZYRYYXNcjs.sampleEffectAt.call(void 0, effect, d.x + dx, d.y + dy, rgb, d);
3328
3328
  return { color: "#" + rgb.map((c) => Math.round(c * 255).toString(16).padStart(2, "0")).join(""), alpha };
3329
3329
  }
3330
3330
  const g = this.init.paint;
@@ -3453,7 +3453,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
3453
3453
  this.layerId = init.layerId;
3454
3454
  this.base = init.surface;
3455
3455
  this.live = new Map(this.base.tiles);
3456
- this.copies = init.copies.length ? init.copies : [_chunkPEQWARCPcjs.IDENTITY_COPY];
3456
+ this.copies = init.copies.length ? init.copies : [_chunkWZYRYYXNcjs.IDENTITY_COPY];
3457
3457
  const brush = init.brush;
3458
3458
  this.invisibleDaylight = brush.fluorescence.amount > 0 && brush.fluorescence.invisible && brush.engine !== "eraser" && brush.engine !== "blender" && brush.engine !== "smudge";
3459
3459
  if (init.wet) this.wetDriver = init.wet.driver;
@@ -3527,7 +3527,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
3527
3527
  }
3528
3528
  if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunkHRUK5TFWcjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
3529
3529
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
3530
- this.wet = new (0, _chunkPEQWARCPcjs.PaintDabStroke)(brush, {
3530
+ this.wet = new (0, _chunkWZYRYYXNcjs.PaintDabStroke)(brush, {
3531
3531
  target: this.tileTarget(),
3532
3532
  color: rgb(init.color),
3533
3533
  secondary: rgb(_nullishCoalesce(init.secondary, () => ( init.background))),
@@ -3543,7 +3543,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
3543
3543
  });
3544
3544
  } else {
3545
3545
  const opts = { grain: init.grain, paperDepth: init.paperDepth, seed: init.seed, copies: this.copies, paint: _nullishCoalesce(init.paint, () => ( null)), effect, stampArt: init.stampArt, film: this.filmBuffer };
3546
- this.dry = brush.engine === "particle" ? new ParticleStroke(brush, opts) : brush.engine === "bristle" ? new BristleStroke(brush, opts) : new (0, _chunkPEQWARCPcjs.DryStroke)(brush, opts);
3546
+ this.dry = brush.engine === "particle" ? new ParticleStroke(brush, opts) : brush.engine === "bristle" ? new BristleStroke(brush, opts) : new (0, _chunkWZYRYYXNcjs.DryStroke)(brush, opts);
3547
3547
  }
3548
3548
  }
3549
3549
  }
@@ -3624,7 +3624,7 @@ var PaintStrokeSession = (_class11 = class _PaintStrokeSession {
3624
3624
  makeThermoTwin(thermo) {
3625
3625
  const init = this.init;
3626
3626
  const hotHex = init.brush.thermochromic.hotColor;
3627
- const hotRgb = hotHex ? _chunkPEQWARCPcjs.hexToRgb8.call(void 0, hotHex) : [0, 0, 0];
3627
+ const hotRgb = hotHex ? _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, hotHex) : [0, 0, 0];
3628
3628
  const threshold = init.brush.thermochromic.threshold;
3629
3629
  const host = {
3630
3630
  update: (_id, surface) => {
@@ -4191,7 +4191,7 @@ function normalizeBrushStroke(raw) {
4191
4191
  }
4192
4192
  if (st.length) out.stencils = st;
4193
4193
  }
4194
- const effect = _chunkPEQWARCPcjs.readPaintEffectPaint.call(void 0, r.paint);
4194
+ const effect = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, r.paint);
4195
4195
  const paint = effect ? null : _chunkIFWLZZCWcjs.readPaintSource.call(void 0, r.paint);
4196
4196
  if (effect) out.paint = effect;
4197
4197
  else if (paint && paint.type === "gradient") out.paint = paint;
@@ -4235,7 +4235,7 @@ function varyStroke(stroke, m, v) {
4235
4235
  const out = { ...stroke, brush, points };
4236
4236
  if (_optionalChain([stroke, 'access', _159 => _159.paint, 'optionalAccess', _160 => _160.type]) === "gradient" && s !== 1) out.paint = _chunkIFWLZZCWcjs.scalePaintGradient.call(void 0, stroke.paint, s);
4237
4237
  if (_optionalChain([stroke, 'access', _161 => _161.paint, 'optionalAccess', _162 => _162.type]) === "effect" && _optionalChain([stroke, 'access', _163 => _163.paint, 'access', _164 => _164.map, 'optionalAccess', _165 => _165.by]) === "stroke" && s !== 1) out.paint = { ...stroke.paint, map: { ...stroke.paint.map, length: Math.min(4096, Math.max(16, Math.round(stroke.paint.map.length * s))) } };
4238
- if (_optionalChain([stroke, 'access', _166 => _166.paint, 'optionalAccess', _167 => _167.type]) === "effect" && _optionalChain([stroke, 'access', _168 => _168.paint, 'access', _169 => _169.map, 'optionalAccess', _170 => _170.by]) === "path") out.paint = _chunkPEQWARCPcjs.withStrokePath.call(void 0, stroke.paint, points);
4238
+ if (_optionalChain([stroke, 'access', _166 => _166.paint, 'optionalAccess', _167 => _167.type]) === "effect" && _optionalChain([stroke, 'access', _168 => _168.paint, 'access', _169 => _169.map, 'optionalAccess', _170 => _170.by]) === "path") out.paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, stroke.paint, points);
4239
4239
  if (_optionalChain([stroke, 'access', _171 => _171.copies, 'optionalAccess', _172 => _172.length])) {
4240
4240
  const inv = invertAffine(m);
4241
4241
  out.copies = stroke.copies.map((c) => composeAffine(m, composeAffine(c, inv)));
@@ -4277,7 +4277,7 @@ function paperTile(paper, r, light) {
4277
4277
  const key = `${paperKey(paper, light)}|${r.x},${r.y},${r.width},${r.height}`;
4278
4278
  let t = tileCache.get(key);
4279
4279
  if (!t) {
4280
- t = _chunkPEQWARCPcjs.renderPaper.call(void 0, paper, r, paperGrain(paper), light);
4280
+ t = _chunkWZYRYYXNcjs.renderPaper.call(void 0, paper, r, paperGrain(paper), light);
4281
4281
  if (tileCache.size > 512) tileCache.delete(tileCache.keys().next().value);
4282
4282
  tileCache.set(key, t);
4283
4283
  }
@@ -4382,7 +4382,7 @@ function header(state, options) {
4382
4382
  return out;
4383
4383
  }
4384
4384
  function serializePaintDocument(state, options = {}) {
4385
- const { layers, assets } = _chunkQBZEC2JJcjs.serializeLayers.call(void 0, state.layers);
4385
+ const { layers, assets } = _chunkWCC4NXWYcjs.serializeLayers.call(void 0, state.layers);
4386
4386
  return { ...header(state, options), layers, assets };
4387
4387
  }
4388
4388
  var NO_EXTENSION_PNGS = /* @__PURE__ */ new Set(["format", "version", "width", "height", "dpi", "paper", "layers", "assets", "activeLayerId", "strokes", "wetEvents", "paintEvents", "origin"]);
@@ -4452,7 +4452,7 @@ function inlinePngs(value, assets, problems, field, used) {
4452
4452
  return value;
4453
4453
  }
4454
4454
  async function serializePaintDocumentExternal(state, store, options = {}) {
4455
- const { layers, assets } = await _chunkQBZEC2JJcjs.serializeLayersExternal.call(void 0, state.layers, store);
4455
+ const { layers, assets } = await _chunkWCC4NXWYcjs.serializeLayersExternal.call(void 0, state.layers, store);
4456
4456
  const out = { ...header(state, options), layers, assets };
4457
4457
  for (const key of Object.keys(out)) if (!NO_EXTENSION_PNGS.has(key)) out[key] = await externalizePngs(out[key], assets, store);
4458
4458
  return out;
@@ -4496,8 +4496,8 @@ function deserializePaintDocument(raw) {
4496
4496
  }
4497
4497
  function readDocument(r, assets, problems) {
4498
4498
  const canvas = normalizeCanvas({ width: r.width, height: r.height, dpi: _nullishCoalesce(r.dpi, () => ( void 0)) });
4499
- const paper = _chunkPEQWARCPcjs.normalizePaper.call(void 0, _nullishCoalesce(r.paper, () => ( {})));
4500
- const layers = paintLayersOnly(_chunkQBZEC2JJcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
4499
+ const paper = _chunkWZYRYYXNcjs.normalizePaper.call(void 0, _nullishCoalesce(r.paper, () => ( {})));
4500
+ const layers = paintLayersOnly(_chunkWCC4NXWYcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
4501
4501
  const wanted = typeof r.activeLayerId === "string" ? r.activeLayerId : null;
4502
4502
  const activeLayerId = wanted && _chunkPVJMTLPJcjs.findLayer.call(void 0, layers, wanted) ? wanted : _nullishCoalesce(_optionalChain([_chunkPVJMTLPJcjs.flattenLayers.call(void 0, layers), 'access', _184 => _184.filter, 'call', _185 => _185((l) => l.type === "pixel"), 'access', _186 => _186.pop, 'call', _187 => _187(), 'optionalAccess', _188 => _188.id]), () => ( null));
4503
4503
  const wetEvents = Array.isArray(r.wetEvents) ? r.wetEvents.filter((e) => e && typeof e === "object" && Number.isInteger(e.clock) && typeof e.kind === "string") : [];
@@ -4513,7 +4513,7 @@ async function deserializePaintDocumentAsync(raw, store) {
4513
4513
  if (!raw || typeof raw !== "object") throw new Error("Not a paint document: expected a JSON object.");
4514
4514
  const r = raw;
4515
4515
  const problems = [];
4516
- const assets = await _chunkQBZEC2JJcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
4516
+ const assets = await _chunkWCC4NXWYcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
4517
4517
  const loaded = deserializePaintDocument({ ...r, assets });
4518
4518
  return { ...loaded, problems: [...problems, ...loaded.problems] };
4519
4519
  }
@@ -4596,7 +4596,7 @@ function pointerToPenPoint(e, x, y, view) {
4596
4596
  const p = { x, y, pressure: samplePressure(e) };
4597
4597
  if (typeof e.timeStamp === "number" && Number.isFinite(e.timeStamp)) p.t = e.timeStamp;
4598
4598
  if (e.pointerType !== "pen") return p;
4599
- const o = _chunkPEQWARCPcjs.penOrientation.call(void 0, {
4599
+ const o = _chunkWZYRYYXNcjs.penOrientation.call(void 0, {
4600
4600
  x,
4601
4601
  y,
4602
4602
  altitude: typeof e.altitudeAngle === "number" ? e.altitudeAngle : void 0,
@@ -4663,19 +4663,19 @@ var thumbWorld = null;
4663
4663
  function paintWetTestStroke(brush, paper, color, width, height) {
4664
4664
  if (!thumbWorld || thumbWorld.width !== width || thumbWorld.height !== height) {
4665
4665
  _optionalChain([thumbWorld, 'optionalAccess', _191 => _191.destroy, 'call', _192 => _192()]);
4666
- thumbWorld = new (0, _chunkMITQGHN3cjs.WetWorld)(width, height, _chunkPEQWARCPcjs.wetPaperInput.call(void 0, paper), { kernel: "typescript", threads: 0 });
4667
- } else thumbWorld.setPaper(_chunkPEQWARCPcjs.wetPaperInput.call(void 0, paper));
4666
+ thumbWorld = new (0, _chunk4BMRQSPBcjs.WetWorld)(width, height, _chunkWZYRYYXNcjs.wetPaperInput.call(void 0, paper), { kernel: "typescript", threads: 0 });
4667
+ } else thumbWorld.setPaper(_chunkWZYRYYXNcjs.wetPaperInput.call(void 0, paper));
4668
4668
  const w = thumbWorld;
4669
4669
  if (w.hasLane("thumb")) w.removeLane("thumb");
4670
4670
  w.ensureLane("thumb");
4671
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, color);
4671
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
4672
4672
  if (brush.wet.tool !== "paint" && brush.wet.tool !== "water") {
4673
4673
  const half = Math.ceil(height / 2);
4674
- w.paint("thumb", { x: 0, y: 0, width, height: half }, null, 0.4, Array.from(_chunkMITQGHN3cjs.pigmentOf.call(void 0, [r / 255, g / 255, b / 255], 0), (v) => v * 0.05));
4675
- w.paint("thumb", { x: 0, y: half, width, height: height - half }, null, 0.4, Array.from(_chunkMITQGHN3cjs.pigmentOf.call(void 0, [232 / 255, 196 / 255, 64 / 255], 0), (v) => v * 0.05));
4674
+ w.paint("thumb", { x: 0, y: 0, width, height: half }, null, 0.4, Array.from(_chunk4BMRQSPBcjs.pigmentOf.call(void 0, [r / 255, g / 255, b / 255], 0), (v) => v * 0.05));
4675
+ w.paint("thumb", { x: 0, y: half, width, height: height - half }, null, 0.4, Array.from(_chunk4BMRQSPBcjs.pigmentOf.call(void 0, [232 / 255, 196 / 255, 64 / 255], 0), (v) => v * 0.05));
4676
4676
  }
4677
4677
  const film = brush.iridescence && brush.wet.tool === "paint" ? new FilmBuffer(_chunk474IQG74cjs.emptySurface.call(void 0, 4, 0)) : null;
4678
- const driver = new (0, _chunkPEQWARCPcjs.WetStrokeDriver)({
4678
+ const driver = new (0, _chunkWZYRYYXNcjs.WetStrokeDriver)({
4679
4679
  world: w,
4680
4680
  laneId: "thumb",
4681
4681
  brush,
@@ -4683,9 +4683,9 @@ function paintWetTestStroke(brush, paper, color, width, height) {
4683
4683
  load: brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255]),
4684
4684
  grain: paperGrain(paper),
4685
4685
  paperDepth: paper.depth,
4686
- paperColor: _chunkPEQWARCPcjs.hexToRgb8.call(void 0, paper.color),
4686
+ paperColor: _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color),
4687
4687
  seed: 7,
4688
- copies: [_chunkPEQWARCPcjs.IDENTITY_COPY],
4688
+ copies: [_chunkWZYRYYXNcjs.IDENTITY_COPY],
4689
4689
  film
4690
4690
  });
4691
4691
  driver.push(thumbnailStroke(width, height));
@@ -4707,7 +4707,7 @@ function thumbnailStroke(width, height) {
4707
4707
  return pts;
4708
4708
  }
4709
4709
  function paintTestStroke(surface, brush, paper, color, width, height, stampArt) {
4710
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, color);
4710
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
4711
4711
  let result = surface;
4712
4712
  let thick = null;
4713
4713
  let light = null;
@@ -4730,13 +4730,13 @@ function paintTestStroke(surface, brush, paper, color, width, height, stampArt)
4730
4730
  lockTransparency: false,
4731
4731
  brush,
4732
4732
  color: [r, g, b, 255],
4733
- background: [..._chunkPEQWARCPcjs.hexToRgb8.call(void 0, paper.color), 255],
4733
+ background: [..._chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color), 255],
4734
4734
  grain: paperGrain(paper),
4735
4735
  paperDepth: paper.depth,
4736
4736
  seed: 7,
4737
4737
  colorHex: color,
4738
4738
  affineCopies: [],
4739
- copies: [_chunkPEQWARCPcjs.IDENTITY_COPY],
4739
+ copies: [_chunkWZYRYYXNcjs.IDENTITY_COPY],
4740
4740
  mixerLoad: brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255]),
4741
4741
  thick: brush.engine === "impasto" || brush.iridescence ? { channels: emptyThickChannels() } : void 0,
4742
4742
  sticker: brush.engine === "sticker" ? { nextId: 1 } : void 0,
@@ -4757,7 +4757,7 @@ function renderBrushThumbnail(brush, options) {
4757
4757
  const height = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.height, () => ( 48)))));
4758
4758
  const maxSize = height * 0.42;
4759
4759
  const b = brush.tip.size > maxSize ? _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
4760
- const rgba = [..._chunkPEQWARCPcjs.hexToRgb8.call(void 0, options.color), 255];
4760
+ const rgba = [..._chunkWZYRYYXNcjs.hexToRgb8.call(void 0, options.color), 255];
4761
4761
  let surface = _chunk474IQG74cjs.emptySurface.call(void 0, 4);
4762
4762
  if (b.engine === "eraser") {
4763
4763
  surface = _chunk474IQG74cjs.fillRect.call(void 0, surface, { x: 0, y: 0, width, height }, rgba);
@@ -5085,7 +5085,7 @@ var MixingPad = (_class13 = class {constructor() { _class13.prototype.__init63.c
5085
5085
  }
5086
5086
  /** Paints `points` with `brush` in `color` on the pad. */
5087
5087
  run(brush, points, color) {
5088
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, color);
5088
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
5089
5089
  let result = null;
5090
5090
  const session = new PaintStrokeSession(
5091
5091
  { update: () => {
@@ -5103,7 +5103,7 @@ var MixingPad = (_class13 = class {constructor() { _class13.prototype.__init63.c
5103
5103
  seed: 1,
5104
5104
  colorHex: color,
5105
5105
  affineCopies: [],
5106
- copies: [_chunkPEQWARCPcjs.IDENTITY_COPY],
5106
+ copies: [_chunkWZYRYYXNcjs.IDENTITY_COPY],
5107
5107
  mixerLoad: brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255])
5108
5108
  }
5109
5109
  );
@@ -5194,7 +5194,7 @@ var MixingPad = (_class13 = class {constructor() { _class13.prototype.__init63.c
5194
5194
  this.run(knife, stir, "#000000");
5195
5195
  }
5196
5196
  const mixed = _chunk2VX55NFMcjs.mixPigments.call(void 0,
5197
- paints2.map((p) => _chunkPEQWARCPcjs.hexToRgb8.call(void 0, p.color).map((v) => v / 255)),
5197
+ paints2.map((p) => _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, p.color).map((v) => v / 255)),
5198
5198
  paints2.map((p) => p.parts)
5199
5199
  );
5200
5200
  const core = _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
@@ -5589,10 +5589,10 @@ function addTiles(a, b) {
5589
5589
  }
5590
5590
  function computeTile(paper, grain, amount, rect, layers) {
5591
5591
  const n = rect.width * rect.height;
5592
- const [p0, p1, p2] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, paper.color);
5592
+ const [p0, p1, p2] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, paper.color);
5593
5593
  const pb = [p0, p1, p2];
5594
5594
  const pl = [Math.max(1e-4, LIN[p0]), Math.max(1e-4, LIN[p1]), Math.max(1e-4, LIN[p2])];
5595
- const [c0, c1, c2] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, _nullishCoalesce(paper.backlightColor, () => ( DEFAULT_BACKLIGHT_COLOR)));
5595
+ const [c0, c1, c2] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, _nullishCoalesce(paper.backlightColor, () => ( DEFAULT_BACKLIGHT_COLOR)));
5596
5596
  const t0 = new Float32Array(n).fill(amount * LIN[c0]);
5597
5597
  const t1 = new Float32Array(n).fill(amount * LIN[c1]);
5598
5598
  const t2 = new Float32Array(n).fill(amount * LIN[c2]);
@@ -6674,7 +6674,7 @@ function crossoverStrokes(a, b, seed, index = 0) {
6674
6674
  const dom = w >= 0.5 ? b : a;
6675
6675
  let paint = dom.paint;
6676
6676
  if (_optionalChain([paint, 'optionalAccess', _294 => _294.type]) === "effect" && _optionalChain([paint, 'access', _295 => _295.map, 'optionalAccess', _296 => _296.by]) === "path") {
6677
- paint = _chunkPEQWARCPcjs.withStrokePath.call(void 0, paint, points);
6677
+ paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, paint, points);
6678
6678
  }
6679
6679
  let load = dom.load;
6680
6680
  if (_optionalChain([load, 'optionalAccess', _297 => _297.reservoir])) {
@@ -6716,7 +6716,7 @@ function mutateStroke(stroke, rates, seed, index = 0, group) {
6716
6716
  out = {
6717
6717
  ...out,
6718
6718
  points: jittered,
6719
- ..._optionalChain([out, 'access', _300 => _300.paint, 'optionalAccess', _301 => _301.type]) === "effect" && _optionalChain([out, 'access', _302 => _302.paint, 'access', _303 => _303.map, 'optionalAccess', _304 => _304.by]) === "path" ? { paint: _chunkPEQWARCPcjs.withStrokePath.call(void 0, out.paint, jittered) } : {}
6719
+ ..._optionalChain([out, 'access', _300 => _300.paint, 'optionalAccess', _301 => _301.type]) === "effect" && _optionalChain([out, 'access', _302 => _302.paint, 'access', _303 => _303.map, 'optionalAccess', _304 => _304.by]) === "path" ? { paint: _chunkWZYRYYXNcjs.withStrokePath.call(void 0, out.paint, jittered) } : {}
6720
6720
  };
6721
6721
  }
6722
6722
  if (r.color > 0) {
@@ -6920,7 +6920,7 @@ function parseColor(value, what = "color") {
6920
6920
  return value.trim().toLowerCase();
6921
6921
  }
6922
6922
  function rgbaOf(hex2) {
6923
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, hex2);
6923
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, hex2);
6924
6924
  return [r, g, b, 255];
6925
6925
  }
6926
6926
  function rgbToHex(r, g, b) {
@@ -7092,7 +7092,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
7092
7092
  this.encodeImage = options.encodeImage;
7093
7093
  this.guides = defaultGuides(this.doc.canvas);
7094
7094
  this.wetOptions = options.wet;
7095
- this.wet = new (0, _chunkPEQWARCPcjs.PaintWetLayers)(
7095
+ this.wet = new (0, _chunkWZYRYYXNcjs.PaintWetLayers)(
7096
7096
  {
7097
7097
  canvas: () => this.doc.canvas,
7098
7098
  paper: () => this.doc.paper,
@@ -7554,7 +7554,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
7554
7554
  // --- Canvas and paper ----------------------------------------------------------
7555
7555
  resolvePaper(paper) {
7556
7556
  if (typeof paper === "string") {
7557
- const p = _chunkPEQWARCPcjs.paperPreset.call(void 0, paper);
7557
+ const p = _chunkWZYRYYXNcjs.paperPreset.call(void 0, paper);
7558
7558
  if (!p) throw new PaintEditorError(`Unknown paper "${paper}". Call list_papers for the ids.`);
7559
7559
  return p;
7560
7560
  }
@@ -7690,19 +7690,19 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
7690
7690
  this.requireIdle("changing the paper");
7691
7691
  let base = this.doc.paper;
7692
7692
  if (update.preset !== void 0 && update.preset !== this.doc.paper.preset) {
7693
- const p = _chunkPEQWARCPcjs.paperPreset.call(void 0, update.preset);
7693
+ const p = _chunkWZYRYYXNcjs.paperPreset.call(void 0, update.preset);
7694
7694
  if (!p) throw new PaintEditorError(`Unknown paper "${update.preset}". Call list_papers for the ids.`);
7695
7695
  base = p;
7696
7696
  }
7697
7697
  const { preset: _p, ...rest } = update;
7698
7698
  if (rest.color !== void 0) parseColor(rest.color, "paper color");
7699
- const paper = _chunkPEQWARCPcjs.normalizePaper.call(void 0, { ...rest, preset: base.preset, offset: _nullishCoalesce(rest.offset, () => ( this.doc.paper.offset)) }, base);
7699
+ const paper = _chunkWZYRYYXNcjs.normalizePaper.call(void 0, { ...rest, preset: base.preset, offset: _nullishCoalesce(rest.offset, () => ( this.doc.paper.offset)) }, base);
7700
7700
  const changedKeys = Object.keys(rest).filter((k) => k !== "name");
7701
7701
  if (changedKeys.length && update.preset === void 0) paper.preset = base.preset;
7702
7702
  if (this.wet.world) this.beginWetOp();
7703
7703
  this.commit("Paper", { ...this.doc, paper });
7704
7704
  this.wet.paperChanged();
7705
- return _chunkPEQWARCPcjs.clonePaper.call(void 0, paper);
7705
+ return _chunkWZYRYYXNcjs.clonePaper.call(void 0, paper);
7706
7706
  }
7707
7707
  // --- Layers --------------------------------------------------------------------
7708
7708
  getLayer(id) {
@@ -8221,8 +8221,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8221
8221
  if (!(Number.isFinite(pressure) && pressure >= 0 && pressure <= 1)) throw new PaintEditorError(`pressure ${pressure} is out of range; use 0..1.`);
8222
8222
  const wet = options.wet === true;
8223
8223
  if (wet && this.previewing) throw new PaintEditorError("Wet paint can't be previewed; suggest a dry fill instead.");
8224
- if (wet && !this.wet.wetLayerIds().includes(fillTarget.id) && this.wet.wetLayerIds().length >= _chunkMITQGHN3cjs.MAX_WET_LANES) {
8225
- throw new PaintEditorError(`At most ${_chunkMITQGHN3cjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
8224
+ if (wet && !this.wet.wetLayerIds().includes(fillTarget.id) && this.wet.wetLayerIds().length >= _chunk4BMRQSPBcjs.MAX_WET_LANES) {
8225
+ throw new PaintEditorError(`At most ${_chunk4BMRQSPBcjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
8226
8226
  }
8227
8227
  const refPixels = refSpec === "layer" ? this.compositePixels({ layerIds: [fillTarget.id], paper: false, wet: "display" }).data : refSpec === "all" || refSpec === "composite" ? this.compositePixels({ paper: false, wet: "display" }).data : this.compositePixels({ layerIds: [refSpec], paper: false, wet: "display" }).data;
8228
8228
  const filled = _chunkYH6SKC7Pcjs.fillRegionMask.call(void 0, refPixels, width, height, {
@@ -8270,10 +8270,10 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8270
8270
  }
8271
8271
  this.beginWetOp();
8272
8272
  const world = this.wet.ensureLane(l2.id);
8273
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, color);
8274
- const medium = new (0, _chunkMITQGHN3cjs.WetMedium)(world, l2.id, {
8273
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color);
8274
+ const medium = new (0, _chunk4BMRQSPBcjs.WetMedium)(world, l2.id, {
8275
8275
  water: 0.9 * Math.max(0.25, opacity),
8276
- mass: _chunkMITQGHN3cjs.PIGMENT_UNIT * 2.5 * opacity,
8276
+ mass: _chunk4BMRQSPBcjs.PIGMENT_UNIT * 2.5 * opacity,
8277
8277
  body: 0,
8278
8278
  light: 0
8279
8279
  });
@@ -8658,7 +8658,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8658
8658
  this.checkTime(source.time);
8659
8659
  let map;
8660
8660
  try {
8661
- map = _chunkPEQWARCPcjs.readEffectStrokeMap.call(void 0, source.map);
8661
+ map = _chunkWZYRYYXNcjs.readEffectStrokeMap.call(void 0, source.map);
8662
8662
  } catch (e) {
8663
8663
  throw new PaintEditorError(e.message);
8664
8664
  }
@@ -8692,9 +8692,9 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8692
8692
  }
8693
8693
  /** The rendered pixels of an effect paint at the current canvas size, or `null` when it has not been rendered. */
8694
8694
  effectPaintImage(p) {
8695
- const key = _chunkPEQWARCPcjs.effectPaintKey.call(void 0, p);
8695
+ const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p);
8696
8696
  const img = this.effectPaintPixels.get(key);
8697
- const size = _chunkPEQWARCPcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
8697
+ const size = _chunkWZYRYYXNcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
8698
8698
  if (!img || img.width !== size.width || img.height !== size.height) return null;
8699
8699
  this.effectPaintPixels.delete(key);
8700
8700
  this.effectPaintPixels.set(key, img);
@@ -8704,7 +8704,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8704
8704
  return this.cacheEffectPaintImage(p, toEffectPaintPixels(p, pixels));
8705
8705
  }
8706
8706
  cacheEffectPaintImage(p, img) {
8707
- this.effectPaintPixels.set(_chunkPEQWARCPcjs.effectPaintKey.call(void 0, p), img);
8707
+ this.effectPaintPixels.set(_chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p), img);
8708
8708
  this.trimEffectPaints();
8709
8709
  return img;
8710
8710
  }
@@ -8720,7 +8720,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8720
8720
  if (have) return have;
8721
8721
  const provider = this.effects.provider;
8722
8722
  if (!provider || p.provider && provider.id !== p.provider) return null;
8723
- const size = _chunkPEQWARCPcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
8723
+ const size = _chunkWZYRYYXNcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
8724
8724
  const pixels = this.effectsRenderer.renderSync(provider, p.effect, size, { time: p.time, values: p.values });
8725
8725
  return pixels ? this.cacheEffectPaintPixels(p, pixels) : null;
8726
8726
  }
@@ -8736,7 +8736,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8736
8736
  const what = `the effect "${p.effect}"${p.provider ? ` from provider "${p.provider}"` : ""}`;
8737
8737
  if (!provider) throw new PaintEditorError(`Effect paint needs ${what}, but no effects provider is registered; register it (setEffectsProvider) and try again.`);
8738
8738
  if (p.provider && provider.id !== p.provider) throw new PaintEditorError(`Effect paint needs ${what}, but the registered provider is "${provider.id}"; register "${p.provider}" (setEffectsProvider) and try again.`);
8739
- const { width, height } = _chunkPEQWARCPcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
8739
+ const { width, height } = _chunkWZYRYYXNcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
8740
8740
  let pixels;
8741
8741
  try {
8742
8742
  pixels = await this.effectsRenderer.render(provider, p.effect, { width, height }, { time: p.time, values: p.values });
@@ -8751,10 +8751,10 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8751
8751
  */
8752
8752
  async prepareEffectPaints(paints2) {
8753
8753
  const list = [...paints2];
8754
- this.effectPaintBatch = new Set(list.map(_chunkPEQWARCPcjs.effectPaintKey)).size;
8754
+ this.effectPaintBatch = new Set(list.map(_chunkWZYRYYXNcjs.effectPaintKey)).size;
8755
8755
  const seen = /* @__PURE__ */ new Set();
8756
8756
  for (const p of list) {
8757
- const key = _chunkPEQWARCPcjs.effectPaintKey.call(void 0, p);
8757
+ const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p);
8758
8758
  if (seen.has(key)) continue;
8759
8759
  seen.add(key);
8760
8760
  await this.renderEffectPaint(p);
@@ -8770,15 +8770,15 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8770
8770
  if (!_chunkHRUK5TFWcjs.brushTakesPaint.call(void 0, brush)) return;
8771
8771
  let source = null;
8772
8772
  if (init.paint !== void 0) {
8773
- if (!_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, init.paint)) return;
8774
- source = _chunkPEQWARCPcjs.readPaintEffectPaint.call(void 0, init.paint);
8773
+ if (!_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) return;
8774
+ source = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, init.paint);
8775
8775
  } else if (init.color === void 0 && !brush.paint && !this.effectPaintPending) {
8776
8776
  source = this.effectPaint;
8777
8777
  }
8778
8778
  if (!source || _optionalChain([source, 'access', _513 => _513.map, 'optionalAccess', _514 => _514.by]) !== "path") return;
8779
8779
  if (!this.effectPathControls.has(source.effect)) await this.describeEffect(source.effect);
8780
8780
  const control = this.effectPathControls.get(source.effect);
8781
- const paints2 = pointsList.filter((pts) => pts.length > 0).map((pts) => _chunkPEQWARCPcjs.withStrokePath.call(void 0, source, pts, control));
8781
+ const paints2 = pointsList.filter((pts) => pts.length > 0).map((pts) => _chunkWZYRYYXNcjs.withStrokePath.call(void 0, source, pts, control));
8782
8782
  if (paints2.length) await this.prepareEffectPaints(paints2);
8783
8783
  }
8784
8784
  /**
@@ -8802,12 +8802,12 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8802
8802
  if (!was) return null;
8803
8803
  try {
8804
8804
  if (edit.paint !== void 0) {
8805
- if (!_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, edit.paint)) return null;
8806
- const p = _chunkPEQWARCPcjs.readPaintEffectPaint.call(void 0, edit.paint);
8807
- return p && _chunkPEQWARCPcjs.withStrokePath.call(void 0, p, was.points, this.effectPathControls.get(p.effect));
8805
+ if (!_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, edit.paint)) return null;
8806
+ const p = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, edit.paint);
8807
+ return p && _chunkWZYRYYXNcjs.withStrokePath.call(void 0, p, was.points, this.effectPathControls.get(p.effect));
8808
8808
  }
8809
8809
  if (_optionalChain([was, 'access', _517 => _517.paint, 'optionalAccess', _518 => _518.type]) !== "effect" || _optionalChain([was, 'access', _519 => _519.paint, 'access', _520 => _520.map, 'optionalAccess', _521 => _521.by]) !== "path") return null;
8810
- if (edit.points !== void 0) return _chunkPEQWARCPcjs.withStrokePath.call(void 0, was.paint, this.checkPoints(edit.points), this.effectPathControls.get(was.paint.effect));
8810
+ if (edit.points !== void 0) return _chunkWZYRYYXNcjs.withStrokePath.call(void 0, was.paint, this.checkPoints(edit.points), this.effectPathControls.get(was.paint.effect));
8811
8811
  if (!edit.transform) return null;
8812
8812
  const varied = varyStroke(was, this.strokeTransform(was, edit.transform), {}).paint;
8813
8813
  return _optionalChain([varied, 'optionalAccess', _522 => _522.type]) === "effect" ? varied : null;
@@ -8875,8 +8875,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8875
8875
  if (!_chunkHRUK5TFWcjs.brushTakesPaint.call(void 0, brush)) return null;
8876
8876
  let source = null;
8877
8877
  if (init.paint !== void 0) {
8878
- if (!_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
8879
- source = _chunkPEQWARCPcjs.readPaintEffectPaint.call(void 0, init.paint);
8878
+ if (!_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
8879
+ source = _chunkWZYRYYXNcjs.readPaintEffectPaint.call(void 0, init.paint);
8880
8880
  if (!source) throw new PaintEditorError("The stroke's effect paint needs an effect id and values (getEffectPaint returns one).");
8881
8881
  } else if (init.color === void 0 && !brush.paint) {
8882
8882
  if (this.effectPaintPending) throw new PaintEditorError(`The effect paint "${this.effectPaintPending.effect}" is still rendering; wait for set_effect_paint to finish, then paint.`);
@@ -8884,7 +8884,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
8884
8884
  }
8885
8885
  if (!source) return null;
8886
8886
  const path = _optionalChain([source, 'access', _527 => _527.map, 'optionalAccess', _528 => _528.by]) === "path";
8887
- if (path && _optionalChain([points, 'optionalAccess', _529 => _529.length])) source = _chunkPEQWARCPcjs.withStrokePath.call(void 0, source, points, this.effectPathControls.get(source.effect));
8887
+ if (path && _optionalChain([points, 'optionalAccess', _529 => _529.length])) source = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, source, points, this.effectPathControls.get(source.effect));
8888
8888
  const pixels = _nullishCoalesce(this.effectPaintImage(source), () => ( (path ? this.renderEffectPaintSync(source) : null)));
8889
8889
  if (!pixels) throw new PaintEditorError(`The effect paint "${source.effect}"${source.provider ? ` from provider "${source.provider}"` : ""} is not rendered at this canvas size; call ${path ? "prepareStrokePathEffect (the paint_stroke tool does this) or prepareStrokeEdit" : "set_effect_paint (or prepareEffectPaints)"} first.`);
8890
8890
  return { source, pixels };
@@ -9052,7 +9052,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9052
9052
  this.brushSpec = { ...copyJSON(spec), id: next.id, name: next.name };
9053
9053
  this.pendingBrushId = null;
9054
9054
  this.emit([]);
9055
- const refs = _chunkPEQWARCPcjs.brushStickerRefs.call(void 0, next);
9055
+ const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, next);
9056
9056
  if (refs.length) void this.prepareStickers(refs).catch(() => this.emit([]));
9057
9057
  }
9058
9058
  /**
@@ -9114,7 +9114,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9114
9114
  const hex2 = this.brushColour ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, this.brushColour, next) : null;
9115
9115
  if (hex2) this.color = hex2;
9116
9116
  this.liveLayers = null;
9117
- const refs = _chunkPEQWARCPcjs.brushStickerRefs.call(void 0, this.brush);
9117
+ const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, this.brush);
9118
9118
  if (refs.some((r) => !_chunkRDFHWAHLcjs.editorStampOf.call(void 0, r))) void this.prepareStickers(refs).catch(() => this.emit([]));
9119
9119
  this.emit();
9120
9120
  }
@@ -9137,7 +9137,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9137
9137
  if (_optionalChain([had, 'optionalAccess', _553 => _553.scheme]) === scheme) return had.stroke;
9138
9138
  const out = { ...st, color: want };
9139
9139
  if (st.load) {
9140
- const load = brushLoadForStroke(st.brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, _chunkPEQWARCPcjs.hexToRgb8.call(void 0, want).map((v) => v / 255));
9140
+ const load = brushLoadForStroke(st.brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, want).map((v) => v / 255));
9141
9141
  if (load.reservoir || load.pickup) out.load = load;
9142
9142
  else delete out.load;
9143
9143
  }
@@ -9262,7 +9262,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9262
9262
  if (!_chunkHRUK5TFWcjs.brushTakesPaint.call(void 0, brush)) return null;
9263
9263
  let g = null;
9264
9264
  if (init.paint !== void 0) {
9265
- if (_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
9265
+ if (_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
9266
9266
  const p = this.readStrokePaint(init.paint);
9267
9267
  g = p.type === "gradient" ? p : null;
9268
9268
  } else g = _nullishCoalesce(brush.paint, () => ( (init.color === void 0 ? this.gradient : null)));
@@ -9306,7 +9306,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9306
9306
  // --- Mixer Brush ---------------------------------------------------------------
9307
9307
  /** Fills the Mixer Brush reservoir with a colour (default the editor colour). */
9308
9308
  loadMixerBrush(color) {
9309
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, color === void 0 ? this.color : parseColor(color));
9309
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, color === void 0 ? this.color : parseColor(color));
9310
9310
  this.mixerLoad = _chunkIFWLZZCWcjs.loadMixer.call(void 0, this.mixerLoad, [r / 255, g / 255, b / 255]);
9311
9311
  this.emit([]);
9312
9312
  return this.mixerLoad;
@@ -9359,7 +9359,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9359
9359
  }
9360
9360
  const scheme = _nullishCoalesce(this.paintScheme, () => ( this.colorScheme));
9361
9361
  let init = dualColor ? { ...given, color: dualColor[scheme] } : given;
9362
- if (init.paint !== void 0 && !_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, init.paint)) {
9362
+ if (init.paint !== void 0 && !_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint)) {
9363
9363
  const p = this.readStrokePaint(init.paint);
9364
9364
  if (p.type === "color") {
9365
9365
  init = { ...init, color: p.color, paint: void 0 };
@@ -9383,7 +9383,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9383
9383
  if (this.previewing && _chunkHRUK5TFWcjs.isWetBrush.call(void 0, brush)) throw new PaintEditorError(`Wet paint can't be previewed; the ${brush.name} brush paints wet media. Suggest it with a dry brush.`);
9384
9384
  if (brush.ghost) {
9385
9385
  if (brush.light.amount > 0) throw new PaintEditorError(`Ghost paint (${brush.name}) shares the wet light channel and can't emit light; set light.amount to 0 or ghost to null (set_brush).`);
9386
- if (_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, init.paint) || init.paint === void 0 && init.color === void 0 && Boolean(this.effectPaint)) {
9386
+ if (_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, init.paint) || init.paint === void 0 && init.color === void 0 && Boolean(this.effectPaint)) {
9387
9387
  throw new PaintEditorError(`Ghost paint (${brush.name}) needs a single colour to subtract as it fades, so it can't paint with an effect; set a solid colour (set_color) or pass color to paint_stroke.`);
9388
9388
  }
9389
9389
  if (brush.behavior.multicolor.mode !== "off") throw new PaintEditorError(`Ghost paint (${brush.name}) needs a single colour to subtract as it fades, so it can't use multi-colour paint; set behavior.multicolor.mode to "off" (set_brush).`);
@@ -9418,9 +9418,9 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9418
9418
  if (why) throw new PaintEditorError(`Layer "${layer.name}" is a stroke layer. ${why}`);
9419
9419
  }
9420
9420
  if (_optionalChain([doc, 'access', _589 => _589.liveStrokes, 'optionalAccess', _590 => _590[layer.id]]) && _optionalChain([effect, 'optionalAccess', _591 => _591.source, 'access', _592 => _592.live])) {
9421
- const key = _chunkPEQWARCPcjs.effectPaintKey.call(void 0, effect.source);
9421
+ const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, effect.source);
9422
9422
  const { sources } = this.liveEffects(doc);
9423
- if (!sources.some((p) => _chunkPEQWARCPcjs.effectPaintKey.call(void 0, p) === key) && sources.length >= MAX_LIVE_EFFECT_SOURCES) {
9423
+ if (!sources.some((p) => _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, p) === key) && sources.length >= MAX_LIVE_EFFECT_SOURCES) {
9424
9424
  throw new PaintEditorError(`The painting already plays ${MAX_LIVE_EFFECT_SOURCES} live effects, the most it can; paint with one of them, or set_effect_paint with live false to bake this one.`);
9425
9425
  }
9426
9426
  }
@@ -9446,14 +9446,14 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9446
9446
  if (doc !== this.doc) doc = { ...doc, layers: _chunkPVJMTLPJcjs.mapLayer.call(void 0, doc.layers, layer.id, () => moved), ..._optionalChain([doc, 'access', _600 => _600.thick, 'optionalAccess', _601 => _601[layer.id]]) ? { thick: moveThick(doc.thick) } : {} };
9447
9447
  layer = moved;
9448
9448
  }
9449
- if (!this.wet.wetLayerIds().includes(layer.id) && this.wet.wetLayerIds().length >= _chunkMITQGHN3cjs.MAX_WET_LANES) {
9450
- throw new PaintEditorError(`At most ${_chunkMITQGHN3cjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
9449
+ if (!this.wet.wetLayerIds().includes(layer.id) && this.wet.wetLayerIds().length >= _chunk4BMRQSPBcjs.MAX_WET_LANES) {
9450
+ throw new PaintEditorError(`At most ${_chunk4BMRQSPBcjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
9451
9451
  }
9452
9452
  this.beginWetOp();
9453
9453
  const world = this.wet.ensureLane(layer.id, brush.wet.medium);
9454
9454
  const id = layer.id;
9455
9455
  const wetColor = init.color === void 0 ? _nullishCoalesce(this.ownColour(init.brushId), () => ( this.color)) : parseColor(init.color);
9456
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, wetColor);
9456
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, wetColor);
9457
9457
  const wetGradient = this.strokeGradient(init, brush, wetColor);
9458
9458
  const load = _nullishCoalesce(init.load, () => ( brushLoadForStroke(brush, this.mixerLoad, [r / 255, g / 255, b / 255])));
9459
9459
  const seedW = _nullishCoalesce(init.seed, () => ( _chunk3K6HWEXZcjs.mix32.call(void 0, this.seedCounter * 2654435761 >>> 0) & 2147483647));
@@ -9461,7 +9461,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9461
9461
  const wetMask = init.maskStencils ? this.stencilSelection(init.maskStencils) : init.stencils !== false ? this.stencilSelection() : null;
9462
9462
  const needWetFilm = Boolean(brush.wet.tool === "paint" && brush.iridescence || brush.wet.tool === "blot" && _optionalChain([doc, 'access', _602 => _602.thick, 'optionalAccess', _603 => _603[id], 'optionalAccess', _604 => _604.film, 'access', _605 => _605.tiles, 'access', _606 => _606.size]));
9463
9463
  const wetFilm = needWetFilm ? new FilmBuffer((_nullishCoalesce(_optionalChain([doc, 'access', _607 => _607.thick, 'optionalAccess', _608 => _608[id]]), () => ( emptyThickChannels()))).film, layer.offset, wetMask) : null;
9464
- const driver = new (0, _chunkPEQWARCPcjs.WetStrokeDriver)({
9464
+ const driver = new (0, _chunkWZYRYYXNcjs.WetStrokeDriver)({
9465
9465
  world,
9466
9466
  laneId: id,
9467
9467
  brush,
@@ -9469,7 +9469,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9469
9469
  load,
9470
9470
  grain: paperGrain(doc.paper),
9471
9471
  paperDepth: doc.paper.depth,
9472
- paperColor: _chunkPEQWARCPcjs.hexToRgb8.call(void 0, doc.paper.color),
9472
+ paperColor: _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, doc.paper.color),
9473
9473
  seed: seedW,
9474
9474
  copies: [IDENTITY_AFFINE, ...copiesW].map(affineCopy),
9475
9475
  mask: wetMask,
@@ -9743,7 +9743,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9743
9743
  if (!pv || pv.session !== s || pv.pending || !s.open) return;
9744
9744
  const paint = this.pathStrokePaint(s);
9745
9745
  if (!paint) return;
9746
- const key = _chunkPEQWARCPcjs.effectPaintKey.call(void 0, paint);
9746
+ const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, paint);
9747
9747
  if (key === pv.key) return;
9748
9748
  pv.key = key;
9749
9749
  const cached = this.effectPaintImage(paint);
@@ -9778,8 +9778,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9778
9778
  pathStrokePaint(s) {
9779
9779
  const source = _optionalChain([s, 'access', _698 => _698.init, 'access', _699 => _699.effect, 'optionalAccess', _700 => _700.source]);
9780
9780
  if (_optionalChain([source, 'optionalAccess', _701 => _701.map, 'optionalAccess', _702 => _702.by]) !== "path" || !s.points.length) return null;
9781
- const paint = _chunkPEQWARCPcjs.withStrokePath.call(void 0, source, s.points, this.effectPathControls.get(source.effect));
9782
- return _chunkPEQWARCPcjs.effectPaintKey.call(void 0, paint) === _chunkPEQWARCPcjs.effectPaintKey.call(void 0, source) ? null : paint;
9781
+ const paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, source, s.points, this.effectPathControls.get(source.effect));
9782
+ return _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, paint) === _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, source) ? null : paint;
9783
9783
  }
9784
9784
  /**
9785
9785
  * Ends a hand-painted stroke with a path-mapped effect. Its whole path isn't known until now, so
@@ -9802,7 +9802,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
9802
9802
  Object.assign(s.result, result);
9803
9803
  this.notifySample("end", s, [], result.strokeId);
9804
9804
  };
9805
- const key = _chunkPEQWARCPcjs.effectPaintKey.call(void 0, paint);
9805
+ const key = _chunkWZYRYYXNcjs.effectPaintKey.call(void 0, paint);
9806
9806
  if (_optionalChain([preview, 'optionalAccess', _703 => _703.landed, 'optionalAccess', _704 => _704.key]) === key) this.cacheEffectPaintImage(paint, preview.landed.pixels);
9807
9807
  if (this.effectPaintImage(paint) || this.renderEffectPaintSync(paint)) {
9808
9808
  finish();
@@ -10035,7 +10035,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
10035
10035
  if (!_chunkPVJMTLPJcjs.findLayer.call(void 0, doc.layers, layerId)) throw new PaintEditorError(`Stroke "${s.id}" was painted on layer "${layerId}", which no longer exists; pass layerId to replay it elsewhere.`);
10036
10036
  let load = s.load;
10037
10037
  if (load && options.color !== void 0 && load.reservoir) {
10038
- const [r, g, b] = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, options.color);
10038
+ const [r, g, b] = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, options.color);
10039
10039
  load = { ...load, reservoir: [r / 255, g / 255, b / 255] };
10040
10040
  }
10041
10041
  const paint = v.paint && options.color === void 0 ? { paint: v.paint } : {};
@@ -10549,7 +10549,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
10549
10549
  wetState() {
10550
10550
  const st = this.getState().wet;
10551
10551
  const backend = this.wet.backend();
10552
- return { ...st, layers: this.wet.wetLayerIds().map((id) => this.wet.info(id)), backend, message: _nullishCoalesce(_optionalChain([backend, 'optionalAccess', _761 => _761.message]), () => ( _chunkMITQGHN3cjs.wetSupport.call(void 0, ).message)), engine: this.wet.engineInfo() };
10552
+ return { ...st, layers: this.wet.wetLayerIds().map((id) => this.wet.info(id)), backend, message: _nullishCoalesce(_optionalChain([backend, 'optionalAccess', _761 => _761.message]), () => ( _chunk4BMRQSPBcjs.wetSupport.call(void 0, ).message)), engine: this.wet.engineInfo() };
10553
10553
  }
10554
10554
  /**
10555
10555
  * Engine B, the WebGPU accelerator for large wet areas: whether it may run, its state (`off`,
@@ -10567,7 +10567,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
10567
10567
  */
10568
10568
  async setWetEngine(options) {
10569
10569
  const gpu = _nullishCoalesce(options.gpu, () => ( this.wet.gpuMode));
10570
- if (!_chunkPEQWARCPcjs.WET_GPU_MODES.includes(gpu)) throw new PaintEditorError(`gpu must be ${_chunkPEQWARCPcjs.WET_GPU_MODES.join(" or ")}, not ${JSON.stringify(gpu)}.`);
10570
+ if (!_chunkWZYRYYXNcjs.WET_GPU_MODES.includes(gpu)) throw new PaintEditorError(`gpu must be ${_chunkWZYRYYXNcjs.WET_GPU_MODES.join(" or ")}, not ${JSON.stringify(gpu)}.`);
10571
10571
  if (options.minTiles !== void 0 && !(Number.isInteger(options.minTiles) && options.minTiles >= 1 && options.minTiles <= 1024)) throw new PaintEditorError(`minTiles ${options.minTiles} is out of range; use 1..1024 tiles of 256 px.`);
10572
10572
  this.wet.setGpu(gpu, options.minTiles);
10573
10573
  this.emit();
@@ -10628,7 +10628,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
10628
10628
  const amount = _nullishCoalesce(options.amount, () => ( 1));
10629
10629
  if (!(amount > 0 && amount <= 1)) throw new PaintEditorError(`amount ${amount} is out of range; use above 0 up to 1.`);
10630
10630
  const rect = _nullishCoalesce(this.checkRect(options.rect), () => ( { x: 0, y: 0, width: this.doc.canvas.width, height: this.doc.canvas.height }));
10631
- if (!this.wet.wetLayerIds().includes(l.id) && this.wet.wetLayerIds().length >= _chunkMITQGHN3cjs.MAX_WET_LANES) throw new PaintEditorError(`At most ${_chunkMITQGHN3cjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
10631
+ if (!this.wet.wetLayerIds().includes(l.id) && this.wet.wetLayerIds().length >= _chunk4BMRQSPBcjs.MAX_WET_LANES) throw new PaintEditorError(`At most ${_chunk4BMRQSPBcjs.MAX_WET_LANES} layers can hold wet paint at once; dry one first (dry_paint).`);
10632
10632
  const before = this.doc;
10633
10633
  this.beginWetOp();
10634
10634
  const world = this.wet.ensureLane(l.id);
@@ -10648,7 +10648,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
10648
10648
  this.requireWetIdle("changing wet settings");
10649
10649
  if (this.heldEvaporation.has(l.id)) {
10650
10650
  const current = this.wet.info(l.id).params;
10651
- const intended = _chunkMITQGHN3cjs.normalizeWetParams.call(void 0, { ...current, evaporation: this.heldEvaporation.get(l.id), ...update });
10651
+ const intended = _chunk4BMRQSPBcjs.normalizeWetParams.call(void 0, { ...current, evaporation: this.heldEvaporation.get(l.id), ...update });
10652
10652
  this.heldEvaporation.set(l.id, intended.evaporation);
10653
10653
  this.wet.setParams(l.id, { ...update, evaporation: 0 });
10654
10654
  this.recordWetSetting({ kind: "params", layerId: l.id, data: intended });
@@ -11134,7 +11134,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
11134
11134
  this.wet.reset();
11135
11135
  if (!raw || typeof raw !== "object") return;
11136
11136
  const r = raw;
11137
- this.wet.setTilt(_chunkMITQGHN3cjs.normalizeTilt.call(void 0, _nullishCoalesce(r.tilt, () => ( {}))));
11137
+ this.wet.setTilt(_chunk4BMRQSPBcjs.normalizeTilt.call(void 0, _nullishCoalesce(r.tilt, () => ( {}))));
11138
11138
  if (r.layers && typeof r.layers === "object") {
11139
11139
  for (const [id, v] of Object.entries(r.layers)) {
11140
11140
  if (!v || typeof v !== "object") {
@@ -11145,8 +11145,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
11145
11145
  const ghost = readWetGhost(x.ghost);
11146
11146
  const livePatterns = x.livePatterns ? _chunkIFWLZZCWcjs.normalizeLivePatterns.call(void 0, x.livePatterns) : null;
11147
11147
  this.wet.settings.set(id, {
11148
- params: _chunkMITQGHN3cjs.normalizeWetParams.call(void 0, _nullishCoalesce(x.params, () => ( {}))),
11149
- flow: _chunkMITQGHN3cjs.normalizeFlow.call(void 0, _nullishCoalesce(x.flow, () => ( {}))),
11148
+ params: _chunk4BMRQSPBcjs.normalizeWetParams.call(void 0, _nullishCoalesce(x.params, () => ( {}))),
11149
+ flow: _chunk4BMRQSPBcjs.normalizeFlow.call(void 0, _nullishCoalesce(x.flow, () => ( {}))),
11150
11150
  ...ghost ? { ghost } : {},
11151
11151
  ...livePatterns ? { livePatterns } : {}
11152
11152
  });
@@ -11501,7 +11501,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
11501
11501
  return next.type === "group" ? { ...next, children: toStandard(next.children) } : next;
11502
11502
  });
11503
11503
  const layers = toStandard(dried);
11504
- const result = _chunkQBZEC2JJcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
11504
+ const result = _chunkWCC4NXWYcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
11505
11505
  for (const [mode, names] of changed) {
11506
11506
  const label = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _821 => _821.find, 'call', _822 => _822((m) => m.id === mode), 'optionalAccess', _823 => _823.label]), () => ( mode));
11507
11507
  const std = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _824 => _824.find, 'call', _825 => _825((m) => m.id === _chunk2VX55NFMcjs.standardBlendMode.call(void 0, mode)), 'optionalAccess', _826 => _826.label]), () => ( _chunk2VX55NFMcjs.standardBlendMode.call(void 0, mode)));
@@ -12039,8 +12039,8 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
12039
12039
  }
12040
12040
  if (update.paint !== void 0) {
12041
12041
  if (update.paint === null) delete next.paint;
12042
- else if (_chunkPEQWARCPcjs.isPaintEffectPaint.call(void 0, update.paint)) {
12043
- const ep = _optionalChain([update, 'access', _867 => _867.paint, 'access', _868 => _868.map, 'optionalAccess', _869 => _869.by]) === "path" ? _chunkPEQWARCPcjs.withStrokePath.call(void 0, update.paint, next.points, this.effectPathControls.get(update.paint.effect)) : update.paint;
12042
+ else if (_chunkWZYRYYXNcjs.isPaintEffectPaint.call(void 0, update.paint)) {
12043
+ const ep = _optionalChain([update, 'access', _867 => _867.paint, 'access', _868 => _868.map, 'optionalAccess', _869 => _869.by]) === "path" ? _chunkWZYRYYXNcjs.withStrokePath.call(void 0, update.paint, next.points, this.effectPathControls.get(update.paint.effect)) : update.paint;
12044
12044
  if (!this.effectPaintImage(ep) && !this.renderEffectPaintSync(ep)) throw new PaintEditorError(`The effect "${update.paint.effect}" is not rendered yet; render it first (prepareEffectPaints; the update_stroke tool does this).`);
12045
12045
  next.paint = JSON.parse(JSON.stringify(ep));
12046
12046
  } else {
@@ -12052,7 +12052,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
12052
12052
  } else next.paint = JSON.parse(JSON.stringify(p));
12053
12053
  }
12054
12054
  }
12055
- const rgb = _chunkPEQWARCPcjs.hexToRgb8.call(void 0, next.color).map((v) => v / 255);
12055
+ const rgb = _chunkWZYRYYXNcjs.hexToRgb8.call(void 0, next.color).map((v) => v / 255);
12056
12056
  const load = brushLoadForStroke(brush, _chunkIFWLZZCWcjs.EMPTY_MIXER_LOAD, rgb);
12057
12057
  if (load.reservoir || load.pickup) next.load = load;
12058
12058
  else delete next.load;
@@ -12075,7 +12075,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
12075
12075
  const points = this.checkPoints(edit.points);
12076
12076
  next = { ...was, points: points.map((p) => ({ ...p })) };
12077
12077
  if (_optionalChain([next, 'access', _870 => _870.paint, 'optionalAccess', _871 => _871.type]) === "effect" && _optionalChain([next, 'access', _872 => _872.paint, 'access', _873 => _873.map, 'optionalAccess', _874 => _874.by]) === "path") {
12078
- next.paint = _chunkPEQWARCPcjs.withStrokePath.call(void 0, next.paint, next.points, this.effectPathControls.get(next.paint.effect));
12078
+ next.paint = _chunkWZYRYYXNcjs.withStrokePath.call(void 0, next.paint, next.points, this.effectPathControls.get(next.paint.effect));
12079
12079
  }
12080
12080
  } else {
12081
12081
  next = varyStroke(was, this.strokeTransform(was, edit.transform), {});
@@ -12283,7 +12283,7 @@ var PaintEditorController = (_class17 = class _PaintEditorController {
12283
12283
  const live = strokes.filter(isLiveEffect);
12284
12284
  if (!isPixelLayer(layer) || !live.length) continue;
12285
12285
  layers.push({ layer, strokes });
12286
- for (const st of live) sources.set(_chunkPEQWARCPcjs.effectPaintKey.call(void 0, st.paint), st.paint);
12286
+ for (const st of live) sources.set(_chunkWZYRYYXNcjs.effectPaintKey.call(void 0, st.paint), st.paint);
12287
12287
  }
12288
12288
  return { layers, sources: [...sources.values()] };
12289
12289
  }
@@ -14563,7 +14563,7 @@ function createPaintWetTools(c) {
14563
14563
  type: "object",
14564
14564
  properties: {
14565
14565
  layerId: LAYER_ID2,
14566
- kind: { type: "string", enum: [..._chunkMITQGHN3cjs.WET_FLOW_KINDS], description: "none, linear, swirl, radial or turbulent." },
14566
+ kind: { type: "string", enum: [..._chunk4BMRQSPBcjs.WET_FLOW_KINDS], description: "none, linear, swirl, radial or turbulent." },
14567
14567
  strength: UNIT("How hard it pushes, 0..1 (1 is about a 25\xB0 tilt; default 0.5)."),
14568
14568
  angle: { type: "number", minimum: -360, maximum: 360, description: "linear: direction in degrees clockwise from canvas down (default 0)." },
14569
14569
  center: {
@@ -15258,7 +15258,7 @@ function createMutationTools(c, options = {}) {
15258
15258
  const base = s.brushId ? c.getBrush(s.brushId) : c.getState().brush;
15259
15259
  const brush = s.brush ? c.brushChanges(s.brush, s.brushId) : void 0;
15260
15260
  if (base) {
15261
- const refs = _chunkPEQWARCPcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
15261
+ const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
15262
15262
  if (refs.length) await c.prepareStickers(refs);
15263
15263
  }
15264
15264
  strokes.push({
@@ -15580,8 +15580,8 @@ function createPaintEditorToolProvider(controller, options = {}) {
15580
15580
  inputSchema: EMPTY4,
15581
15581
  annotations: { title: "List papers", ...READ9 },
15582
15582
  handler: () => ({
15583
- papers: _chunkPEQWARCPcjs.PAPER_LIBRARY.map((p) => ({ id: p.preset, name: p.name, family: p.family, pattern: p.pattern, color: p.color, depth: p.depth, absorption: p.absorption, permeability: p.permeability, roughness: p.roughness })),
15584
- families: [..._chunkPEQWARCPcjs.PAPER_FAMILIES],
15583
+ papers: _chunkWZYRYYXNcjs.PAPER_LIBRARY.map((p) => ({ id: p.preset, name: p.name, family: p.family, pattern: p.pattern, color: p.color, depth: p.depth, absorption: p.absorption, permeability: p.permeability, roughness: p.roughness })),
15584
+ families: [..._chunkWZYRYYXNcjs.PAPER_FAMILIES],
15585
15585
  patterns: [..._chunkIFWLZZCWcjs.GRAIN_PATTERNS]
15586
15586
  })
15587
15587
  });
@@ -16005,7 +16005,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
16005
16005
  const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
16006
16006
  const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
16007
16007
  if (base) {
16008
- const refs = _chunkPEQWARCPcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
16008
+ const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
16009
16009
  if (refs.length) await c.prepareStickers(refs);
16010
16010
  }
16011
16011
  const stroke = { points: a.points, layerId: a.layerId, brushId: a.brushId, brush, color: a.color, paint: a.paint, seed: a.seed, snapToPerspective: a.snapToPerspective };
@@ -16042,7 +16042,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
16042
16042
  const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
16043
16043
  const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
16044
16044
  if (base) {
16045
- const refs = _chunkPEQWARCPcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
16045
+ const refs = _chunkWZYRYYXNcjs.brushStickerRefs.call(void 0, _chunkHRUK5TFWcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
16046
16046
  if (refs.length) await c.prepareStickers(refs);
16047
16047
  }
16048
16048
  const path = options.origin && typeof a.path === "string" && a.path.trim() ? _chunkGF2RBSDMcjs.bezierPathToSvg.call(void 0, a.path, { offset: { x: -options.origin.x, y: -options.origin.y } }) : a.path;
@@ -16411,7 +16411,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
16411
16411
  tools.push(..._chunkUQXULAMQcjs.createPigmentTools.call(void 0, ));
16412
16412
  tools.push(..._chunkPFHJS4HEcjs.createStickerTools.call(void 0, { provider: () => c.stickersProvider }));
16413
16413
  tools.push(
16414
- ..._chunkQBZEC2JJcjs.createLayerEffectTools.call(void 0,
16414
+ ..._chunkWCC4NXWYcjs.createLayerEffectTools.call(void 0,
16415
16415
  {
16416
16416
  requireLayer: (id) => void c.getLayerEffects(id),
16417
16417
  getLayerEffects: (id) => c.getLayerEffects(id),
@@ -16469,7 +16469,7 @@ function strokeSummary(s, withPoints, live) {
16469
16469
  }
16470
16470
 
16471
16471
  // src/paint-editor/brush-library-tools.ts
16472
- function paintBrushPreviewRenderer(paper = () => _chunkPEQWARCPcjs.DEFAULT_PAPER, options = {}) {
16472
+ function paintBrushPreviewRenderer(paper = () => _chunkWZYRYYXNcjs.DEFAULT_PAPER, options = {}) {
16473
16473
  const sources = new BrushSourceArtCache();
16474
16474
  const draw = (brush, { width, height, color }) => {
16475
16475
  const stickers = _optionalChain([options, 'access', _983 => _983.stampArt, 'optionalCall', _984 => _984()]);
@@ -17675,7 +17675,7 @@ function toolList(provider) {
17675
17675
  function uiTables() {
17676
17676
  return {
17677
17677
  tools: PAINT_TOOLS,
17678
- brushOptions: _chunkQBZEC2JJcjs.BRUSH_OPTION_CONTROLS,
17678
+ brushOptions: _chunkWCC4NXWYcjs.BRUSH_OPTION_CONTROLS,
17679
17679
  blendMenu: BLEND_MENU_GROUPS,
17680
17680
  layerEffects: _chunkPVJMTLPJcjs.LAYER_EFFECT_MENU.map(({ kind, label }) => ({ kind, label, controls: _chunkPVJMTLPJcjs.layerEffectControls.call(void 0, _chunkPVJMTLPJcjs.defaultLayerEffect.call(void 0, kind, kind)) })),
17681
17681
  sliders: { paper: PAPER_SLIDERS, wet: WET_PARAM_SLIDERS, wetTilt: WET_TILT_SLIDERS, wetSpeed: WET_SPEED_SLIDER, light: LIGHT_SLIDERS, uvLight: UV_LIGHT_SLIDERS, viewTilt: VIEW_TILT_SLIDERS, ghost: _chunkJVFGK3DKcjs.GHOST_SLIDERS, mutation: _chunkJVFGK3DKcjs.MUTATION_SLIDERS, livePatterns: LIVE_PATTERN_SLIDERS, stroke: STROKE_SLIDERS, sticker: STICKER_SLIDERS, magnet: MAGNET_SLIDERS },
@@ -18235,4 +18235,4 @@ function createPaintConformanceHost(setup, options) {
18235
18235
 
18236
18236
 
18237
18237
 
18238
- exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunkHRUK5TFWcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkHRUK5TFWcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunkJVFGK3DKcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkHRUK5TFWcjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.BrushSourceArtCache = BrushSourceArtCache; exports.DAB_FLIPS = _chunkHRUK5TFWcjs.DAB_FLIPS; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkHRUK5TFWcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkHRUK5TFWcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkHRUK5TFWcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkHRUK5TFWcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FERRO = _chunkHRUK5TFWcjs.DEFAULT_FERRO; exports.DEFAULT_FLOW = _chunkMITQGHN3cjs.DEFAULT_FLOW; exports.DEFAULT_FLUORESCENCE = _chunkHRUK5TFWcjs.DEFAULT_FLUORESCENCE; exports.DEFAULT_GHOST = _chunkHRUK5TFWcjs.DEFAULT_GHOST; exports.DEFAULT_IMPASTO = _chunkHRUK5TFWcjs.DEFAULT_IMPASTO; exports.DEFAULT_IRIDESCENCE = _chunkHRUK5TFWcjs.DEFAULT_IRIDESCENCE; exports.DEFAULT_LIGHT = _chunkHRUK5TFWcjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_LIVE_PATTERNS = _chunkIFWLZZCWcjs.DEFAULT_LIVE_PATTERNS; exports.DEFAULT_MAGNET_RADIUS = DEFAULT_MAGNET_RADIUS; exports.DEFAULT_MAGNET_STRENGTH = DEFAULT_MAGNET_STRENGTH; exports.DEFAULT_MULTI_COLOR = _chunkHRUK5TFWcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_MUTATION = _chunkHRUK5TFWcjs.DEFAULT_MUTATION; exports.DEFAULT_MUTATION_RATES = DEFAULT_MUTATION_RATES; exports.DEFAULT_PAINT_GRADIENT = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkPEQWARCPcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkHRUK5TFWcjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunkHRUK5TFWcjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunkHRUK5TFWcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_THERMOCHROMIC = _chunkHRUK5TFWcjs.DEFAULT_THERMOCHROMIC; exports.DEFAULT_TIP_GRAIN = _chunkHRUK5TFWcjs.DEFAULT_TIP_GRAIN; exports.DEFAULT_UV_LIGHT = DEFAULT_UV_LIGHT; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_VIEW_TILT = DEFAULT_VIEW_TILT; exports.DEFAULT_WET_BRUSH = _chunkHRUK5TFWcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkMITQGHN3cjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunkHRUK5TFWcjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunkHRUK5TFWcjs.DOT_TEXTURE_ORDERS; exports.DOT_TEXTURE_ORDER_LABELS = DOT_TEXTURE_ORDER_LABELS; exports.DryStroke = _chunkPEQWARCPcjs.DryStroke; exports.EFFECT_MAP_REPEATS = _chunkPEQWARCPcjs.EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = _chunkPEQWARCPcjs.EFFECT_STRIP_HEIGHT; exports.EVOLUTION_BRUSH_FACETS = EVOLUTION_BRUSH_FACETS; exports.EVOLUTION_MUTATION_SCHEMA = EVOLUTION_MUTATION_SCHEMA; exports.EVOLUTION_SLIDERS = EVOLUTION_SLIDERS; exports.EXTENSION_ASSET_REF = EXTENSION_ASSET_REF; exports.FERRO_CARRIER_RGB = FERRO_CARRIER_RGB; exports.FERRO_DEFAULT_GLOSS = FERRO_DEFAULT_GLOSS; exports.FERRO_DEFAULT_METALLIC = FERRO_DEFAULT_METALLIC; exports.FERRO_DEFAULT_RIM = FERRO_DEFAULT_RIM; exports.FilmBuffer = FilmBuffer; exports.GHOST_SLIDERS = _chunkJVFGK3DKcjs.GHOST_SLIDERS; exports.GHOST_TRIGGERS = _chunkHRUK5TFWcjs.GHOST_TRIGGERS; exports.GPU_LEAD = _chunkPEQWARCPcjs.GPU_LEAD; exports.GRAIN_PATTERNS = _chunkIFWLZZCWcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkIFWLZZCWcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkI3Y2Q3PMcjs.HARMONY_KINDS; exports.HEAT_COOLING = HEAT_COOLING; exports.HEAT_DIFFUSION = HEAT_DIFFUSION; exports.HEAT_DRY_THRESHOLD = HEAT_DRY_THRESHOLD; exports.HEAT_SCALE = HEAT_SCALE; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkPEQWARCPcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkHRUK5TFWcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.IRIDESCENCE_SLIDERS = _chunkJVFGK3DKcjs.IRIDESCENCE_SLIDERS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LIVE_PATTERN_KINDS = _chunkIFWLZZCWcjs.LIVE_PATTERN_KINDS; exports.LIVE_PATTERN_LABELS = LIVE_PATTERN_LABELS; exports.LIVE_PATTERN_PRESETS = _chunkIFWLZZCWcjs.LIVE_PATTERN_PRESETS; exports.LIVE_PATTERN_SCHEMA = LIVE_PATTERN_SCHEMA; exports.LIVE_PATTERN_SLIDERS = LIVE_PATTERN_SLIDERS; exports.LIVE_STROKE_ENGINES = LIVE_STROKE_ENGINES; exports.LitCache = LitCache; exports.MAGNET_SLIDERS = MAGNET_SLIDERS; exports.MAX_BRUSH_SIZE = _chunkIFWLZZCWcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_DOT_TEXTURES = _chunkHRUK5TFWcjs.MAX_DOT_TEXTURES; exports.MAX_EFFECT_PATH_POINTS = _chunkPEQWARCPcjs.MAX_EFFECT_PATH_POINTS; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; exports.MAX_PATH_SAMPLES = MAX_PATH_SAMPLES; exports.MAX_STICKER_STAMPS = _chunkHRUK5TFWcjs.MAX_STICKER_STAMPS; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkHRUK5TFWcjs.MULTI_COLOR_MODES; exports.MUTATION_SLIDERS = _chunkJVFGK3DKcjs.MUTATION_SLIDERS; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkHRUK5TFWcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkHRUK5TFWcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_CONTRACT_FORMAT_VERSION = PAINT_CONTRACT_FORMAT_VERSION; exports.PAINT_DOCUMENT_JSON_SCHEMA = PAINT_DOCUMENT_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkIFWLZZCWcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkIFWLZZCWcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SHORTCUTS = PAINT_SHORTCUTS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TARGET = PAINT_TARGET; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_EFFECT_BLENDS = PAPER_EFFECT_BLENDS; exports.PAPER_EFFECT_NODE_ID = PAPER_EFFECT_NODE_ID; exports.PAPER_FAMILIES = _chunkPEQWARCPcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkPEQWARCPcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkHRUK5TFWcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkHRUK5TFWcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PATH_STROKE_TAPERS = PATH_STROKE_TAPERS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = _chunkPEQWARCPcjs.PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkIFWLZZCWcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkIFWLZZCWcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = _chunkPEQWARCPcjs.PaintWetLayers; exports.PaperGrain = _chunkIFWLZZCWcjs.PaperGrain; exports.ParticleStroke = ParticleStroke; exports.PenDabWalker = _chunkPEQWARCPcjs.PenDabWalker; exports.PenSmoother = _chunkPEQWARCPcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.RIBBON_PAIRS = _chunkHRUK5TFWcjs.RIBBON_PAIRS; exports.RIBBON_PAIR_LABELS = RIBBON_PAIR_LABELS; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkRDFHWAHLcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_ART_SIZE = STICKER_ART_SIZE; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerArtCache = StickerArtCache; exports.StickerBrowser = _chunk3VHH6V67cjs.StickerBrowser; exports.StickerSpray = StickerSpray; exports.TIP_GRAIN_MODES = _chunkHRUK5TFWcjs.TIP_GRAIN_MODES; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThermoCache = ThermoCache; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TipGrain = _chunkPEQWARCPcjs.TipGrain; exports.UV_LIGHT_SLIDERS = UV_LIGHT_SLIDERS; exports.UvCache = UvCache; exports.VIEW_TILT_SLIDERS = VIEW_TILT_SLIDERS; exports.WET_FLOW_KINDS = _chunkMITQGHN3cjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = _chunkPEQWARCPcjs.WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkHRUK5TFWcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = _chunkPEQWARCPcjs.WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkMITQGHN3cjs.WET_PARAM_KEYS; exports.WET_PARAM_SCHEMA = WET_PARAM_SCHEMA; exports.WET_PARAM_SLIDERS = WET_PARAM_SLIDERS; exports.WET_SPEED_SLIDER = WET_SPEED_SLIDER; exports.WET_TILT_SLIDERS = WET_TILT_SLIDERS; exports.WET_TOOLS = _chunkHRUK5TFWcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = _chunkPEQWARCPcjs.WetStrokeDriver; exports.addPaintGradientStop = _chunkIFWLZZCWcjs.addPaintGradientStop; exports.addPolygonArea = addPolygonArea; exports.advanceHeatField = advanceHeatField; exports.advectFerro = advectFerro; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.bakeFerroIntoThick = bakeFerroIntoThick; exports.brushEngineControls = _chunkJVFGK3DKcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkHRUK5TFWcjs.brushTakesPaint; exports.brushToJSON = _chunkHRUK5TFWcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkEvolutionStrokes = checkEvolutionStrokes; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clearHeatField = clearHeatField; exports.cloneHeatField = cloneHeatField; exports.clonePaper = _chunkPEQWARCPcjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.computeUvSpill = computeUvSpill; exports.contactSheet = contactSheet; exports.createEvolutionTools = createEvolutionTools; exports.createFerroTools = createFerroTools; exports.createHeatField = createHeatField; exports.createMutationTools = createMutationTools; exports.createPaintAgentStrokes = createPaintAgentStrokes; exports.createPaintBrushLibraryToolProvider = createPaintBrushLibraryToolProvider; exports.createPaintChangeFeed = createPaintChangeFeed; exports.createPaintCompositor = createPaintCompositor; exports.createPaintConformanceHost = createPaintConformanceHost; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintEvolutionToolProvider = createPaintEvolutionToolProvider; exports.createPaintEvolutionTools = createPaintEvolutionTools; exports.createPaintLayer = createPaintLayer; exports.createPaintProposalToolProvider = createPaintProposalToolProvider; exports.createPaintProposals = createPaintProposals; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.crossoverBrushes = crossoverBrushes; exports.crossoverGenomes = crossoverGenomes; exports.crossoverStrokes = crossoverStrokes; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.defaultStickerRasterizer = defaultStickerRasterizer; exports.describeGenomeDiff = describeGenomeDiff; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.deviceOrientationToViewTilt = deviceOrientationToViewTilt; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.driftBrushFacets = driftBrushFacets; exports.driftColorOklch = driftColorOklch; exports.effectDabField = _chunkPEQWARCPcjs.effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = _chunkPEQWARCPcjs.effectPaintKey; exports.effectPaintSize = _chunkPEQWARCPcjs.effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyFerro = emptyFerro; exports.emptyFluor = emptyFluor; exports.emptyThermo = emptyThermo; exports.emptyThickChannels = emptyThickChannels; exports.engineBrushSourceIds = engineBrushSourceIds; exports.exportProposalContactSheetPng = exportProposalContactSheetPng; exports.ferroCacheKey = ferroCacheKey; exports.ferroFieldAt = ferroFieldAt; exports.ferroFromJSON = ferroFromJSON; exports.ferroInfo = ferroInfo; exports.ferroSpikeHeightAt = ferroSpikeHeightAt; exports.ferroToJSON = ferroToJSON; exports.ferroToShadow = ferroToShadow; exports.ferroTwinBrush = ferroTwinBrush; exports.fillRegionMask = _chunkYH6SKC7Pcjs.fillRegionMask; exports.finalizeThermoStroke = finalizeThermoStroke; exports.findUnfilledRegionsMask = _chunkYH6SKC7Pcjs.findUnfilledRegionsMask; exports.fitZoom = fitZoom; exports.fluorFromJSON = fluorFromJSON; exports.fluorToJSON = fluorToJSON; exports.fluorTwinBrush = fluorTwinBrush; exports.grainCatch = _chunkIFWLZZCWcjs.grainCatch; exports.grainHeights = _chunkIFWLZZCWcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hasThickChannels = hasThickChannels; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.heatFromJSON = heatFromJSON; exports.heatStats = heatStats; exports.heatToJSON = heatToJSON; exports.hexToPaintRgb = _chunkIFWLZZCWcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkPEQWARCPcjs.hexToRgb8; exports.hotCellsBounds = hotCellsBounds; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkI3Y2Q3PMcjs.hueToWheel; exports.inferEffectPathControl = _chunkPEQWARCPcjs.inferEffectPathControl; exports.invertAffine = invertAffine; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isGradientPaint = _chunkIFWLZZCWcjs.isGradientPaint; exports.isPaintEffectPaint = _chunkPEQWARCPcjs.isPaintEffectPaint; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkHRUK5TFWcjs.isWetBrush; exports.isWetCapable = _chunkHRUK5TFWcjs.isWetCapable; exports.jitterStrokePoints = jitterStrokePoints; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.magnetsFromJSON = magnetsFromJSON; exports.mapPenPoint = mapPenPoint; exports.mergeFerro = mergeFerro; exports.mergeFourChannel = mergeFourChannel; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixColorOklch = mixColorOklch; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkPEQWARCPcjs.mixerTip; exports.multiColorForDab = _chunkPEQWARCPcjs.multiColorForDab; exports.multiColorGradient = _chunkPEQWARCPcjs.multiColorGradient; exports.multiColorPalette = _chunkPEQWARCPcjs.multiColorPalette; exports.multiColorSliders = _chunkJVFGK3DKcjs.multiColorSliders; exports.multiColorToPaint = _chunkHRUK5TFWcjs.multiColorToPaint; exports.mutateGenome = mutateGenome; exports.mutateStroke = mutateStroke; exports.mutationBrushRefusal = mutationBrushRefusal; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkHRUK5TFWcjs.normalizeBehavior; exports.normalizeBristle = _chunkHRUK5TFWcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkHRUK5TFWcjs.normalizeDynamics; exports.normalizeFerro = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFerroSettings = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFlow = _chunkMITQGHN3cjs.normalizeFlow; exports.normalizeFluorescence = _chunkHRUK5TFWcjs.normalizeFluorescence; exports.normalizeGhost = _chunkHRUK5TFWcjs.normalizeGhost; exports.normalizeHexColor = _chunkIFWLZZCWcjs.normalizeHexColor; exports.normalizeImpasto = _chunkHRUK5TFWcjs.normalizeImpasto; exports.normalizeLight = _chunkHRUK5TFWcjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeLivePatterns = _chunkIFWLZZCWcjs.normalizeLivePatterns; exports.normalizeMagnet = normalizeMagnet; exports.normalizeMultiColor = _chunkHRUK5TFWcjs.normalizeMultiColor; exports.normalizeMutation = _chunkHRUK5TFWcjs.normalizeMutation; exports.normalizeMutationRates = normalizeMutationRates; exports.normalizePaintBrush = _chunkHRUK5TFWcjs.normalizePaintBrush; exports.normalizePaper = _chunkPEQWARCPcjs.normalizePaper; exports.normalizeParticle = _chunkHRUK5TFWcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkHRUK5TFWcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeThermochromic = _chunkHRUK5TFWcjs.normalizeThermochromic; exports.normalizeUvLight = normalizeUvLight; exports.normalizeView = normalizeView; exports.normalizeViewTilt = normalizeViewTilt; exports.normalizeWetBrush = _chunkHRUK5TFWcjs.normalizeWetBrush; exports.normalizeWetParams = _chunkMITQGHN3cjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintAgentStrokePoints = paintAgentStrokePoints; exports.paintBrushPreviewRenderer = paintBrushPreviewRenderer; exports.paintContracts = paintContracts; exports.paintGradientMappingFor = _chunkIFWLZZCWcjs.paintGradientMappingFor; exports.paintHeatField = paintHeatField; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintProposalGhost = paintProposalGhost; exports.paintShortcutFor = paintShortcutFor; exports.paintSourceColor = _chunkIFWLZZCWcjs.paintSourceColor; exports.paintSourceCss = _chunkIFWLZZCWcjs.paintSourceCss; exports.paintToMultiColor = _chunkHRUK5TFWcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkPEQWARCPcjs.paperPreset; exports.parseBrushLibrary = _chunkHRUK5TFWcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkIFWLZZCWcjs.parsePaintSource; exports.patchBrushValue = _chunkJVFGK3DKcjs.patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkPEQWARCPcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.proposalGenomeStrokes = proposalGenomeStrokes; exports.quickStencil = quickStencil; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.readEffectStrokeMap = _chunkPEQWARCPcjs.readEffectStrokeMap; exports.readPaintEffectPaint = _chunkPEQWARCPcjs.readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkIFWLZZCWcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkIFWLZZCWcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkPEQWARCPcjs.renderPaper; exports.renderProposalContactSheet = renderProposalContactSheet; exports.renderStickers = renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.requestDeviceTiltPermission = requestDeviceTiltPermission; exports.rerollStrokeSeed = rerollStrokeSeed; exports.resampleStrokePoints = resampleStrokePoints; exports.resolvePaintGradient = _chunkIFWLZZCWcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkIFWLZZCWcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleArt = sampleArt; exports.sampleEffectAt = _chunkPEQWARCPcjs.sampleEffectAt; exports.sampleEffectField = _chunkPEQWARCPcjs.sampleEffectField; exports.sampleHeatAt = sampleHeatAt; exports.samplePath = samplePath; exports.samplePressure = samplePressure; exports.scaleFerro = scaleFerro; exports.scaleFluor = scaleFluor; exports.scalePaintGradient = _chunkIFWLZZCWcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.seededStrokeVariation = seededStrokeVariation; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.shadowToFerro = shadowToFerro; exports.shiftHeatField = shiftHeatField; exports.solidPaint = _chunkIFWLZZCWcjs.solidPaint; exports.squaredDistanceTransform = _chunkYH6SKC7Pcjs.squaredDistanceTransform; exports.stampCoverage = _chunkRDFHWAHLcjs.stampCoverage; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.startDeviceTilt = startDeviceTilt; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = stickerAt; exports.stickerRect = stickerRect; exports.stickerRefLabel = stickerRefLabel; exports.stickerStamp = stickerStamp; exports.stickerSurface = stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokePathPoints = _chunkPEQWARCPcjs.strokePathPoints; exports.strokeSchedule = strokeSchedule; exports.strokeToJSON = strokeToJSON; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thermoFromJSON = thermoFromJSON; exports.thermoToJSON = thermoToJSON; exports.thermoTwinBrush = thermoTwinBrush; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thinFilmRgb = thinFilmRgb; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkPEQWARCPcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkPEQWARCPcjs.toStrokePoint; exports.toggleDotTexture = toggleDotTexture; exports.toggleStamp = toggleStamp; exports.toggleStickerRef = toggleStickerRef; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkIFWLZZCWcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkHRUK5TFWcjs.usesPaintExchange; exports.uvLightKey = uvLightKey; exports.uvPaper = uvPaper; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.viewTiltKey = viewTiltKey; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = _chunkPEQWARCPcjs.wetPaperInput; exports.wetPigmentOf = _chunkPEQWARCPcjs.wetPigmentOf; exports.wetSupport = _chunkMITQGHN3cjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkI3Y2Q3PMcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback; exports.withStrokePath = _chunkPEQWARCPcjs.withStrokePath;
18238
+ exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunkHRUK5TFWcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkHRUK5TFWcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunkJVFGK3DKcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkHRUK5TFWcjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.BrushSourceArtCache = BrushSourceArtCache; exports.DAB_FLIPS = _chunkHRUK5TFWcjs.DAB_FLIPS; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkHRUK5TFWcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkHRUK5TFWcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkHRUK5TFWcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkHRUK5TFWcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FERRO = _chunkHRUK5TFWcjs.DEFAULT_FERRO; exports.DEFAULT_FLOW = _chunk4BMRQSPBcjs.DEFAULT_FLOW; exports.DEFAULT_FLUORESCENCE = _chunkHRUK5TFWcjs.DEFAULT_FLUORESCENCE; exports.DEFAULT_GHOST = _chunkHRUK5TFWcjs.DEFAULT_GHOST; exports.DEFAULT_IMPASTO = _chunkHRUK5TFWcjs.DEFAULT_IMPASTO; exports.DEFAULT_IRIDESCENCE = _chunkHRUK5TFWcjs.DEFAULT_IRIDESCENCE; exports.DEFAULT_LIGHT = _chunkHRUK5TFWcjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_LIVE_PATTERNS = _chunkIFWLZZCWcjs.DEFAULT_LIVE_PATTERNS; exports.DEFAULT_MAGNET_RADIUS = DEFAULT_MAGNET_RADIUS; exports.DEFAULT_MAGNET_STRENGTH = DEFAULT_MAGNET_STRENGTH; exports.DEFAULT_MULTI_COLOR = _chunkHRUK5TFWcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_MUTATION = _chunkHRUK5TFWcjs.DEFAULT_MUTATION; exports.DEFAULT_MUTATION_RATES = DEFAULT_MUTATION_RATES; exports.DEFAULT_PAINT_GRADIENT = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkIFWLZZCWcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkWZYRYYXNcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkHRUK5TFWcjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunkHRUK5TFWcjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunkHRUK5TFWcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_THERMOCHROMIC = _chunkHRUK5TFWcjs.DEFAULT_THERMOCHROMIC; exports.DEFAULT_TIP_GRAIN = _chunkHRUK5TFWcjs.DEFAULT_TIP_GRAIN; exports.DEFAULT_UV_LIGHT = DEFAULT_UV_LIGHT; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_VIEW_TILT = DEFAULT_VIEW_TILT; exports.DEFAULT_WET_BRUSH = _chunkHRUK5TFWcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunk4BMRQSPBcjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunkHRUK5TFWcjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunkHRUK5TFWcjs.DOT_TEXTURE_ORDERS; exports.DOT_TEXTURE_ORDER_LABELS = DOT_TEXTURE_ORDER_LABELS; exports.DryStroke = _chunkWZYRYYXNcjs.DryStroke; exports.EFFECT_MAP_REPEATS = _chunkWZYRYYXNcjs.EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = _chunkWZYRYYXNcjs.EFFECT_STRIP_HEIGHT; exports.EVOLUTION_BRUSH_FACETS = EVOLUTION_BRUSH_FACETS; exports.EVOLUTION_MUTATION_SCHEMA = EVOLUTION_MUTATION_SCHEMA; exports.EVOLUTION_SLIDERS = EVOLUTION_SLIDERS; exports.EXTENSION_ASSET_REF = EXTENSION_ASSET_REF; exports.FERRO_CARRIER_RGB = FERRO_CARRIER_RGB; exports.FERRO_DEFAULT_GLOSS = FERRO_DEFAULT_GLOSS; exports.FERRO_DEFAULT_METALLIC = FERRO_DEFAULT_METALLIC; exports.FERRO_DEFAULT_RIM = FERRO_DEFAULT_RIM; exports.FilmBuffer = FilmBuffer; exports.GHOST_SLIDERS = _chunkJVFGK3DKcjs.GHOST_SLIDERS; exports.GHOST_TRIGGERS = _chunkHRUK5TFWcjs.GHOST_TRIGGERS; exports.GPU_LEAD = _chunkWZYRYYXNcjs.GPU_LEAD; exports.GRAIN_PATTERNS = _chunkIFWLZZCWcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkIFWLZZCWcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkI3Y2Q3PMcjs.HARMONY_KINDS; exports.HEAT_COOLING = HEAT_COOLING; exports.HEAT_DIFFUSION = HEAT_DIFFUSION; exports.HEAT_DRY_THRESHOLD = HEAT_DRY_THRESHOLD; exports.HEAT_SCALE = HEAT_SCALE; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkWZYRYYXNcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkHRUK5TFWcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.IRIDESCENCE_SLIDERS = _chunkJVFGK3DKcjs.IRIDESCENCE_SLIDERS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LIVE_PATTERN_KINDS = _chunkIFWLZZCWcjs.LIVE_PATTERN_KINDS; exports.LIVE_PATTERN_LABELS = LIVE_PATTERN_LABELS; exports.LIVE_PATTERN_PRESETS = _chunkIFWLZZCWcjs.LIVE_PATTERN_PRESETS; exports.LIVE_PATTERN_SCHEMA = LIVE_PATTERN_SCHEMA; exports.LIVE_PATTERN_SLIDERS = LIVE_PATTERN_SLIDERS; exports.LIVE_STROKE_ENGINES = LIVE_STROKE_ENGINES; exports.LitCache = LitCache; exports.MAGNET_SLIDERS = MAGNET_SLIDERS; exports.MAX_BRUSH_SIZE = _chunkIFWLZZCWcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_DOT_TEXTURES = _chunkHRUK5TFWcjs.MAX_DOT_TEXTURES; exports.MAX_EFFECT_PATH_POINTS = _chunkWZYRYYXNcjs.MAX_EFFECT_PATH_POINTS; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; exports.MAX_PATH_SAMPLES = MAX_PATH_SAMPLES; exports.MAX_STICKER_STAMPS = _chunkHRUK5TFWcjs.MAX_STICKER_STAMPS; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkHRUK5TFWcjs.MULTI_COLOR_MODES; exports.MUTATION_SLIDERS = _chunkJVFGK3DKcjs.MUTATION_SLIDERS; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkHRUK5TFWcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkHRUK5TFWcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_CONTRACT_FORMAT_VERSION = PAINT_CONTRACT_FORMAT_VERSION; exports.PAINT_DOCUMENT_JSON_SCHEMA = PAINT_DOCUMENT_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkIFWLZZCWcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkIFWLZZCWcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkIFWLZZCWcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SHORTCUTS = PAINT_SHORTCUTS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkIFWLZZCWcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAINT_TARGET = PAINT_TARGET; exports.PAINT_TOOLS = PAINT_TOOLS; exports.PAPER_EFFECT_BLENDS = PAPER_EFFECT_BLENDS; exports.PAPER_EFFECT_NODE_ID = PAPER_EFFECT_NODE_ID; exports.PAPER_FAMILIES = _chunkWZYRYYXNcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkWZYRYYXNcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkHRUK5TFWcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkHRUK5TFWcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PATH_STROKE_TAPERS = PATH_STROKE_TAPERS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = _chunkWZYRYYXNcjs.PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkIFWLZZCWcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkIFWLZZCWcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = _chunkWZYRYYXNcjs.PaintWetLayers; exports.PaperGrain = _chunkIFWLZZCWcjs.PaperGrain; exports.ParticleStroke = ParticleStroke; exports.PenDabWalker = _chunkWZYRYYXNcjs.PenDabWalker; exports.PenSmoother = _chunkWZYRYYXNcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.RIBBON_PAIRS = _chunkHRUK5TFWcjs.RIBBON_PAIRS; exports.RIBBON_PAIR_LABELS = RIBBON_PAIR_LABELS; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkRDFHWAHLcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_ART_SIZE = STICKER_ART_SIZE; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerArtCache = StickerArtCache; exports.StickerBrowser = _chunk3VHH6V67cjs.StickerBrowser; exports.StickerSpray = StickerSpray; exports.TIP_GRAIN_MODES = _chunkHRUK5TFWcjs.TIP_GRAIN_MODES; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThermoCache = ThermoCache; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TipGrain = _chunkWZYRYYXNcjs.TipGrain; exports.UV_LIGHT_SLIDERS = UV_LIGHT_SLIDERS; exports.UvCache = UvCache; exports.VIEW_TILT_SLIDERS = VIEW_TILT_SLIDERS; exports.WET_FLOW_KINDS = _chunk4BMRQSPBcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = _chunkWZYRYYXNcjs.WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkHRUK5TFWcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = _chunkWZYRYYXNcjs.WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunk4BMRQSPBcjs.WET_PARAM_KEYS; exports.WET_PARAM_SCHEMA = WET_PARAM_SCHEMA; exports.WET_PARAM_SLIDERS = WET_PARAM_SLIDERS; exports.WET_SPEED_SLIDER = WET_SPEED_SLIDER; exports.WET_TILT_SLIDERS = WET_TILT_SLIDERS; exports.WET_TOOLS = _chunkHRUK5TFWcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = _chunkWZYRYYXNcjs.WetStrokeDriver; exports.addPaintGradientStop = _chunkIFWLZZCWcjs.addPaintGradientStop; exports.addPolygonArea = addPolygonArea; exports.advanceHeatField = advanceHeatField; exports.advectFerro = advectFerro; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.bakeFerroIntoThick = bakeFerroIntoThick; exports.brushEngineControls = _chunkJVFGK3DKcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkHRUK5TFWcjs.brushTakesPaint; exports.brushToJSON = _chunkHRUK5TFWcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkEvolutionStrokes = checkEvolutionStrokes; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clearHeatField = clearHeatField; exports.cloneHeatField = cloneHeatField; exports.clonePaper = _chunkWZYRYYXNcjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.computeUvSpill = computeUvSpill; exports.contactSheet = contactSheet; exports.createEvolutionTools = createEvolutionTools; exports.createFerroTools = createFerroTools; exports.createHeatField = createHeatField; exports.createMutationTools = createMutationTools; exports.createPaintAgentStrokes = createPaintAgentStrokes; exports.createPaintBrushLibraryToolProvider = createPaintBrushLibraryToolProvider; exports.createPaintChangeFeed = createPaintChangeFeed; exports.createPaintCompositor = createPaintCompositor; exports.createPaintConformanceHost = createPaintConformanceHost; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintEvolutionToolProvider = createPaintEvolutionToolProvider; exports.createPaintEvolutionTools = createPaintEvolutionTools; exports.createPaintLayer = createPaintLayer; exports.createPaintProposalToolProvider = createPaintProposalToolProvider; exports.createPaintProposals = createPaintProposals; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.crossoverBrushes = crossoverBrushes; exports.crossoverGenomes = crossoverGenomes; exports.crossoverStrokes = crossoverStrokes; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.defaultStickerRasterizer = defaultStickerRasterizer; exports.describeGenomeDiff = describeGenomeDiff; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.deviceOrientationToViewTilt = deviceOrientationToViewTilt; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.driftBrushFacets = driftBrushFacets; exports.driftColorOklch = driftColorOklch; exports.effectDabField = _chunkWZYRYYXNcjs.effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = _chunkWZYRYYXNcjs.effectPaintKey; exports.effectPaintSize = _chunkWZYRYYXNcjs.effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyFerro = emptyFerro; exports.emptyFluor = emptyFluor; exports.emptyThermo = emptyThermo; exports.emptyThickChannels = emptyThickChannels; exports.engineBrushSourceIds = engineBrushSourceIds; exports.exportProposalContactSheetPng = exportProposalContactSheetPng; exports.ferroCacheKey = ferroCacheKey; exports.ferroFieldAt = ferroFieldAt; exports.ferroFromJSON = ferroFromJSON; exports.ferroInfo = ferroInfo; exports.ferroSpikeHeightAt = ferroSpikeHeightAt; exports.ferroToJSON = ferroToJSON; exports.ferroToShadow = ferroToShadow; exports.ferroTwinBrush = ferroTwinBrush; exports.fillRegionMask = _chunkYH6SKC7Pcjs.fillRegionMask; exports.finalizeThermoStroke = finalizeThermoStroke; exports.findUnfilledRegionsMask = _chunkYH6SKC7Pcjs.findUnfilledRegionsMask; exports.fitZoom = fitZoom; exports.fluorFromJSON = fluorFromJSON; exports.fluorToJSON = fluorToJSON; exports.fluorTwinBrush = fluorTwinBrush; exports.grainCatch = _chunkIFWLZZCWcjs.grainCatch; exports.grainHeights = _chunkIFWLZZCWcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hasThickChannels = hasThickChannels; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.heatFromJSON = heatFromJSON; exports.heatStats = heatStats; exports.heatToJSON = heatToJSON; exports.hexToPaintRgb = _chunkIFWLZZCWcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkWZYRYYXNcjs.hexToRgb8; exports.hotCellsBounds = hotCellsBounds; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkI3Y2Q3PMcjs.hueToWheel; exports.inferEffectPathControl = _chunkWZYRYYXNcjs.inferEffectPathControl; exports.invertAffine = invertAffine; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isGradientPaint = _chunkIFWLZZCWcjs.isGradientPaint; exports.isPaintEffectPaint = _chunkWZYRYYXNcjs.isPaintEffectPaint; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkHRUK5TFWcjs.isWetBrush; exports.isWetCapable = _chunkHRUK5TFWcjs.isWetCapable; exports.jitterStrokePoints = jitterStrokePoints; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.magnetsFromJSON = magnetsFromJSON; exports.mapPenPoint = mapPenPoint; exports.mergeFerro = mergeFerro; exports.mergeFourChannel = mergeFourChannel; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixColorOklch = mixColorOklch; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkWZYRYYXNcjs.mixerTip; exports.multiColorForDab = _chunkWZYRYYXNcjs.multiColorForDab; exports.multiColorGradient = _chunkWZYRYYXNcjs.multiColorGradient; exports.multiColorPalette = _chunkWZYRYYXNcjs.multiColorPalette; exports.multiColorSliders = _chunkJVFGK3DKcjs.multiColorSliders; exports.multiColorToPaint = _chunkHRUK5TFWcjs.multiColorToPaint; exports.mutateGenome = mutateGenome; exports.mutateStroke = mutateStroke; exports.mutationBrushRefusal = mutationBrushRefusal; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkHRUK5TFWcjs.normalizeBehavior; exports.normalizeBristle = _chunkHRUK5TFWcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkHRUK5TFWcjs.normalizeDynamics; exports.normalizeFerro = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFerroSettings = _chunkHRUK5TFWcjs.normalizeFerro; exports.normalizeFlow = _chunk4BMRQSPBcjs.normalizeFlow; exports.normalizeFluorescence = _chunkHRUK5TFWcjs.normalizeFluorescence; exports.normalizeGhost = _chunkHRUK5TFWcjs.normalizeGhost; exports.normalizeHexColor = _chunkIFWLZZCWcjs.normalizeHexColor; exports.normalizeImpasto = _chunkHRUK5TFWcjs.normalizeImpasto; exports.normalizeLight = _chunkHRUK5TFWcjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeLivePatterns = _chunkIFWLZZCWcjs.normalizeLivePatterns; exports.normalizeMagnet = normalizeMagnet; exports.normalizeMultiColor = _chunkHRUK5TFWcjs.normalizeMultiColor; exports.normalizeMutation = _chunkHRUK5TFWcjs.normalizeMutation; exports.normalizeMutationRates = normalizeMutationRates; exports.normalizePaintBrush = _chunkHRUK5TFWcjs.normalizePaintBrush; exports.normalizePaper = _chunkWZYRYYXNcjs.normalizePaper; exports.normalizeParticle = _chunkHRUK5TFWcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkHRUK5TFWcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeThermochromic = _chunkHRUK5TFWcjs.normalizeThermochromic; exports.normalizeUvLight = normalizeUvLight; exports.normalizeView = normalizeView; exports.normalizeViewTilt = normalizeViewTilt; exports.normalizeWetBrush = _chunkHRUK5TFWcjs.normalizeWetBrush; exports.normalizeWetParams = _chunk4BMRQSPBcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintAgentStrokePoints = paintAgentStrokePoints; exports.paintBrushPreviewRenderer = paintBrushPreviewRenderer; exports.paintContracts = paintContracts; exports.paintGradientMappingFor = _chunkIFWLZZCWcjs.paintGradientMappingFor; exports.paintHeatField = paintHeatField; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintProposalGhost = paintProposalGhost; exports.paintShortcutFor = paintShortcutFor; exports.paintSourceColor = _chunkIFWLZZCWcjs.paintSourceColor; exports.paintSourceCss = _chunkIFWLZZCWcjs.paintSourceCss; exports.paintToMultiColor = _chunkHRUK5TFWcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkWZYRYYXNcjs.paperPreset; exports.parseBrushLibrary = _chunkHRUK5TFWcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkIFWLZZCWcjs.parsePaintSource; exports.patchBrushValue = _chunkJVFGK3DKcjs.patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkWZYRYYXNcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.proposalGenomeStrokes = proposalGenomeStrokes; exports.quickStencil = quickStencil; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.readEffectStrokeMap = _chunkWZYRYYXNcjs.readEffectStrokeMap; exports.readPaintEffectPaint = _chunkWZYRYYXNcjs.readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkIFWLZZCWcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkIFWLZZCWcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkWZYRYYXNcjs.renderPaper; exports.renderProposalContactSheet = renderProposalContactSheet; exports.renderStickers = renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.requestDeviceTiltPermission = requestDeviceTiltPermission; exports.rerollStrokeSeed = rerollStrokeSeed; exports.resampleStrokePoints = resampleStrokePoints; exports.resolvePaintGradient = _chunkIFWLZZCWcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkIFWLZZCWcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleArt = sampleArt; exports.sampleEffectAt = _chunkWZYRYYXNcjs.sampleEffectAt; exports.sampleEffectField = _chunkWZYRYYXNcjs.sampleEffectField; exports.sampleHeatAt = sampleHeatAt; exports.samplePath = samplePath; exports.samplePressure = samplePressure; exports.scaleFerro = scaleFerro; exports.scaleFluor = scaleFluor; exports.scalePaintGradient = _chunkIFWLZZCWcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.seededStrokeVariation = seededStrokeVariation; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.shadowToFerro = shadowToFerro; exports.shiftHeatField = shiftHeatField; exports.solidPaint = _chunkIFWLZZCWcjs.solidPaint; exports.squaredDistanceTransform = _chunkYH6SKC7Pcjs.squaredDistanceTransform; exports.stampCoverage = _chunkRDFHWAHLcjs.stampCoverage; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.startDeviceTilt = startDeviceTilt; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = stickerAt; exports.stickerRect = stickerRect; exports.stickerRefLabel = stickerRefLabel; exports.stickerStamp = stickerStamp; exports.stickerSurface = stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokePathPoints = _chunkWZYRYYXNcjs.strokePathPoints; exports.strokeSchedule = strokeSchedule; exports.strokeToJSON = strokeToJSON; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thermoFromJSON = thermoFromJSON; exports.thermoToJSON = thermoToJSON; exports.thermoTwinBrush = thermoTwinBrush; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thinFilmRgb = thinFilmRgb; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkWZYRYYXNcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkWZYRYYXNcjs.toStrokePoint; exports.toggleDotTexture = toggleDotTexture; exports.toggleStamp = toggleStamp; exports.toggleStickerRef = toggleStickerRef; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkIFWLZZCWcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkHRUK5TFWcjs.usesPaintExchange; exports.uvLightKey = uvLightKey; exports.uvPaper = uvPaper; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.viewTiltKey = viewTiltKey; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = _chunkWZYRYYXNcjs.wetPaperInput; exports.wetPigmentOf = _chunkWZYRYYXNcjs.wetPigmentOf; exports.wetSupport = _chunk4BMRQSPBcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkI3Y2Q3PMcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback; exports.withStrokePath = _chunkWZYRYYXNcjs.withStrokePath;