@pixerate/editor 0.244.0 → 0.246.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (77) hide show
  1. package/dist/agent/index.cjs +34 -32
  2. package/dist/agent/index.js +6 -4
  3. package/dist/animation-editor/index.cjs +61 -61
  4. package/dist/animation-editor/index.js +4 -4
  5. package/dist/{brushstrokeRender-4542T5HP.js → brushstrokeRender-AKUI3SEJ.js} +2 -2
  6. package/dist/{brushstrokeRender-QA5WVIDT.cjs → brushstrokeRender-ZDHMXJAE.cjs} +5 -5
  7. package/dist/canvas/changeFeed.d.cts +71 -0
  8. package/dist/canvas/changeFeed.d.ts +71 -0
  9. package/dist/canvas/index.cjs +490 -34
  10. package/dist/canvas/index.d.cts +3 -0
  11. package/dist/canvas/index.d.ts +3 -0
  12. package/dist/canvas/index.js +483 -27
  13. package/dist/canvas/proposal-tools.d.cts +21 -0
  14. package/dist/canvas/proposal-tools.d.ts +21 -0
  15. package/dist/canvas/proposals.d.cts +112 -0
  16. package/dist/canvas/proposals.d.ts +112 -0
  17. package/dist/chart/index.cjs +21 -21
  18. package/dist/chart/index.js +2 -2
  19. package/dist/{chunk-7YQNKSQ7.js → chunk-4PMCMWQS.js} +1 -1
  20. package/dist/{chunk-4I76OCVD.cjs → chunk-5DLCOQOQ.cjs} +16 -1
  21. package/dist/{chunk-HZ547SGQ.cjs → chunk-5MFDD7SP.cjs} +1 -1
  22. package/dist/{chunk-WGN7AUKB.js → chunk-7YW7T5TJ.js} +1 -1
  23. package/dist/{chunk-5RFENYO5.js → chunk-A23PSOBB.js} +1 -1
  24. package/dist/{chunk-X3ZINLIP.js → chunk-AU6MWQKZ.js} +1 -1
  25. package/dist/{chunk-AIS56JOO.js → chunk-BVRRIW7F.js} +1 -1
  26. package/dist/{chunk-BDIH4DYR.cjs → chunk-CEPKXLBS.cjs} +23 -23
  27. package/dist/{chunk-OSTKS3YN.js → chunk-DQWPMGH2.js} +1 -1
  28. package/dist/{chunk-IZL5V5RK.cjs → chunk-FK5LTDOO.cjs} +2 -2
  29. package/dist/{chunk-L5PB7EG3.js → chunk-LDPLEZ5T.js} +1 -1
  30. package/dist/{chunk-4EQY4TZJ.js → chunk-N6WUB3Y5.js} +1 -1
  31. package/dist/{chunk-RNSANXPT.js → chunk-NS62CQ2B.js} +112 -14
  32. package/dist/{chunk-UZU6DIZA.cjs → chunk-NUTMINJZ.cjs} +45 -45
  33. package/dist/{chunk-4T47Z4J3.cjs → chunk-Q2UYUWAZ.cjs} +10 -0
  34. package/dist/{chunk-7V7QMFTI.cjs → chunk-QOBCBGGI.cjs} +2 -2
  35. package/dist/{chunk-FQVVO5YA.js → chunk-SGPIVHJB.js} +1 -1
  36. package/dist/{chunk-QTMQ5TGA.js → chunk-UCYW4M66.js} +16 -1
  37. package/dist/{chunk-SD23XMVJ.cjs → chunk-UVPD55UZ.cjs} +35 -35
  38. package/dist/{chunk-TBJEMELS.js → chunk-VDAWA546.js} +10 -0
  39. package/dist/{chunk-W7GRGGBH.cjs → chunk-W7L4HUT2.cjs} +8 -8
  40. package/dist/{chunk-FJ2MSI43.cjs → chunk-WKPXOGZZ.cjs} +124 -26
  41. package/dist/{chunk-M6JORA5Z.cjs → chunk-XTWXBQD4.cjs} +86 -86
  42. package/dist/{chunk-D2SGV525.cjs → chunk-XZNU4DUX.cjs} +2 -2
  43. package/dist/diagram/index.cjs +2 -2
  44. package/dist/diagram/index.js +1 -1
  45. package/dist/effects/index.cjs +4 -4
  46. package/dist/effects/index.js +2 -2
  47. package/dist/extensions/index.cjs +5 -5
  48. package/dist/extensions/index.js +4 -4
  49. package/dist/gradient/index.cjs +2 -2
  50. package/dist/gradient/index.js +1 -1
  51. package/dist/history/HistoryManager.d.cts +20 -1
  52. package/dist/history/HistoryManager.d.ts +20 -1
  53. package/dist/history/index.cjs +8 -2
  54. package/dist/history/index.js +8 -2
  55. package/dist/history/types.d.cts +31 -0
  56. package/dist/history/types.d.ts +31 -0
  57. package/dist/image-editor/index.cjs +775 -775
  58. package/dist/image-editor/index.js +4 -4
  59. package/dist/index.cjs +16 -10
  60. package/dist/index.js +11 -5
  61. package/dist/paint-editor/index.cjs +136 -136
  62. package/dist/paint-editor/index.js +4 -4
  63. package/dist/parameters/index.cjs +2 -2
  64. package/dist/parameters/index.js +1 -1
  65. package/dist/tools/index.cjs +4 -2
  66. package/dist/tools/index.d.cts +1 -0
  67. package/dist/tools/index.d.ts +1 -0
  68. package/dist/tools/index.js +3 -1
  69. package/dist/tools/origin.d.cts +22 -0
  70. package/dist/tools/origin.d.ts +22 -0
  71. package/dist/vector/index.cjs +964 -964
  72. package/dist/vector/index.js +5 -5
  73. package/dist/video-editor/index.cjs +4 -4
  74. package/dist/video-editor/index.js +2 -2
  75. package/package.json +1 -1
  76. package/skills/pixerate-canvas/SKILL.md +25 -0
  77. package/skills/pixerate-paint-editor/references/light-paint.md +7 -1
@@ -7,7 +7,7 @@ var _chunkXNZFVYC2cjs = require('../chunk-XNZFVYC2.cjs');
7
7
 
8
8
 
9
9
 
10
- var _chunkM6JORA5Zcjs = require('../chunk-M6JORA5Z.cjs');
10
+ var _chunkXTWXBQD4cjs = require('../chunk-XTWXBQD4.cjs');
11
11
  require('../chunk-A2IS7EHE.cjs');
12
12
  require('../chunk-SS53NNZO.cjs');
13
13
 
@@ -55,7 +55,7 @@ var _chunkJLWLX52Lcjs = require('../chunk-JLWLX52L.cjs');
55
55
 
56
56
 
57
57
  var _chunkK7ENM55Pcjs = require('../chunk-K7ENM55P.cjs');
58
- require('../chunk-IZL5V5RK.cjs');
58
+ require('../chunk-FK5LTDOO.cjs');
59
59
 
60
60
 
61
61
 
@@ -133,7 +133,7 @@ require('../chunk-IZL5V5RK.cjs');
133
133
 
134
134
 
135
135
 
136
- var _chunk4T47Z4J3cjs = require('../chunk-4T47Z4J3.cjs');
136
+ var _chunkQ2UYUWAZcjs = require('../chunk-Q2UYUWAZ.cjs');
137
137
  require('../chunk-CVFAAZXE.cjs');
138
138
  require('../chunk-GF2RBSDM.cjs');
139
139
  require('../chunk-NM3G4VQT.cjs');
@@ -295,7 +295,7 @@ function normalizeCanvas(raw) {
295
295
  function createPaintDocument(options = {}) {
296
296
  const canvas = normalizeCanvas({ width: _nullishCoalesce(options.width, () => ( 2048)), height: _nullishCoalesce(options.height, () => ( 1536)), dpi: options.dpi });
297
297
  const layer = createPaintLayer("Layer 1");
298
- return { canvas, paper: _chunk4T47Z4J3cjs.normalizePaper.call(void 0, _nullishCoalesce(options.paper, () => ( {}))), layers: [layer], activeLayerId: layer.id, strokes: [] };
298
+ return { canvas, paper: _chunkQ2UYUWAZcjs.normalizePaper.call(void 0, _nullishCoalesce(options.paper, () => ( {}))), layers: [layer], activeLayerId: layer.id, strokes: [] };
299
299
  }
300
300
 
301
301
  // src/paint-editor/dab-stroke.ts
@@ -349,13 +349,13 @@ var PaintDabStroke = (_class = class {
349
349
  constructor(brush, options) {;_class.prototype.__init.call(this);_class.prototype.__init2.call(this);_class.prototype.__init3.call(this);_class.prototype.__init4.call(this);_class.prototype.__init5.call(this);_class.prototype.__init6.call(this);_class.prototype.__init7.call(this);_class.prototype.__init8.call(this);_class.prototype.__init9.call(this);_class.prototype.__init10.call(this);
350
350
  this.brush = brush;
351
351
  this.options = options;
352
- this.smoother = new (0, _chunk4T47Z4J3cjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
353
- this.copies = _optionalChain([options, 'access', _2 => _2.copies, 'optionalAccess', _3 => _3.length]) ? options.copies : [_chunk4T47Z4J3cjs.IDENTITY_COPY];
352
+ this.smoother = new (0, _chunkQ2UYUWAZcjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
353
+ this.copies = _optionalChain([options, 'access', _2 => _2.copies, 'optionalAccess', _3 => _3.length]) ? options.copies : [_chunkQ2UYUWAZcjs.IDENTITY_COPY];
354
354
  const exchanging = brush.engine === "mixer" || brush.engine === "dab";
355
355
  const rates = brush.engine === "mixer" ? _chunkPQ3H2AANcjs.mixerRates.call(void 0, brush.mixer) : _chunkPQ3H2AANcjs.exchangeRates.call(void 0, brush.behavior.pickup, brush.behavior.mix, 1, brush.behavior.mixing);
356
356
  this.mixing = brush.engine === "mixer" ? brush.mixer.mixing : brush.behavior.mixing;
357
357
  this.states = this.copies.map((c, i) => ({
358
- walker: new (0, _chunk4T47Z4J3cjs.PenDabWalker)(brush, (_nullishCoalesce(options.seed, () => ( 0))) + i * 7919 | 0, c.linear),
358
+ walker: new (0, _chunkQ2UYUWAZcjs.PenDabWalker)(brush, (_nullishCoalesce(options.seed, () => ( 0))) + i * 7919 | 0, c.linear),
359
359
  exchange: exchanging ? new (0, _chunkPQ3H2AANcjs.PaintExchange)(rates, options.load) : null,
360
360
  smudge: brush.engine === "smudge" ? new (0, _chunkPQ3H2AANcjs.SmudgeTip)(brush.smudge, brush.tip.size * (1 + brush.dynamics.tiltSize * 1.5)) : null
361
361
  }));
@@ -468,7 +468,7 @@ var PaintDabStroke = (_class = class {
468
468
  let flow = 1;
469
469
  if (this.options.effect) {
470
470
  const rgb = [0, 0, 0];
471
- flow = _chunk4T47Z4J3cjs.sampleEffectAt.call(void 0, this.options.effect, d.x, d.y, rgb, d);
471
+ flow = _chunkQ2UYUWAZcjs.sampleEffectAt.call(void 0, this.options.effect, d.x, d.y, rgb, d);
472
472
  ex.setReservoirColor(rgb[0], rgb[1], rgb[2]);
473
473
  } else if (this.sampler && !this.gradient) {
474
474
  const g = this.sampler.dab(d, this.sample);
@@ -699,12 +699,12 @@ var ThickStrokeDriver = (_class3 = class {
699
699
  constructor(init) {;_class3.prototype.__init12.call(this);_class3.prototype.__init13.call(this);_class3.prototype.__init14.call(this);_class3.prototype.__init15.call(this);_class3.prototype.__init16.call(this);_class3.prototype.__init17.call(this);_class3.prototype.__init18.call(this);_class3.prototype.__init19.call(this);_class3.prototype.__init20.call(this);_class3.prototype.__init21.call(this);
700
700
  this.init = init;
701
701
  const b = init.brush;
702
- this.smoother = new (0, _chunk4T47Z4J3cjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
703
- const copies = init.copies.length ? init.copies : [_chunk4T47Z4J3cjs.IDENTITY_COPY];
702
+ this.smoother = new (0, _chunkQ2UYUWAZcjs.PenSmoother)(b.tip.smoothing, b.pressureSmoothing);
703
+ const copies = init.copies.length ? init.copies : [_chunkQ2UYUWAZcjs.IDENTITY_COPY];
704
704
  this.copies = copies;
705
705
  const rates = _chunkPQ3H2AANcjs.exchangeRates.call(void 0, b.behavior.pickup, b.behavior.mix, 1, b.behavior.mixing);
706
706
  this.states = copies.map((c, i) => ({
707
- walker: new (0, _chunk4T47Z4J3cjs.PenDabWalker)(b, init.seed + i * 7919 | 0, c.linear),
707
+ walker: new (0, _chunkQ2UYUWAZcjs.PenDabWalker)(b, init.seed + i * 7919 | 0, c.linear),
708
708
  exchange: new (0, _chunkPQ3H2AANcjs.PaintExchange)(rates, init.load),
709
709
  smudge: b.impasto.tool === "knife" ? new (0, _chunkPQ3H2AANcjs.SmudgeTip)({ strength: 0.85, length: 0.6 + 0.38 * b.impasto.drag, mixing: b.behavior.mixing }, b.tip.size * 1.2) : null,
710
710
  carried: null,
@@ -850,7 +850,7 @@ var ThickStrokeDriver = (_class3 = class {
850
850
  let flow = 1;
851
851
  const effect = this.init.effect;
852
852
  if (effect) {
853
- _chunk4T47Z4J3cjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
853
+ _chunkQ2UYUWAZcjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
854
854
  ex.setReservoirColor(this.centre[0], this.centre[1], this.centre[2]);
855
855
  } else if (this.sampler) {
856
856
  const g = this.sampler.dab(d, this.sample);
@@ -867,7 +867,7 @@ var ThickStrokeDriver = (_class3 = class {
867
867
  let field = null;
868
868
  if (effect) {
869
869
  field = new Float32Array(n * 3);
870
- _chunk4T47Z4J3cjs.effectDabField.call(void 0, effect, rect, cov, this.centre, this.paint, field, 0, d);
870
+ _chunkQ2UYUWAZcjs.effectDabField.call(void 0, effect, rect, cov, this.centre, this.paint, field, 0, d);
871
871
  }
872
872
  this.medium.deposit(rect, cov, dep, this.paint, ex.paintPigment, field);
873
873
  }
@@ -1044,7 +1044,7 @@ function shadowToLight(shadow) {
1044
1044
  return new (0, _chunk474IQG74cjs.TiledSurface)(1, tiles, 0);
1045
1045
  }
1046
1046
  function lightTwinBrush(brush) {
1047
- return _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0,
1047
+ return _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0,
1048
1048
  {
1049
1049
  tip: { ...brush.tip, blend: "normal", pressureOpacity: brush.tip.pressureOpacity || brush.light.pressure },
1050
1050
  behavior: { ...brush.behavior, mixing: "rgb" },
@@ -1274,7 +1274,7 @@ var PaintStrokeSession = (_class5 = class _PaintStrokeSession {
1274
1274
  this.layerId = init.layerId;
1275
1275
  this.base = init.surface;
1276
1276
  this.live = new Map(this.base.tiles);
1277
- this.copies = init.copies.length ? init.copies : [_chunk4T47Z4J3cjs.IDENTITY_COPY];
1277
+ this.copies = init.copies.length ? init.copies : [_chunkQ2UYUWAZcjs.IDENTITY_COPY];
1278
1278
  const brush = init.brush;
1279
1279
  if (init.wet) this.wetDriver = init.wet.driver;
1280
1280
  if (init.light && !init.wet && !init.sticker) this.lightTwin = this.makeLightTwin(init.light.surface);
@@ -1291,11 +1291,11 @@ var PaintStrokeSession = (_class5 = class _PaintStrokeSession {
1291
1291
  };
1292
1292
  if (this.wetDriver) {
1293
1293
  } else if (init.sticker) {
1294
- this.stickerSpray = new (0, _chunk4T47Z4J3cjs.StickerSpray)({ brush, target: this.tileTarget(), color: init.colorHex, seed: init.seed, copies: this.copies, nextId: init.sticker.nextId, paint: _nullishCoalesce(init.paint, () => ( null)), effect });
1294
+ this.stickerSpray = new (0, _chunkQ2UYUWAZcjs.StickerSpray)({ brush, target: this.tileTarget(), color: init.colorHex, seed: init.seed, copies: this.copies, nextId: init.sticker.nextId, paint: _nullishCoalesce(init.paint, () => ( null)), effect });
1295
1295
  } else if (init.thick) {
1296
1296
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
1297
1297
  this.thickDriver = new ThickStrokeDriver({ brush, target: this.tileTarget(), channels: init.thick.channels, color: rgb(init.color), load: init.mixerLoad, seed: init.seed, copies: this.copies, paint: _nullishCoalesce(init.paint, () => ( null)), effect });
1298
- } else if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunk4T47Z4J3cjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
1298
+ } else if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunkQ2UYUWAZcjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
1299
1299
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
1300
1300
  this.wet = new PaintDabStroke(brush, {
1301
1301
  target: this.tileTarget(),
@@ -1311,7 +1311,7 @@ var PaintStrokeSession = (_class5 = class _PaintStrokeSession {
1311
1311
  });
1312
1312
  } else {
1313
1313
  const opts = { grain: init.grain, paperDepth: init.paperDepth, seed: init.seed, copies: this.copies, paint: _nullishCoalesce(init.paint, () => ( null)), effect };
1314
- this.dry = brush.engine === "particle" ? new (0, _chunk4T47Z4J3cjs.ParticleStroke)(brush, opts) : brush.engine === "bristle" ? new (0, _chunk4T47Z4J3cjs.BristleStroke)(brush, opts) : new (0, _chunk4T47Z4J3cjs.DryStroke)(brush, opts);
1314
+ this.dry = brush.engine === "particle" ? new (0, _chunkQ2UYUWAZcjs.ParticleStroke)(brush, opts) : brush.engine === "bristle" ? new (0, _chunkQ2UYUWAZcjs.BristleStroke)(brush, opts) : new (0, _chunkQ2UYUWAZcjs.DryStroke)(brush, opts);
1315
1315
  }
1316
1316
  }
1317
1317
 
@@ -1532,7 +1532,7 @@ function brushLoadForStroke(brush, current, color) {
1532
1532
  if (brush.engine === "mixer") return mixerLoadForStroke(brush, current, color);
1533
1533
  if (brush.engine === "impasto") return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
1534
1534
  if (brush.engine === "wet") return brush.wet.tool === "paint" ? { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null } : _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD;
1535
- if (_chunk4T47Z4J3cjs.usesPaintExchange.call(void 0, brush)) return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
1535
+ if (_chunkQ2UYUWAZcjs.usesPaintExchange.call(void 0, brush)) return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
1536
1536
  return _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD;
1537
1537
  }
1538
1538
 
@@ -1800,7 +1800,7 @@ function normalizeBrushStroke(raw) {
1800
1800
  const out = {
1801
1801
  id: r.id,
1802
1802
  layerId: r.layerId,
1803
- brush: _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, _nullishCoalesce(r.brush, () => ( {}))),
1803
+ brush: _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, _nullishCoalesce(r.brush, () => ( {}))),
1804
1804
  color: typeof r.color === "string" && /^#[0-9a-f]{6}$/i.test(r.color) ? r.color.toLowerCase() : "#000000",
1805
1805
  points,
1806
1806
  seed: finite2(r.seed) ? r.seed | 0 : 0
@@ -1819,7 +1819,7 @@ function normalizeBrushStroke(raw) {
1819
1819
  }
1820
1820
  if (st.length) out.stencils = st;
1821
1821
  }
1822
- const effect = _chunk4T47Z4J3cjs.readPaintEffectPaint.call(void 0, r.paint);
1822
+ const effect = _chunkQ2UYUWAZcjs.readPaintEffectPaint.call(void 0, r.paint);
1823
1823
  const paint = effect ? null : _chunkPQ3H2AANcjs.readPaintSource.call(void 0, r.paint);
1824
1824
  if (effect) out.paint = effect;
1825
1825
  else if (paint && paint.type === "gradient") out.paint = paint;
@@ -1859,7 +1859,7 @@ function varyStroke(stroke, m, v) {
1859
1859
  if (ps !== 1) q.pressure = Math.min(1, Math.max(0, (_nullishCoalesce(p.pressure, () => ( 1))) * ps));
1860
1860
  return q;
1861
1861
  });
1862
- const brush = s !== 1 ? _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { ...stroke.brush, tip: { ...stroke.brush.tip, size: stroke.brush.tip.size * s } }) : stroke.brush;
1862
+ const brush = s !== 1 ? _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { ...stroke.brush, tip: { ...stroke.brush.tip, size: stroke.brush.tip.size * s } }) : stroke.brush;
1863
1863
  const out = { ...stroke, brush, points };
1864
1864
  if (_optionalChain([stroke, 'access', _87 => _87.paint, 'optionalAccess', _88 => _88.type]) === "gradient" && s !== 1) out.paint = _chunkPQ3H2AANcjs.scalePaintGradient.call(void 0, stroke.paint, s);
1865
1865
  if (_optionalChain([stroke, 'access', _89 => _89.paint, 'optionalAccess', _90 => _90.type]) === "effect" && stroke.paint.map && s !== 1) out.paint = { ...stroke.paint, map: { ...stroke.paint.map, length: Math.min(4096, Math.max(16, Math.round(stroke.paint.map.length * s))) } };
@@ -1904,7 +1904,7 @@ function paperTile(paper, r, light) {
1904
1904
  const key = `${paperKey(paper, light)}|${r.x},${r.y},${r.width},${r.height}`;
1905
1905
  let t = tileCache.get(key);
1906
1906
  if (!t) {
1907
- t = _chunk4T47Z4J3cjs.renderPaper.call(void 0, paper, r, paperGrain(paper), light);
1907
+ t = _chunkQ2UYUWAZcjs.renderPaper.call(void 0, paper, r, paperGrain(paper), light);
1908
1908
  if (tileCache.size > 512) tileCache.delete(tileCache.keys().next().value);
1909
1909
  tileCache.set(key, t);
1910
1910
  }
@@ -2009,11 +2009,11 @@ function header(state, options) {
2009
2009
  return out;
2010
2010
  }
2011
2011
  function serializePaintDocument(state, options = {}) {
2012
- const { layers, assets } = _chunkM6JORA5Zcjs.serializeLayers.call(void 0, state.layers);
2012
+ const { layers, assets } = _chunkXTWXBQD4cjs.serializeLayers.call(void 0, state.layers);
2013
2013
  return { ...header(state, options), layers, assets };
2014
2014
  }
2015
2015
  async function serializePaintDocumentExternal(state, store, options = {}) {
2016
- const { layers, assets } = await _chunkM6JORA5Zcjs.serializeLayersExternal.call(void 0, state.layers, store);
2016
+ const { layers, assets } = await _chunkXTWXBQD4cjs.serializeLayersExternal.call(void 0, state.layers, store);
2017
2017
  return { ...header(state, options), layers, assets };
2018
2018
  }
2019
2019
  function paintLayersOnly(layers, problems) {
@@ -2048,9 +2048,9 @@ function deserializePaintDocument(raw) {
2048
2048
  }
2049
2049
  const problems = [];
2050
2050
  const canvas = normalizeCanvas({ width: r.width, height: r.height, dpi: _nullishCoalesce(r.dpi, () => ( void 0)) });
2051
- const paper = _chunk4T47Z4J3cjs.normalizePaper.call(void 0, _nullishCoalesce(r.paper, () => ( {})));
2051
+ const paper = _chunkQ2UYUWAZcjs.normalizePaper.call(void 0, _nullishCoalesce(r.paper, () => ( {})));
2052
2052
  const assets = r.assets && typeof r.assets === "object" ? r.assets : {};
2053
- const layers = paintLayersOnly(_chunkM6JORA5Zcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
2053
+ const layers = paintLayersOnly(_chunkXTWXBQD4cjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
2054
2054
  const wanted = typeof r.activeLayerId === "string" ? r.activeLayerId : null;
2055
2055
  const activeLayerId = wanted && _chunkHB4ICNNAcjs.findLayer.call(void 0, layers, wanted) ? wanted : _nullishCoalesce(_optionalChain([_chunkHB4ICNNAcjs.flattenLayers.call(void 0, layers), 'access', _104 => _104.filter, 'call', _105 => _105((l) => l.type === "pixel"), 'access', _106 => _106.pop, 'call', _107 => _107(), 'optionalAccess', _108 => _108.id]), () => ( null));
2056
2056
  const wetEvents = Array.isArray(r.wetEvents) ? r.wetEvents.filter((e) => e && typeof e === "object" && Number.isInteger(e.clock) && typeof e.kind === "string") : [];
@@ -2066,7 +2066,7 @@ async function deserializePaintDocumentAsync(raw, store) {
2066
2066
  if (!raw || typeof raw !== "object") throw new Error("Not a paint document: expected a JSON object.");
2067
2067
  const r = raw;
2068
2068
  const problems = [];
2069
- const assets = await _chunkM6JORA5Zcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
2069
+ const assets = await _chunkXTWXBQD4cjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
2070
2070
  const loaded = deserializePaintDocument({ ...r, assets });
2071
2071
  return { ...loaded, problems: [...problems, ...loaded.problems] };
2072
2072
  }
@@ -2149,7 +2149,7 @@ function pointerToPenPoint(e, x, y, view) {
2149
2149
  const p = { x, y, pressure: samplePressure(e) };
2150
2150
  if (typeof e.timeStamp === "number" && Number.isFinite(e.timeStamp)) p.t = e.timeStamp;
2151
2151
  if (e.pointerType !== "pen") return p;
2152
- const o = _chunk4T47Z4J3cjs.penOrientation.call(void 0, {
2152
+ const o = _chunkQ2UYUWAZcjs.penOrientation.call(void 0, {
2153
2153
  x,
2154
2154
  y,
2155
2155
  altitude: typeof e.altitudeAngle === "number" ? e.altitudeAngle : void 0,
@@ -2229,7 +2229,7 @@ function wetPaperInput(paper) {
2229
2229
  absorption: paper.absorption,
2230
2230
  permeability: paper.permeability,
2231
2231
  roughness: flat ? 0 : paper.roughness,
2232
- color: _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, paper.color),
2232
+ color: _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, paper.color),
2233
2233
  heightAt: flat ? () => 0.5 : (x, y) => grain.at(x, y)
2234
2234
  };
2235
2235
  }
@@ -2237,8 +2237,8 @@ var WetStrokeDriver = (_class6 = class {
2237
2237
  constructor(init) {;_class6.prototype.__init40.call(this);_class6.prototype.__init41.call(this);_class6.prototype.__init42.call(this);_class6.prototype.__init43.call(this);_class6.prototype.__init44.call(this);_class6.prototype.__init45.call(this);_class6.prototype.__init46.call(this);_class6.prototype.__init47.call(this);_class6.prototype.__init48.call(this);_class6.prototype.__init49.call(this);_class6.prototype.__init50.call(this);_class6.prototype.__init51.call(this);_class6.prototype.__init52.call(this);
2238
2238
  this.init = init;
2239
2239
  const brush = init.brush;
2240
- this.smoother = new (0, _chunk4T47Z4J3cjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
2241
- const copies = init.copies.length ? init.copies : [_chunk4T47Z4J3cjs.IDENTITY_COPY];
2240
+ this.smoother = new (0, _chunkQ2UYUWAZcjs.PenSmoother)(brush.tip.smoothing, brush.pressureSmoothing);
2241
+ const copies = init.copies.length ? init.copies : [_chunkQ2UYUWAZcjs.IDENTITY_COPY];
2242
2242
  const wet = brush.wet;
2243
2243
  const spacing = Math.max(0.02, brush.tip.spacing);
2244
2244
  const perDab = Math.min(1, spacing * 1.2);
@@ -2252,7 +2252,7 @@ var WetStrokeDriver = (_class6 = class {
2252
2252
  this.lightBase = wet.tool === "paint" ? STROKE_LIGHT * brush.light.amount * (1 - 0.6 * thin) * perDab : 0;
2253
2253
  const rates = _chunkPQ3H2AANcjs.exchangeRates.call(void 0, brush.behavior.pickup, brush.behavior.mix, wet.load, brush.behavior.mixing);
2254
2254
  this.states = copies.map((c, i) => ({
2255
- walker: new (0, _chunk4T47Z4J3cjs.PenDabWalker)(brush, init.seed + i * 7919 | 0, c.linear),
2255
+ walker: new (0, _chunkQ2UYUWAZcjs.PenDabWalker)(brush, init.seed + i * 7919 | 0, c.linear),
2256
2256
  exchange: wet.tool === "paint" ? new (0, _chunkPQ3H2AANcjs.PaintExchange)(rates, init.load) : null,
2257
2257
  last: null
2258
2258
  }));
@@ -2382,7 +2382,7 @@ var WetStrokeDriver = (_class6 = class {
2382
2382
  let flow = 1;
2383
2383
  const effect = this.init.effect;
2384
2384
  if (effect) {
2385
- _chunk4T47Z4J3cjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
2385
+ _chunkQ2UYUWAZcjs.sampleEffectAt.call(void 0, effect, d.x, d.y, this.centre, d);
2386
2386
  ex.setReservoirColor(this.centre[0], this.centre[1], this.centre[2]);
2387
2387
  } else if (this.sampler) {
2388
2388
  const g = this.sampler.dab(d, this.sample);
@@ -2394,7 +2394,7 @@ var WetStrokeDriver = (_class6 = class {
2394
2394
  if (total > 0 && flow > 0 && effect) {
2395
2395
  const ec = cov.slice();
2396
2396
  const field = new Float32Array(ec.length * 3);
2397
- _chunk4T47Z4J3cjs.effectDabField.call(void 0, effect, rect, ec, this.centre, this.paint, field, COVERAGE_STEPS, d);
2397
+ _chunkQ2UYUWAZcjs.effectDabField.call(void 0, effect, rect, ec, this.centre, this.paint, field, COVERAGE_STEPS, d);
2398
2398
  this.medium.deposit(rect, ec, Math.min(1, total) * k, this.paint, null, field);
2399
2399
  } else if (total > 0 && flow > 0) this.medium.deposit(rect, cov, Math.min(1, total) * k * flow, this.paint, null);
2400
2400
  else world.paint(laneId, rect, cov, this.medium.options.water * k, null);
@@ -2897,7 +2897,7 @@ var PaintWetLayers = (_class7 = class {
2897
2897
  }
2898
2898
  }, _class7);
2899
2899
  function wetPigmentOf(hex, body) {
2900
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, hex);
2900
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, hex);
2901
2901
  return Array.from(_chunkVMROIWLLcjs.pigmentOf.call(void 0, [r / 255, g / 255, b / 255], body));
2902
2902
  }
2903
2903
 
@@ -2911,7 +2911,7 @@ function paintWetTestStroke(brush, paper, color, width, height) {
2911
2911
  const w = thumbWorld;
2912
2912
  if (w.hasLane("thumb")) w.removeLane("thumb");
2913
2913
  w.ensureLane("thumb");
2914
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, color);
2914
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, color);
2915
2915
  if (brush.wet.tool !== "paint" && brush.wet.tool !== "water") {
2916
2916
  const half = Math.ceil(height / 2);
2917
2917
  w.paint("thumb", { x: 0, y: 0, width, height: half }, null, 0.4, Array.from(_chunkVMROIWLLcjs.pigmentOf.call(void 0, [r / 255, g / 255, b / 255], 0), (v) => v * 0.05));
@@ -2925,9 +2925,9 @@ function paintWetTestStroke(brush, paper, color, width, height) {
2925
2925
  load: brushLoadForStroke(brush, _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255]),
2926
2926
  grain: paperGrain(paper),
2927
2927
  paperDepth: paper.depth,
2928
- paperColor: _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, paper.color),
2928
+ paperColor: _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, paper.color),
2929
2929
  seed: 7,
2930
- copies: [_chunk4T47Z4J3cjs.IDENTITY_COPY]
2930
+ copies: [_chunkQ2UYUWAZcjs.IDENTITY_COPY]
2931
2931
  });
2932
2932
  driver.push(thumbnailStroke(width, height));
2933
2933
  driver.finish();
@@ -2947,7 +2947,7 @@ function thumbnailStroke(width, height) {
2947
2947
  return pts;
2948
2948
  }
2949
2949
  function paintTestStroke(surface, brush, paper, color, width, height) {
2950
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, color);
2950
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, color);
2951
2951
  let result = surface;
2952
2952
  let thick = null;
2953
2953
  let light = null;
@@ -2968,13 +2968,13 @@ function paintTestStroke(surface, brush, paper, color, width, height) {
2968
2968
  lockTransparency: false,
2969
2969
  brush,
2970
2970
  color: [r, g, b, 255],
2971
- background: [..._chunk4T47Z4J3cjs.hexToRgb8.call(void 0, paper.color), 255],
2971
+ background: [..._chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, paper.color), 255],
2972
2972
  grain: paperGrain(paper),
2973
2973
  paperDepth: paper.depth,
2974
2974
  seed: 7,
2975
2975
  colorHex: color,
2976
2976
  affineCopies: [],
2977
- copies: [_chunk4T47Z4J3cjs.IDENTITY_COPY],
2977
+ copies: [_chunkQ2UYUWAZcjs.IDENTITY_COPY],
2978
2978
  mixerLoad: brushLoadForStroke(brush, _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255]),
2979
2979
  thick: brush.engine === "impasto" ? { channels: emptyThickChannels() } : void 0,
2980
2980
  sticker: brush.engine === "sticker" ? { nextId: 1 } : void 0,
@@ -2990,8 +2990,8 @@ function renderBrushThumbnail(brush, options) {
2990
2990
  const width = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.width, () => ( 160)))));
2991
2991
  const height = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.height, () => ( 48)))));
2992
2992
  const maxSize = height * 0.42;
2993
- const b = brush.tip.size > maxSize ? _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
2994
- const rgba = [..._chunk4T47Z4J3cjs.hexToRgb8.call(void 0, options.color), 255];
2993
+ const b = brush.tip.size > maxSize ? _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
2994
+ const rgba = [..._chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, options.color), 255];
2995
2995
  let surface = _chunk474IQG74cjs.emptySurface.call(void 0, 4);
2996
2996
  if (b.engine === "eraser") {
2997
2997
  surface = _chunk474IQG74cjs.fillRect.call(void 0, surface, { x: 0, y: 0, width, height }, rgba);
@@ -3273,7 +3273,7 @@ var DEFAULT_SWATCHES = [
3273
3273
  // src/paint-editor/mixing-pad.ts
3274
3274
  var MIXING_PAD_WIDTH = 360;
3275
3275
  var MIXING_PAD_HEIGHT = 220;
3276
- var PAD_PAINT = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, {
3276
+ var PAD_PAINT = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, {
3277
3277
  id: "pad-paint",
3278
3278
  name: "Pad paint",
3279
3279
  category: "mixer",
@@ -3281,7 +3281,7 @@ var PAD_PAINT = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, {
3281
3281
  tip: { size: 28, hardness: 0.75, spacing: 0.1, opacity: 1, flow: 0.7, pressureSize: false, pressureOpacity: false },
3282
3282
  mixer: { wet: 0.45, load: 1, mix: 0.4, loadEachStroke: true, cleanEachStroke: true, mixing: "pigment" }
3283
3283
  });
3284
- var PAD_KNIFE = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, {
3284
+ var PAD_KNIFE = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, {
3285
3285
  id: "pad-knife",
3286
3286
  name: "Palette knife",
3287
3287
  category: "smudge",
@@ -3291,7 +3291,7 @@ var PAD_KNIFE = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, {
3291
3291
  // A knife drags streaks of paint and folds them into each other, mixing them as pigment.
3292
3292
  smudge: { strength: 0.6, length: 0.8, mixing: "pigment" }
3293
3293
  });
3294
- var PAD_BLOB = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, {
3294
+ var PAD_BLOB = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, {
3295
3295
  id: "pad-blob",
3296
3296
  name: "Pad blob",
3297
3297
  category: "custom",
@@ -3313,12 +3313,12 @@ var MixingPad = (_class9 = class {constructor() { _class9.prototype.__init71.cal
3313
3313
  }
3314
3314
  }
3315
3315
  let brush = options.tool === "knife" ? PAD_KNIFE : PAD_PAINT;
3316
- if (options.size !== void 0) brush = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: options.size } }, brush);
3316
+ if (options.size !== void 0) brush = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: options.size } }, brush);
3317
3317
  return this.run(brush, points, options.color);
3318
3318
  }
3319
3319
  /** Paints `points` with `brush` in `color` on the pad. */
3320
3320
  run(brush, points, color) {
3321
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, color);
3321
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, color);
3322
3322
  let result = null;
3323
3323
  const session = new PaintStrokeSession(
3324
3324
  { update: () => {
@@ -3336,7 +3336,7 @@ var MixingPad = (_class9 = class {constructor() { _class9.prototype.__init71.cal
3336
3336
  seed: 1,
3337
3337
  colorHex: color,
3338
3338
  affineCopies: [],
3339
- copies: [_chunk4T47Z4J3cjs.IDENTITY_COPY],
3339
+ copies: [_chunkQ2UYUWAZcjs.IDENTITY_COPY],
3340
3340
  mixerLoad: brushLoadForStroke(brush, _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD, [r / 255, g / 255, b / 255])
3341
3341
  }
3342
3342
  );
@@ -3412,10 +3412,10 @@ var MixingPad = (_class9 = class {constructor() { _class9.prototype.__init71.cal
3412
3412
  const off = used.length === 1 ? 0 : 0.45 * R;
3413
3413
  const x = Math.min(cx + R - r, Math.max(cx - R + r, cx + Math.cos(a) * off));
3414
3414
  const y = Math.min(cy + R - r, Math.max(cy - R + r, cy + Math.sin(a) * off));
3415
- const blob = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: Math.max(2, 2 * r) } }, PAD_BLOB);
3415
+ const blob = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: Math.max(2, 2 * r) } }, PAD_BLOB);
3416
3416
  this.run(blob, [{ x, y }], p.color.toLowerCase());
3417
3417
  });
3418
- const knife = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_KNIFE.tip, size: Math.max(12, R * 0.5) } }, PAD_KNIFE);
3418
+ const knife = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_KNIFE.tip, size: Math.max(12, R * 0.5) } }, PAD_KNIFE);
3419
3419
  for (let k = 0; k < passes; k++) {
3420
3420
  const stir = [];
3421
3421
  const turns = 1.6;
@@ -3427,10 +3427,10 @@ var MixingPad = (_class9 = class {constructor() { _class9.prototype.__init71.cal
3427
3427
  this.run(knife, stir, "#000000");
3428
3428
  }
3429
3429
  const mixed = _chunkOLNIPTB3cjs.mixPigments.call(void 0,
3430
- paints.map((p) => _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, p.color).map((v) => v / 255)),
3430
+ paints.map((p) => _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, p.color).map((v) => v / 255)),
3431
3431
  paints.map((p) => p.parts)
3432
3432
  );
3433
- const core = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
3433
+ const core = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
3434
3434
  const hex = "#" + mixed.map((v) => Math.round(v * 255).toString(16).padStart(2, "0")).join("");
3435
3435
  this.run(core, [{ x: cx, y: cy }], hex);
3436
3436
  return { color: this.pick(cx, cy, 2), bounds };
@@ -3634,10 +3634,10 @@ function addTiles(a, b) {
3634
3634
  }
3635
3635
  function computeTile(paper, grain, amount, rect, layers) {
3636
3636
  const n = rect.width * rect.height;
3637
- const [p0, p1, p2] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, paper.color);
3637
+ const [p0, p1, p2] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, paper.color);
3638
3638
  const pb = [p0, p1, p2];
3639
3639
  const pl = [Math.max(1e-4, LIN[p0]), Math.max(1e-4, LIN[p1]), Math.max(1e-4, LIN[p2])];
3640
- const [c0, c1, c2] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, _nullishCoalesce(paper.backlightColor, () => ( DEFAULT_BACKLIGHT_COLOR)));
3640
+ const [c0, c1, c2] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, _nullishCoalesce(paper.backlightColor, () => ( DEFAULT_BACKLIGHT_COLOR)));
3641
3641
  const t0 = new Float32Array(n).fill(amount * LIN[c0]);
3642
3642
  const t1 = new Float32Array(n).fill(amount * LIN[c1]);
3643
3643
  const t2 = new Float32Array(n).fill(amount * LIN[c2]);
@@ -4045,7 +4045,7 @@ function parseColor(value, what = "color") {
4045
4045
  return value.trim().toLowerCase();
4046
4046
  }
4047
4047
  function rgbaOf(hex) {
4048
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, hex);
4048
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, hex);
4049
4049
  return [r, g, b, 255];
4050
4050
  }
4051
4051
  function rgbToHex(r, g, b) {
@@ -4142,9 +4142,9 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
4142
4142
  constructor(options = {}) {;_class12.prototype.__init82.call(this);_class12.prototype.__init83.call(this);_class12.prototype.__init84.call(this);_class12.prototype.__init85.call(this);_class12.prototype.__init86.call(this);_class12.prototype.__init87.call(this);_class12.prototype.__init88.call(this);_class12.prototype.__init89.call(this);_class12.prototype.__init90.call(this);_class12.prototype.__init91.call(this);_class12.prototype.__init92.call(this);_class12.prototype.__init93.call(this);_class12.prototype.__init94.call(this);_class12.prototype.__init95.call(this);_class12.prototype.__init96.call(this);_class12.prototype.__init97.call(this);_class12.prototype.__init98.call(this);_class12.prototype.__init99.call(this);_class12.prototype.__init100.call(this);_class12.prototype.__init101.call(this);_class12.prototype.__init102.call(this);_class12.prototype.__init103.call(this);_class12.prototype.__init104.call(this);_class12.prototype.__init105.call(this);_class12.prototype.__init106.call(this);_class12.prototype.__init107.call(this);_class12.prototype.__init108.call(this);_class12.prototype.__init109.call(this);_class12.prototype.__init110.call(this);_class12.prototype.__init111.call(this);_class12.prototype.__init112.call(this);_class12.prototype.__init113.call(this);_class12.prototype.__init114.call(this);_class12.prototype.__init115.call(this);_class12.prototype.__init116.call(this);_class12.prototype.__init117.call(this);_class12.prototype.__init118.call(this);_class12.prototype.__init119.call(this);_class12.prototype.__init120.call(this);_class12.prototype.__init121.call(this);_class12.prototype.__init122.call(this);_class12.prototype.__init123.call(this);_class12.prototype.__init124.call(this);_class12.prototype.__init125.call(this);_class12.prototype.__init126.call(this);_class12.prototype.__init127.call(this);_class12.prototype.__init128.call(this);_class12.prototype.__init129.call(this);_class12.prototype.__init130.call(this);_class12.prototype.__init131.call(this);_class12.prototype.__init132.call(this);_class12.prototype.__init133.call(this);_class12.prototype.__init134.call(this);_class12.prototype.__init135.call(this);_class12.prototype.__init136.call(this);
4143
4143
  this.historyLimit = Math.max(1, _nullishCoalesce(options.historyLimit, () => ( 200)));
4144
4144
  this.doc = createPaintDocument({ width: options.width, height: options.height, dpi: options.dpi, paper: this.resolvePaper(options.paper) });
4145
- this.userBrushes = (_nullishCoalesce(options.brushes, () => ( []))).map((b) => _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { ...b, builtin: false }));
4146
- const start = _nullishCoalesce(this.findBrush(_nullishCoalesce(options.brushId, () => ( _chunk4T47Z4J3cjs.DEFAULT_BRUSH_ID))), () => ( this.findBrush(_chunk4T47Z4J3cjs.DEFAULT_BRUSH_ID)));
4147
- this.brush = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, start);
4145
+ this.userBrushes = (_nullishCoalesce(options.brushes, () => ( []))).map((b) => _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { ...b, builtin: false }));
4146
+ const start = _nullishCoalesce(this.findBrush(_nullishCoalesce(options.brushId, () => ( _chunkQ2UYUWAZcjs.DEFAULT_BRUSH_ID))), () => ( this.findBrush(_chunkQ2UYUWAZcjs.DEFAULT_BRUSH_ID)));
4147
+ this.brush = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, start);
4148
4148
  this.color = options.color ? parseColor(options.color) : "#1f2937";
4149
4149
  this.hand = options.hand === "left" ? "left" : "right";
4150
4150
  this.encodeImage = options.encodeImage;
@@ -4197,7 +4197,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
4197
4197
  this.cached = {
4198
4198
  document: this.doc,
4199
4199
  brush: this.brush,
4200
- brushes: this.library ??= [..._chunk4T47Z4J3cjs.BUILTIN_BRUSHES, ...this.userBrushes],
4200
+ brushes: this.library ??= [..._chunkQ2UYUWAZcjs.BUILTIN_BRUSHES, ...this.userBrushes],
4201
4201
  color: this.color,
4202
4202
  secondaryColor: this.secondaryColor,
4203
4203
  paint: _nullishCoalesce(this.gradient, () => ( { type: "color", color: this.color })),
@@ -4393,7 +4393,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
4393
4393
  // --- Canvas and paper ----------------------------------------------------------
4394
4394
  resolvePaper(paper) {
4395
4395
  if (typeof paper === "string") {
4396
- const p = _chunk4T47Z4J3cjs.paperPreset.call(void 0, paper);
4396
+ const p = _chunkQ2UYUWAZcjs.paperPreset.call(void 0, paper);
4397
4397
  if (!p) throw new PaintEditorError(`Unknown paper "${paper}". Call list_papers for the ids.`);
4398
4398
  return p;
4399
4399
  }
@@ -4504,19 +4504,19 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
4504
4504
  this.requireIdle("changing the paper");
4505
4505
  let base = this.doc.paper;
4506
4506
  if (update.preset !== void 0 && update.preset !== this.doc.paper.preset) {
4507
- const p = _chunk4T47Z4J3cjs.paperPreset.call(void 0, update.preset);
4507
+ const p = _chunkQ2UYUWAZcjs.paperPreset.call(void 0, update.preset);
4508
4508
  if (!p) throw new PaintEditorError(`Unknown paper "${update.preset}". Call list_papers for the ids.`);
4509
4509
  base = p;
4510
4510
  }
4511
4511
  const { preset: _p, ...rest } = update;
4512
4512
  if (rest.color !== void 0) parseColor(rest.color, "paper color");
4513
- const paper = _chunk4T47Z4J3cjs.normalizePaper.call(void 0, { ...rest, preset: base.preset, offset: _nullishCoalesce(rest.offset, () => ( this.doc.paper.offset)) }, base);
4513
+ const paper = _chunkQ2UYUWAZcjs.normalizePaper.call(void 0, { ...rest, preset: base.preset, offset: _nullishCoalesce(rest.offset, () => ( this.doc.paper.offset)) }, base);
4514
4514
  const changedKeys = Object.keys(rest).filter((k) => k !== "name");
4515
4515
  if (changedKeys.length && update.preset === void 0) paper.preset = base.preset;
4516
4516
  if (this.wet.world) this.beginWetOp();
4517
4517
  this.commit("Paper", { ...this.doc, paper });
4518
4518
  this.wet.paperChanged();
4519
- return _chunk4T47Z4J3cjs.clonePaper.call(void 0, paper);
4519
+ return _chunkQ2UYUWAZcjs.clonePaper.call(void 0, paper);
4520
4520
  }
4521
4521
  // --- Layers --------------------------------------------------------------------
4522
4522
  getLayer(id) {
@@ -5027,7 +5027,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5027
5027
  this.checkTime(source.time);
5028
5028
  let map;
5029
5029
  try {
5030
- map = _chunk4T47Z4J3cjs.readEffectStrokeMap.call(void 0, source.map);
5030
+ map = _chunkQ2UYUWAZcjs.readEffectStrokeMap.call(void 0, source.map);
5031
5031
  } catch (e) {
5032
5032
  throw new PaintEditorError(e.message);
5033
5033
  }
@@ -5058,9 +5058,9 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5058
5058
  }
5059
5059
  /** The rendered pixels of an effect paint at the current canvas size, or `null` when it has not been rendered. */
5060
5060
  effectPaintImage(p) {
5061
- const key = _chunk4T47Z4J3cjs.effectPaintKey.call(void 0, p);
5061
+ const key = _chunkQ2UYUWAZcjs.effectPaintKey.call(void 0, p);
5062
5062
  const img = this.effectPaintPixels.get(key);
5063
- const size = _chunk4T47Z4J3cjs.effectPaintSize.call(void 0, p, this.doc.canvas);
5063
+ const size = _chunkQ2UYUWAZcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
5064
5064
  if (!img || img.width !== size.width || img.height !== size.height) return null;
5065
5065
  this.effectPaintPixels.delete(key);
5066
5066
  this.effectPaintPixels.set(key, img);
@@ -5074,7 +5074,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5074
5074
  const what = `the effect "${p.effect}"${p.provider ? ` from provider "${p.provider}"` : ""}`;
5075
5075
  if (!provider) throw new PaintEditorError(`Effect paint needs ${what}, but no effects provider is registered; register it (setEffectsProvider) and try again.`);
5076
5076
  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.`);
5077
- const { width, height } = _chunk4T47Z4J3cjs.effectPaintSize.call(void 0, p, this.doc.canvas);
5077
+ const { width, height } = _chunkQ2UYUWAZcjs.effectPaintSize.call(void 0, p, this.doc.canvas);
5078
5078
  let pixels;
5079
5079
  try {
5080
5080
  pixels = await this.effectsRenderer.render(provider, p.effect, { width, height }, { time: p.time, values: p.values });
@@ -5082,7 +5082,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5082
5082
  throw new PaintEditorError(`Effect paint could not render ${what}: ${e instanceof Error ? e.message : String(e)}`);
5083
5083
  }
5084
5084
  const img = { width, height, data: new Uint8ClampedArray(pixels.data), ...p.map ? { map: p.map } : {} };
5085
- this.effectPaintPixels.set(_chunk4T47Z4J3cjs.effectPaintKey.call(void 0, p), img);
5085
+ this.effectPaintPixels.set(_chunkQ2UYUWAZcjs.effectPaintKey.call(void 0, p), img);
5086
5086
  while (this.effectPaintPixels.size > _PaintEditorController.EFFECT_PAINT_CACHE) this.effectPaintPixels.delete(this.effectPaintPixels.keys().next().value);
5087
5087
  return img;
5088
5088
  }
@@ -5093,7 +5093,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5093
5093
  async prepareEffectPaints(paints) {
5094
5094
  const seen = /* @__PURE__ */ new Set();
5095
5095
  for (const p of paints) {
5096
- const key = _chunk4T47Z4J3cjs.effectPaintKey.call(void 0, p);
5096
+ const key = _chunkQ2UYUWAZcjs.effectPaintKey.call(void 0, p);
5097
5097
  if (seen.has(key)) continue;
5098
5098
  seen.add(key);
5099
5099
  await this.renderEffectPaint(p);
@@ -5131,11 +5131,11 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5131
5131
  * its pixels are not rendered.
5132
5132
  */
5133
5133
  strokeEffect(init, brush) {
5134
- if (!_chunk4T47Z4J3cjs.brushTakesPaint.call(void 0, brush)) return null;
5134
+ if (!_chunkQ2UYUWAZcjs.brushTakesPaint.call(void 0, brush)) return null;
5135
5135
  let source = null;
5136
5136
  if (init.paint !== void 0) {
5137
- if (!_chunk4T47Z4J3cjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
5138
- source = _chunk4T47Z4J3cjs.readPaintEffectPaint.call(void 0, init.paint);
5137
+ if (!_chunkQ2UYUWAZcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
5138
+ source = _chunkQ2UYUWAZcjs.readPaintEffectPaint.call(void 0, init.paint);
5139
5139
  if (!source) throw new PaintEditorError("The stroke's effect paint needs an effect id and values (getEffectPaint returns one).");
5140
5140
  } else if (init.color === void 0 && !brush.paint) {
5141
5141
  if (this.effectPaintPending) throw new PaintEditorError(`The effect paint "${this.effectPaintPending.effect}" is still rendering; wait for set_effect_paint to finish, then paint.`);
@@ -5185,12 +5185,12 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5185
5185
  }
5186
5186
  // --- Brushes -------------------------------------------------------------------
5187
5187
  findBrush(id) {
5188
- return _nullishCoalesce(_chunk4T47Z4J3cjs.BUILTIN_BRUSHES.find((b) => b.id === id), () => ( this.userBrushes.find((b) => b.id === id)));
5188
+ return _nullishCoalesce(_chunkQ2UYUWAZcjs.BUILTIN_BRUSHES.find((b) => b.id === id), () => ( this.userBrushes.find((b) => b.id === id)));
5189
5189
  }
5190
5190
  /** A library brush by id (`undefined` when unknown). */
5191
5191
  getBrush(id) {
5192
5192
  const b = this.findBrush(id);
5193
- return b ? _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, b, b) : void 0;
5193
+ return b ? _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, b, b) : void 0;
5194
5194
  }
5195
5195
  requireBrush(id) {
5196
5196
  const b = this.findBrush(id);
@@ -5205,7 +5205,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5205
5205
  const { id, ...changes } = update;
5206
5206
  const base = id !== void 0 ? this.requireBrush(id) : this.brush;
5207
5207
  if (changes.paint !== void 0 && changes.paint !== null) this.readStrokePaint(changes.paint);
5208
- const next = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { ...changes, id: base.id }, base);
5208
+ const next = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { ...changes, id: base.id }, base);
5209
5209
  if (base.builtin && !Object.keys(changes).length) next.builtin = true;
5210
5210
  else delete next.builtin;
5211
5211
  this.brush = next;
@@ -5214,10 +5214,10 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5214
5214
  }
5215
5215
  /** Saves the active brush (or `brush`) into the user library under `id` / `name`. */
5216
5216
  saveBrush(options) {
5217
- if (!_chunk4T47Z4J3cjs.BRUSH_ID.test(options.id)) throw new PaintEditorError(`Brush id "${options.id}" is invalid; use lowercase letters, digits and dashes (e.g. "my-pencil").`);
5218
- if (_chunk4T47Z4J3cjs.BUILTIN_BRUSHES.some((b) => b.id === options.id)) throw new PaintEditorError(`"${options.id}" is a built-in brush; save under another id.`);
5219
- const source = options.brush ? _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, options.brush, this.brush) : this.brush;
5220
- const saved = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { ...source, id: options.id, name: _nullishCoalesce(options.name, () => ( source.name)) });
5217
+ if (!_chunkQ2UYUWAZcjs.BRUSH_ID.test(options.id)) throw new PaintEditorError(`Brush id "${options.id}" is invalid; use lowercase letters, digits and dashes (e.g. "my-pencil").`);
5218
+ if (_chunkQ2UYUWAZcjs.BUILTIN_BRUSHES.some((b) => b.id === options.id)) throw new PaintEditorError(`"${options.id}" is a built-in brush; save under another id.`);
5219
+ const source = options.brush ? _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, options.brush, this.brush) : this.brush;
5220
+ const saved = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { ...source, id: options.id, name: _nullishCoalesce(options.name, () => ( source.name)) });
5221
5221
  delete saved.builtin;
5222
5222
  const i = this.userBrushes.findIndex((b) => b.id === options.id);
5223
5223
  if (i >= 0) this.userBrushes[i] = saved;
@@ -5227,7 +5227,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5227
5227
  return saved;
5228
5228
  }
5229
5229
  removeBrush(id) {
5230
- if (_chunk4T47Z4J3cjs.BUILTIN_BRUSHES.some((b) => b.id === id)) throw new PaintEditorError(`"${id}" is a built-in brush and cannot be removed.`);
5230
+ if (_chunkQ2UYUWAZcjs.BUILTIN_BRUSHES.some((b) => b.id === id)) throw new PaintEditorError(`"${id}" is a built-in brush and cannot be removed.`);
5231
5231
  const i = this.userBrushes.findIndex((b) => b.id === id);
5232
5232
  if (i < 0) throw new PaintEditorError(`Unknown brush "${id}". Call list_brushes for the ids.`);
5233
5233
  this.userBrushes.splice(i, 1);
@@ -5236,12 +5236,12 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5236
5236
  }
5237
5237
  /** The user's saved brushes. */
5238
5238
  getUserBrushes() {
5239
- return this.userBrushes.map((b) => _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, b, b));
5239
+ return this.userBrushes.map((b) => _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, b, b));
5240
5240
  }
5241
5241
  /** A brush library file of the given brushes (default: the user's brushes). */
5242
5242
  exportBrushes(ids) {
5243
5243
  const list = ids ? ids.map((id) => this.requireBrush(id)) : this.userBrushes;
5244
- return { format: "pixerate-brushes", version: 1, brushes: list.map(_chunk4T47Z4J3cjs.brushToJSON) };
5244
+ return { format: "pixerate-brushes", version: 1, brushes: list.map(_chunkQ2UYUWAZcjs.brushToJSON) };
5245
5245
  }
5246
5246
  /**
5247
5247
  * Adds the brushes of a library file to the user library. A brush whose id is taken is skipped
@@ -5251,14 +5251,14 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5251
5251
  const problems = [];
5252
5252
  let list;
5253
5253
  try {
5254
- list = _chunk4T47Z4J3cjs.parseBrushLibrary.call(void 0, file, problems);
5254
+ list = _chunkQ2UYUWAZcjs.parseBrushLibrary.call(void 0, file, problems);
5255
5255
  } catch (e) {
5256
5256
  throw new PaintEditorError(e.message);
5257
5257
  }
5258
5258
  const added = [];
5259
5259
  const skipped = [];
5260
5260
  for (const b of list) {
5261
- if (_chunk4T47Z4J3cjs.BUILTIN_BRUSHES.some((x) => x.id === b.id)) {
5261
+ if (_chunkQ2UYUWAZcjs.BUILTIN_BRUSHES.some((x) => x.id === b.id)) {
5262
5262
  skipped.push(b.id);
5263
5263
  problems.push(`"${b.id}" is a built-in brush id; rename it to import it.`);
5264
5264
  continue;
@@ -5323,10 +5323,10 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5323
5323
  * brush's gradient, else the editor's gradient paint. Erasers, blenders and smudges take none.
5324
5324
  */
5325
5325
  strokeGradient(init, brush, color) {
5326
- if (!_chunk4T47Z4J3cjs.brushTakesPaint.call(void 0, brush)) return null;
5326
+ if (!_chunkQ2UYUWAZcjs.brushTakesPaint.call(void 0, brush)) return null;
5327
5327
  let g = null;
5328
5328
  if (init.paint !== void 0) {
5329
- if (_chunk4T47Z4J3cjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
5329
+ if (_chunkQ2UYUWAZcjs.isPaintEffectPaint.call(void 0, init.paint)) return null;
5330
5330
  const p = this.readStrokePaint(init.paint);
5331
5331
  g = p.type === "gradient" ? p : null;
5332
5332
  } else g = _nullishCoalesce(brush.paint, () => ( (init.color === void 0 ? this.gradient : null)));
@@ -5370,7 +5370,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5370
5370
  // --- Mixer Brush ---------------------------------------------------------------
5371
5371
  /** Fills the Mixer Brush reservoir with a colour (default the editor colour). */
5372
5372
  loadMixerBrush(color) {
5373
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, color === void 0 ? this.color : parseColor(color));
5373
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, color === void 0 ? this.color : parseColor(color));
5374
5374
  this.mixerLoad = _chunkPQ3H2AANcjs.loadMixer.call(void 0, this.mixerLoad, [r / 255, g / 255, b / 255]);
5375
5375
  this.emit([]);
5376
5376
  return this.mixerLoad;
@@ -5400,7 +5400,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5400
5400
  // --- Strokes -------------------------------------------------------------------
5401
5401
  strokeBrush(init) {
5402
5402
  let brush = init.brushId !== void 0 ? this.requireBrush(init.brushId) : this.brush;
5403
- if (init.brush) brush = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { ...init.brush, id: brush.id }, brush);
5403
+ if (init.brush) brush = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { ...init.brush, id: brush.id }, brush);
5404
5404
  return brush;
5405
5405
  }
5406
5406
  /**
@@ -5416,7 +5416,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5416
5416
  return symmetryCopies(this.guides.symmetry);
5417
5417
  }
5418
5418
  sessionFor(doc, init, host) {
5419
- if (init.paint !== void 0 && !_chunk4T47Z4J3cjs.isPaintEffectPaint.call(void 0, init.paint)) {
5419
+ if (init.paint !== void 0 && !_chunkQ2UYUWAZcjs.isPaintEffectPaint.call(void 0, init.paint)) {
5420
5420
  const p = this.readStrokePaint(init.paint);
5421
5421
  if (p.type === "color") init = { ...init, color: p.color, paint: void 0 };
5422
5422
  else init = { ...init, paint: p };
@@ -5442,9 +5442,9 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5442
5442
  if (why) throw new PaintEditorError(`Layer "${layer.name}" is a stroke layer. ${why}`);
5443
5443
  }
5444
5444
  if (_optionalChain([doc, 'access', _324 => _324.liveStrokes, 'optionalAccess', _325 => _325[layer.id]]) && _optionalChain([effect, 'optionalAccess', _326 => _326.source, 'access', _327 => _327.live])) {
5445
- const key = _chunk4T47Z4J3cjs.effectPaintKey.call(void 0, effect.source);
5445
+ const key = _chunkQ2UYUWAZcjs.effectPaintKey.call(void 0, effect.source);
5446
5446
  const { sources } = this.liveEffects(doc);
5447
- if (!sources.some((p) => _chunk4T47Z4J3cjs.effectPaintKey.call(void 0, p) === key) && sources.length >= MAX_LIVE_EFFECT_SOURCES) {
5447
+ if (!sources.some((p) => _chunkQ2UYUWAZcjs.effectPaintKey.call(void 0, p) === key) && sources.length >= MAX_LIVE_EFFECT_SOURCES) {
5448
5448
  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.`);
5449
5449
  }
5450
5450
  }
@@ -5455,7 +5455,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5455
5455
  throw new PaintEditorError(`Layer "${layer.name}" is a sticker layer (its pixels are drawn from its stickers); paint on another layer (add_layer).`);
5456
5456
  }
5457
5457
  let wet;
5458
- if (_chunk4T47Z4J3cjs.isWetBrush.call(void 0, brush)) {
5458
+ if (_chunkQ2UYUWAZcjs.isWetBrush.call(void 0, brush)) {
5459
5459
  this.requireWetIdle("painting");
5460
5460
  if (layer.offset.x || layer.offset.y) {
5461
5461
  const moved = { ...layer, surface: _chunk474IQG74cjs.translateSurface.call(void 0, layer.surface, layer.offset.x, layer.offset.y), offset: { x: 0, y: 0 } };
@@ -5470,7 +5470,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5470
5470
  const world = this.wet.ensureLane(layer.id, brush.wet.medium);
5471
5471
  const id = layer.id;
5472
5472
  const wetColor = init.color === void 0 ? this.color : parseColor(init.color);
5473
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, wetColor);
5473
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, wetColor);
5474
5474
  const wetGradient = this.strokeGradient(init, brush, wetColor);
5475
5475
  const load = _nullishCoalesce(init.load, () => ( brushLoadForStroke(brush, this.mixerLoad, [r / 255, g / 255, b / 255])));
5476
5476
  const seedW = _nullishCoalesce(init.seed, () => ( _chunkPQ3H2AANcjs.mix32.call(void 0, this.seedCounter * 2654435761 >>> 0) & 2147483647));
@@ -5483,7 +5483,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5483
5483
  load,
5484
5484
  grain: paperGrain(doc.paper),
5485
5485
  paperDepth: doc.paper.depth,
5486
- paperColor: _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, doc.paper.color),
5486
+ paperColor: _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, doc.paper.color),
5487
5487
  seed: seedW,
5488
5488
  copies: [IDENTITY_AFFINE, ...copiesW].map(affineCopy),
5489
5489
  mask: init.maskStencils ? this.stencilSelection(init.maskStencils) : init.stencils !== false ? this.stencilSelection() : null,
@@ -5548,7 +5548,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5548
5548
  const stroke = {
5549
5549
  id: `s${this.strokeCounter++}`,
5550
5550
  layerId: session.layerId,
5551
- brush: _chunk4T47Z4J3cjs.brushToJSON.call(void 0, init.brush),
5551
+ brush: _chunkQ2UYUWAZcjs.brushToJSON.call(void 0, init.brush),
5552
5552
  color: init.colorHex,
5553
5553
  points: session.points.map((p) => ({ ...p })),
5554
5554
  seed: init.seed
@@ -5754,13 +5754,13 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
5754
5754
  let brush = v.brush;
5755
5755
  if (options.brushId !== void 0) {
5756
5756
  const b = this.requireBrush(options.brushId);
5757
- brush = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: b.tip.size * (v.brush.tip.size / s.brush.tip.size) } }, b);
5757
+ brush = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: b.tip.size * (v.brush.tip.size / s.brush.tip.size) } }, b);
5758
5758
  }
5759
5759
  const layerId = _nullishCoalesce(options.layerId, () => ( s.layerId));
5760
5760
  if (!_chunkHB4ICNNAcjs.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.`);
5761
5761
  let load = s.load;
5762
5762
  if (load && options.color !== void 0 && load.reservoir) {
5763
- const [r, g, b] = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, options.color);
5763
+ const [r, g, b] = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, options.color);
5764
5764
  load = { ...load, reservoir: [r / 255, g / 255, b / 255] };
5765
5765
  }
5766
5766
  const paint = v.paint && options.color === void 0 ? { paint: v.paint } : {};
@@ -6332,7 +6332,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6332
6332
  const stickers = {};
6333
6333
  for (const [id, list] of Object.entries(ext.stickers)) {
6334
6334
  if (!_chunkHB4ICNNAcjs.findLayer.call(void 0, state.layers, id) || !Array.isArray(list)) continue;
6335
- const ok = list.filter((x) => x && typeof x.id === "string" && _chunk4T47Z4J3cjs.STAMP_KINDS.includes(x.stamp) && Number.isFinite(x.x) && Number.isFinite(x.y) && x.size > 0);
6335
+ const ok = list.filter((x) => x && typeof x.id === "string" && _chunkQ2UYUWAZcjs.STAMP_KINDS.includes(x.stamp) && Number.isFinite(x.x) && Number.isFinite(x.y) && x.size > 0);
6336
6336
  if (ok.length !== list.length) problems.push(`Some stickers of layer "${id}" could not be read; they were dropped.`);
6337
6337
  stickers[id] = ok.map((x) => ({ ...x }));
6338
6338
  }
@@ -6518,7 +6518,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6518
6518
  return next.type === "group" ? { ...next, children: toStandard(next.children) } : next;
6519
6519
  });
6520
6520
  const layers = toStandard(dried);
6521
- const result = _chunkM6JORA5Zcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
6521
+ const result = _chunkXTWXBQD4cjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
6522
6522
  for (const [mode, names] of changed) {
6523
6523
  const label = _nullishCoalesce(_optionalChain([_chunkOLNIPTB3cjs.BLEND_MODES, 'access', _410 => _410.find, 'call', _411 => _411((m) => m.id === mode), 'optionalAccess', _412 => _412.label]), () => ( mode));
6524
6524
  const std = _nullishCoalesce(_optionalChain([_chunkOLNIPTB3cjs.BLEND_MODES, 'access', _413 => _413.find, 'call', _414 => _414((m) => m.id === _chunkOLNIPTB3cjs.standardBlendMode.call(void 0, mode)), 'optionalAccess', _415 => _415.label]), () => ( _chunkOLNIPTB3cjs.standardBlendMode.call(void 0, mode)));
@@ -6786,7 +6786,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6786
6786
  }
6787
6787
  redrawStickers(layer, stickers, dirty) {
6788
6788
  const partial = dirty && !layer.offset.x && !layer.offset.y;
6789
- return partial ? _chunk4T47Z4J3cjs.stickerSurface.call(void 0, stickers, layer.surface, dirty) : _chunk4T47Z4J3cjs.stickerSurface.call(void 0, stickers);
6789
+ return partial ? _chunkQ2UYUWAZcjs.stickerSurface.call(void 0, stickers, layer.surface, dirty) : _chunkQ2UYUWAZcjs.stickerSurface.call(void 0, stickers);
6790
6790
  }
6791
6791
  /** The document from before the sticker preview on screen, or `null` when none is (anything else changed the document since). */
6792
6792
  previewBase() {
@@ -6794,7 +6794,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6794
6794
  }
6795
6795
  readStickerUpdate(update) {
6796
6796
  try {
6797
- return _chunk4T47Z4J3cjs.normalizeStickerUpdate.call(void 0, update);
6797
+ return _chunkQ2UYUWAZcjs.normalizeStickerUpdate.call(void 0, update);
6798
6798
  } catch (e) {
6799
6799
  throw new PaintEditorError(e.message);
6800
6800
  }
@@ -6805,7 +6805,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6805
6805
  const id = _nullishCoalesce(layerId, () => ( this.doc.activeLayerId));
6806
6806
  if (!id) return null;
6807
6807
  this.requireLayer(id);
6808
- const hit = _chunk4T47Z4J3cjs.stickerAt.call(void 0, _nullishCoalesce(_optionalChain([this, 'access', _434 => _434.doc, 'access', _435 => _435.stickers, 'optionalAccess', _436 => _436[id]]), () => ( [])), x, y);
6808
+ const hit = _chunkQ2UYUWAZcjs.stickerAt.call(void 0, _nullishCoalesce(_optionalChain([this, 'access', _434 => _434.doc, 'access', _435 => _435.stickers, 'optionalAccess', _436 => _436[id]]), () => ( [])), x, y);
6809
6809
  return hit ? { ...hit } : null;
6810
6810
  }
6811
6811
  /** Picks a sticker for the panel and canvas (`null` for none). Editor state, not an undo step. */
@@ -6826,7 +6826,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6826
6826
  if (i < 0) throw new PaintEditorError(`Layer "${layer.name}" has no sticker "${id}". Call list_stickers for the ids.`);
6827
6827
  const next = { ...stickers[i], ...this.readStickerUpdate(update) };
6828
6828
  const list = stickers.map((s, j) => j === i ? next : s);
6829
- const dirty = [_chunk4T47Z4J3cjs.stickerRect.call(void 0, stickers[i]), _chunk4T47Z4J3cjs.stickerRect.call(void 0, next)];
6829
+ const dirty = [_chunkQ2UYUWAZcjs.stickerRect.call(void 0, stickers[i]), _chunkQ2UYUWAZcjs.stickerRect.call(void 0, next)];
6830
6830
  const base = _nullishCoalesce(this.previewBase(), () => ( this.doc));
6831
6831
  const surface = this.redrawStickers(layer, list, dirty);
6832
6832
  this.doc = { ...this.doc, layers: _chunkHB4ICNNAcjs.mapLayer.call(void 0, this.doc.layers, layer.id, () => ({ ...layer, surface, offset: { x: 0, y: 0 } })), stickers: { ..._nullishCoalesce(this.doc.stickers, () => ( {})), [layer.id]: list } };
@@ -6849,7 +6849,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6849
6849
  if (i < 0) throw new PaintEditorError(`Layer "${layer.name}" has no sticker "${id}". Call list_stickers for the ids.`);
6850
6850
  const u = this.readStickerUpdate(update);
6851
6851
  const next = { ...stickers[i], ...u };
6852
- this.commitStickers("Edit sticker", layer, stickers.map((s, j) => j === i ? next : s), [_chunk4T47Z4J3cjs.stickerRect.call(void 0, stickers[i]), _chunk4T47Z4J3cjs.stickerRect.call(void 0, next)]);
6852
+ this.commitStickers("Edit sticker", layer, stickers.map((s, j) => j === i ? next : s), [_chunkQ2UYUWAZcjs.stickerRect.call(void 0, stickers[i]), _chunkQ2UYUWAZcjs.stickerRect.call(void 0, next)]);
6853
6853
  return { ...next };
6854
6854
  }
6855
6855
  /**
@@ -6878,7 +6878,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6878
6878
  const id = n++;
6879
6879
  return { id: `st${id}`, size: 48, rotation: 0, color: this.color, opacity: 1, seed: _nullishCoalesce(raw.seed, () => ( _chunkPQ3H2AANcjs.mix32.call(void 0, id * 2654435761 >>> 0) & 2147483647)), ...u };
6880
6880
  });
6881
- this.commitStickers("Add stickers", layer, [..._nullishCoalesce(existing, () => ( [])), ...added], _optionalChain([existing, 'optionalAccess', _441 => _441.length]) ? added.map(_chunk4T47Z4J3cjs.stickerRect) : void 0);
6881
+ this.commitStickers("Add stickers", layer, [..._nullishCoalesce(existing, () => ( [])), ...added], _optionalChain([existing, 'optionalAccess', _441 => _441.length]) ? added.map(_chunkQ2UYUWAZcjs.stickerRect) : void 0);
6882
6882
  return added.map((s) => ({ ...s }));
6883
6883
  }
6884
6884
  /** Brings stickers to the top (`front`) or bottom of their layer (one undo step). */
@@ -6888,7 +6888,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6888
6888
  const picked = stickers.filter((s) => ids.includes(s.id));
6889
6889
  const rest = stickers.filter((s) => !ids.includes(s.id));
6890
6890
  const next = to === "front" ? [...rest, ...picked] : [...picked, ...rest];
6891
- this.commitStickers("Arrange stickers", layer, next, picked.map(_chunk4T47Z4J3cjs.stickerRect));
6891
+ this.commitStickers("Arrange stickers", layer, next, picked.map(_chunkQ2UYUWAZcjs.stickerRect));
6892
6892
  return next.map((s) => s.id);
6893
6893
  }
6894
6894
  /** Deletes stickers (`ids`, or all of them on the layer) (one undo step). Returns the ids removed. */
@@ -6898,7 +6898,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6898
6898
  for (const id of ids) if (!stickers.some((s) => s.id === id)) throw new PaintEditorError(`Layer "${layer.name}" has no sticker "${id}". Call list_stickers for the ids.`);
6899
6899
  }
6900
6900
  const removed = ids ? [...ids] : stickers.map((s) => s.id);
6901
- this.commitStickers("Remove stickers", layer, stickers.filter((s) => !removed.includes(s.id)), ids ? stickers.filter((s) => removed.includes(s.id)).map(_chunk4T47Z4J3cjs.stickerRect) : void 0);
6901
+ this.commitStickers("Remove stickers", layer, stickers.filter((s) => !removed.includes(s.id)), ids ? stickers.filter((s) => removed.includes(s.id)).map(_chunkQ2UYUWAZcjs.stickerRect) : void 0);
6902
6902
  return removed;
6903
6903
  }
6904
6904
  /** Sets a layer's stickers (replays). */
@@ -6963,15 +6963,15 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6963
6963
  let brush = was.brush;
6964
6964
  if (update.brushId !== void 0) {
6965
6965
  const b = this.requireBrush(update.brushId);
6966
- brush = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: was.brush.tip.size } }, b);
6966
+ brush = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: was.brush.tip.size } }, b);
6967
6967
  }
6968
6968
  if (update.brush !== void 0) {
6969
6969
  if (!update.brush || typeof update.brush !== "object") throw new PaintEditorError("brush must be an object of brush settings (as set_brush takes).");
6970
- brush = _chunk4T47Z4J3cjs.normalizePaintBrush.call(void 0, { ...update.brush, id: brush.id }, brush);
6970
+ brush = _chunkQ2UYUWAZcjs.normalizePaintBrush.call(void 0, { ...update.brush, id: brush.id }, brush);
6971
6971
  }
6972
6972
  const why = liveStrokeRefusal(brush);
6973
6973
  if (why) throw new PaintEditorError(why);
6974
- const next = { ...was, brush: _chunk4T47Z4J3cjs.brushToJSON.call(void 0, brush) };
6974
+ const next = { ...was, brush: _chunkQ2UYUWAZcjs.brushToJSON.call(void 0, brush) };
6975
6975
  if (update.seed !== void 0) {
6976
6976
  if (!Number.isInteger(update.seed) || update.seed < 0) throw new PaintEditorError(`seed ${update.seed} must be a whole number of 0 or more.`);
6977
6977
  next.seed = update.seed;
@@ -6982,7 +6982,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6982
6982
  }
6983
6983
  if (update.paint !== void 0) {
6984
6984
  if (update.paint === null) delete next.paint;
6985
- else if (_chunk4T47Z4J3cjs.isPaintEffectPaint.call(void 0, update.paint)) {
6985
+ else if (_chunkQ2UYUWAZcjs.isPaintEffectPaint.call(void 0, update.paint)) {
6986
6986
  if (!this.effectPaintImage(update.paint)) throw new PaintEditorError(`The effect "${update.paint.effect}" is not rendered yet; render it first (prepareEffectPaints; the update_stroke tool does this).`);
6987
6987
  next.paint = JSON.parse(JSON.stringify(update.paint));
6988
6988
  } else {
@@ -6993,7 +6993,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
6993
6993
  } else next.paint = JSON.parse(JSON.stringify(p));
6994
6994
  }
6995
6995
  }
6996
- const rgb = _chunk4T47Z4J3cjs.hexToRgb8.call(void 0, next.color).map((v) => v / 255);
6996
+ const rgb = _chunkQ2UYUWAZcjs.hexToRgb8.call(void 0, next.color).map((v) => v / 255);
6997
6997
  const load = brushLoadForStroke(brush, _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD, rgb);
6998
6998
  if (load.reservoir || load.pickup) next.load = load;
6999
6999
  else delete next.load;
@@ -7200,7 +7200,7 @@ var PaintEditorController = (_class12 = class _PaintEditorController {
7200
7200
  const live = strokes.filter(isLiveEffect);
7201
7201
  if (!isPixelLayer(layer) || !live.length) continue;
7202
7202
  layers.push({ layer, strokes });
7203
- for (const st of live) sources.set(_chunk4T47Z4J3cjs.effectPaintKey.call(void 0, st.paint), st.paint);
7203
+ for (const st of live) sources.set(_chunkQ2UYUWAZcjs.effectPaintKey.call(void 0, st.paint), st.paint);
7204
7204
  }
7205
7205
  return { layers, sources: [...sources.values()] };
7206
7206
  }
@@ -7972,7 +7972,7 @@ function createPaintStickerTools(c) {
7972
7972
  items: {
7973
7973
  type: "object",
7974
7974
  properties: {
7975
- stamp: { type: "string", enum: [..._chunk4T47Z4J3cjs.STAMP_KINDS], description: "The stamp." },
7975
+ stamp: { type: "string", enum: [..._chunkQ2UYUWAZcjs.STAMP_KINDS], description: "The stamp." },
7976
7976
  x: { type: "number", description: "Centre x in document pixels." },
7977
7977
  y: { type: "number", description: "Centre y in document pixels." },
7978
7978
  size: { type: "number", minimum: 2, maximum: 2048, description: "Diameter in pixels (default 48)." },
@@ -8002,7 +8002,7 @@ function createPaintStickerTools(c) {
8002
8002
  properties: {
8003
8003
  layerId: LAYER_ID,
8004
8004
  id: { type: "string", description: "Sticker id from list_stickers." },
8005
- stamp: { type: "string", enum: [..._chunk4T47Z4J3cjs.STAMP_KINDS], description: "Another stamp." },
8005
+ stamp: { type: "string", enum: [..._chunkQ2UYUWAZcjs.STAMP_KINDS], description: "Another stamp." },
8006
8006
  x: { type: "number", description: "Centre x in document pixels." },
8007
8007
  y: { type: "number", description: "Centre y in document pixels." },
8008
8008
  size: { type: "number", minimum: 2, maximum: 2048, description: "Diameter in pixels." },
@@ -8913,7 +8913,7 @@ var BEHAVIOR = {
8913
8913
  type: "object",
8914
8914
  description: "Multi-coloured brush (the older form of paint, the brush's own gradient: tip is across-tip, dab is distance in dabs or random). Read back from paint when it has a multi-colour equivalent. Missing fields keep their current values.",
8915
8915
  properties: {
8916
- mode: { type: "string", enum: [..._chunk4T47Z4J3cjs.MULTI_COLOR_MODES], description: "off; tip: the colours lie side by side across the tip (stripes along the stroke, like a brush loaded with several paints); dab: the colour changes along the stroke." },
8916
+ mode: { type: "string", enum: [..._chunkQ2UYUWAZcjs.MULTI_COLOR_MODES], description: "off; tip: the colours lie side by side across the tip (stripes along the stroke, like a brush loaded with several paints); dab: the colour changes along the stroke." },
8917
8917
  colors: { type: "array", maxItems: 8, items: { ...COLOR3 }, description: "2..8 colours #rrggbb; fewer than 2 uses the paint colour and the secondary colour." },
8918
8918
  order: { type: "string", enum: ["sequence", "random"], description: "dab mode: sequence runs through the colours in order, blending between them; random picks one per run of dabs (seeded)." },
8919
8919
  length: { type: "integer", minimum: 1, maximum: 500, description: "dab mode: dabs per colour (default 12)." },
@@ -8954,10 +8954,10 @@ var WET_BRUSH = {
8954
8954
  properties: {
8955
8955
  tool: {
8956
8956
  type: "string",
8957
- enum: [..._chunk4T47Z4J3cjs.WET_TOOLS],
8957
+ enum: [..._chunkQ2UYUWAZcjs.WET_TOOLS],
8958
8958
  description: "paint: water and pigment (picks up and mixes wet paint by behavior.pickup / mix); water: clear water (with rewet it lifts dried paint); dry: a hair dryer, takes water; blow: pushes the water along the stroke; blend: evens out wet pigment; smudge: drags wet paint; blot: a tissue, takes wet paint up (erase wet)."
8959
8959
  },
8960
- medium: { type: "string", enum: [..._chunk4T47Z4J3cjs.WET_MEDIA], description: "The medium: watercolor, gouache or oil. A layer takes the medium's wet settings the first time it holds wet paint (oil: thick, barely flows, stays wet long and blends into the wet paint it meets)." },
8960
+ medium: { type: "string", enum: [..._chunkQ2UYUWAZcjs.WET_MEDIA], description: "The medium: watercolor, gouache or oil. A layer takes the medium's wet settings the first time it holds wet paint (oil: thick, barely flows, stays wet long and blends into the wet paint it meets)." },
8961
8961
  load: { type: "number", minimum: 0, maximum: 1, description: "Paint loading: 1 never runs out; lower, the brush runs dry along a long stroke (each stroke reloads)." },
8962
8962
  thinner: { type: "number", minimum: 0, maximum: 1, description: "Thinner (water or solvent): more transparent, runnier paint." },
8963
8963
  water: { type: "number", minimum: 0, maximum: 1, description: "Wetness: water laid per stroke, 0.2 a damp brush .. 1 a dripping one." },
@@ -8974,7 +8974,7 @@ var IMPASTO_BRUSH = {
8974
8974
  properties: {
8975
8975
  tool: {
8976
8976
  type: "string",
8977
- enum: [..._chunk4T47Z4J3cjs.IMPASTO_TOOLS],
8977
+ enum: [..._chunkQ2UYUWAZcjs.IMPASTO_TOOLS],
8978
8978
  description: "brush: thick paint with bristle ridges along the stroke; tube: blobs squeezed from the tube; knife: a palette knife that scrapes the relief flat and smears the paint; roller: a flat stippled band; gloop: a thick, glossy, rounded bead."
8979
8979
  },
8980
8980
  thickness: { type: "number", minimum: 0, maximum: 1, description: "How far the paint stands up." },
@@ -9001,8 +9001,8 @@ var PARTICLE_BRUSH = {
9001
9001
  type: "object",
9002
9002
  description: "Particle engine settings (procedural brushes). Missing fields keep their current values.",
9003
9003
  properties: {
9004
- kind: { type: "string", enum: [..._chunk4T47Z4J3cjs.PARTICLE_KINDS], description: "string: strands of masses on springs dragged behind the pen (hair, fur, wet string); spring: particles on springs to the pen, overshooting and wobbling; orbit: particles circling the pen (curls); flow: particles thrown off the pen into a swirling flow until they fade." },
9005
- render: { type: "string", enum: [..._chunk4T47Z4J3cjs.PARTICLE_RENDERS], description: "dot: a mark at each step; line: each particle draws a continuous line; sequence: beads spaced along each path." },
9004
+ kind: { type: "string", enum: [..._chunkQ2UYUWAZcjs.PARTICLE_KINDS], description: "string: strands of masses on springs dragged behind the pen (hair, fur, wet string); spring: particles on springs to the pen, overshooting and wobbling; orbit: particles circling the pen (curls); flow: particles thrown off the pen into a swirling flow until they fade." },
9005
+ render: { type: "string", enum: [..._chunkQ2UYUWAZcjs.PARTICLE_RENDERS], description: "dot: a mark at each step; line: each particle draws a continuous line; sequence: beads spaced along each path." },
9006
9006
  count: { type: "integer", minimum: 1, maximum: 64, description: "Particles (flow: how many are thrown per tip of travel)." },
9007
9007
  size: { type: "number", minimum: 0, maximum: 1, description: "Mark size as a fraction of the tip size." },
9008
9008
  spread: { type: "number", minimum: 0, maximum: 1, description: "How far apart the particles start, as a fraction of the tip size." },
@@ -9032,7 +9032,7 @@ var STICKER_BRUSH = {
9032
9032
  type: "object",
9033
9033
  description: "Sticker engine settings: stamps sprayed along the stroke as editable stickers. Missing fields keep their current values.",
9034
9034
  properties: {
9035
- stamps: { type: "array", minItems: 1, maxItems: 9, items: { type: "string", enum: [..._chunk4T47Z4J3cjs.STAMP_KINDS], description: "A stamp." }, description: "The stamps to spray (one picked at random per sticker)." },
9035
+ stamps: { type: "array", minItems: 1, maxItems: 9, items: { type: "string", enum: [..._chunkQ2UYUWAZcjs.STAMP_KINDS], description: "A stamp." }, description: "The stamps to spray (one picked at random per sticker)." },
9036
9036
  density: { type: "number", minimum: 0, maximum: 1, description: "How closely stickers follow each other: about density \xD7 4 stickers per tip diameter of travel (0.25 \u2248 one per diameter, 1 \u2248 four). Default 0.4." },
9037
9037
  sizeJitter: { type: "number", minimum: 0, maximum: 1, description: "Random size change." },
9038
9038
  rotationJitter: { type: "number", minimum: 0, maximum: 1, description: "Random turn as a fraction of \xB1180\xB0." },
@@ -9043,16 +9043,16 @@ var STICKER_BRUSH = {
9043
9043
  };
9044
9044
  var BRUSH_FIELDS = {
9045
9045
  name: { type: "string", minLength: 1, maxLength: 80, description: "Display name." },
9046
- category: { type: "string", enum: [..._chunk4T47Z4J3cjs.PAINT_BRUSH_CATEGORIES], description: "Library category." },
9046
+ category: { type: "string", enum: [..._chunkQ2UYUWAZcjs.PAINT_BRUSH_CATEGORIES], description: "Library category." },
9047
9047
  engine: {
9048
9048
  type: "string",
9049
- enum: [..._chunk4T47Z4J3cjs.PAINT_BRUSH_ENGINES],
9049
+ enum: [..._chunkQ2UYUWAZcjs.PAINT_BRUSH_ENGINES],
9050
9050
  description: "dab: paints dabs (with behavior.pickup or gradient paint it paints dab by dab, lifting and mixing paint); eraser: removes paint; mixer: the Mixer Brush (a reservoir plus picked-up paint); blender: mixes the colours under and near the tip; smudge: drags paint along the stroke; wet: watercolour, gouache, oil and the wet tools on a simulated wet layer (see wet); impasto: thick paint with relief (see impasto); particle: procedural particle brushes (see particle); bristle: a tuft of bristles that bend and splay (see bristle); sticker: sprays editable sticker stamps (see sticker)."
9051
9051
  },
9052
9052
  tip: TIP,
9053
9053
  grain: { type: "number", minimum: 0, maximum: 1, description: "Paper grain response: 0 ignores the grain, 1 catches only its peaks at light pressure (pencil, pastel, charcoal). Multiplied by the paper depth." },
9054
9054
  pressureSmoothing: { type: "number", minimum: 0, maximum: 0.95, description: "Pressure smoothing, separate from the tip position smoothing." },
9055
- rotation: { type: "string", enum: [..._chunk4T47Z4J3cjs.BRUSH_ROTATIONS], description: "What turns the tip: fixed (tip.angle), stroke (follows the direction of travel) or barrel (the pen barrel rotation, twist)." },
9055
+ rotation: { type: "string", enum: [..._chunkQ2UYUWAZcjs.BRUSH_ROTATIONS], description: "What turns the tip: fixed (tip.angle), stroke (follows the direction of travel) or barrel (the pen barrel rotation, twist)." },
9056
9056
  dynamics: DYNAMICS,
9057
9057
  mixer: MIXER,
9058
9058
  loadsColor: { type: "boolean", description: "Mixer engine: load the colour each stroke (false for a mixer that only moves paint)." },
@@ -9104,7 +9104,7 @@ function brushSummary(b) {
9104
9104
  size: b.tip.size,
9105
9105
  grain: b.grain,
9106
9106
  rotation: b.rotation,
9107
- wetCapable: _chunk4T47Z4J3cjs.isWetCapable.call(void 0, b),
9107
+ wetCapable: _chunkQ2UYUWAZcjs.isWetCapable.call(void 0, b),
9108
9108
  pickup: b.behavior.pickup,
9109
9109
  dirty: b.behavior.dirty,
9110
9110
  multicolor: b.behavior.multicolor.mode,
@@ -9213,8 +9213,8 @@ function createPaintEditorToolProvider(controller, options = {}) {
9213
9213
  inputSchema: EMPTY3,
9214
9214
  annotations: { title: "List papers", ...READ6 },
9215
9215
  handler: () => ({
9216
- papers: _chunk4T47Z4J3cjs.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 })),
9217
- families: [..._chunk4T47Z4J3cjs.PAPER_FAMILIES],
9216
+ papers: _chunkQ2UYUWAZcjs.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 })),
9217
+ families: [..._chunkQ2UYUWAZcjs.PAPER_FAMILIES],
9218
9218
  patterns: [..._chunkPQ3H2AANcjs.GRAIN_PATTERNS]
9219
9219
  })
9220
9220
  });
@@ -9431,7 +9431,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
9431
9431
  add({
9432
9432
  name: "list_brushes",
9433
9433
  title: "List brushes",
9434
- description: "Lists the brush library: built-in dry media (pencils, pastels, charcoal, airbrush, marker, ink, erasers), paint brushes (dirty round, multi-colour flat, palette dabber), blending tools (blender, smudge, pigment smudge, Mixer Brush), light paint (category light: glow gel, neon marker, light airbrush, spark trail, glow wash; light is the amount they lay) and saved user brushes, with id, name, category, engine, size, grain response, rotation mode, whether it can pick up paint (wetCapable), its pick-up ratio, dirty and multi-colour mode, plus the active brush id.",
9434
+ description: "Lists the brush library: built-in dry media (pencils, pastels, charcoal, airbrush, marker, ink, erasers), paint brushes (dirty round, multi-colour flat, palette dabber), blending tools (blender, smudge, pigment smudge, Mixer Brush), light paint (category light: glow gel, neon marker, light airbrush, spark trail, glow wash, highlighter; light is the amount they lay) and saved user brushes, with id, name, category, engine, size, grain response, rotation mode, whether it can pick up paint (wetCapable), its pick-up ratio, dirty and multi-colour mode, plus the active brush id.",
9435
9435
  inputSchema: EMPTY3,
9436
9436
  annotations: { title: "List brushes", ...READ6 },
9437
9437
  handler: () => {
@@ -9447,10 +9447,10 @@ function createPaintEditorToolProvider(controller, options = {}) {
9447
9447
  annotations: { title: "Get a brush", ...READ6 },
9448
9448
  handler: ({ id }) => {
9449
9449
  const st = c.getState();
9450
- if (id === void 0) return { ..._chunk4T47Z4J3cjs.brushToJSON.call(void 0, st.brush), strokePaint: _nullishCoalesce(st.brush.paint, () => ( st.paint)) };
9450
+ if (id === void 0) return { ..._chunkQ2UYUWAZcjs.brushToJSON.call(void 0, st.brush), strokePaint: _nullishCoalesce(st.brush.paint, () => ( st.paint)) };
9451
9451
  const b = c.getBrush(id);
9452
9452
  if (!b) throw new Error(`Unknown brush "${id}". Call list_brushes for the ids.`);
9453
- return { ..._chunk4T47Z4J3cjs.brushToJSON.call(void 0, b), builtin: Boolean(b.builtin), strokePaint: _nullishCoalesce(b.paint, () => ( st.paint)) };
9453
+ return { ..._chunkQ2UYUWAZcjs.brushToJSON.call(void 0, b), builtin: Boolean(b.builtin), strokePaint: _nullishCoalesce(b.paint, () => ( st.paint)) };
9454
9454
  }
9455
9455
  });
9456
9456
  add({
@@ -9459,7 +9459,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
9459
9459
  description: "Chooses the active brush (id) and / or changes its settings; strokes without a brush use it. Editor state, not an undo step. Changes stay on the active brush until save_brush stores them. Returns the active brush.",
9460
9460
  inputSchema: { type: "object", properties: { id: { type: "string", description: "Brush id from list_brushes to start from." }, ...BRUSH_FIELDS }, additionalProperties: false },
9461
9461
  annotations: { title: "Set the brush", ...SET4 },
9462
- handler: (a) => _chunk4T47Z4J3cjs.brushToJSON.call(void 0, c.setBrush(a))
9462
+ handler: (a) => _chunkQ2UYUWAZcjs.brushToJSON.call(void 0, c.setBrush(a))
9463
9463
  });
9464
9464
  add({
9465
9465
  name: "save_brush",
@@ -9475,7 +9475,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
9475
9475
  additionalProperties: false
9476
9476
  },
9477
9477
  annotations: { title: "Save a brush", ...SET4 },
9478
- handler: ({ id, name }) => _chunk4T47Z4J3cjs.brushToJSON.call(void 0, c.saveBrush({ id, name }))
9478
+ handler: ({ id, name }) => _chunkQ2UYUWAZcjs.brushToJSON.call(void 0, c.saveBrush({ id, name }))
9479
9479
  });
9480
9480
  add({
9481
9481
  name: "remove_brush",
@@ -11256,4 +11256,4 @@ function createPaintEditorDocument(controller, options = {}) {
11256
11256
 
11257
11257
 
11258
11258
 
11259
- exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunkOLNIPTB3cjs.BLEND_MODES; exports.BRUSH_ID = _chunk4T47Z4J3cjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunk4T47Z4J3cjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunk4T47Z4J3cjs.BUILTIN_BRUSHES; exports.BristleStroke = _chunk4T47Z4J3cjs.BristleStroke; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunk4T47Z4J3cjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunk4T47Z4J3cjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunk4T47Z4J3cjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunk4T47Z4J3cjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkVMROIWLLcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunk4T47Z4J3cjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHT = _chunk4T47Z4J3cjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunk4T47Z4J3cjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_PAINT_GRADIENT = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunk4T47Z4J3cjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunk4T47Z4J3cjs.DEFAULT_PARTICLE; exports.DEFAULT_STICKER = _chunk4T47Z4J3cjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunk4T47Z4J3cjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkVMROIWLLcjs.DEFAULT_WET_PARAMS; exports.DryStroke = _chunk4T47Z4J3cjs.DryStroke; exports.EFFECT_MAP_REPEATS = _chunk4T47Z4J3cjs.EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = _chunk4T47Z4J3cjs.EFFECT_STRIP_HEIGHT; exports.GPU_LEAD = GPU_LEAD; exports.GRAIN_PATTERNS = _chunkPQ3H2AANcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPQ3H2AANcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunk7PT4RJL5cjs.HARMONY_KINDS; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunk4T47Z4J3cjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunk4T47Z4J3cjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LIVE_STROKE_ENGINES = LIVE_STROKE_ENGINES; exports.LitCache = LitCache; exports.MAX_BRUSH_SIZE = _chunkPQ3H2AANcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; 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 = _chunk4T47Z4J3cjs.MULTI_COLOR_MODES; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunkOLNIPTB3cjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunk4T47Z4J3cjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunk4T47Z4J3cjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkPQ3H2AANcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkPQ3H2AANcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkPQ3H2AANcjs.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 = _chunk4T47Z4J3cjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunk4T47Z4J3cjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunk4T47Z4J3cjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunk4T47Z4J3cjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkPQ3H2AANcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkPQ3H2AANcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = PaintWetLayers; exports.PaperGrain = _chunkPQ3H2AANcjs.PaperGrain; exports.ParticleStroke = _chunk4T47Z4J3cjs.ParticleStroke; exports.PenDabWalker = _chunk4T47Z4J3cjs.PenDabWalker; exports.PenSmoother = _chunk4T47Z4J3cjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunk4T47Z4J3cjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerSpray = _chunk4T47Z4J3cjs.StickerSpray; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunkPQ3H2AANcjs.TileableNoise; exports.WET_FLOW_KINDS = _chunkVMROIWLLcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunk4T47Z4J3cjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkVMROIWLLcjs.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 = _chunk4T47Z4J3cjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = WetStrokeDriver; exports.addPaintGradientStop = _chunkPQ3H2AANcjs.addPaintGradientStop; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.brushEngineControls = brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunk4T47Z4J3cjs.brushTakesPaint; exports.brushToJSON = _chunk4T47Z4J3cjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clonePaper = _chunk4T47Z4J3cjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.contactSheet = contactSheet; exports.createPaintCompositor = createPaintCompositor; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintLayer = createPaintLayer; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = _chunk4T47Z4J3cjs.drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.effectDabField = _chunk4T47Z4J3cjs.effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = _chunk4T47Z4J3cjs.effectPaintKey; exports.effectPaintSize = _chunk4T47Z4J3cjs.effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyThickChannels = emptyThickChannels; exports.fitZoom = fitZoom; exports.grainCatch = _chunkPQ3H2AANcjs.grainCatch; exports.grainHeights = _chunkPQ3H2AANcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hash2 = _chunkPQ3H2AANcjs.hash2; exports.hexToPaintRgb = _chunkPQ3H2AANcjs.hexToPaintRgb; exports.hexToRgb8 = _chunk4T47Z4J3cjs.hexToRgb8; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunk7PT4RJL5cjs.hueToWheel; exports.invertAffine = invertAffine; exports.isBlendMode = _chunkOLNIPTB3cjs.isBlendMode; exports.isGradientPaint = _chunkPQ3H2AANcjs.isGradientPaint; exports.isPaintEffectPaint = _chunk4T47Z4J3cjs.isPaintEffectPaint; exports.isPainterlyBlendMode = _chunkOLNIPTB3cjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunk4T47Z4J3cjs.isWetBrush; exports.isWetCapable = _chunk4T47Z4J3cjs.isWetCapable; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.mapPenPoint = mapPenPoint; exports.mix32 = _chunkPQ3H2AANcjs.mix32; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunk4T47Z4J3cjs.mixerTip; exports.multiColorForDab = multiColorForDab; exports.multiColorGradient = multiColorGradient; exports.multiColorPalette = multiColorPalette; exports.multiColorSliders = multiColorSliders; exports.multiColorToPaint = _chunk4T47Z4J3cjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunk4T47Z4J3cjs.normalizeBehavior; exports.normalizeBristle = _chunk4T47Z4J3cjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunk4T47Z4J3cjs.normalizeDynamics; exports.normalizeFlow = _chunkVMROIWLLcjs.normalizeFlow; exports.normalizeHexColor = _chunkPQ3H2AANcjs.normalizeHexColor; exports.normalizeImpasto = _chunk4T47Z4J3cjs.normalizeImpasto; exports.normalizeLight = _chunk4T47Z4J3cjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunk4T47Z4J3cjs.normalizeMultiColor; exports.normalizePaintBrush = _chunk4T47Z4J3cjs.normalizePaintBrush; exports.normalizePaper = _chunk4T47Z4J3cjs.normalizePaper; exports.normalizeParticle = _chunk4T47Z4J3cjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunk4T47Z4J3cjs.normalizeStickerSettings; exports.normalizeStickerUpdate = _chunk4T47Z4J3cjs.normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunk4T47Z4J3cjs.normalizeWetBrush; exports.normalizeWetParams = _chunkVMROIWLLcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintGradientMappingFor = _chunkPQ3H2AANcjs.paintGradientMappingFor; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintSourceColor = _chunkPQ3H2AANcjs.paintSourceColor; exports.paintSourceCss = _chunkPQ3H2AANcjs.paintSourceCss; exports.paintToMultiColor = _chunk4T47Z4J3cjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunk4T47Z4J3cjs.paperPreset; exports.parseBrushLibrary = _chunk4T47Z4J3cjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkPQ3H2AANcjs.parsePaintSource; exports.patchBrushValue = patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunk4T47Z4J3cjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.quickStencil = quickStencil; exports.rand01 = _chunkPQ3H2AANcjs.rand01; exports.randSigned = _chunkPQ3H2AANcjs.randSigned; exports.readEffectStrokeMap = _chunk4T47Z4J3cjs.readEffectStrokeMap; exports.readPaintEffectPaint = _chunk4T47Z4J3cjs.readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkPQ3H2AANcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkPQ3H2AANcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunk4T47Z4J3cjs.renderPaper; exports.renderStickers = _chunk4T47Z4J3cjs.renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.resolvePaintGradient = _chunkPQ3H2AANcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkPQ3H2AANcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleEffectAt = _chunk4T47Z4J3cjs.sampleEffectAt; exports.sampleEffectField = _chunk4T47Z4J3cjs.sampleEffectField; exports.samplePressure = samplePressure; exports.scalePaintGradient = _chunkPQ3H2AANcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunkPQ3H2AANcjs.seedFromString; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.solidPaint = _chunkPQ3H2AANcjs.solidPaint; exports.stampCoverage = _chunk4T47Z4J3cjs.stampCoverage; exports.standardBlendMode = _chunkOLNIPTB3cjs.standardBlendMode; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = _chunk4T47Z4J3cjs.stickerAt; exports.stickerRect = _chunk4T47Z4J3cjs.stickerRect; exports.stickerSurface = _chunk4T47Z4J3cjs.stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokeSchedule = strokeSchedule; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunk4T47Z4J3cjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunk4T47Z4J3cjs.toStrokePoint; exports.toggleStamp = toggleStamp; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkPQ3H2AANcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunk4T47Z4J3cjs.usesPaintExchange; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = wetPaperInput; exports.wetPigmentOf = wetPigmentOf; exports.wetSupport = _chunkVMROIWLLcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunk7PT4RJL5cjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback;
11259
+ exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunkOLNIPTB3cjs.BLEND_MODES; exports.BRUSH_ID = _chunkQ2UYUWAZcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkQ2UYUWAZcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkQ2UYUWAZcjs.BUILTIN_BRUSHES; exports.BristleStroke = _chunkQ2UYUWAZcjs.BristleStroke; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkQ2UYUWAZcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkQ2UYUWAZcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkQ2UYUWAZcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkQ2UYUWAZcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkVMROIWLLcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunkQ2UYUWAZcjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHT = _chunkQ2UYUWAZcjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunkQ2UYUWAZcjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_PAINT_GRADIENT = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = _chunkQ2UYUWAZcjs.DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkQ2UYUWAZcjs.DEFAULT_PARTICLE; exports.DEFAULT_STICKER = _chunkQ2UYUWAZcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunkQ2UYUWAZcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkVMROIWLLcjs.DEFAULT_WET_PARAMS; exports.DryStroke = _chunkQ2UYUWAZcjs.DryStroke; exports.EFFECT_MAP_REPEATS = _chunkQ2UYUWAZcjs.EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = _chunkQ2UYUWAZcjs.EFFECT_STRIP_HEIGHT; exports.GPU_LEAD = GPU_LEAD; exports.GRAIN_PATTERNS = _chunkPQ3H2AANcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPQ3H2AANcjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunk7PT4RJL5cjs.HARMONY_KINDS; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = _chunkQ2UYUWAZcjs.IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkQ2UYUWAZcjs.IMPASTO_TOOLS; exports.IMPASTO_TOOL_LABELS = IMPASTO_TOOL_LABELS; exports.LIGHT_SLIDERS = LIGHT_SLIDERS; exports.LIVE_STROKE_ENGINES = LIVE_STROKE_ENGINES; exports.LitCache = LitCache; exports.MAX_BRUSH_SIZE = _chunkPQ3H2AANcjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; 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 = _chunkQ2UYUWAZcjs.MULTI_COLOR_MODES; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunkOLNIPTB3cjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkQ2UYUWAZcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkQ2UYUWAZcjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkPQ3H2AANcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkPQ3H2AANcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkPQ3H2AANcjs.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 = _chunkQ2UYUWAZcjs.PAPER_FAMILIES; exports.PAPER_LIBRARY = _chunkQ2UYUWAZcjs.PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkQ2UYUWAZcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkQ2UYUWAZcjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PaintCanvasPresenter = PaintCanvasPresenter; exports.PaintDabStroke = PaintDabStroke; exports.PaintDirector = PaintDirector; exports.PaintDocumentError = PaintDocumentError; exports.PaintEditorController = PaintEditorController; exports.PaintEditorError = PaintEditorError; exports.PaintEffectsRenderer = PaintEffectsRenderer; exports.PaintGesture = PaintGesture; exports.PaintGradientSampler = _chunkPQ3H2AANcjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkPQ3H2AANcjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = PaintWetLayers; exports.PaperGrain = _chunkPQ3H2AANcjs.PaperGrain; exports.ParticleStroke = _chunkQ2UYUWAZcjs.ParticleStroke; exports.PenDabWalker = _chunkQ2UYUWAZcjs.PenDabWalker; exports.PenSmoother = _chunkQ2UYUWAZcjs.PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkQ2UYUWAZcjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerSpray = _chunkQ2UYUWAZcjs.StickerSpray; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunkPQ3H2AANcjs.TileableNoise; exports.WET_FLOW_KINDS = _chunkVMROIWLLcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkQ2UYUWAZcjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkVMROIWLLcjs.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 = _chunkQ2UYUWAZcjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = WetStrokeDriver; exports.addPaintGradientStop = _chunkPQ3H2AANcjs.addPaintGradientStop; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.brushEngineControls = brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkQ2UYUWAZcjs.brushTakesPaint; exports.brushToJSON = _chunkQ2UYUWAZcjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clonePaper = _chunkQ2UYUWAZcjs.clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.contactSheet = contactSheet; exports.createPaintCompositor = createPaintCompositor; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintLayer = createPaintLayer; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = _chunkQ2UYUWAZcjs.drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.effectDabField = _chunkQ2UYUWAZcjs.effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = _chunkQ2UYUWAZcjs.effectPaintKey; exports.effectPaintSize = _chunkQ2UYUWAZcjs.effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyThickChannels = emptyThickChannels; exports.fitZoom = fitZoom; exports.grainCatch = _chunkPQ3H2AANcjs.grainCatch; exports.grainHeights = _chunkPQ3H2AANcjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hash2 = _chunkPQ3H2AANcjs.hash2; exports.hexToPaintRgb = _chunkPQ3H2AANcjs.hexToPaintRgb; exports.hexToRgb8 = _chunkQ2UYUWAZcjs.hexToRgb8; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunk7PT4RJL5cjs.hueToWheel; exports.invertAffine = invertAffine; exports.isBlendMode = _chunkOLNIPTB3cjs.isBlendMode; exports.isGradientPaint = _chunkPQ3H2AANcjs.isGradientPaint; exports.isPaintEffectPaint = _chunkQ2UYUWAZcjs.isPaintEffectPaint; exports.isPainterlyBlendMode = _chunkOLNIPTB3cjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkQ2UYUWAZcjs.isWetBrush; exports.isWetCapable = _chunkQ2UYUWAZcjs.isWetCapable; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.mapPenPoint = mapPenPoint; exports.mix32 = _chunkPQ3H2AANcjs.mix32; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = _chunkQ2UYUWAZcjs.mixerTip; exports.multiColorForDab = multiColorForDab; exports.multiColorGradient = multiColorGradient; exports.multiColorPalette = multiColorPalette; exports.multiColorSliders = multiColorSliders; exports.multiColorToPaint = _chunkQ2UYUWAZcjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkQ2UYUWAZcjs.normalizeBehavior; exports.normalizeBristle = _chunkQ2UYUWAZcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkQ2UYUWAZcjs.normalizeDynamics; exports.normalizeFlow = _chunkVMROIWLLcjs.normalizeFlow; exports.normalizeHexColor = _chunkPQ3H2AANcjs.normalizeHexColor; exports.normalizeImpasto = _chunkQ2UYUWAZcjs.normalizeImpasto; exports.normalizeLight = _chunkQ2UYUWAZcjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunkQ2UYUWAZcjs.normalizeMultiColor; exports.normalizePaintBrush = _chunkQ2UYUWAZcjs.normalizePaintBrush; exports.normalizePaper = _chunkQ2UYUWAZcjs.normalizePaper; exports.normalizeParticle = _chunkQ2UYUWAZcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkQ2UYUWAZcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = _chunkQ2UYUWAZcjs.normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunkQ2UYUWAZcjs.normalizeWetBrush; exports.normalizeWetParams = _chunkVMROIWLLcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintGradientMappingFor = _chunkPQ3H2AANcjs.paintGradientMappingFor; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintSourceColor = _chunkPQ3H2AANcjs.paintSourceColor; exports.paintSourceCss = _chunkPQ3H2AANcjs.paintSourceCss; exports.paintToMultiColor = _chunkQ2UYUWAZcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = _chunkQ2UYUWAZcjs.paperPreset; exports.parseBrushLibrary = _chunkQ2UYUWAZcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkPQ3H2AANcjs.parsePaintSource; exports.patchBrushValue = patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = _chunkQ2UYUWAZcjs.penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.quickStencil = quickStencil; exports.rand01 = _chunkPQ3H2AANcjs.rand01; exports.randSigned = _chunkPQ3H2AANcjs.randSigned; exports.readEffectStrokeMap = _chunkQ2UYUWAZcjs.readEffectStrokeMap; exports.readPaintEffectPaint = _chunkQ2UYUWAZcjs.readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkPQ3H2AANcjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkPQ3H2AANcjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = _chunkQ2UYUWAZcjs.renderPaper; exports.renderStickers = _chunkQ2UYUWAZcjs.renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.resolvePaintGradient = _chunkPQ3H2AANcjs.resolvePaintGradient; exports.reversePaintGradient = _chunkPQ3H2AANcjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleEffectAt = _chunkQ2UYUWAZcjs.sampleEffectAt; exports.sampleEffectField = _chunkQ2UYUWAZcjs.sampleEffectField; exports.samplePressure = samplePressure; exports.scalePaintGradient = _chunkPQ3H2AANcjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunkPQ3H2AANcjs.seedFromString; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.solidPaint = _chunkPQ3H2AANcjs.solidPaint; exports.stampCoverage = _chunkQ2UYUWAZcjs.stampCoverage; exports.standardBlendMode = _chunkOLNIPTB3cjs.standardBlendMode; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = _chunkQ2UYUWAZcjs.stickerAt; exports.stickerRect = _chunkQ2UYUWAZcjs.stickerRect; exports.stickerSurface = _chunkQ2UYUWAZcjs.stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokeSchedule = strokeSchedule; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = _chunkQ2UYUWAZcjs.tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = _chunkQ2UYUWAZcjs.toStrokePoint; exports.toggleStamp = toggleStamp; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkPQ3H2AANcjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkQ2UYUWAZcjs.usesPaintExchange; exports.variationAffine = variationAffine; exports.varyStroke = varyStroke; exports.viewCssTransform = viewCssTransform; exports.viewMatrix = viewMatrix; exports.viewPenToDocument = viewPenToDocument; exports.wetEngineSummary = wetEngineSummary; exports.wetPaperInput = wetPaperInput; exports.wetPigmentOf = wetPigmentOf; exports.wetSupport = _chunkVMROIWLLcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunk7PT4RJL5cjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback;