@pixerate/editor 0.263.0 → 0.264.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 (50) hide show
  1. package/dist/animation-editor/index.cjs +59 -59
  2. package/dist/animation-editor/index.js +3 -3
  3. package/dist/brushes/index.cjs +155 -68
  4. package/dist/brushes/index.d.cts +3 -3
  5. package/dist/brushes/index.d.ts +3 -3
  6. package/dist/brushes/index.js +111 -24
  7. package/dist/brushes/library.d.cts +2 -0
  8. package/dist/brushes/library.d.ts +2 -0
  9. package/dist/brushes/profiles.d.cts +21 -2
  10. package/dist/brushes/profiles.d.ts +21 -2
  11. package/dist/brushes/ui.d.cts +57 -4
  12. package/dist/brushes/ui.d.ts +57 -4
  13. package/dist/{brushstrokeRender-S5DABANG.js → brushstrokeRender-3MOI7PH4.js} +2 -2
  14. package/dist/{brushstrokeRender-2GBME4XD.cjs → brushstrokeRender-SMMPIJF2.cjs} +12 -12
  15. package/dist/canvas/index.cjs +13 -13
  16. package/dist/canvas/index.js +1 -1
  17. package/dist/{chunk-CNLO6E2K.js → chunk-4OJC4MCD.js} +8 -7
  18. package/dist/{chunk-ZBACQHW3.cjs → chunk-BY5EBP26.cjs} +27 -6
  19. package/dist/{chunk-JGI4PZWO.js → chunk-CECCP2V7.js} +1 -1
  20. package/dist/{chunk-P5343XZO.js → chunk-EE7SAYBF.js} +23 -2
  21. package/dist/{chunk-TILEUVRO.cjs → chunk-F3KKR6DD.cjs} +35 -34
  22. package/dist/{chunk-TIHW7CUY.cjs → chunk-FQC5TDB6.cjs} +35 -35
  23. package/dist/{chunk-4E6BGHWN.cjs → chunk-G5ADO47G.cjs} +1 -1
  24. package/dist/{chunk-QW7LKWKE.js → chunk-HAUDEVMC.js} +1 -1
  25. package/dist/{chunk-LG6MEEV7.js → chunk-JEML4FSA.js} +1 -1
  26. package/dist/{chunk-XQW6R7VW.cjs → chunk-KXNZNOEF.cjs} +86 -86
  27. package/dist/{chunk-6XX7E7O2.js → chunk-ROBSFJ6F.js} +1 -1
  28. package/dist/{chunk-LWHUU6A6.cjs → chunk-USJX5SW4.cjs} +10 -10
  29. package/dist/{chunk-73QFSPDG.cjs → chunk-V7MJ4HIN.cjs} +23 -23
  30. package/dist/{chunk-34HIZXFX.js → chunk-WWI6FLH2.js} +1 -1
  31. package/dist/image-editor/controller.d.cts +3 -0
  32. package/dist/image-editor/controller.d.ts +3 -0
  33. package/dist/image-editor/index.cjs +789 -786
  34. package/dist/image-editor/index.js +7 -4
  35. package/dist/image-editor/types.d.cts +7 -0
  36. package/dist/image-editor/types.d.ts +7 -0
  37. package/dist/paint-editor/brush-library-tools.d.cts +8 -1
  38. package/dist/paint-editor/brush-library-tools.d.ts +8 -1
  39. package/dist/paint-editor/index.cjs +84 -80
  40. package/dist/paint-editor/index.d.cts +1 -1
  41. package/dist/paint-editor/index.d.ts +1 -1
  42. package/dist/paint-editor/index.js +12 -8
  43. package/dist/vector/controller.d.cts +13 -0
  44. package/dist/vector/controller.d.ts +13 -0
  45. package/dist/vector/index.cjs +1215 -1205
  46. package/dist/vector/index.js +16 -6
  47. package/package.json +1 -1
  48. package/skills/pixerate-brushes/SKILL.md +11 -3
  49. package/skills/pixerate-brushes-design/SKILL.md +1 -0
  50. package/skills/pixerate-vector/SKILL.md +1 -1
@@ -11,7 +11,7 @@ var _chunkXORJ7UZOcjs = require('../chunk-XORJ7UZO.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunkTILEUVROcjs = require('../chunk-TILEUVRO.cjs');
14
+ var _chunkF3KKR6DDcjs = require('../chunk-F3KKR6DD.cjs');
15
15
 
16
16
 
17
17
 
@@ -30,7 +30,7 @@ var _chunk7TD63DZPcjs = require('../chunk-7TD63DZP.cjs');
30
30
 
31
31
 
32
32
 
33
- var _chunkXQW6R7VWcjs = require('../chunk-XQW6R7VW.cjs');
33
+ var _chunkKXNZNOEFcjs = require('../chunk-KXNZNOEF.cjs');
34
34
  require('../chunk-3ZRNK3RO.cjs');
35
35
 
36
36
 
@@ -88,7 +88,7 @@ var _chunkJLWLX52Lcjs = require('../chunk-JLWLX52L.cjs');
88
88
 
89
89
 
90
90
  var _chunkK7ENM55Pcjs = require('../chunk-K7ENM55P.cjs');
91
- require('../chunk-LWHUU6A6.cjs');
91
+ require('../chunk-USJX5SW4.cjs');
92
92
 
93
93
 
94
94
 
@@ -143,7 +143,7 @@ require('../chunk-LWHUU6A6.cjs');
143
143
 
144
144
 
145
145
 
146
- var _chunkZBACQHW3cjs = require('../chunk-ZBACQHW3.cjs');
146
+ var _chunkBY5EBP26cjs = require('../chunk-BY5EBP26.cjs');
147
147
 
148
148
 
149
149
 
@@ -1738,7 +1738,7 @@ function shadowToLight(shadow) {
1738
1738
  return new (0, _chunk474IQG74cjs.TiledSurface)(1, tiles, 0);
1739
1739
  }
1740
1740
  function lightTwinBrush(brush) {
1741
- return _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0,
1741
+ return _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0,
1742
1742
  {
1743
1743
  tip: { ...brush.tip, blend: "normal", pressureOpacity: brush.tip.pressureOpacity || brush.light.pressure },
1744
1744
  behavior: { ...brush.behavior, mixing: "rgb" },
@@ -3002,7 +3002,7 @@ var PaintStrokeSession = (_class12 = class _PaintStrokeSession {
3002
3002
  } else if (init.thick) {
3003
3003
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
3004
3004
  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 });
3005
- } else if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunkZBACQHW3cjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
3005
+ } else if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunkBY5EBP26cjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
3006
3006
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
3007
3007
  this.wet = new PaintDabStroke(brush, {
3008
3008
  target: this.tileTarget(),
@@ -3242,7 +3242,7 @@ function brushLoadForStroke(brush, current, color) {
3242
3242
  if (brush.engine === "mixer") return mixerLoadForStroke(brush, current, color);
3243
3243
  if (brush.engine === "impasto") return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
3244
3244
  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 } : _chunkFQPUF2W2cjs.EMPTY_MIXER_LOAD;
3245
- if (_chunkZBACQHW3cjs.usesPaintExchange.call(void 0, brush)) return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
3245
+ if (_chunkBY5EBP26cjs.usesPaintExchange.call(void 0, brush)) return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
3246
3246
  return _chunkFQPUF2W2cjs.EMPTY_MIXER_LOAD;
3247
3247
  }
3248
3248
 
@@ -3504,15 +3504,15 @@ function readLoad(raw) {
3504
3504
  function readStrokeBrush(raw) {
3505
3505
  if (raw && typeof raw === "object" && "kind" in raw && !("engine" in raw)) {
3506
3506
  try {
3507
- return _chunkZBACQHW3cjs.resolveBrush.call(void 0, _chunkZBACQHW3cjs.normalizeBrushSpec.call(void 0, raw));
3507
+ return _chunkBY5EBP26cjs.resolveBrush.call(void 0, _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, raw));
3508
3508
  } catch (e5) {
3509
3509
  }
3510
3510
  }
3511
- return _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, _nullishCoalesce(raw, () => ( {})));
3511
+ return _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, _nullishCoalesce(raw, () => ( {})));
3512
3512
  }
3513
3513
  function strokeToJSON(stroke) {
3514
3514
  const { brush, ...rest } = stroke;
3515
- return { ...JSON.parse(JSON.stringify(rest)), brush: _chunkZBACQHW3cjs.migrateBrushV1.call(void 0, brush) };
3515
+ return { ...JSON.parse(JSON.stringify(rest)), brush: _chunkBY5EBP26cjs.migrateBrushV1.call(void 0, brush) };
3516
3516
  }
3517
3517
  function normalizeBrushStroke(raw) {
3518
3518
  if (!raw || typeof raw !== "object") return null;
@@ -3582,7 +3582,7 @@ function varyStroke(stroke, m, v) {
3582
3582
  if (ps !== 1) q.pressure = Math.min(1, Math.max(0, (_nullishCoalesce(p.pressure, () => ( 1))) * ps));
3583
3583
  return q;
3584
3584
  });
3585
- const brush = s !== 1 ? _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ...stroke.brush, tip: { ...stroke.brush.tip, size: stroke.brush.tip.size * s } }) : stroke.brush;
3585
+ const brush = s !== 1 ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...stroke.brush, tip: { ...stroke.brush.tip, size: stroke.brush.tip.size * s } }) : stroke.brush;
3586
3586
  const out = { ...stroke, brush, points };
3587
3587
  if (_optionalChain([stroke, 'access', _120 => _120.paint, 'optionalAccess', _121 => _121.type]) === "gradient" && s !== 1) out.paint = _chunkFQPUF2W2cjs.scalePaintGradient.call(void 0, stroke.paint, s);
3588
3588
  if (_optionalChain([stroke, 'access', _122 => _122.paint, 'optionalAccess', _123 => _123.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))) } };
@@ -3732,11 +3732,11 @@ function header(state, options) {
3732
3732
  return out;
3733
3733
  }
3734
3734
  function serializePaintDocument(state, options = {}) {
3735
- const { layers, assets } = _chunkXQW6R7VWcjs.serializeLayers.call(void 0, state.layers);
3735
+ const { layers, assets } = _chunkKXNZNOEFcjs.serializeLayers.call(void 0, state.layers);
3736
3736
  return { ...header(state, options), layers, assets };
3737
3737
  }
3738
3738
  async function serializePaintDocumentExternal(state, store, options = {}) {
3739
- const { layers, assets } = await _chunkXQW6R7VWcjs.serializeLayersExternal.call(void 0, state.layers, store);
3739
+ const { layers, assets } = await _chunkKXNZNOEFcjs.serializeLayersExternal.call(void 0, state.layers, store);
3740
3740
  return { ...header(state, options), layers, assets };
3741
3741
  }
3742
3742
  function paintLayersOnly(layers, problems) {
@@ -3773,7 +3773,7 @@ function deserializePaintDocument(raw) {
3773
3773
  const canvas = normalizeCanvas({ width: r.width, height: r.height, dpi: _nullishCoalesce(r.dpi, () => ( void 0)) });
3774
3774
  const paper = normalizePaper(_nullishCoalesce(r.paper, () => ( {})));
3775
3775
  const assets = r.assets && typeof r.assets === "object" ? r.assets : {};
3776
- const layers = paintLayersOnly(_chunkXQW6R7VWcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
3776
+ const layers = paintLayersOnly(_chunkKXNZNOEFcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
3777
3777
  const wanted = typeof r.activeLayerId === "string" ? r.activeLayerId : null;
3778
3778
  const activeLayerId = wanted && _chunkPVJMTLPJcjs.findLayer.call(void 0, layers, wanted) ? wanted : _nullishCoalesce(_optionalChain([_chunkPVJMTLPJcjs.flattenLayers.call(void 0, layers), 'access', _137 => _137.filter, 'call', _138 => _138((l) => l.type === "pixel"), 'access', _139 => _139.pop, 'call', _140 => _140(), 'optionalAccess', _141 => _141.id]), () => ( null));
3779
3779
  const wetEvents = Array.isArray(r.wetEvents) ? r.wetEvents.filter((e) => e && typeof e === "object" && Number.isInteger(e.clock) && typeof e.kind === "string") : [];
@@ -3789,7 +3789,7 @@ async function deserializePaintDocumentAsync(raw, store) {
3789
3789
  if (!raw || typeof raw !== "object") throw new Error("Not a paint document: expected a JSON object.");
3790
3790
  const r = raw;
3791
3791
  const problems = [];
3792
- const assets = await _chunkXQW6R7VWcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
3792
+ const assets = await _chunkKXNZNOEFcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
3793
3793
  const loaded = deserializePaintDocument({ ...r, assets });
3794
3794
  return { ...loaded, problems: [...problems, ...loaded.problems] };
3795
3795
  }
@@ -4713,7 +4713,7 @@ function renderBrushThumbnail(brush, options) {
4713
4713
  const width = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.width, () => ( 160)))));
4714
4714
  const height = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.height, () => ( 48)))));
4715
4715
  const maxSize = height * 0.42;
4716
- const b = brush.tip.size > maxSize ? _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
4716
+ const b = brush.tip.size > maxSize ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
4717
4717
  const rgba = [...hexToRgb8(options.color), 255];
4718
4718
  let surface = _chunk474IQG74cjs.emptySurface.call(void 0, 4);
4719
4719
  if (b.engine === "eraser") {
@@ -4996,7 +4996,7 @@ var DEFAULT_SWATCHES = [
4996
4996
  // src/paint-editor/mixing-pad.ts
4997
4997
  var MIXING_PAD_WIDTH = 360;
4998
4998
  var MIXING_PAD_HEIGHT = 220;
4999
- var PAD_PAINT = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, {
4999
+ var PAD_PAINT = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5000
5000
  id: "pad-paint",
5001
5001
  name: "Pad paint",
5002
5002
  category: "mixer",
@@ -5004,7 +5004,7 @@ var PAD_PAINT = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, {
5004
5004
  tip: { size: 28, hardness: 0.75, spacing: 0.1, opacity: 1, flow: 0.7, pressureSize: false, pressureOpacity: false },
5005
5005
  mixer: { wet: 0.45, load: 1, mix: 0.4, loadEachStroke: true, cleanEachStroke: true, mixing: "pigment" }
5006
5006
  });
5007
- var PAD_KNIFE = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, {
5007
+ var PAD_KNIFE = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5008
5008
  id: "pad-knife",
5009
5009
  name: "Palette knife",
5010
5010
  category: "smudge",
@@ -5014,7 +5014,7 @@ var PAD_KNIFE = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, {
5014
5014
  // A knife drags streaks of paint and folds them into each other, mixing them as pigment.
5015
5015
  smudge: { strength: 0.6, length: 0.8, mixing: "pigment" }
5016
5016
  });
5017
- var PAD_BLOB = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, {
5017
+ var PAD_BLOB = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5018
5018
  id: "pad-blob",
5019
5019
  name: "Pad blob",
5020
5020
  category: "custom",
@@ -5036,7 +5036,7 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5036
5036
  }
5037
5037
  }
5038
5038
  let brush = options.tool === "knife" ? PAD_KNIFE : PAD_PAINT;
5039
- if (options.size !== void 0) brush = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: options.size } }, brush);
5039
+ if (options.size !== void 0) brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: options.size } }, brush);
5040
5040
  return this.run(brush, points, options.color);
5041
5041
  }
5042
5042
  /** Paints `points` with `brush` in `color` on the pad. */
@@ -5135,10 +5135,10 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5135
5135
  const off = used.length === 1 ? 0 : 0.45 * R;
5136
5136
  const x = Math.min(cx + R - r, Math.max(cx - R + r, cx + Math.cos(a) * off));
5137
5137
  const y = Math.min(cy + R - r, Math.max(cy - R + r, cy + Math.sin(a) * off));
5138
- const blob = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: Math.max(2, 2 * r) } }, PAD_BLOB);
5138
+ const blob = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: Math.max(2, 2 * r) } }, PAD_BLOB);
5139
5139
  this.run(blob, [{ x, y }], p.color.toLowerCase());
5140
5140
  });
5141
- const knife = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_KNIFE.tip, size: Math.max(12, R * 0.5) } }, PAD_KNIFE);
5141
+ const knife = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_KNIFE.tip, size: Math.max(12, R * 0.5) } }, PAD_KNIFE);
5142
5142
  for (let k = 0; k < passes; k++) {
5143
5143
  const stir = [];
5144
5144
  const turns = 1.6;
@@ -5153,7 +5153,7 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5153
5153
  paints2.map((p) => hexToRgb8(p.color).map((v) => v / 255)),
5154
5154
  paints2.map((p) => p.parts)
5155
5155
  );
5156
- const core = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
5156
+ const core = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
5157
5157
  const hex2 = "#" + mixed.map((v) => Math.round(v * 255).toString(16).padStart(2, "0")).join("");
5158
5158
  this.run(core, [{ x: cx, y: cy }], hex2);
5159
5159
  return { color: this.pick(cx, cy, 2), bounds };
@@ -5193,21 +5193,21 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5193
5193
  var copyJSON = (v) => JSON.parse(JSON.stringify(v));
5194
5194
  var isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
5195
5195
  function libraryBrush(spec, builtin, resolved) {
5196
- const brush = resolved ? _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, resolved, resolved) : _chunkZBACQHW3cjs.resolveBrush.call(void 0, spec);
5196
+ const brush = resolved ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, resolved, resolved) : _chunkBY5EBP26cjs.resolveBrush.call(void 0, spec);
5197
5197
  if (builtin) brush.builtin = true;
5198
5198
  else delete brush.builtin;
5199
5199
  return { spec, brush, builtin };
5200
5200
  }
5201
5201
  var builtins = null;
5202
5202
  function builtinLibraryBrushes() {
5203
- return builtins ??= _chunkZBACQHW3cjs.BRUSH_PRESETS.map((spec) => {
5204
- const resolved = _chunkZBACQHW3cjs.BUILTIN_BRUSHES.find((b) => b.id === spec.id);
5203
+ return builtins ??= _chunkBY5EBP26cjs.BRUSH_PRESETS.map((spec) => {
5204
+ const resolved = _chunkBY5EBP26cjs.BUILTIN_BRUSHES.find((b) => b.id === spec.id);
5205
5205
  return libraryBrush(spec, true, resolved);
5206
5206
  });
5207
5207
  }
5208
5208
  function seededStorage(brushes) {
5209
5209
  if (!brushes.length) return void 0;
5210
- let stored = JSON.stringify({ format: "pixerate-brushes", version: 1, brushes: brushes.map(_chunkZBACQHW3cjs.brushToJSON) });
5210
+ let stored = JSON.stringify({ format: "pixerate-brushes", version: 1, brushes: brushes.map(_chunkBY5EBP26cjs.brushToJSON) });
5211
5211
  return {
5212
5212
  get: async () => stored,
5213
5213
  set: async (_key, value) => {
@@ -5220,7 +5220,7 @@ var paints = (b) => {
5220
5220
  return JSON.stringify(rest);
5221
5221
  };
5222
5222
  function brushSpecOf(next, from) {
5223
- const plain = _chunkZBACQHW3cjs.migrateBrushV1.call(void 0, next);
5223
+ const plain = _chunkBY5EBP26cjs.migrateBrushV1.call(void 0, next);
5224
5224
  const out = copyJSON(plain);
5225
5225
  if (from.description) out.description = from.description;
5226
5226
  if (_optionalChain([from, 'access', _221 => _221.tags, 'optionalAccess', _222 => _222.length])) out.tags = [...from.tags];
@@ -5240,8 +5240,8 @@ function brushSpecOf(next, from) {
5240
5240
  out.motion = { ..._nullishCoalesce(out.motion, () => ( {})), ...from.motion.live !== void 0 ? { live: from.motion.live } : {}, ...from.motion.fps !== void 0 ? { fps: from.motion.fps } : {} };
5241
5241
  }
5242
5242
  try {
5243
- const hinted = _chunkZBACQHW3cjs.normalizeBrushSpec.call(void 0, out, []);
5244
- if (paints(_chunkZBACQHW3cjs.resolveBrush.call(void 0, hinted)) === paints(_chunkZBACQHW3cjs.resolveBrush.call(void 0, plain))) return hinted;
5243
+ const hinted = _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, out, []);
5244
+ if (paints(_chunkBY5EBP26cjs.resolveBrush.call(void 0, hinted)) === paints(_chunkBY5EBP26cjs.resolveBrush.call(void 0, plain))) return hinted;
5245
5245
  } catch (e7) {
5246
5246
  }
5247
5247
  return plain;
@@ -5897,7 +5897,7 @@ async function libraryCall(call) {
5897
5897
  try {
5898
5898
  return await call();
5899
5899
  } catch (e) {
5900
- throw e instanceof _chunkZBACQHW3cjs.BrushLibraryError ? new PaintEditorError(e.message) : e;
5900
+ throw e instanceof _chunkBY5EBP26cjs.BrushLibraryError ? new PaintEditorError(e.message) : e;
5901
5901
  }
5902
5902
  }
5903
5903
  var HEX3 = /^#[0-9a-f]{6}$/i;
@@ -6027,15 +6027,15 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
6027
6027
  this.rasterizeSticker = _nullishCoalesce(options.rasterizeSticker, () => ( defaultStickerRasterizer));
6028
6028
  if (options.stickers) this.stickers.set(options.stickers);
6029
6029
  this.doc = createPaintDocument({ width: options.width, height: options.height, dpi: options.dpi, paper: this.resolvePaper(options.paper) });
6030
- const seed = (_nullishCoalesce(options.brushes, () => ( []))).map((b) => _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ...b, builtin: false }));
6031
- this.brushLibrary = _nullishCoalesce(options.brushLibrary, () => ( _chunkZBACQHW3cjs.createBrushLibrary.call(void 0, { storage: seededStorage(seed) })));
6032
- this.brushEntries = [...builtinLibraryBrushes(), ...seed.map((b) => libraryBrush(_chunkZBACQHW3cjs.migrateBrushV1.call(void 0, b), false, b))];
6033
- const wanted = _nullishCoalesce(options.brushId, () => ( _chunkZBACQHW3cjs.DEFAULT_BRUSH_ID));
6034
- const start = _nullishCoalesce(this.findEntry(wanted), () => ( this.findEntry(_chunkZBACQHW3cjs.DEFAULT_BRUSH_ID)));
6035
- this.brush = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, start.brush);
6030
+ const seed = (_nullishCoalesce(options.brushes, () => ( []))).map((b) => _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...b, builtin: false }));
6031
+ this.brushLibrary = _nullishCoalesce(options.brushLibrary, () => ( _chunkBY5EBP26cjs.createBrushLibrary.call(void 0, { storage: seededStorage(seed) })));
6032
+ this.brushEntries = [...builtinLibraryBrushes(), ...seed.map((b) => libraryBrush(_chunkBY5EBP26cjs.migrateBrushV1.call(void 0, b), false, b))];
6033
+ const wanted = _nullishCoalesce(options.brushId, () => ( _chunkBY5EBP26cjs.DEFAULT_BRUSH_ID));
6034
+ const start = _nullishCoalesce(this.findEntry(wanted), () => ( this.findEntry(_chunkBY5EBP26cjs.DEFAULT_BRUSH_ID)));
6035
+ this.brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, start.brush);
6036
6036
  this.brushSpec = copyJSON(start.spec);
6037
6037
  this.unsubscribeLibrary = this.brushLibrary.subscribe(() => void this.refreshBrushes().catch(() => void 0));
6038
- if (options.brushLibrary && seed.length) void this.brushLibrary.importFile(seed.map(_chunkZBACQHW3cjs.brushToJSON)).catch(() => void 0);
6038
+ if (options.brushLibrary && seed.length) void this.brushLibrary.importFile(seed.map(_chunkBY5EBP26cjs.brushToJSON)).catch(() => void 0);
6039
6039
  void this.refreshBrushes().catch(() => void 0);
6040
6040
  this.pendingBrushId = start.brush.id === wanted ? null : wanted;
6041
6041
  this.color = options.color ? parseColor(options.color) : "#1f2937";
@@ -7265,7 +7265,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7265
7265
  * its pixels are not rendered.
7266
7266
  */
7267
7267
  strokeEffect(init, brush) {
7268
- if (!_chunkZBACQHW3cjs.brushTakesPaint.call(void 0, brush)) return null;
7268
+ if (!_chunkBY5EBP26cjs.brushTakesPaint.call(void 0, brush)) return null;
7269
7269
  let source = null;
7270
7270
  if (init.paint !== void 0) {
7271
7271
  if (!isPaintEffectPaint(init.paint)) return null;
@@ -7326,7 +7326,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7326
7326
  }
7327
7327
  requireEntry(id) {
7328
7328
  const e = this.findEntry(id);
7329
- if (!e) throw new PaintEditorError(`Unknown brush "${id}". ${_chunkZBACQHW3cjs.closest.call(void 0, id, this.brushEntries.map((x) => x.brush.id))}Call list_brush_presets for the ids.`);
7329
+ if (!e) throw new PaintEditorError(`Unknown brush "${id}". ${_chunkBY5EBP26cjs.closest.call(void 0, id, this.brushEntries.map((x) => x.brush.id))}Call list_brush_presets for the ids.`);
7330
7330
  return e;
7331
7331
  }
7332
7332
  requireBrush(id) {
@@ -7352,7 +7352,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7352
7352
  /** A library brush by id, as the engine paints it (`undefined` when unknown). */
7353
7353
  getBrush(id) {
7354
7354
  const b = this.findBrush(id);
7355
- return b ? _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, b, b) : void 0;
7355
+ return b ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, b, b) : void 0;
7356
7356
  }
7357
7357
  /** A library brush by id as stored (its facets), or without an id the active brush as edited. */
7358
7358
  getBrushSpec(id) {
@@ -7370,7 +7370,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7370
7370
  const baseSpec = entry ? entry.spec : this.brushSpec;
7371
7371
  if (changes.paint !== void 0 && changes.paint !== null) this.readStrokePaint(changes.paint);
7372
7372
  const unchanged = !Object.keys(changes).length;
7373
- const next = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ...changes, id: base.id }, base);
7373
+ const next = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...changes, id: base.id }, base);
7374
7374
  if (entry) this.takeBrushColour(entry.spec);
7375
7375
  this.useBrush(next, unchanged ? baseSpec : brushSpecOf(next, baseSpec), unchanged && base.builtin === true);
7376
7376
  return this.brush;
@@ -7389,7 +7389,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7389
7389
  for (const k of unset) delete base[k];
7390
7390
  const spec = this.readBrushPatch(base, patch, problems);
7391
7391
  if (entry || _optionalChain([patch, 'access', _381 => _381.colour, 'optionalAccess', _382 => _382.default]) !== void 0) this.takeBrushColour(spec);
7392
- this.useBrush(unchanged && entry ? entry.brush : _chunkZBACQHW3cjs.resolveBrush.call(void 0, spec), spec, unchanged && _optionalChain([entry, 'optionalAccess', _383 => _383.builtin]) === true);
7392
+ this.useBrush(unchanged && entry ? entry.brush : _chunkBY5EBP26cjs.resolveBrush.call(void 0, spec), spec, unchanged && _optionalChain([entry, 'optionalAccess', _383 => _383.builtin]) === true);
7393
7393
  return { brush: this.brush, spec: copyJSON(this.brushSpec), problems };
7394
7394
  }
7395
7395
  /**
@@ -7403,11 +7403,11 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7403
7403
  if (paint && typeof paint === "object" && "type" in paint && paint.type === "gradient") this.readStrokePaint(paint);
7404
7404
  let next;
7405
7405
  try {
7406
- next = _chunkZBACQHW3cjs.normalizeBrushSpec.call(void 0, { ...spec, id: this.brush.id }, problems);
7406
+ next = _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, { ...spec, id: this.brush.id }, problems);
7407
7407
  } catch (e) {
7408
7408
  throw new PaintEditorError(e.message);
7409
7409
  }
7410
- this.useBrush(_chunkZBACQHW3cjs.resolveBrush.call(void 0, next), next, false);
7410
+ this.useBrush(_chunkBY5EBP26cjs.resolveBrush.call(void 0, next), next, false);
7411
7411
  return { brush: this.brush, spec: copyJSON(this.brushSpec), problems };
7412
7412
  }
7413
7413
  /**
@@ -7416,22 +7416,22 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7416
7416
  */
7417
7417
  brushChanges(patch, from) {
7418
7418
  const entry = typeof from === "string" ? this.requireEntry(from) : null;
7419
- const base = entry ? entry.brush : typeof from === "object" ? _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, from, from) : this.brush;
7420
- const spec = entry ? entry.spec : typeof from === "object" ? _chunkZBACQHW3cjs.migrateBrushV1.call(void 0, base) : this.brushSpec;
7421
- return engineChanges(base, _chunkZBACQHW3cjs.resolveBrush.call(void 0, this.readBrushPatch(spec, patch, [])));
7419
+ const base = entry ? entry.brush : typeof from === "object" ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, from, from) : this.brush;
7420
+ const spec = entry ? entry.spec : typeof from === "object" ? _chunkBY5EBP26cjs.migrateBrushV1.call(void 0, base) : this.brushSpec;
7421
+ return engineChanges(base, _chunkBY5EBP26cjs.resolveBrush.call(void 0, this.readBrushPatch(spec, patch, [])));
7422
7422
  }
7423
7423
  readBrushPatch(base, patch, problems) {
7424
7424
  const { id: _id, name, ...rest } = patch;
7425
7425
  const paint = _optionalChain([rest, 'access', _386 => _386.colour, 'optionalAccess', _387 => _387.default]);
7426
7426
  if (paint && typeof paint === "object" && "type" in paint && paint.type === "gradient") this.readStrokePaint(paint);
7427
7427
  try {
7428
- return _chunkZBACQHW3cjs.normalizeBrushSpec.call(void 0, _chunkTILEUVROcjs.mergeBrushPatch.call(void 0, base, { ...rest, ...name !== void 0 ? { name } : {} }), problems);
7428
+ return _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, _chunkF3KKR6DDcjs.mergeBrushPatch.call(void 0, base, { ...rest, ...name !== void 0 ? { name } : {} }), problems);
7429
7429
  } catch (e) {
7430
7430
  throw new PaintEditorError(e.message);
7431
7431
  }
7432
7432
  }
7433
7433
  useBrush(next, spec, builtin) {
7434
- next = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, next, next);
7434
+ next = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, next, next);
7435
7435
  if (builtin) next.builtin = true;
7436
7436
  else delete next.builtin;
7437
7437
  this.brush = next;
@@ -7447,9 +7447,9 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7447
7447
  * saved brush.
7448
7448
  */
7449
7449
  async saveBrush(options) {
7450
- if (!_chunkZBACQHW3cjs.BRUSH_ID.test(options.id)) throw new PaintEditorError(`Brush id "${options.id}" is invalid; use lowercase letters, digits and dashes (e.g. "my-pencil").`);
7450
+ if (!_chunkBY5EBP26cjs.BRUSH_ID.test(options.id)) throw new PaintEditorError(`Brush id "${options.id}" is invalid; use lowercase letters, digits and dashes (e.g. "my-pencil").`);
7451
7451
  if (this.brushLibrary.isBuiltin(options.id)) throw new PaintEditorError(`"${options.id}" is a built-in brush; save under another id.`);
7452
- const spec = options.brush ? brushSpecOf(_chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, options.brush, this.brush), this.brushSpec) : this.brushSpec;
7452
+ const spec = options.brush ? brushSpecOf(_chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, options.brush, this.brush), this.brushSpec) : this.brushSpec;
7453
7453
  const { brush } = await libraryCall(() => this.brushLibrary.save({ ...spec, id: options.id, name: _nullishCoalesce(options.name, () => ( spec.name)) }, { overwrite: true }));
7454
7454
  await this.refreshBrushes();
7455
7455
  return this.requireBrush(brush.id);
@@ -7462,7 +7462,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7462
7462
  }
7463
7463
  /** The user's saved brushes, as the engine paints them. */
7464
7464
  getUserBrushes() {
7465
- return this.brushEntries.filter((e) => !e.builtin).map((e) => _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, e.brush, e.brush));
7465
+ return this.brushEntries.filter((e) => !e.builtin).map((e) => _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, e.brush, e.brush));
7466
7466
  }
7467
7467
  /** A brush library file (version 2) of the given brushes (default: the user's brushes). */
7468
7468
  exportBrushes(ids) {
@@ -7570,7 +7570,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7570
7570
  * brush's gradient, else the editor's gradient paint. Erasers, blenders and smudges take none.
7571
7571
  */
7572
7572
  strokeGradient(init, brush, color) {
7573
- if (!_chunkZBACQHW3cjs.brushTakesPaint.call(void 0, brush)) return null;
7573
+ if (!_chunkBY5EBP26cjs.brushTakesPaint.call(void 0, brush)) return null;
7574
7574
  let g = null;
7575
7575
  if (init.paint !== void 0) {
7576
7576
  if (isPaintEffectPaint(init.paint)) return null;
@@ -7647,7 +7647,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7647
7647
  // --- Strokes -------------------------------------------------------------------
7648
7648
  strokeBrush(init) {
7649
7649
  let brush = init.brushId !== void 0 ? this.requireBrush(init.brushId) : this.brush;
7650
- if (init.brush) brush = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ...init.brush, id: brush.id }, brush);
7650
+ if (init.brush) brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...init.brush, id: brush.id }, brush);
7651
7651
  return brush;
7652
7652
  }
7653
7653
  /**
@@ -7680,7 +7680,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7680
7680
  return l;
7681
7681
  })();
7682
7682
  const brush = this.strokeBrush(init);
7683
- if (this.previewing && _chunkZBACQHW3cjs.isWetBrush.call(void 0, brush)) throw new PaintEditorError(`Wet paint can't be previewed; the ${brush.name} brush paints wet media. Suggest it with a dry brush.`);
7683
+ if (this.previewing && _chunkBY5EBP26cjs.isWetBrush.call(void 0, brush)) throw new PaintEditorError(`Wet paint can't be previewed; the ${brush.name} brush paints wet media. Suggest it with a dry brush.`);
7684
7684
  const effect = this.strokeEffect(init, brush);
7685
7685
  if (brush.light.amount > 0) {
7686
7686
  if (brush.engine === "sticker") throw new PaintEditorError(`The ${brush.name} brush sprays stickers, which don't take light yet; paint light with a dab or particle light brush (glow-gel, neon-marker; list_brush_presets lists them), or set light.amount to 0 (set_brush).`);
@@ -7703,7 +7703,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7703
7703
  throw new PaintEditorError(`Layer "${layer.name}" is a sticker layer (its pixels are drawn from its stickers); paint on another layer (add_layer).`);
7704
7704
  }
7705
7705
  let wet;
7706
- if (_chunkZBACQHW3cjs.isWetBrush.call(void 0, brush)) {
7706
+ if (_chunkBY5EBP26cjs.isWetBrush.call(void 0, brush)) {
7707
7707
  this.requireWetIdle("painting");
7708
7708
  if (layer.offset.x || layer.offset.y) {
7709
7709
  const moved = { ...layer, surface: _chunk474IQG74cjs.translateSurface.call(void 0, layer.surface, layer.offset.x, layer.offset.y), offset: { x: 0, y: 0 } };
@@ -7797,7 +7797,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7797
7797
  const stroke = {
7798
7798
  id: `s${this.strokeCounter++}`,
7799
7799
  layerId: session.layerId,
7800
- brush: _chunkZBACQHW3cjs.brushToJSON.call(void 0, init.brush),
7800
+ brush: _chunkBY5EBP26cjs.brushToJSON.call(void 0, init.brush),
7801
7801
  color: init.colorHex,
7802
7802
  points: session.points.map((p) => ({ ...p })),
7803
7803
  seed: init.seed
@@ -8048,7 +8048,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
8048
8048
  let brush = v.brush;
8049
8049
  if (options.brushId !== void 0) {
8050
8050
  const b = this.requireBrush(options.brushId);
8051
- brush = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: b.tip.size * (v.brush.tip.size / s.brush.tip.size) } }, b);
8051
+ brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: b.tip.size * (v.brush.tip.size / s.brush.tip.size) } }, b);
8052
8052
  }
8053
8053
  const layerId = _nullishCoalesce(options.layerId, () => ( s.layerId));
8054
8054
  if (!_chunkPVJMTLPJcjs.findLayer.call(void 0, doc.layers, layerId)) throw new PaintEditorError(`Stroke "${s.id}" was painted on layer "${layerId}", which no longer exists; pass layerId to replay it elsewhere.`);
@@ -8826,7 +8826,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
8826
8826
  return next.type === "group" ? { ...next, children: toStandard(next.children) } : next;
8827
8827
  });
8828
8828
  const layers = toStandard(dried);
8829
- const result = _chunkXQW6R7VWcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
8829
+ const result = _chunkKXNZNOEFcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
8830
8830
  for (const [mode, names] of changed) {
8831
8831
  const label = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _493 => _493.find, 'call', _494 => _494((m) => m.id === mode), 'optionalAccess', _495 => _495.label]), () => ( mode));
8832
8832
  const std = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _496 => _496.find, 'call', _497 => _497((m) => m.id === _chunk2VX55NFMcjs.standardBlendMode.call(void 0, mode)), 'optionalAccess', _498 => _498.label]), () => ( _chunk2VX55NFMcjs.standardBlendMode.call(void 0, mode)));
@@ -9341,15 +9341,15 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
9341
9341
  let brush = was.brush;
9342
9342
  if (update.brushId !== void 0) {
9343
9343
  const b = this.requireBrush(update.brushId);
9344
- brush = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: was.brush.tip.size } }, b);
9344
+ brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: was.brush.tip.size } }, b);
9345
9345
  }
9346
9346
  if (update.brush !== void 0) {
9347
9347
  if (!update.brush || typeof update.brush !== "object") throw new PaintEditorError("brush must be an object of brush settings (as set_brush takes).");
9348
- brush = _chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ...update.brush, id: brush.id }, brush);
9348
+ brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...update.brush, id: brush.id }, brush);
9349
9349
  }
9350
9350
  const why = liveStrokeRefusal(brush);
9351
9351
  if (why) throw new PaintEditorError(why);
9352
- const next = { ...was, brush: _chunkZBACQHW3cjs.brushToJSON.call(void 0, brush) };
9352
+ const next = { ...was, brush: _chunkBY5EBP26cjs.brushToJSON.call(void 0, brush) };
9353
9353
  if (update.seed !== void 0) {
9354
9354
  if (!Number.isInteger(update.seed) || update.seed < 0) throw new PaintEditorError(`seed ${update.seed} must be a whole number of 0 or more.`);
9355
9355
  next.seed = update.seed;
@@ -11610,7 +11610,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11610
11610
  name: "set_brush",
11611
11611
  title: "Set the brush",
11612
11612
  description: "Chooses the active brush (id, from list_brush_presets) and / or changes it with facets laid over it (objects merge, lists and values replace, marks of another kind replace the marks; the brush library's create_brush fields); unset removes whole facets first (unset colour drops a brush's own gradient). Strokes without a brush use it. Editor state, not an undo step: the changes stay on the active brush until the library's create_brush or update_brush stores a brush. Returns the active brush as facets, the engine it paints with, and problems (values clamped or dropped).",
11613
- inputSchema: { type: "object", properties: { id: { type: "string", description: "Brush id from list_brush_presets to start from (default the active brush)." }, name: { type: "string", minLength: 1, maxLength: 80, description: "Display name." }, ..._chunkTILEUVROcjs.BRUSH_PATCH_PROPERTIES, unset: _chunkTILEUVROcjs.BRUSH_UNSET_PROPERTY }, additionalProperties: false },
11613
+ inputSchema: { type: "object", properties: { id: { type: "string", description: "Brush id from list_brush_presets to start from (default the active brush)." }, name: { type: "string", minLength: 1, maxLength: 80, description: "Display name." }, ..._chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, unset: _chunkF3KKR6DDcjs.BRUSH_UNSET_PROPERTY }, additionalProperties: false },
11614
11614
  annotations: { title: "Set the brush", ...SET4 },
11615
11615
  handler: async ({ id, unset, ...patch }) => {
11616
11616
  const stamps = _optionalChain([patch, 'access', _574 => _574.tip, 'optionalAccess', _575 => _575.stamps]);
@@ -11706,7 +11706,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11706
11706
  points: POINTS,
11707
11707
  layerId: LAYER_ID4,
11708
11708
  brushId: { type: "string", description: "Brush id from list_brush_presets (default the active brush)." },
11709
- brush: { type: "object", description: "Facets to change for this stroke only, laid over brushId or the active brush (as set_brush takes them).", properties: _chunkTILEUVROcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11709
+ brush: { type: "object", description: "Facets to change for this stroke only, laid over brushId or the active brush (as set_brush takes them).", properties: _chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11710
11710
  color: { ...COLOR3, description: "Paint colour #rrggbb (default the paint colour)." },
11711
11711
  paint: { ..._chunkFQPUF2W2cjs.PAINT_SOURCE_JSON_SCHEMA, description: "What this stroke paints with instead of the editor's paint: a colour, or gradient paint that changes colour as the stroke goes (by distance, pressure, tilt, speed, direction, time, across the tip or at random). Wins over the brush's own gradient." },
11712
11712
  seed: { type: "integer", minimum: 0, description: "Jitter seed (default a new one); the same seed and points give the same marks." },
@@ -11722,7 +11722,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11722
11722
  const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
11723
11723
  const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
11724
11724
  if (base) {
11725
- const refs = brushStickerRefs(_chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11725
+ const refs = brushStickerRefs(_chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11726
11726
  if (refs.length) await c.prepareStickers(refs);
11727
11727
  }
11728
11728
  const stroke = { points: a.points, layerId: a.layerId, brushId: a.brushId, brush, color: a.color, paint: a.paint, seed: a.seed, snapToPerspective: a.snapToPerspective };
@@ -11742,7 +11742,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11742
11742
  pressure: { type: "array", minItems: 1, maxItems: 64, items: { type: "number", minimum: 0, maximum: 1 }, description: "Pen pressure along each subpath, spread evenly from start to end (default full pressure); [0.2, 1, 0.2] tapers both ends." },
11743
11743
  layerId: LAYER_ID4,
11744
11744
  brushId: { type: "string", description: "Brush id from list_brush_presets (default the active brush)." },
11745
- brush: { type: "object", description: "Facets to change for this stroke only, laid over brushId or the active brush (as set_brush takes them).", properties: _chunkTILEUVROcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11745
+ brush: { type: "object", description: "Facets to change for this stroke only, laid over brushId or the active brush (as set_brush takes them).", properties: _chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11746
11746
  color: { ...COLOR3, description: "Paint colour #rrggbb (default the paint colour)." },
11747
11747
  paint: { ..._chunkFQPUF2W2cjs.PAINT_SOURCE_JSON_SCHEMA, description: "What the strokes paint with instead of the editor's paint: a colour, or gradient paint that changes colour as each stroke goes." },
11748
11748
  seed: { type: "integer", minimum: 0, description: "Jitter seed of the first subpath, the next ones take the following seeds (default new ones); the same seed and path give the same marks." }
@@ -11757,7 +11757,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11757
11757
  const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
11758
11758
  const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
11759
11759
  if (base) {
11760
- const refs = brushStickerRefs(_chunkZBACQHW3cjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11760
+ const refs = brushStickerRefs(_chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11761
11761
  if (refs.length) await c.prepareStickers(refs);
11762
11762
  }
11763
11763
  const path = options.origin && typeof a.path === "string" && a.path.trim() ? _chunkGF2RBSDMcjs.bezierPathToSvg.call(void 0, a.path, { offset: { x: -options.origin.x, y: -options.origin.y } }) : a.path;
@@ -11841,7 +11841,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11841
11841
  properties: {
11842
11842
  id: { type: "string", description: "Stroke id from list_strokes {live: true}." },
11843
11843
  brushId: { type: "string", description: "Brush id from list_brush_presets; the stroke keeps its size." },
11844
- brush: { type: "object", properties: _chunkTILEUVROcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false, description: "Facets to change on top of brushId or the stroke\u2019s brush (as set_brush takes them); missing fields keep their values." },
11844
+ brush: { type: "object", properties: _chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false, description: "Facets to change on top of brushId or the stroke\u2019s brush (as set_brush takes them); missing fields keep their values." },
11845
11845
  color: { type: "string", pattern: "^#[0-9a-fA-F]{6}$", description: "New colour #rrggbb (replaces gradient paint)." },
11846
11846
  paint: { anyOf: [_chunkFQPUF2W2cjs.PAINT_SOURCE_JSON_SCHEMA, { type: "null", description: "Back to the stroke\u2019s plain colour." }], description: "A colour or gradient paint for the stroke; null drops its gradient." },
11847
11847
  seed: { type: "integer", minimum: 0, description: "Another jitter seed: particles, scatter and texture fall differently." }
@@ -12092,7 +12092,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
12092
12092
  tools.push(..._chunkYHDHFJUCcjs.createPigmentTools.call(void 0, ));
12093
12093
  tools.push(..._chunkPE6YJMQTcjs.createStickerTools.call(void 0, { provider: () => c.stickersProvider }));
12094
12094
  tools.push(
12095
- ..._chunkXQW6R7VWcjs.createLayerEffectTools.call(void 0,
12095
+ ..._chunkKXNZNOEFcjs.createLayerEffectTools.call(void 0,
12096
12096
  {
12097
12097
  requireLayer: (id) => void c.getLayerEffects(id),
12098
12098
  getLayerEffects: (id) => c.getLayerEffects(id),
@@ -12150,15 +12150,18 @@ function strokeSummary(s, withPoints, live) {
12150
12150
  }
12151
12151
 
12152
12152
  // src/paint-editor/brush-library-tools.ts
12153
+ function paintBrushPreviewRenderer(paper = () => DEFAULT_PAPER) {
12154
+ return (brush, { width, height, color }) => {
12155
+ const t = renderBrushThumbnail(_chunkBY5EBP26cjs.resolveBrush.call(void 0, brush), { paper: paper(), width, height, color: color.toLowerCase() });
12156
+ return { data: _chunkW5M3J7PVcjs.bytesToBase64.call(void 0, _chunkW5M3J7PVcjs.encodePng.call(void 0, t.width, t.height, t.data)), mimeType: "image/png" };
12157
+ };
12158
+ }
12153
12159
  function createPaintBrushLibraryToolProvider(controller, options = {}) {
12154
- return _chunkTILEUVROcjs.createBrushLibraryToolProvider.call(void 0, controller.brushLibrary, {
12155
- profile: _chunkZBACQHW3cjs.PAINT_PROFILE,
12160
+ return _chunkF3KKR6DDcjs.createBrushLibraryToolProvider.call(void 0, controller.brushLibrary, {
12161
+ profile: _chunkBY5EBP26cjs.PAINT_PROFILE,
12156
12162
  stickers: () => controller.stickers.provider,
12157
12163
  ...options,
12158
- renderPreview: (brush, { width, height, color }) => {
12159
- const t = renderBrushThumbnail(_chunkZBACQHW3cjs.resolveBrush.call(void 0, brush), { paper: controller.getState().document.paper, width, height, color: color.toLowerCase() });
12160
- return { data: _chunkW5M3J7PVcjs.bytesToBase64.call(void 0, _chunkW5M3J7PVcjs.encodePng.call(void 0, t.width, t.height, t.data)), mimeType: "image/png" };
12161
- }
12164
+ renderPreview: paintBrushPreviewRenderer(() => controller.getState().document.paper)
12162
12165
  });
12163
12166
  }
12164
12167
 
@@ -12651,7 +12654,7 @@ var DOT_ROTATION_LABELS = { follow: "Follow motion", random: "Random", fixed: "T
12651
12654
  var STAMP_LABELS = { dot: "Dot", star: "Star", heart: "Heart", leaf: "Leaf", flower: "Flower", confetti: "Confetti", splat: "Splat", sparkle: "Sparkle", ring: "Ring" };
12652
12655
  function toggleStickerRef(refs, ref2) {
12653
12656
  if (refs.includes(ref2)) return refs.length > 1 ? refs.filter((r) => r !== ref2) : [...refs];
12654
- return refs.length < _chunkZBACQHW3cjs.MAX_STICKER_STAMPS ? [...refs, ref2] : [...refs];
12657
+ return refs.length < _chunkBY5EBP26cjs.MAX_STICKER_STAMPS ? [...refs, ref2] : [...refs];
12655
12658
  }
12656
12659
  function stickerRefLabel(ref2) {
12657
12660
  const stamp = ref2.startsWith("editor:") ? ref2.slice(7) : null;
@@ -12664,7 +12667,7 @@ function toggleStamp(stamps, stamp) {
12664
12667
  }
12665
12668
  function toggleDotTexture(textures, stamp) {
12666
12669
  if (textures.includes(stamp)) return textures.filter((s) => s !== stamp);
12667
- return textures.length < _chunkZBACQHW3cjs.MAX_DOT_TEXTURES ? [...textures, stamp] : [...textures];
12670
+ return textures.length < _chunkBY5EBP26cjs.MAX_DOT_TEXTURES ? [...textures, stamp] : [...textures];
12668
12671
  }
12669
12672
  var PATH_STROKE_TAPERS = [
12670
12673
  { id: "even", label: "Even" },
@@ -13458,7 +13461,7 @@ function toolList(provider) {
13458
13461
  function uiTables() {
13459
13462
  return {
13460
13463
  tools: PAINT_TOOLS,
13461
- brushOptions: _chunkXQW6R7VWcjs.BRUSH_OPTION_CONTROLS,
13464
+ brushOptions: _chunkKXNZNOEFcjs.BRUSH_OPTION_CONTROLS,
13462
13465
  blendMenu: BLEND_MENU_GROUPS,
13463
13466
  layerEffects: _chunkPVJMTLPJcjs.LAYER_EFFECT_MENU.map(({ kind, label }) => ({ kind, label, controls: _chunkPVJMTLPJcjs.layerEffectControls.call(void 0, _chunkPVJMTLPJcjs.defaultLayerEffect.call(void 0, kind, kind)) })),
13464
13467
  sliders: { paper: PAPER_SLIDERS, wet: WET_PARAM_SLIDERS, wetTilt: WET_TILT_SLIDERS, wetSpeed: WET_SPEED_SLIDER, light: LIGHT_SLIDERS, stroke: STROKE_SLIDERS, sticker: STICKER_SLIDERS },
@@ -13884,4 +13887,5 @@ function createPaintConformanceHost(setup, options) {
13884
13887
 
13885
13888
 
13886
13889
 
13887
- exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunkZBACQHW3cjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkZBACQHW3cjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunkTILEUVROcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkZBACQHW3cjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkZBACQHW3cjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkZBACQHW3cjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkZBACQHW3cjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkZBACQHW3cjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkYHDHFJUCcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunkZBACQHW3cjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHT = _chunkZBACQHW3cjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunkZBACQHW3cjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_PAINT_GRADIENT = _chunkFQPUF2W2cjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkFQPUF2W2cjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkZBACQHW3cjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunkZBACQHW3cjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunkZBACQHW3cjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunkZBACQHW3cjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkYHDHFJUCcjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunkZBACQHW3cjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunkZBACQHW3cjs.DOT_TEXTURE_ORDERS; exports.DOT_TEXTURE_ORDER_LABELS = DOT_TEXTURE_ORDER_LABELS; exports.DryStroke = DryStroke; exports.EFFECT_MAP_REPEATS = EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = EFFECT_STRIP_HEIGHT; exports.GPU_LEAD = GPU_LEAD; exports.GRAIN_PATTERNS = _chunkPXDIAYB6cjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPXDIAYB6cjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkI3Y2Q3PMcjs.HARMONY_KINDS; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkZBACQHW3cjs.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 = _chunkFQPUF2W2cjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_DOT_TEXTURES = _chunkZBACQHW3cjs.MAX_DOT_TEXTURES; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; exports.MAX_PATH_SAMPLES = MAX_PATH_SAMPLES; exports.MAX_STICKER_STAMPS = _chunkZBACQHW3cjs.MAX_STICKER_STAMPS; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkZBACQHW3cjs.MULTI_COLOR_MODES; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkZBACQHW3cjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkZBACQHW3cjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_CONTRACT_FORMAT_VERSION = PAINT_CONTRACT_FORMAT_VERSION; exports.PAINT_DOCUMENT_JSON_SCHEMA = PAINT_DOCUMENT_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkFQPUF2W2cjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkFQPUF2W2cjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkFQPUF2W2cjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SHORTCUTS = PAINT_SHORTCUTS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkFQPUF2W2cjs.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 = PAPER_FAMILIES; exports.PAPER_LIBRARY = PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkZBACQHW3cjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkZBACQHW3cjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PATH_STROKE_TAPERS = PATH_STROKE_TAPERS; 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 = _chunkFQPUF2W2cjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkFQPUF2W2cjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = PaintWetLayers; exports.PaperGrain = _chunkPXDIAYB6cjs.PaperGrain; exports.ParticleStroke = ParticleStroke; exports.PenDabWalker = PenDabWalker; exports.PenSmoother = PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.RIBBON_PAIRS = _chunkZBACQHW3cjs.RIBBON_PAIRS; exports.RIBBON_PAIR_LABELS = RIBBON_PAIR_LABELS; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkOTN6VB5Scjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_ART_SIZE = STICKER_ART_SIZE; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerArtCache = StickerArtCache; exports.StickerBrowser = _chunkXORJ7UZOcjs.StickerBrowser; exports.StickerSpray = StickerSpray; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.WET_FLOW_KINDS = _chunkYHDHFJUCcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkZBACQHW3cjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkYHDHFJUCcjs.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 = _chunkZBACQHW3cjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = WetStrokeDriver; exports.addPaintGradientStop = _chunkFQPUF2W2cjs.addPaintGradientStop; exports.addPolygonArea = addPolygonArea; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.brushEngineControls = _chunkTILEUVROcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkZBACQHW3cjs.brushTakesPaint; exports.brushToJSON = _chunkZBACQHW3cjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clonePaper = clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.contactSheet = contactSheet; exports.createPaintAgentStrokes = createPaintAgentStrokes; exports.createPaintBrushLibraryToolProvider = createPaintBrushLibraryToolProvider; exports.createPaintChangeFeed = createPaintChangeFeed; exports.createPaintCompositor = createPaintCompositor; exports.createPaintConformanceHost = createPaintConformanceHost; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintLayer = createPaintLayer; exports.createPaintProposalToolProvider = createPaintProposalToolProvider; exports.createPaintProposals = createPaintProposals; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.defaultStickerRasterizer = defaultStickerRasterizer; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.effectDabField = effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = effectPaintKey; exports.effectPaintSize = effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyThickChannels = emptyThickChannels; exports.fitZoom = fitZoom; exports.grainCatch = _chunkPXDIAYB6cjs.grainCatch; exports.grainHeights = _chunkPXDIAYB6cjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.hexToPaintRgb = _chunkFQPUF2W2cjs.hexToPaintRgb; exports.hexToRgb8 = hexToRgb8; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkI3Y2Q3PMcjs.hueToWheel; exports.invertAffine = invertAffine; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isGradientPaint = _chunkFQPUF2W2cjs.isGradientPaint; exports.isPaintEffectPaint = isPaintEffectPaint; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkZBACQHW3cjs.isWetBrush; exports.isWetCapable = _chunkZBACQHW3cjs.isWetCapable; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.mapPenPoint = mapPenPoint; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = mixerTip; exports.multiColorForDab = multiColorForDab; exports.multiColorGradient = multiColorGradient; exports.multiColorPalette = multiColorPalette; exports.multiColorSliders = _chunkTILEUVROcjs.multiColorSliders; exports.multiColorToPaint = _chunkZBACQHW3cjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkZBACQHW3cjs.normalizeBehavior; exports.normalizeBristle = _chunkZBACQHW3cjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkZBACQHW3cjs.normalizeDynamics; exports.normalizeFlow = _chunkYHDHFJUCcjs.normalizeFlow; exports.normalizeHexColor = _chunkFQPUF2W2cjs.normalizeHexColor; exports.normalizeImpasto = _chunkZBACQHW3cjs.normalizeImpasto; exports.normalizeLight = _chunkZBACQHW3cjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunkZBACQHW3cjs.normalizeMultiColor; exports.normalizePaintBrush = _chunkZBACQHW3cjs.normalizePaintBrush; exports.normalizePaper = normalizePaper; exports.normalizeParticle = _chunkZBACQHW3cjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkZBACQHW3cjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunkZBACQHW3cjs.normalizeWetBrush; exports.normalizeWetParams = _chunkYHDHFJUCcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintAgentStrokePoints = paintAgentStrokePoints; exports.paintContracts = paintContracts; exports.paintGradientMappingFor = _chunkFQPUF2W2cjs.paintGradientMappingFor; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintProposalGhost = paintProposalGhost; exports.paintShortcutFor = paintShortcutFor; exports.paintSourceColor = _chunkFQPUF2W2cjs.paintSourceColor; exports.paintSourceCss = _chunkFQPUF2W2cjs.paintSourceCss; exports.paintToMultiColor = _chunkZBACQHW3cjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = paperPreset; exports.parseBrushLibrary = _chunkZBACQHW3cjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkFQPUF2W2cjs.parsePaintSource; exports.patchBrushValue = _chunkTILEUVROcjs.patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.quickStencil = quickStencil; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.readEffectStrokeMap = readEffectStrokeMap; exports.readPaintEffectPaint = readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkFQPUF2W2cjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkFQPUF2W2cjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = renderPaper; exports.renderStickers = renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.resolvePaintGradient = _chunkFQPUF2W2cjs.resolvePaintGradient; exports.reversePaintGradient = _chunkFQPUF2W2cjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleArt = sampleArt; exports.sampleEffectAt = sampleEffectAt; exports.sampleEffectField = sampleEffectField; exports.samplePath = samplePath; exports.samplePressure = samplePressure; exports.scalePaintGradient = _chunkFQPUF2W2cjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.solidPaint = _chunkFQPUF2W2cjs.solidPaint; exports.stampCoverage = _chunkOTN6VB5Scjs.stampCoverage; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = stickerAt; exports.stickerRect = stickerRect; exports.stickerRefLabel = stickerRefLabel; exports.stickerStamp = stickerStamp; exports.stickerSurface = stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokeSchedule = strokeSchedule; exports.strokeToJSON = strokeToJSON; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = toStrokePoint; exports.toggleDotTexture = toggleDotTexture; exports.toggleStamp = toggleStamp; exports.toggleStickerRef = toggleStickerRef; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkFQPUF2W2cjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkZBACQHW3cjs.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 = _chunkYHDHFJUCcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkI3Y2Q3PMcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback;
13890
+
13891
+ exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunkBY5EBP26cjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunkBY5EBP26cjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunkF3KKR6DDcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunkBY5EBP26cjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunkBY5EBP26cjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunkBY5EBP26cjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunkBY5EBP26cjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunkBY5EBP26cjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkYHDHFJUCcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunkBY5EBP26cjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHT = _chunkBY5EBP26cjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunkBY5EBP26cjs.DEFAULT_MULTI_COLOR; exports.DEFAULT_PAINT_GRADIENT = _chunkFQPUF2W2cjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkFQPUF2W2cjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_PAPER = DEFAULT_PAPER; exports.DEFAULT_PARTICLE = _chunkBY5EBP26cjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunkBY5EBP26cjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunkBY5EBP26cjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunkBY5EBP26cjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkYHDHFJUCcjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunkBY5EBP26cjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunkBY5EBP26cjs.DOT_TEXTURE_ORDERS; exports.DOT_TEXTURE_ORDER_LABELS = DOT_TEXTURE_ORDER_LABELS; exports.DryStroke = DryStroke; exports.EFFECT_MAP_REPEATS = EFFECT_MAP_REPEATS; exports.EFFECT_STRIP_HEIGHT = EFFECT_STRIP_HEIGHT; exports.GPU_LEAD = GPU_LEAD; exports.GRAIN_PATTERNS = _chunkPXDIAYB6cjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPXDIAYB6cjs.GRAIN_TILE; exports.HARMONY_KINDS = _chunkI3Y2Q3PMcjs.HARMONY_KINDS; exports.IDENTITY_AFFINE = IDENTITY_AFFINE; exports.IDENTITY_COPY = IDENTITY_COPY; exports.IMPASTO_TOOLS = _chunkBY5EBP26cjs.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 = _chunkFQPUF2W2cjs.MAX_BRUSH_SIZE; exports.MAX_CANVAS_SIDE = MAX_CANVAS_SIDE; exports.MAX_COORDINATE = MAX_COORDINATE; exports.MAX_DOT_TEXTURES = _chunkBY5EBP26cjs.MAX_DOT_TEXTURES; exports.MAX_IMAGE_SIDE = MAX_IMAGE_SIDE; exports.MAX_LIVE_EFFECT_SOURCES = MAX_LIVE_EFFECT_SOURCES; exports.MAX_PATH_SAMPLES = MAX_PATH_SAMPLES; exports.MAX_STICKER_STAMPS = _chunkBY5EBP26cjs.MAX_STICKER_STAMPS; exports.MAX_ZOOM = MAX_ZOOM; exports.MIN_CANVAS_SIDE = MIN_CANVAS_SIDE; exports.MIN_ZOOM = MIN_ZOOM; exports.MIXING_PAD_HEIGHT = MIXING_PAD_HEIGHT; exports.MIXING_PAD_WIDTH = MIXING_PAD_WIDTH; exports.MULTI_COLOR_MODES = _chunkBY5EBP26cjs.MULTI_COLOR_MODES; exports.MixingPad = MixingPad; exports.PAD_SAMPLE_SIZES = PAD_SAMPLE_SIZES; exports.PAINTERLY_BLEND_MODES = _chunk2VX55NFMcjs.PAINTERLY_BLEND_MODES; exports.PAINT_BRUSH_CATEGORIES = _chunkBY5EBP26cjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunkBY5EBP26cjs.PAINT_BRUSH_ENGINES; exports.PAINT_COLOR_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_CONTRACT_FORMAT_VERSION = PAINT_CONTRACT_FORMAT_VERSION; exports.PAINT_DOCUMENT_JSON_SCHEMA = PAINT_DOCUMENT_JSON_SCHEMA; exports.PAINT_EFFECT_PLACES = PAINT_EFFECT_PLACES; exports.PAINT_FORMAT = PAINT_FORMAT; exports.PAINT_GRADIENT_FULL_SPEED = _chunkFQPUF2W2cjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkFQPUF2W2cjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkFQPUF2W2cjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkFQPUF2W2cjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkFQPUF2W2cjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SCHEMA_VERSION = PAINT_SCHEMA_VERSION; exports.PAINT_SHORTCUTS = PAINT_SHORTCUTS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkFQPUF2W2cjs.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 = PAPER_FAMILIES; exports.PAPER_LIBRARY = PAPER_LIBRARY; exports.PAPER_NODE_ID = PAPER_NODE_ID; exports.PAPER_SLIDERS = PAPER_SLIDERS; exports.PAPER_TARGET = PAPER_TARGET; exports.PARTICLE_KINDS = _chunkBY5EBP26cjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunkBY5EBP26cjs.PARTICLE_RENDERS; exports.PARTICLE_RENDER_LABELS = PARTICLE_RENDER_LABELS; exports.PATH_STROKE_TAPERS = PATH_STROKE_TAPERS; 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 = _chunkFQPUF2W2cjs.PaintGradientSampler; exports.PaintPresence = PaintPresence; exports.PaintSourceError = _chunkFQPUF2W2cjs.PaintSourceError; exports.PaintStrokeSession = PaintStrokeSession; exports.PaintWetLayers = PaintWetLayers; exports.PaperGrain = _chunkPXDIAYB6cjs.PaperGrain; exports.ParticleStroke = ParticleStroke; exports.PenDabWalker = PenDabWalker; exports.PenSmoother = PenSmoother; exports.PerspectiveSnapper = PerspectiveSnapper; exports.RIBBON_PAIRS = _chunkBY5EBP26cjs.RIBBON_PAIRS; exports.RIBBON_PAIR_LABELS = RIBBON_PAIR_LABELS; exports.SNAP_DECIDE_DISTANCE = SNAP_DECIDE_DISTANCE; exports.STAMP_KINDS = _chunkOTN6VB5Scjs.STAMP_KINDS; exports.STAMP_LABELS = STAMP_LABELS; exports.STENCIL_KINDS = STENCIL_KINDS; exports.STENCIL_SHAPES = STENCIL_SHAPES; exports.STICKER_ART_SIZE = STICKER_ART_SIZE; exports.STICKER_SLIDERS = STICKER_SLIDERS; exports.STROKE_SLIDERS = STROKE_SLIDERS; exports.SYMMETRY_MODES = SYMMETRY_MODES; exports.StencilSnapper = StencilSnapper; exports.StickerArtCache = StickerArtCache; exports.StickerBrowser = _chunkXORJ7UZOcjs.StickerBrowser; exports.StickerSpray = StickerSpray; exports.TRACING_NODE_ID = TRACING_NODE_ID; exports.ThickStrokeDriver = ThickStrokeDriver; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.WET_FLOW_KINDS = _chunkYHDHFJUCcjs.WET_FLOW_KINDS; exports.WET_GPU_MODES = WET_GPU_MODES; exports.WET_GPU_OPTIONS = WET_GPU_OPTIONS; exports.WET_MEDIA = _chunkBY5EBP26cjs.WET_MEDIA; exports.WET_MEDIUM_LABELS = WET_MEDIUM_LABELS; exports.WET_MEDIUM_PARAMS = WET_MEDIUM_PARAMS; exports.WET_PARAM_KEYS = _chunkYHDHFJUCcjs.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 = _chunkBY5EBP26cjs.WET_TOOLS; exports.WET_TOOL_LABELS = WET_TOOL_LABELS; exports.WetStrokeDriver = WetStrokeDriver; exports.addPaintGradientStop = _chunkFQPUF2W2cjs.addPaintGradientStop; exports.addPolygonArea = addPolygonArea; exports.affineCopy = affineCopy; exports.applyAffine = applyAffine; exports.backlightOf = backlightOf; exports.brushEngineControls = _chunkF3KKR6DDcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunkBY5EBP26cjs.brushTakesPaint; exports.brushToJSON = _chunkBY5EBP26cjs.brushToJSON; exports.buildTimeLapse = buildTimeLapse; exports.checkPaintEffectPlace = checkPaintEffectPlace; exports.clonePaper = clonePaper; exports.colorHarmony = colorHarmony2; exports.composeAffine = composeAffine; exports.contactSheet = contactSheet; exports.createPaintAgentStrokes = createPaintAgentStrokes; exports.createPaintBrushLibraryToolProvider = createPaintBrushLibraryToolProvider; exports.createPaintChangeFeed = createPaintChangeFeed; exports.createPaintCompositor = createPaintCompositor; exports.createPaintConformanceHost = createPaintConformanceHost; exports.createPaintDocument = createPaintDocument; exports.createPaintEditorDocument = createPaintEditorDocument; exports.createPaintEditorToolProvider = createPaintEditorToolProvider; exports.createPaintEffectsToolProvider = createPaintEffectsToolProvider; exports.createPaintLayer = createPaintLayer; exports.createPaintProposalToolProvider = createPaintProposalToolProvider; exports.createPaintProposals = createPaintProposals; exports.createPaintReplayTools = createPaintReplayTools; exports.createPaintStickerTools = createPaintStickerTools; exports.createPaintThickTools = createPaintThickTools; exports.createPaintWetTools = createPaintWetTools; exports.decodeImageBlob = decodeImageBlob; exports.defaultGuides = defaultGuides; exports.defaultImageEncoder = defaultImageEncoder; exports.defaultStickerRasterizer = defaultStickerRasterizer; exports.deserializePaintDocument = deserializePaintDocument; exports.deserializePaintDocumentAsync = deserializePaintDocumentAsync; exports.documentExtensions = documentExtensions; exports.documentToScreen = documentToScreen; exports.downloadBytes = downloadBytes; exports.downsampleRgba = downsampleRgba; exports.drawSticker = drawSticker; exports.drawWaterOverlay = drawWaterOverlay; exports.effectDabField = effectDabField; exports.effectLayersToJSON = effectLayersToJSON; exports.effectPaintKey = effectPaintKey; exports.effectPaintSize = effectPaintSize; exports.emptiedLayers = emptiedLayers; exports.emptyThickChannels = emptyThickChannels; exports.fitZoom = fitZoom; exports.grainCatch = _chunkPXDIAYB6cjs.grainCatch; exports.grainHeights = _chunkPXDIAYB6cjs.grainHeights; exports.guideOverlay = guideOverlay; exports.handlePaintShortcut = handlePaintShortcut; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.hexToPaintRgb = _chunkFQPUF2W2cjs.hexToPaintRgb; exports.hexToRgb8 = hexToRgb8; exports.hslToRgb = hslToRgb; exports.hsvToRgb = hsvToRgb; exports.hueToWheel = _chunkI3Y2Q3PMcjs.hueToWheel; exports.invertAffine = invertAffine; exports.isBlendMode = _chunk2VX55NFMcjs.isBlendMode; exports.isGradientPaint = _chunkFQPUF2W2cjs.isGradientPaint; exports.isPaintEffectPaint = isPaintEffectPaint; exports.isPainterlyBlendMode = _chunk2VX55NFMcjs.isPainterlyBlendMode; exports.isPalmTouch = isPalmTouch; exports.isWetBrush = _chunkBY5EBP26cjs.isWetBrush; exports.isWetCapable = _chunkBY5EBP26cjs.isWetCapable; exports.lightTile = lightTile; exports.lightingKey = lightingKey; exports.liveStrokeBounds = liveStrokeBounds; exports.liveStrokeRefusal = liveStrokeRefusal; exports.mapPenPoint = mapPenPoint; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixPixels = mixPixels; exports.mixerLoadForStroke = mixerLoadForStroke; exports.mixerTip = mixerTip; exports.multiColorForDab = multiColorForDab; exports.multiColorGradient = multiColorGradient; exports.multiColorPalette = multiColorPalette; exports.multiColorSliders = _chunkF3KKR6DDcjs.multiColorSliders; exports.multiColorToPaint = _chunkBY5EBP26cjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunkBY5EBP26cjs.normalizeBehavior; exports.normalizeBristle = _chunkBY5EBP26cjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunkBY5EBP26cjs.normalizeDynamics; exports.normalizeFlow = _chunkYHDHFJUCcjs.normalizeFlow; exports.normalizeHexColor = _chunkFQPUF2W2cjs.normalizeHexColor; exports.normalizeImpasto = _chunkBY5EBP26cjs.normalizeImpasto; exports.normalizeLight = _chunkBY5EBP26cjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunkBY5EBP26cjs.normalizeMultiColor; exports.normalizePaintBrush = _chunkBY5EBP26cjs.normalizePaintBrush; exports.normalizePaper = normalizePaper; exports.normalizeParticle = _chunkBY5EBP26cjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunkBY5EBP26cjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunkBY5EBP26cjs.normalizeWetBrush; exports.normalizeWetParams = _chunkYHDHFJUCcjs.normalizeWetParams; exports.overPixels = overPixels; exports.padSampleRadius = padSampleRadius; exports.paintAgentStrokePoints = paintAgentStrokePoints; exports.paintBrushPreviewRenderer = paintBrushPreviewRenderer; exports.paintContracts = paintContracts; exports.paintGradientMappingFor = _chunkFQPUF2W2cjs.paintGradientMappingFor; exports.paintPlaybackPanel = paintPlaybackPanel; exports.paintProposalGhost = paintProposalGhost; exports.paintShortcutFor = paintShortcutFor; exports.paintSourceColor = _chunkFQPUF2W2cjs.paintSourceColor; exports.paintSourceCss = _chunkFQPUF2W2cjs.paintSourceCss; exports.paintToMultiColor = _chunkBY5EBP26cjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = paperPreset; exports.parseBrushLibrary = _chunkBY5EBP26cjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkFQPUF2W2cjs.parsePaintSource; exports.patchBrushValue = _chunkF3KKR6DDcjs.patchBrushValue; exports.patchPath = patchPath; exports.penOrientation = penOrientation; exports.perspectiveDirections = perspectiveDirections; exports.perspectiveGuideLines = perspectiveGuideLines; exports.planPaintToolPlayback = planPaintToolPlayback; exports.pointerToPenPoint = pointerToPenPoint; exports.quickStencil = quickStencil; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.readEffectStrokeMap = readEffectStrokeMap; exports.readPaintEffectPaint = readPaintEffectPaint; exports.readPaintEffectSource = readPaintEffectSource; exports.readPaintSource = _chunkFQPUF2W2cjs.readPaintSource; exports.readPath = readPath; exports.readSwatch = readSwatch; exports.reliefInfo = reliefInfo; exports.removePaintGradientStop = _chunkFQPUF2W2cjs.removePaintGradientStop; exports.renderBrushThumbnail = renderBrushThumbnail; exports.renderColorWheel = renderColorWheel; exports.renderPaper = renderPaper; exports.renderStickers = renderStickers; exports.replayFrame = replayFrame; exports.replayItems = replayItems; exports.replayPainting = replayPainting; exports.resolvePaintGradient = _chunkFQPUF2W2cjs.resolvePaintGradient; exports.reversePaintGradient = _chunkFQPUF2W2cjs.reversePaintGradient; exports.rgbToHexColor = rgbToHexColor; exports.rgbToHsl = rgbToHsl; exports.rgbToHsv = rgbToHsv; exports.sampleArt = sampleArt; exports.sampleEffectAt = sampleEffectAt; exports.sampleEffectField = sampleEffectField; exports.samplePath = samplePath; exports.samplePressure = samplePressure; exports.scalePaintGradient = _chunkFQPUF2W2cjs.scalePaintGradient; exports.scaleStencil = scaleStencil; exports.screenToDocument = screenToDocument; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.serializePaintDocument = serializePaintDocument; exports.serializePaintDocumentExternal = serializePaintDocumentExternal; exports.solidPaint = _chunkFQPUF2W2cjs.solidPaint; exports.stampCoverage = _chunkOTN6VB5Scjs.stampCoverage; exports.standardBlendMode = _chunk2VX55NFMcjs.standardBlendMode; exports.startWetClock = startWetClock; exports.stencilMask = stencilMask; exports.stencilOutline = stencilOutline; exports.stickerAt = stickerAt; exports.stickerRect = stickerRect; exports.stickerRefLabel = stickerRefLabel; exports.stickerStamp = stickerStamp; exports.stickerSurface = stickerSurface; exports.strokeBounds = strokeBounds; exports.strokeDuration = strokeDuration; exports.strokeSchedule = strokeSchedule; exports.strokeToJSON = strokeToJSON; exports.sweepPath = sweepPath; exports.symmetryAxisAngles = symmetryAxisAngles; exports.symmetryAxisSegments = symmetryAxisSegments; exports.symmetryCopies = symmetryCopies; exports.thickFromJSON = thickFromJSON; exports.thickToJSON = thickToJSON; exports.thumbnailStroke = thumbnailStroke; exports.tiltToOrientation = tiltToOrientation; exports.timeLapseVideo = timeLapseVideo; exports.timeLapseZip = timeLapseZip; exports.toStrokePoint = toStrokePoint; exports.toggleDotTexture = toggleDotTexture; exports.toggleStamp = toggleStamp; exports.toggleStickerRef = toggleStickerRef; exports.translateStencil = translateStencil; exports.updatePaintGradientStop = _chunkFQPUF2W2cjs.updatePaintGradientStop; exports.usesPaintExchange = _chunkBY5EBP26cjs.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 = _chunkYHDHFJUCcjs.wetSupport; exports.wheelAngle = wheelAngle; exports.wheelPick = wheelPick; exports.wheelPoint = wheelPoint; exports.wheelToHue = _chunkI3Y2Q3PMcjs.wheelToHue; exports.withPaintPlayback = withPaintPlayback;