@pixerate/editor 0.264.0 → 0.265.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 (46) hide show
  1. package/dist/animation-editor/index.cjs +60 -61
  2. package/dist/animation-editor/index.js +4 -5
  3. package/dist/brushes/index.cjs +73 -60
  4. package/dist/brushes/index.d.cts +1 -0
  5. package/dist/brushes/index.d.ts +1 -0
  6. package/dist/brushes/index.js +17 -4
  7. package/dist/brushes/preview.d.cts +59 -0
  8. package/dist/brushes/preview.d.ts +59 -0
  9. package/dist/brushes/tools.d.cts +12 -5
  10. package/dist/brushes/tools.d.ts +12 -5
  11. package/dist/{brushstrokeRender-3MOI7PH4.js → brushstrokeRender-4UB6NRJW.js} +11 -4
  12. package/dist/{brushstrokeRender-SMMPIJF2.cjs → brushstrokeRender-JQ2XQRUD.cjs} +22 -15
  13. package/dist/canvas/brushstroke.d.cts +6 -1
  14. package/dist/canvas/brushstroke.d.ts +6 -1
  15. package/dist/canvas/index.cjs +16 -17
  16. package/dist/canvas/index.js +2 -3
  17. package/dist/{chunk-F3KKR6DD.cjs → chunk-5OE4ZZ6V.cjs} +30 -30
  18. package/dist/{chunk-BY5EBP26.cjs → chunk-677777GH.cjs} +3 -3
  19. package/dist/{chunk-G5ADO47G.cjs → chunk-7NQOGWLM.cjs} +3 -2
  20. package/dist/{chunk-WWI6FLH2.js → chunk-7PW6VCNW.js} +2 -2
  21. package/dist/{chunk-CECCP2V7.js → chunk-BLR4KWYQ.js} +1 -1
  22. package/dist/chunk-DEBIFWY6.cjs +77 -0
  23. package/dist/{chunk-KXNZNOEF.cjs → chunk-DGXTEPCU.cjs} +94 -94
  24. package/dist/{chunk-3CI7FRMK.js → chunk-DVPQFMH6.js} +13 -1
  25. package/dist/{chunk-EE7SAYBF.js → chunk-J4SGJCPW.js} +3 -3
  26. package/dist/{chunk-A2IS7EHE.cjs → chunk-JBZRVLXV.cjs} +14 -2
  27. package/dist/{chunk-V7MJ4HIN.cjs → chunk-NOP4Y5AB.cjs} +23 -23
  28. package/dist/{chunk-FQC5TDB6.cjs → chunk-O53MOGXG.cjs} +35 -35
  29. package/dist/{chunk-4OJC4MCD.js → chunk-Q6RVVJW6.js} +1 -1
  30. package/dist/{chunk-HAUDEVMC.js → chunk-WY23AUCA.js} +2 -2
  31. package/dist/{chunk-JEML4FSA.js → chunk-XDNWQMHY.js} +3 -2
  32. package/dist/{chunk-ROBSFJ6F.js → chunk-Z2Z2OHRM.js} +1 -1
  33. package/dist/{chunk-USJX5SW4.cjs → chunk-ZHRVCW3M.cjs} +12 -12
  34. package/dist/chunk-ZS7LB2MV.js +77 -0
  35. package/dist/image-editor/index.cjs +788 -790
  36. package/dist/image-editor/index.js +6 -8
  37. package/dist/paint-editor/controller.d.cts +1 -1
  38. package/dist/paint-editor/controller.d.ts +1 -1
  39. package/dist/paint-editor/index.cjs +92 -87
  40. package/dist/paint-editor/index.js +16 -11
  41. package/dist/vector/index.cjs +970 -971
  42. package/dist/vector/index.js +5 -6
  43. package/package.json +1 -1
  44. package/skills/pixerate-brushes/SKILL.md +7 -2
  45. package/dist/chunk-FJBQTZS4.js +0 -17
  46. package/dist/chunk-LRTR4ASZ.cjs +0 -17
@@ -11,13 +11,17 @@ var _chunkXORJ7UZOcjs = require('../chunk-XORJ7UZO.cjs');
11
11
 
12
12
 
13
13
 
14
- var _chunkF3KKR6DDcjs = require('../chunk-F3KKR6DD.cjs');
14
+ var _chunk5OE4ZZ6Vcjs = require('../chunk-5OE4ZZ6V.cjs');
15
15
 
16
16
 
17
17
 
18
18
  var _chunkPE6YJMQTcjs = require('../chunk-PE6YJMQT.cjs');
19
19
 
20
20
 
21
+
22
+ var _chunkDEBIFWY6cjs = require('../chunk-DEBIFWY6.cjs');
23
+
24
+
21
25
  var _chunkCBVNCWJMcjs = require('../chunk-CBVNCWJM.cjs');
22
26
 
23
27
 
@@ -30,7 +34,7 @@ var _chunk7TD63DZPcjs = require('../chunk-7TD63DZP.cjs');
30
34
 
31
35
 
32
36
 
33
- var _chunkKXNZNOEFcjs = require('../chunk-KXNZNOEF.cjs');
37
+ var _chunkDGXTEPCUcjs = require('../chunk-DGXTEPCU.cjs');
34
38
  require('../chunk-3ZRNK3RO.cjs');
35
39
 
36
40
 
@@ -88,7 +92,7 @@ var _chunkJLWLX52Lcjs = require('../chunk-JLWLX52L.cjs');
88
92
 
89
93
 
90
94
  var _chunkK7ENM55Pcjs = require('../chunk-K7ENM55P.cjs');
91
- require('../chunk-USJX5SW4.cjs');
95
+ require('../chunk-ZHRVCW3M.cjs');
92
96
 
93
97
 
94
98
 
@@ -143,7 +147,7 @@ require('../chunk-USJX5SW4.cjs');
143
147
 
144
148
 
145
149
 
146
- var _chunkBY5EBP26cjs = require('../chunk-BY5EBP26.cjs');
150
+ var _chunk677777GHcjs = require('../chunk-677777GH.cjs');
147
151
 
148
152
 
149
153
 
@@ -162,8 +166,7 @@ var _chunkGF2RBSDMcjs = require('../chunk-GF2RBSDM.cjs');
162
166
  require('../chunk-NM3G4VQT.cjs');
163
167
 
164
168
 
165
- var _chunkLRTR4ASZcjs = require('../chunk-LRTR4ASZ.cjs');
166
- require('../chunk-A2IS7EHE.cjs');
169
+ var _chunkJBZRVLXVcjs = require('../chunk-JBZRVLXV.cjs');
167
170
 
168
171
 
169
172
  var _chunkU67EN7GGcjs = require('../chunk-U67EN7GG.cjs');
@@ -1738,7 +1741,7 @@ function shadowToLight(shadow) {
1738
1741
  return new (0, _chunk474IQG74cjs.TiledSurface)(1, tiles, 0);
1739
1742
  }
1740
1743
  function lightTwinBrush(brush) {
1741
- return _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0,
1744
+ return _chunk677777GHcjs.normalizePaintBrush.call(void 0,
1742
1745
  {
1743
1746
  tip: { ...brush.tip, blend: "normal", pressureOpacity: brush.tip.pressureOpacity || brush.light.pressure },
1744
1747
  behavior: { ...brush.behavior, mixing: "rgb" },
@@ -3002,7 +3005,7 @@ var PaintStrokeSession = (_class12 = class _PaintStrokeSession {
3002
3005
  } else if (init.thick) {
3003
3006
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
3004
3007
  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" || _chunkBY5EBP26cjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
3008
+ } else if (brush.engine === "mixer" || brush.engine === "blender" || brush.engine === "smudge" || _chunk677777GHcjs.usesPaintExchange.call(void 0, brush, Boolean(init.paint))) {
3006
3009
  const rgb = (c) => [c[0] / 255, c[1] / 255, c[2] / 255];
3007
3010
  this.wet = new PaintDabStroke(brush, {
3008
3011
  target: this.tileTarget(),
@@ -3242,7 +3245,7 @@ function brushLoadForStroke(brush, current, color) {
3242
3245
  if (brush.engine === "mixer") return mixerLoadForStroke(brush, current, color);
3243
3246
  if (brush.engine === "impasto") return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
3244
3247
  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 (_chunkBY5EBP26cjs.usesPaintExchange.call(void 0, brush)) return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
3248
+ if (_chunk677777GHcjs.usesPaintExchange.call(void 0, brush)) return { reservoir: [color[0], color[1], color[2]], amount: 1, pickup: brush.behavior.dirty ? current.pickup : null };
3246
3249
  return _chunkFQPUF2W2cjs.EMPTY_MIXER_LOAD;
3247
3250
  }
3248
3251
 
@@ -3504,15 +3507,15 @@ function readLoad(raw) {
3504
3507
  function readStrokeBrush(raw) {
3505
3508
  if (raw && typeof raw === "object" && "kind" in raw && !("engine" in raw)) {
3506
3509
  try {
3507
- return _chunkBY5EBP26cjs.resolveBrush.call(void 0, _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, raw));
3510
+ return _chunk677777GHcjs.resolveBrush.call(void 0, _chunk677777GHcjs.normalizeBrushSpec.call(void 0, raw));
3508
3511
  } catch (e5) {
3509
3512
  }
3510
3513
  }
3511
- return _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, _nullishCoalesce(raw, () => ( {})));
3514
+ return _chunk677777GHcjs.normalizePaintBrush.call(void 0, _nullishCoalesce(raw, () => ( {})));
3512
3515
  }
3513
3516
  function strokeToJSON(stroke) {
3514
3517
  const { brush, ...rest } = stroke;
3515
- return { ...JSON.parse(JSON.stringify(rest)), brush: _chunkBY5EBP26cjs.migrateBrushV1.call(void 0, brush) };
3518
+ return { ...JSON.parse(JSON.stringify(rest)), brush: _chunk677777GHcjs.migrateBrushV1.call(void 0, brush) };
3516
3519
  }
3517
3520
  function normalizeBrushStroke(raw) {
3518
3521
  if (!raw || typeof raw !== "object") return null;
@@ -3582,7 +3585,7 @@ function varyStroke(stroke, m, v) {
3582
3585
  if (ps !== 1) q.pressure = Math.min(1, Math.max(0, (_nullishCoalesce(p.pressure, () => ( 1))) * ps));
3583
3586
  return q;
3584
3587
  });
3585
- const brush = s !== 1 ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...stroke.brush, tip: { ...stroke.brush.tip, size: stroke.brush.tip.size * s } }) : stroke.brush;
3588
+ const brush = s !== 1 ? _chunk677777GHcjs.normalizePaintBrush.call(void 0, { ...stroke.brush, tip: { ...stroke.brush.tip, size: stroke.brush.tip.size * s } }) : stroke.brush;
3586
3589
  const out = { ...stroke, brush, points };
3587
3590
  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
3591
  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 +3735,11 @@ function header(state, options) {
3732
3735
  return out;
3733
3736
  }
3734
3737
  function serializePaintDocument(state, options = {}) {
3735
- const { layers, assets } = _chunkKXNZNOEFcjs.serializeLayers.call(void 0, state.layers);
3738
+ const { layers, assets } = _chunkDGXTEPCUcjs.serializeLayers.call(void 0, state.layers);
3736
3739
  return { ...header(state, options), layers, assets };
3737
3740
  }
3738
3741
  async function serializePaintDocumentExternal(state, store, options = {}) {
3739
- const { layers, assets } = await _chunkKXNZNOEFcjs.serializeLayersExternal.call(void 0, state.layers, store);
3742
+ const { layers, assets } = await _chunkDGXTEPCUcjs.serializeLayersExternal.call(void 0, state.layers, store);
3740
3743
  return { ...header(state, options), layers, assets };
3741
3744
  }
3742
3745
  function paintLayersOnly(layers, problems) {
@@ -3773,7 +3776,7 @@ function deserializePaintDocument(raw) {
3773
3776
  const canvas = normalizeCanvas({ width: r.width, height: r.height, dpi: _nullishCoalesce(r.dpi, () => ( void 0)) });
3774
3777
  const paper = normalizePaper(_nullishCoalesce(r.paper, () => ( {})));
3775
3778
  const assets = r.assets && typeof r.assets === "object" ? r.assets : {};
3776
- const layers = paintLayersOnly(_chunkKXNZNOEFcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
3779
+ const layers = paintLayersOnly(_chunkDGXTEPCUcjs.deserializeLayers.call(void 0, r.layers, { assets, problems }), problems);
3777
3780
  const wanted = typeof r.activeLayerId === "string" ? r.activeLayerId : null;
3778
3781
  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
3782
  const wetEvents = Array.isArray(r.wetEvents) ? r.wetEvents.filter((e) => e && typeof e === "object" && Number.isInteger(e.clock) && typeof e.kind === "string") : [];
@@ -3789,7 +3792,7 @@ async function deserializePaintDocumentAsync(raw, store) {
3789
3792
  if (!raw || typeof raw !== "object") throw new Error("Not a paint document: expected a JSON object.");
3790
3793
  const r = raw;
3791
3794
  const problems = [];
3792
- const assets = await _chunkKXNZNOEFcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
3795
+ const assets = await _chunkDGXTEPCUcjs.resolveExternalAssets.call(void 0, _nullishCoalesce(r.assets, () => ( {})), store, problems);
3793
3796
  const loaded = deserializePaintDocument({ ...r, assets });
3794
3797
  return { ...loaded, problems: [...problems, ...loaded.problems] };
3795
3798
  }
@@ -4713,7 +4716,7 @@ function renderBrushThumbnail(brush, options) {
4713
4716
  const width = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.width, () => ( 160)))));
4714
4717
  const height = Math.max(16, Math.min(512, Math.round(_nullishCoalesce(options.height, () => ( 48)))));
4715
4718
  const maxSize = height * 0.42;
4716
- const b = brush.tip.size > maxSize ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
4719
+ const b = brush.tip.size > maxSize ? _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: maxSize } }, brush) : brush;
4717
4720
  const rgba = [...hexToRgb8(options.color), 255];
4718
4721
  let surface = _chunk474IQG74cjs.emptySurface.call(void 0, 4);
4719
4722
  if (b.engine === "eraser") {
@@ -4728,7 +4731,7 @@ function renderBrushThumbnail(brush, options) {
4728
4731
  if (b.engine === "wet") surface = paintWetTestStroke(b, options.paper, options.color, width, height);
4729
4732
  else ({ surface, light } = paintTestStroke(surface, b, options.paper, options.color, width, height));
4730
4733
  const layer = { type: "pixel", id: "thumbnail", name: "thumbnail", visible: true, opacity: 1, blend: "normal", surface, offset: { x: 0, y: 0 } };
4731
- const paper = light ? { ...options.paper, color: "#141414" } : options.paper;
4734
+ const paper = light && _chunkDEBIFWY6cjs.brushPreviewsOnDark.call(void 0, b) ? { ...options.paper, color: _chunkDEBIFWY6cjs.BRUSH_PREVIEW_DARK_PAPER } : options.paper;
4732
4735
  const spill = light ? computeSpill(surface, light, { radius: Math.max(4, height / 6), strength: 1 }) : null;
4733
4736
  const layers = [paperNode(paper), layer];
4734
4737
  if (spill) layers.push({ type: "pixel", id: "thumbnail-light", name: "light", visible: true, opacity: 1, blend: "linear-dodge", surface: spill, offset: { x: 0, y: 0 } });
@@ -4996,7 +4999,7 @@ var DEFAULT_SWATCHES = [
4996
4999
  // src/paint-editor/mixing-pad.ts
4997
5000
  var MIXING_PAD_WIDTH = 360;
4998
5001
  var MIXING_PAD_HEIGHT = 220;
4999
- var PAD_PAINT = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5002
+ var PAD_PAINT = _chunk677777GHcjs.normalizePaintBrush.call(void 0, {
5000
5003
  id: "pad-paint",
5001
5004
  name: "Pad paint",
5002
5005
  category: "mixer",
@@ -5004,7 +5007,7 @@ var PAD_PAINT = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5004
5007
  tip: { size: 28, hardness: 0.75, spacing: 0.1, opacity: 1, flow: 0.7, pressureSize: false, pressureOpacity: false },
5005
5008
  mixer: { wet: 0.45, load: 1, mix: 0.4, loadEachStroke: true, cleanEachStroke: true, mixing: "pigment" }
5006
5009
  });
5007
- var PAD_KNIFE = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5010
+ var PAD_KNIFE = _chunk677777GHcjs.normalizePaintBrush.call(void 0, {
5008
5011
  id: "pad-knife",
5009
5012
  name: "Palette knife",
5010
5013
  category: "smudge",
@@ -5014,7 +5017,7 @@ var PAD_KNIFE = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5014
5017
  // A knife drags streaks of paint and folds them into each other, mixing them as pigment.
5015
5018
  smudge: { strength: 0.6, length: 0.8, mixing: "pigment" }
5016
5019
  });
5017
- var PAD_BLOB = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, {
5020
+ var PAD_BLOB = _chunk677777GHcjs.normalizePaintBrush.call(void 0, {
5018
5021
  id: "pad-blob",
5019
5022
  name: "Pad blob",
5020
5023
  category: "custom",
@@ -5036,7 +5039,7 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5036
5039
  }
5037
5040
  }
5038
5041
  let brush = options.tool === "knife" ? PAD_KNIFE : PAD_PAINT;
5039
- if (options.size !== void 0) brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: options.size } }, brush);
5042
+ if (options.size !== void 0) brush = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...brush.tip, size: options.size } }, brush);
5040
5043
  return this.run(brush, points, options.color);
5041
5044
  }
5042
5045
  /** Paints `points` with `brush` in `color` on the pad. */
@@ -5135,10 +5138,10 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5135
5138
  const off = used.length === 1 ? 0 : 0.45 * R;
5136
5139
  const x = Math.min(cx + R - r, Math.max(cx - R + r, cx + Math.cos(a) * off));
5137
5140
  const y = Math.min(cy + R - r, Math.max(cy - R + r, cy + Math.sin(a) * off));
5138
- const blob = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: Math.max(2, 2 * r) } }, PAD_BLOB);
5141
+ const blob = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: Math.max(2, 2 * r) } }, PAD_BLOB);
5139
5142
  this.run(blob, [{ x, y }], p.color.toLowerCase());
5140
5143
  });
5141
- const knife = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_KNIFE.tip, size: Math.max(12, R * 0.5) } }, PAD_KNIFE);
5144
+ const knife = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_KNIFE.tip, size: Math.max(12, R * 0.5) } }, PAD_KNIFE);
5142
5145
  for (let k = 0; k < passes; k++) {
5143
5146
  const stir = [];
5144
5147
  const turns = 1.6;
@@ -5153,7 +5156,7 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5153
5156
  paints2.map((p) => hexToRgb8(p.color).map((v) => v / 255)),
5154
5157
  paints2.map((p) => p.parts)
5155
5158
  );
5156
- const core = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
5159
+ const core = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...PAD_BLOB.tip, size: R * 1.1, hardness: 0.55 } }, PAD_BLOB);
5157
5160
  const hex2 = "#" + mixed.map((v) => Math.round(v * 255).toString(16).padStart(2, "0")).join("");
5158
5161
  this.run(core, [{ x: cx, y: cy }], hex2);
5159
5162
  return { color: this.pick(cx, cy, 2), bounds };
@@ -5193,21 +5196,21 @@ var MixingPad = (_class16 = class {constructor() { _class16.prototype.__init108.
5193
5196
  var copyJSON = (v) => JSON.parse(JSON.stringify(v));
5194
5197
  var isObject = (v) => typeof v === "object" && v !== null && !Array.isArray(v);
5195
5198
  function libraryBrush(spec, builtin, resolved) {
5196
- const brush = resolved ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, resolved, resolved) : _chunkBY5EBP26cjs.resolveBrush.call(void 0, spec);
5199
+ const brush = resolved ? _chunk677777GHcjs.normalizePaintBrush.call(void 0, resolved, resolved) : _chunk677777GHcjs.resolveBrush.call(void 0, spec);
5197
5200
  if (builtin) brush.builtin = true;
5198
5201
  else delete brush.builtin;
5199
5202
  return { spec, brush, builtin };
5200
5203
  }
5201
5204
  var builtins = null;
5202
5205
  function builtinLibraryBrushes() {
5203
- return builtins ??= _chunkBY5EBP26cjs.BRUSH_PRESETS.map((spec) => {
5204
- const resolved = _chunkBY5EBP26cjs.BUILTIN_BRUSHES.find((b) => b.id === spec.id);
5206
+ return builtins ??= _chunk677777GHcjs.BRUSH_PRESETS.map((spec) => {
5207
+ const resolved = _chunk677777GHcjs.BUILTIN_BRUSHES.find((b) => b.id === spec.id);
5205
5208
  return libraryBrush(spec, true, resolved);
5206
5209
  });
5207
5210
  }
5208
5211
  function seededStorage(brushes) {
5209
5212
  if (!brushes.length) return void 0;
5210
- let stored = JSON.stringify({ format: "pixerate-brushes", version: 1, brushes: brushes.map(_chunkBY5EBP26cjs.brushToJSON) });
5213
+ let stored = JSON.stringify({ format: "pixerate-brushes", version: 1, brushes: brushes.map(_chunk677777GHcjs.brushToJSON) });
5211
5214
  return {
5212
5215
  get: async () => stored,
5213
5216
  set: async (_key, value) => {
@@ -5220,7 +5223,7 @@ var paints = (b) => {
5220
5223
  return JSON.stringify(rest);
5221
5224
  };
5222
5225
  function brushSpecOf(next, from) {
5223
- const plain = _chunkBY5EBP26cjs.migrateBrushV1.call(void 0, next);
5226
+ const plain = _chunk677777GHcjs.migrateBrushV1.call(void 0, next);
5224
5227
  const out = copyJSON(plain);
5225
5228
  if (from.description) out.description = from.description;
5226
5229
  if (_optionalChain([from, 'access', _221 => _221.tags, 'optionalAccess', _222 => _222.length])) out.tags = [...from.tags];
@@ -5240,8 +5243,8 @@ function brushSpecOf(next, from) {
5240
5243
  out.motion = { ..._nullishCoalesce(out.motion, () => ( {})), ...from.motion.live !== void 0 ? { live: from.motion.live } : {}, ...from.motion.fps !== void 0 ? { fps: from.motion.fps } : {} };
5241
5244
  }
5242
5245
  try {
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;
5246
+ const hinted = _chunk677777GHcjs.normalizeBrushSpec.call(void 0, out, []);
5247
+ if (paints(_chunk677777GHcjs.resolveBrush.call(void 0, hinted)) === paints(_chunk677777GHcjs.resolveBrush.call(void 0, plain))) return hinted;
5245
5248
  } catch (e7) {
5246
5249
  }
5247
5250
  return plain;
@@ -5579,7 +5582,8 @@ async function replayPainting(source, target, options = {}) {
5579
5582
  const maxStrokes = _nullishCoalesce(options.strokes, () => ( source.strokes.length));
5580
5583
  const chunk = Math.max(1, _nullishCoalesce(options.wetChunk, () => ( 0))) || Infinity;
5581
5584
  let strokes = 0;
5582
- await target.prepareEffectPaints(source.strokes.slice(0, maxStrokes).flatMap((st) => _optionalChain([st, 'access', _247 => _247.paint, 'optionalAccess', _248 => _248.type]) === "effect" ? [st.paint] : []));
5585
+ const scaled = source.strokes.slice(0, maxStrokes).map((st) => s === 1 ? st : varyStroke(st, scaleM, { scale: s }));
5586
+ await target.prepareEffectPaints(scaled.flatMap((st) => _optionalChain([st, 'access', _247 => _247.paint, 'optionalAccess', _248 => _248.type]) === "effect" ? [st.paint] : []));
5583
5587
  const advanceTo = async (clock) => {
5584
5588
  const now = target.getState().wet.clock;
5585
5589
  let left = clock - now;
@@ -5897,7 +5901,7 @@ async function libraryCall(call) {
5897
5901
  try {
5898
5902
  return await call();
5899
5903
  } catch (e) {
5900
- throw e instanceof _chunkBY5EBP26cjs.BrushLibraryError ? new PaintEditorError(e.message) : e;
5904
+ throw e instanceof _chunk677777GHcjs.BrushLibraryError ? new PaintEditorError(e.message) : e;
5901
5905
  }
5902
5906
  }
5903
5907
  var HEX3 = /^#[0-9a-f]{6}$/i;
@@ -6027,15 +6031,15 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
6027
6031
  this.rasterizeSticker = _nullishCoalesce(options.rasterizeSticker, () => ( defaultStickerRasterizer));
6028
6032
  if (options.stickers) this.stickers.set(options.stickers);
6029
6033
  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) => _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);
6034
+ const seed = (_nullishCoalesce(options.brushes, () => ( []))).map((b) => _chunk677777GHcjs.normalizePaintBrush.call(void 0, { ...b, builtin: false }));
6035
+ this.brushLibrary = _nullishCoalesce(options.brushLibrary, () => ( _chunk677777GHcjs.createBrushLibrary.call(void 0, { storage: seededStorage(seed) })));
6036
+ this.brushEntries = [...builtinLibraryBrushes(), ...seed.map((b) => libraryBrush(_chunk677777GHcjs.migrateBrushV1.call(void 0, b), false, b))];
6037
+ const wanted = _nullishCoalesce(options.brushId, () => ( _chunk677777GHcjs.DEFAULT_BRUSH_ID));
6038
+ const start = _nullishCoalesce(this.findEntry(wanted), () => ( this.findEntry(_chunk677777GHcjs.DEFAULT_BRUSH_ID)));
6039
+ this.brush = _chunk677777GHcjs.normalizePaintBrush.call(void 0, start.brush);
6036
6040
  this.brushSpec = copyJSON(start.spec);
6037
6041
  this.unsubscribeLibrary = this.brushLibrary.subscribe(() => void this.refreshBrushes().catch(() => void 0));
6038
- if (options.brushLibrary && seed.length) void this.brushLibrary.importFile(seed.map(_chunkBY5EBP26cjs.brushToJSON)).catch(() => void 0);
6042
+ if (options.brushLibrary && seed.length) void this.brushLibrary.importFile(seed.map(_chunk677777GHcjs.brushToJSON)).catch(() => void 0);
6039
6043
  void this.refreshBrushes().catch(() => void 0);
6040
6044
  this.pendingBrushId = start.brush.id === wanted ? null : wanted;
6041
6045
  this.color = options.color ? parseColor(options.color) : "#1f2937";
@@ -7265,7 +7269,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7265
7269
  * its pixels are not rendered.
7266
7270
  */
7267
7271
  strokeEffect(init, brush) {
7268
- if (!_chunkBY5EBP26cjs.brushTakesPaint.call(void 0, brush)) return null;
7272
+ if (!_chunk677777GHcjs.brushTakesPaint.call(void 0, brush)) return null;
7269
7273
  let source = null;
7270
7274
  if (init.paint !== void 0) {
7271
7275
  if (!isPaintEffectPaint(init.paint)) return null;
@@ -7326,7 +7330,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7326
7330
  }
7327
7331
  requireEntry(id) {
7328
7332
  const e = this.findEntry(id);
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.`);
7333
+ if (!e) throw new PaintEditorError(`Unknown brush "${id}". ${_chunk677777GHcjs.closest.call(void 0, id, this.brushEntries.map((x) => x.brush.id))}Call list_brush_presets for the ids.`);
7330
7334
  return e;
7331
7335
  }
7332
7336
  requireBrush(id) {
@@ -7352,7 +7356,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7352
7356
  /** A library brush by id, as the engine paints it (`undefined` when unknown). */
7353
7357
  getBrush(id) {
7354
7358
  const b = this.findBrush(id);
7355
- return b ? _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, b, b) : void 0;
7359
+ return b ? _chunk677777GHcjs.normalizePaintBrush.call(void 0, b, b) : void 0;
7356
7360
  }
7357
7361
  /** A library brush by id as stored (its facets), or without an id the active brush as edited. */
7358
7362
  getBrushSpec(id) {
@@ -7370,7 +7374,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7370
7374
  const baseSpec = entry ? entry.spec : this.brushSpec;
7371
7375
  if (changes.paint !== void 0 && changes.paint !== null) this.readStrokePaint(changes.paint);
7372
7376
  const unchanged = !Object.keys(changes).length;
7373
- const next = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...changes, id: base.id }, base);
7377
+ const next = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { ...changes, id: base.id }, base);
7374
7378
  if (entry) this.takeBrushColour(entry.spec);
7375
7379
  this.useBrush(next, unchanged ? baseSpec : brushSpecOf(next, baseSpec), unchanged && base.builtin === true);
7376
7380
  return this.brush;
@@ -7389,7 +7393,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7389
7393
  for (const k of unset) delete base[k];
7390
7394
  const spec = this.readBrushPatch(base, patch, problems);
7391
7395
  if (entry || _optionalChain([patch, 'access', _381 => _381.colour, 'optionalAccess', _382 => _382.default]) !== void 0) this.takeBrushColour(spec);
7392
- this.useBrush(unchanged && entry ? entry.brush : _chunkBY5EBP26cjs.resolveBrush.call(void 0, spec), spec, unchanged && _optionalChain([entry, 'optionalAccess', _383 => _383.builtin]) === true);
7396
+ this.useBrush(unchanged && entry ? entry.brush : _chunk677777GHcjs.resolveBrush.call(void 0, spec), spec, unchanged && _optionalChain([entry, 'optionalAccess', _383 => _383.builtin]) === true);
7393
7397
  return { brush: this.brush, spec: copyJSON(this.brushSpec), problems };
7394
7398
  }
7395
7399
  /**
@@ -7403,11 +7407,11 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7403
7407
  if (paint && typeof paint === "object" && "type" in paint && paint.type === "gradient") this.readStrokePaint(paint);
7404
7408
  let next;
7405
7409
  try {
7406
- next = _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, { ...spec, id: this.brush.id }, problems);
7410
+ next = _chunk677777GHcjs.normalizeBrushSpec.call(void 0, { ...spec, id: this.brush.id }, problems);
7407
7411
  } catch (e) {
7408
7412
  throw new PaintEditorError(e.message);
7409
7413
  }
7410
- this.useBrush(_chunkBY5EBP26cjs.resolveBrush.call(void 0, next), next, false);
7414
+ this.useBrush(_chunk677777GHcjs.resolveBrush.call(void 0, next), next, false);
7411
7415
  return { brush: this.brush, spec: copyJSON(this.brushSpec), problems };
7412
7416
  }
7413
7417
  /**
@@ -7416,22 +7420,22 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7416
7420
  */
7417
7421
  brushChanges(patch, from) {
7418
7422
  const entry = typeof from === "string" ? this.requireEntry(from) : null;
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, [])));
7423
+ const base = entry ? entry.brush : typeof from === "object" ? _chunk677777GHcjs.normalizePaintBrush.call(void 0, from, from) : this.brush;
7424
+ const spec = entry ? entry.spec : typeof from === "object" ? _chunk677777GHcjs.migrateBrushV1.call(void 0, base) : this.brushSpec;
7425
+ return engineChanges(base, _chunk677777GHcjs.resolveBrush.call(void 0, this.readBrushPatch(spec, patch, [])));
7422
7426
  }
7423
7427
  readBrushPatch(base, patch, problems) {
7424
7428
  const { id: _id, name, ...rest } = patch;
7425
7429
  const paint = _optionalChain([rest, 'access', _386 => _386.colour, 'optionalAccess', _387 => _387.default]);
7426
7430
  if (paint && typeof paint === "object" && "type" in paint && paint.type === "gradient") this.readStrokePaint(paint);
7427
7431
  try {
7428
- return _chunkBY5EBP26cjs.normalizeBrushSpec.call(void 0, _chunkF3KKR6DDcjs.mergeBrushPatch.call(void 0, base, { ...rest, ...name !== void 0 ? { name } : {} }), problems);
7432
+ return _chunk677777GHcjs.normalizeBrushSpec.call(void 0, _chunk5OE4ZZ6Vcjs.mergeBrushPatch.call(void 0, base, { ...rest, ...name !== void 0 ? { name } : {} }), problems);
7429
7433
  } catch (e) {
7430
7434
  throw new PaintEditorError(e.message);
7431
7435
  }
7432
7436
  }
7433
7437
  useBrush(next, spec, builtin) {
7434
- next = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, next, next);
7438
+ next = _chunk677777GHcjs.normalizePaintBrush.call(void 0, next, next);
7435
7439
  if (builtin) next.builtin = true;
7436
7440
  else delete next.builtin;
7437
7441
  this.brush = next;
@@ -7447,9 +7451,9 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7447
7451
  * saved brush.
7448
7452
  */
7449
7453
  async saveBrush(options) {
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").`);
7454
+ if (!_chunk677777GHcjs.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
7455
  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(_chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, options.brush, this.brush), this.brushSpec) : this.brushSpec;
7456
+ const spec = options.brush ? brushSpecOf(_chunk677777GHcjs.normalizePaintBrush.call(void 0, options.brush, this.brush), this.brushSpec) : this.brushSpec;
7453
7457
  const { brush } = await libraryCall(() => this.brushLibrary.save({ ...spec, id: options.id, name: _nullishCoalesce(options.name, () => ( spec.name)) }, { overwrite: true }));
7454
7458
  await this.refreshBrushes();
7455
7459
  return this.requireBrush(brush.id);
@@ -7462,7 +7466,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7462
7466
  }
7463
7467
  /** The user's saved brushes, as the engine paints them. */
7464
7468
  getUserBrushes() {
7465
- return this.brushEntries.filter((e) => !e.builtin).map((e) => _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, e.brush, e.brush));
7469
+ return this.brushEntries.filter((e) => !e.builtin).map((e) => _chunk677777GHcjs.normalizePaintBrush.call(void 0, e.brush, e.brush));
7466
7470
  }
7467
7471
  /** A brush library file (version 2) of the given brushes (default: the user's brushes). */
7468
7472
  exportBrushes(ids) {
@@ -7496,7 +7500,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7496
7500
  const next = scheme === "dark" ? "dark" : "light";
7497
7501
  if (next === this.colorScheme) return;
7498
7502
  this.colorScheme = next;
7499
- const hex2 = this.brushColour ? _chunkLRTR4ASZcjs.brushColourHex.call(void 0, this.brushColour, next) : null;
7503
+ const hex2 = this.brushColour ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, this.brushColour, next) : null;
7500
7504
  if (hex2) this.color = hex2;
7501
7505
  const refs = brushStickerRefs(this.brush);
7502
7506
  if (refs.some((r) => !_chunkOTN6VB5Scjs.editorStampOf.call(void 0, r))) void this.prepareStickers(refs).catch(() => this.emit([]));
@@ -7516,7 +7520,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7516
7520
  takeBrushColour(spec) {
7517
7521
  if (this.colorLocked) return;
7518
7522
  const d = _optionalChain([spec, 'access', _388 => _388.colour, 'optionalAccess', _389 => _389.default]);
7519
- const hex2 = d !== void 0 ? _chunkLRTR4ASZcjs.brushColourHex.call(void 0, d, this.colorScheme) : null;
7523
+ const hex2 = d !== void 0 ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, d, this.colorScheme) : null;
7520
7524
  if (!hex2) return;
7521
7525
  this.color = hex2;
7522
7526
  this.gradient = null;
@@ -7528,7 +7532,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7528
7532
  ownColour(brushId) {
7529
7533
  const spec = brushId !== void 0 ? _optionalChain([this, 'access', _390 => _390.findEntry, 'call', _391 => _391(brushId), 'optionalAccess', _392 => _392.spec]) : this.brushSpec;
7530
7534
  const d = _optionalChain([spec, 'optionalAccess', _393 => _393.colour, 'optionalAccess', _394 => _394.own]) ? spec.colour.default : void 0;
7531
- return d !== void 0 ? _chunkLRTR4ASZcjs.brushColourHex.call(void 0, d, this.colorScheme) : null;
7535
+ return d !== void 0 ? _chunkJBZRVLXVcjs.brushColourHex.call(void 0, d, this.colorScheme) : null;
7532
7536
  }
7533
7537
  /** Sets the paint colour (and goes back to one colour from gradient paint). */
7534
7538
  setColor(color) {
@@ -7570,7 +7574,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7570
7574
  * brush's gradient, else the editor's gradient paint. Erasers, blenders and smudges take none.
7571
7575
  */
7572
7576
  strokeGradient(init, brush, color) {
7573
- if (!_chunkBY5EBP26cjs.brushTakesPaint.call(void 0, brush)) return null;
7577
+ if (!_chunk677777GHcjs.brushTakesPaint.call(void 0, brush)) return null;
7574
7578
  let g = null;
7575
7579
  if (init.paint !== void 0) {
7576
7580
  if (isPaintEffectPaint(init.paint)) return null;
@@ -7647,7 +7651,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7647
7651
  // --- Strokes -------------------------------------------------------------------
7648
7652
  strokeBrush(init) {
7649
7653
  let brush = init.brushId !== void 0 ? this.requireBrush(init.brushId) : this.brush;
7650
- if (init.brush) brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...init.brush, id: brush.id }, brush);
7654
+ if (init.brush) brush = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { ...init.brush, id: brush.id }, brush);
7651
7655
  return brush;
7652
7656
  }
7653
7657
  /**
@@ -7680,7 +7684,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7680
7684
  return l;
7681
7685
  })();
7682
7686
  const brush = this.strokeBrush(init);
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.`);
7687
+ if (this.previewing && _chunk677777GHcjs.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
7688
  const effect = this.strokeEffect(init, brush);
7685
7689
  if (brush.light.amount > 0) {
7686
7690
  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 +7707,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7703
7707
  throw new PaintEditorError(`Layer "${layer.name}" is a sticker layer (its pixels are drawn from its stickers); paint on another layer (add_layer).`);
7704
7708
  }
7705
7709
  let wet;
7706
- if (_chunkBY5EBP26cjs.isWetBrush.call(void 0, brush)) {
7710
+ if (_chunk677777GHcjs.isWetBrush.call(void 0, brush)) {
7707
7711
  this.requireWetIdle("painting");
7708
7712
  if (layer.offset.x || layer.offset.y) {
7709
7713
  const moved = { ...layer, surface: _chunk474IQG74cjs.translateSurface.call(void 0, layer.surface, layer.offset.x, layer.offset.y), offset: { x: 0, y: 0 } };
@@ -7797,7 +7801,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
7797
7801
  const stroke = {
7798
7802
  id: `s${this.strokeCounter++}`,
7799
7803
  layerId: session.layerId,
7800
- brush: _chunkBY5EBP26cjs.brushToJSON.call(void 0, init.brush),
7804
+ brush: _chunk677777GHcjs.brushToJSON.call(void 0, init.brush),
7801
7805
  color: init.colorHex,
7802
7806
  points: session.points.map((p) => ({ ...p })),
7803
7807
  seed: init.seed
@@ -8048,7 +8052,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
8048
8052
  let brush = v.brush;
8049
8053
  if (options.brushId !== void 0) {
8050
8054
  const b = this.requireBrush(options.brushId);
8051
- brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: b.tip.size * (v.brush.tip.size / s.brush.tip.size) } }, b);
8055
+ brush = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: b.tip.size * (v.brush.tip.size / s.brush.tip.size) } }, b);
8052
8056
  }
8053
8057
  const layerId = _nullishCoalesce(options.layerId, () => ( s.layerId));
8054
8058
  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 +8830,7 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
8826
8830
  return next.type === "group" ? { ...next, children: toStandard(next.children) } : next;
8827
8831
  });
8828
8832
  const layers = toStandard(dried);
8829
- const result = _chunkKXNZNOEFcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
8833
+ const result = _chunkDGXTEPCUcjs.exportPsd.call(void 0, { width, height, layers: [paperLayer, ...layers], merged, resolution: dpi });
8830
8834
  for (const [mode, names] of changed) {
8831
8835
  const label = _nullishCoalesce(_optionalChain([_chunk2VX55NFMcjs.BLEND_MODES, 'access', _493 => _493.find, 'call', _494 => _494((m) => m.id === mode), 'optionalAccess', _495 => _495.label]), () => ( mode));
8832
8836
  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 +9345,15 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
9341
9345
  let brush = was.brush;
9342
9346
  if (update.brushId !== void 0) {
9343
9347
  const b = this.requireBrush(update.brushId);
9344
- brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: was.brush.tip.size } }, b);
9348
+ brush = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { tip: { ...b.tip, size: was.brush.tip.size } }, b);
9345
9349
  }
9346
9350
  if (update.brush !== void 0) {
9347
9351
  if (!update.brush || typeof update.brush !== "object") throw new PaintEditorError("brush must be an object of brush settings (as set_brush takes).");
9348
- brush = _chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ...update.brush, id: brush.id }, brush);
9352
+ brush = _chunk677777GHcjs.normalizePaintBrush.call(void 0, { ...update.brush, id: brush.id }, brush);
9349
9353
  }
9350
9354
  const why = liveStrokeRefusal(brush);
9351
9355
  if (why) throw new PaintEditorError(why);
9352
- const next = { ...was, brush: _chunkBY5EBP26cjs.brushToJSON.call(void 0, brush) };
9356
+ const next = { ...was, brush: _chunk677777GHcjs.brushToJSON.call(void 0, brush) };
9353
9357
  if (update.seed !== void 0) {
9354
9358
  if (!Number.isInteger(update.seed) || update.seed < 0) throw new PaintEditorError(`seed ${update.seed} must be a whole number of 0 or more.`);
9355
9359
  next.seed = update.seed;
@@ -9588,11 +9592,11 @@ var PaintEditorController = (_class19 = class _PaintEditorController {
9588
9592
  if (!layers.length) return null;
9589
9593
  return { layerIds: layers.map((x) => x.layer.id), strokes: layers.reduce((n, x) => n + x.strokes.filter(isLiveEffect).length, 0), sources: sources.length };
9590
9594
  }
9591
- /** Plays or pauses live effect paint, and caps its frame rate (1..60). Editor state, not an undo step. */
9595
+ /** Plays or pauses live effect paint, and caps its frame rate (1..60); a setting left out keeps its value. Editor state, not an undo step. */
9592
9596
  setEffectPlayback(update) {
9593
9597
  if (update.playing !== void 0 && typeof update.playing !== "boolean") throw new PaintEditorError("playing must be true or false.");
9594
9598
  if (update.fps !== void 0 && !(Number.isInteger(update.fps) && update.fps >= 1 && update.fps <= 60)) throw new PaintEditorError(`fps ${update.fps} is out of range; use a whole number 1..60.`);
9595
- this.effectPlaybackState = { ...this.effectPlaybackState, ...update };
9599
+ this.effectPlaybackState = { playing: _nullishCoalesce(update.playing, () => ( this.effectPlaybackState.playing)), fps: _nullishCoalesce(update.fps, () => ( this.effectPlaybackState.fps)) };
9596
9600
  this.emit([]);
9597
9601
  return { ...this.effectPlaybackState, time: this.effectTime };
9598
9602
  }
@@ -11610,7 +11614,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11610
11614
  name: "set_brush",
11611
11615
  title: "Set the brush",
11612
11616
  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." }, ..._chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, unset: _chunkF3KKR6DDcjs.BRUSH_UNSET_PROPERTY }, additionalProperties: false },
11617
+ 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." }, ..._chunk5OE4ZZ6Vcjs.BRUSH_PATCH_PROPERTIES, unset: _chunk5OE4ZZ6Vcjs.BRUSH_UNSET_PROPERTY }, additionalProperties: false },
11614
11618
  annotations: { title: "Set the brush", ...SET4 },
11615
11619
  handler: async ({ id, unset, ...patch }) => {
11616
11620
  const stamps = _optionalChain([patch, 'access', _574 => _574.tip, 'optionalAccess', _575 => _575.stamps]);
@@ -11706,7 +11710,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11706
11710
  points: POINTS,
11707
11711
  layerId: LAYER_ID4,
11708
11712
  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: _chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11713
+ brush: { type: "object", description: "Facets to change for this stroke only, laid over brushId or the active brush (as set_brush takes them).", properties: _chunk5OE4ZZ6Vcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11710
11714
  color: { ...COLOR3, description: "Paint colour #rrggbb (default the paint colour)." },
11711
11715
  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
11716
  seed: { type: "integer", minimum: 0, description: "Jitter seed (default a new one); the same seed and points give the same marks." },
@@ -11722,7 +11726,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11722
11726
  const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
11723
11727
  const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
11724
11728
  if (base) {
11725
- const refs = brushStickerRefs(_chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11729
+ const refs = brushStickerRefs(_chunk677777GHcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11726
11730
  if (refs.length) await c.prepareStickers(refs);
11727
11731
  }
11728
11732
  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 +11746,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11742
11746
  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
11747
  layerId: LAYER_ID4,
11744
11748
  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: _chunkF3KKR6DDcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11749
+ brush: { type: "object", description: "Facets to change for this stroke only, laid over brushId or the active brush (as set_brush takes them).", properties: _chunk5OE4ZZ6Vcjs.BRUSH_PATCH_PROPERTIES, additionalProperties: false },
11746
11750
  color: { ...COLOR3, description: "Paint colour #rrggbb (default the paint colour)." },
11747
11751
  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
11752
  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 +11761,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11757
11761
  const base = a.brushId ? c.getBrush(a.brushId) : c.getState().brush;
11758
11762
  const brush = a.brush ? c.brushChanges(a.brush, a.brushId) : void 0;
11759
11763
  if (base) {
11760
- const refs = brushStickerRefs(_chunkBY5EBP26cjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11764
+ const refs = brushStickerRefs(_chunk677777GHcjs.normalizePaintBrush.call(void 0, { ..._nullishCoalesce(brush, () => ( {})), id: base.id }, base));
11761
11765
  if (refs.length) await c.prepareStickers(refs);
11762
11766
  }
11763
11767
  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 +11845,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
11841
11845
  properties: {
11842
11846
  id: { type: "string", description: "Stroke id from list_strokes {live: true}." },
11843
11847
  brushId: { type: "string", description: "Brush id from list_brush_presets; the stroke keeps its size." },
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." },
11848
+ brush: { type: "object", properties: _chunk5OE4ZZ6Vcjs.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
11849
  color: { type: "string", pattern: "^#[0-9a-fA-F]{6}$", description: "New colour #rrggbb (replaces gradient paint)." },
11846
11850
  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
11851
  seed: { type: "integer", minimum: 0, description: "Another jitter seed: particles, scatter and texture fall differently." }
@@ -12092,7 +12096,7 @@ function createPaintEditorToolProvider(controller, options = {}) {
12092
12096
  tools.push(..._chunkYHDHFJUCcjs.createPigmentTools.call(void 0, ));
12093
12097
  tools.push(..._chunkPE6YJMQTcjs.createStickerTools.call(void 0, { provider: () => c.stickersProvider }));
12094
12098
  tools.push(
12095
- ..._chunkKXNZNOEFcjs.createLayerEffectTools.call(void 0,
12099
+ ..._chunkDGXTEPCUcjs.createLayerEffectTools.call(void 0,
12096
12100
  {
12097
12101
  requireLayer: (id) => void c.getLayerEffects(id),
12098
12102
  getLayerEffects: (id) => c.getLayerEffects(id),
@@ -12151,14 +12155,15 @@ function strokeSummary(s, withPoints, live) {
12151
12155
 
12152
12156
  // src/paint-editor/brush-library-tools.ts
12153
12157
  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() });
12158
+ const render = (brush, { width, height, color }) => {
12159
+ const t = renderBrushThumbnail(_chunk677777GHcjs.resolveBrush.call(void 0, brush), { paper: paper(), width, height, color: color.toLowerCase() });
12156
12160
  return { data: _chunkW5M3J7PVcjs.bytesToBase64.call(void 0, _chunkW5M3J7PVcjs.encodePng.call(void 0, t.width, t.height, t.data)), mimeType: "image/png" };
12157
12161
  };
12162
+ return Object.defineProperty(render, "paper", { get: () => paper().color, enumerable: true });
12158
12163
  }
12159
12164
  function createPaintBrushLibraryToolProvider(controller, options = {}) {
12160
- return _chunkF3KKR6DDcjs.createBrushLibraryToolProvider.call(void 0, controller.brushLibrary, {
12161
- profile: _chunkBY5EBP26cjs.PAINT_PROFILE,
12165
+ return _chunk5OE4ZZ6Vcjs.createBrushLibraryToolProvider.call(void 0, controller.brushLibrary, {
12166
+ profile: _chunk677777GHcjs.PAINT_PROFILE,
12162
12167
  stickers: () => controller.stickers.provider,
12163
12168
  ...options,
12164
12169
  renderPreview: paintBrushPreviewRenderer(() => controller.getState().document.paper)
@@ -12654,7 +12659,7 @@ var DOT_ROTATION_LABELS = { follow: "Follow motion", random: "Random", fixed: "T
12654
12659
  var STAMP_LABELS = { dot: "Dot", star: "Star", heart: "Heart", leaf: "Leaf", flower: "Flower", confetti: "Confetti", splat: "Splat", sparkle: "Sparkle", ring: "Ring" };
12655
12660
  function toggleStickerRef(refs, ref2) {
12656
12661
  if (refs.includes(ref2)) return refs.length > 1 ? refs.filter((r) => r !== ref2) : [...refs];
12657
- return refs.length < _chunkBY5EBP26cjs.MAX_STICKER_STAMPS ? [...refs, ref2] : [...refs];
12662
+ return refs.length < _chunk677777GHcjs.MAX_STICKER_STAMPS ? [...refs, ref2] : [...refs];
12658
12663
  }
12659
12664
  function stickerRefLabel(ref2) {
12660
12665
  const stamp = ref2.startsWith("editor:") ? ref2.slice(7) : null;
@@ -12667,7 +12672,7 @@ function toggleStamp(stamps, stamp) {
12667
12672
  }
12668
12673
  function toggleDotTexture(textures, stamp) {
12669
12674
  if (textures.includes(stamp)) return textures.filter((s) => s !== stamp);
12670
- return textures.length < _chunkBY5EBP26cjs.MAX_DOT_TEXTURES ? [...textures, stamp] : [...textures];
12675
+ return textures.length < _chunk677777GHcjs.MAX_DOT_TEXTURES ? [...textures, stamp] : [...textures];
12671
12676
  }
12672
12677
  var PATH_STROKE_TAPERS = [
12673
12678
  { id: "even", label: "Even" },
@@ -13461,7 +13466,7 @@ function toolList(provider) {
13461
13466
  function uiTables() {
13462
13467
  return {
13463
13468
  tools: PAINT_TOOLS,
13464
- brushOptions: _chunkKXNZNOEFcjs.BRUSH_OPTION_CONTROLS,
13469
+ brushOptions: _chunkDGXTEPCUcjs.BRUSH_OPTION_CONTROLS,
13465
13470
  blendMenu: BLEND_MENU_GROUPS,
13466
13471
  layerEffects: _chunkPVJMTLPJcjs.LAYER_EFFECT_MENU.map(({ kind, label }) => ({ kind, label, controls: _chunkPVJMTLPJcjs.layerEffectControls.call(void 0, _chunkPVJMTLPJcjs.defaultLayerEffect.call(void 0, kind, kind)) })),
13467
13472
  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 },
@@ -13888,4 +13893,4 @@ function createPaintConformanceHost(setup, options) {
13888
13893
 
13889
13894
 
13890
13895
 
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;
13896
+ exports.BACKLIGHT_SPILL = BACKLIGHT_SPILL; exports.BLEND_MENU_GROUPS = BLEND_MENU_GROUPS; exports.BLEND_MODES = _chunk2VX55NFMcjs.BLEND_MODES; exports.BRUSH_ID = _chunk677777GHcjs.BRUSH_ID; exports.BRUSH_ROTATIONS = _chunk677777GHcjs.BRUSH_ROTATIONS; exports.BRUSH_SLIDERS = _chunk5OE4ZZ6Vcjs.BRUSH_SLIDERS; exports.BUILTIN_BRUSHES = _chunk677777GHcjs.BUILTIN_BRUSHES; exports.BristleStroke = BristleStroke; exports.DEFAULT_BACKLIGHT_COLOR = DEFAULT_BACKLIGHT_COLOR; exports.DEFAULT_BEHAVIOR = _chunk677777GHcjs.DEFAULT_BEHAVIOR; exports.DEFAULT_BRISTLE = _chunk677777GHcjs.DEFAULT_BRISTLE; exports.DEFAULT_BRUSH_ID = _chunk677777GHcjs.DEFAULT_BRUSH_ID; exports.DEFAULT_DPI = DEFAULT_DPI; exports.DEFAULT_DYNAMICS = _chunk677777GHcjs.DEFAULT_DYNAMICS; exports.DEFAULT_FLOW = _chunkYHDHFJUCcjs.DEFAULT_FLOW; exports.DEFAULT_IMPASTO = _chunk677777GHcjs.DEFAULT_IMPASTO; exports.DEFAULT_LIGHT = _chunk677777GHcjs.DEFAULT_LIGHT; exports.DEFAULT_LIGHTING = DEFAULT_LIGHTING; exports.DEFAULT_MULTI_COLOR = _chunk677777GHcjs.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 = _chunk677777GHcjs.DEFAULT_PARTICLE; exports.DEFAULT_SPRAY = _chunk677777GHcjs.DEFAULT_SPRAY; exports.DEFAULT_STICKER = _chunk677777GHcjs.DEFAULT_STICKER; exports.DEFAULT_SWATCHES = DEFAULT_SWATCHES; exports.DEFAULT_VIEW = DEFAULT_VIEW; exports.DEFAULT_WET_BRUSH = _chunk677777GHcjs.DEFAULT_WET_BRUSH; exports.DEFAULT_WET_PARAMS = _chunkYHDHFJUCcjs.DEFAULT_WET_PARAMS; exports.DOT_ROTATIONS = _chunk677777GHcjs.DOT_ROTATIONS; exports.DOT_ROTATION_LABELS = DOT_ROTATION_LABELS; exports.DOT_TEXTURE_ORDERS = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk677777GHcjs.PAINT_BRUSH_CATEGORIES; exports.PAINT_BRUSH_ENGINES = _chunk677777GHcjs.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 = _chunk677777GHcjs.PARTICLE_KINDS; exports.PARTICLE_KIND_LABELS = PARTICLE_KIND_LABELS; exports.PARTICLE_RENDERS = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk677777GHcjs.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 = _chunk5OE4ZZ6Vcjs.brushEngineControls; exports.brushLoadColor = brushLoadColor; exports.brushLoadForStroke = brushLoadForStroke; exports.brushTakesPaint = _chunk677777GHcjs.brushTakesPaint; exports.brushToJSON = _chunk677777GHcjs.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 = _chunk677777GHcjs.isWetBrush; exports.isWetCapable = _chunk677777GHcjs.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 = _chunk5OE4ZZ6Vcjs.multiColorSliders; exports.multiColorToPaint = _chunk677777GHcjs.multiColorToPaint; exports.newPaintLayerId = newPaintLayerId; exports.nextPaperEffectVersion = nextPaperEffectVersion; exports.normalizeBehavior = _chunk677777GHcjs.normalizeBehavior; exports.normalizeBristle = _chunk677777GHcjs.normalizeBristle; exports.normalizeBrushStroke = normalizeBrushStroke; exports.normalizeCanvas = normalizeCanvas; exports.normalizeDynamics = _chunk677777GHcjs.normalizeDynamics; exports.normalizeFlow = _chunkYHDHFJUCcjs.normalizeFlow; exports.normalizeHexColor = _chunkFQPUF2W2cjs.normalizeHexColor; exports.normalizeImpasto = _chunk677777GHcjs.normalizeImpasto; exports.normalizeLight = _chunk677777GHcjs.normalizeLight; exports.normalizeLighting = normalizeLighting; exports.normalizeMultiColor = _chunk677777GHcjs.normalizeMultiColor; exports.normalizePaintBrush = _chunk677777GHcjs.normalizePaintBrush; exports.normalizePaper = normalizePaper; exports.normalizeParticle = _chunk677777GHcjs.normalizeParticle; exports.normalizePerspective = normalizePerspective; exports.normalizeRotation = normalizeRotation; exports.normalizeStencil = normalizeStencil; exports.normalizeStickerSettings = _chunk677777GHcjs.normalizeStickerSettings; exports.normalizeStickerUpdate = normalizeStickerUpdate; exports.normalizeSymmetry = normalizeSymmetry; exports.normalizeView = normalizeView; exports.normalizeWetBrush = _chunk677777GHcjs.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 = _chunk677777GHcjs.paintToMultiColor; exports.paperEffectFromJSON = paperEffectFromJSON; exports.paperEffectToJSON = paperEffectToJSON; exports.paperGrain = paperGrain; exports.paperKey = paperKey; exports.paperNode = paperNode; exports.paperPreset = paperPreset; exports.parseBrushLibrary = _chunk677777GHcjs.parseBrushLibrary; exports.parseHexColor = parseHexColor; exports.parsePaintSource = _chunkFQPUF2W2cjs.parsePaintSource; exports.patchBrushValue = _chunk5OE4ZZ6Vcjs.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 = _chunk677777GHcjs.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;