@pixerate/editor 0.248.0 → 0.250.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 (122) hide show
  1. package/README.md +1 -0
  2. package/dist/animation-editor/index.cjs +118 -114
  3. package/dist/animation-editor/index.js +11 -7
  4. package/dist/{brushstrokeRender-QLCXROJK.js → brushstrokeRender-2FHFLSEG.js} +8 -4
  5. package/dist/{brushstrokeRender-DTDPFBLC.cjs → brushstrokeRender-QGRXOKDA.cjs} +15 -11
  6. package/dist/canvas/index.cjs +71 -15
  7. package/dist/canvas/index.d.cts +1 -0
  8. package/dist/canvas/index.d.ts +1 -0
  9. package/dist/canvas/index.js +58 -2
  10. package/dist/canvas/stickers.d.cts +35 -0
  11. package/dist/canvas/stickers.d.ts +35 -0
  12. package/dist/{chunk-RXZL4NG5.js → chunk-226QDRO3.js} +1 -1
  13. package/dist/{chunk-SC2RZ5EF.js → chunk-2VJAVXLI.js} +2 -2
  14. package/dist/{chunk-OLNIPTB3.cjs → chunk-2VX55NFM.cjs} +1 -320
  15. package/dist/chunk-3K6HWEXZ.cjs +92 -0
  16. package/dist/{chunk-UOOK7HTX.js → chunk-3PPJRMIG.js} +1 -1
  17. package/dist/{chunk-ZFSLEOSQ.js → chunk-3TWOCSCY.js} +11 -9
  18. package/dist/chunk-4D6KP5BV.js +92 -0
  19. package/dist/chunk-4JNWA3VT.cjs +302 -0
  20. package/dist/{chunk-L3JFOTBQ.js → chunk-5E2Q7ZHI.js} +1 -1
  21. package/dist/{chunk-2ONK3ERD.cjs → chunk-75K3W4D6.cjs} +20 -20
  22. package/dist/{chunk-AU6MWQKZ.js → chunk-ABL7IWFZ.js} +1 -1
  23. package/dist/chunk-ATK6ABN3.cjs +303 -0
  24. package/dist/{chunk-7T7JWTVE.cjs → chunk-BOHDJJ2O.cjs} +8 -8
  25. package/dist/{chunk-2PBZBRP5.js → chunk-D5KGAO4Z.js} +10 -92
  26. package/dist/{chunk-HB4ICNNA.cjs → chunk-DPYAO5U6.cjs} +42 -42
  27. package/dist/{chunk-6G6ZDDDB.cjs → chunk-GT77U7QG.cjs} +303 -149
  28. package/dist/{chunk-PQ3H2AAN.cjs → chunk-I7NJPHWV.cjs} +122 -204
  29. package/dist/{chunk-42TWUPNJ.js → chunk-IRSTHLQQ.js} +1 -320
  30. package/dist/{chunk-GHCSC2WP.cjs → chunk-ISIO63Q5.cjs} +21 -15
  31. package/dist/{chunk-OFH6Q67U.js → chunk-JA57JIT5.js} +9 -3
  32. package/dist/{chunk-VMROIWLL.cjs → chunk-KBYB7OWB.cjs} +3 -3
  33. package/dist/{chunk-Q2HA52V4.js → chunk-KDLBJ6QR.js} +2 -2
  34. package/dist/{chunk-WVS5KQDH.cjs → chunk-M2VKFE5L.cjs} +246 -244
  35. package/dist/{chunk-5GLYUSNT.js → chunk-NOHJP5TK.js} +1 -1
  36. package/dist/{chunk-XNRBMYNB.js → chunk-NTRAVM2I.js} +1 -1
  37. package/dist/{chunk-VNBUDVD4.js → chunk-OTEPAQJX.js} +228 -74
  38. package/dist/chunk-OTTT5N3K.js +322 -0
  39. package/dist/{chunk-QOBCBGGI.cjs → chunk-QKXO6JPP.cjs} +14 -14
  40. package/dist/{chunk-NZ3O3A5C.js → chunk-SMSGP2HQ.js} +1 -1
  41. package/dist/chunk-SZTI6EER.js +13 -0
  42. package/dist/chunk-U4NUOKBT.js +303 -0
  43. package/dist/chunk-U67EN7GG.cjs +13 -0
  44. package/dist/chunk-W5M3J7PV.cjs +322 -0
  45. package/dist/{chunk-4P6H35HU.js → chunk-WA44NKPF.js} +2 -2
  46. package/dist/chunk-WKH5ZAUA.js +302 -0
  47. package/dist/{chunk-L6REDLNB.cjs → chunk-WPUXGDH4.cjs} +7 -7
  48. package/dist/{chunk-P3NIPIKS.js → chunk-WQCNC4DK.js} +1 -1
  49. package/dist/{chunk-IBDU6EGZ.cjs → chunk-X7WRL5ZZ.cjs} +35 -35
  50. package/dist/{chunk-XWTRATIM.cjs → chunk-YM6ZBTXG.cjs} +23 -23
  51. package/dist/{chunk-TPWB4Y6L.cjs → chunk-YW43M56C.cjs} +1 -1
  52. package/dist/{chunk-K5DS2JTA.cjs → chunk-Z3BRH4JK.cjs} +6 -6
  53. package/dist/{chunk-XNZFVYC2.cjs → chunk-ZBCT5MEA.cjs} +7 -7
  54. package/dist/effects/helpers.d.cts +6 -0
  55. package/dist/effects/helpers.d.ts +6 -0
  56. package/dist/effects/index.cjs +62 -60
  57. package/dist/effects/index.js +5 -3
  58. package/dist/effects/tools.d.cts +6 -0
  59. package/dist/effects/tools.d.ts +6 -0
  60. package/dist/image-editor/effects.d.cts +1 -1
  61. package/dist/image-editor/effects.d.ts +1 -1
  62. package/dist/image-editor/index.cjs +1097 -1069
  63. package/dist/image-editor/index.d.cts +1 -0
  64. package/dist/image-editor/index.d.ts +1 -0
  65. package/dist/image-editor/index.js +58 -30
  66. package/dist/image-editor/stickers.d.cts +9 -0
  67. package/dist/image-editor/stickers.d.ts +9 -0
  68. package/dist/paint/index.cjs +8 -5
  69. package/dist/paint/index.js +13 -10
  70. package/dist/paint-editor/controller.d.cts +37 -1
  71. package/dist/paint-editor/controller.d.ts +37 -1
  72. package/dist/paint-editor/index.cjs +753 -609
  73. package/dist/paint-editor/index.d.cts +3 -0
  74. package/dist/paint-editor/index.d.ts +3 -0
  75. package/dist/paint-editor/index.js +187 -43
  76. package/dist/paint-editor/sticker-art.d.cts +55 -0
  77. package/dist/paint-editor/sticker-art.d.ts +55 -0
  78. package/dist/paint-editor/stickers.d.cts +30 -17
  79. package/dist/paint-editor/stickers.d.ts +30 -17
  80. package/dist/paint-editor/stroke.d.cts +4 -0
  81. package/dist/paint-editor/stroke.d.ts +4 -0
  82. package/dist/paint-editor/ui.d.cts +10 -2
  83. package/dist/paint-editor/ui.d.ts +10 -2
  84. package/dist/raster/index.cjs +6 -4
  85. package/dist/raster/index.js +12 -10
  86. package/dist/stickers/browser.d.cts +48 -0
  87. package/dist/stickers/browser.d.ts +48 -0
  88. package/dist/stickers/combine.d.cts +10 -0
  89. package/dist/stickers/combine.d.ts +10 -0
  90. package/dist/stickers/conformance.d.cts +18 -0
  91. package/dist/stickers/conformance.d.ts +18 -0
  92. package/dist/stickers/editor.d.cts +14 -0
  93. package/dist/stickers/editor.d.ts +14 -0
  94. package/dist/stickers/errors.d.cts +6 -0
  95. package/dist/stickers/errors.d.ts +6 -0
  96. package/dist/stickers/fake.d.cts +16 -0
  97. package/dist/stickers/fake.d.ts +16 -0
  98. package/dist/stickers/helpers.d.cts +51 -0
  99. package/dist/stickers/helpers.d.ts +51 -0
  100. package/dist/stickers/index.cjs +337 -0
  101. package/dist/stickers/index.d.cts +16 -0
  102. package/dist/stickers/index.d.ts +16 -0
  103. package/dist/stickers/index.js +337 -0
  104. package/dist/stickers/stamps.d.cts +13 -0
  105. package/dist/stickers/stamps.d.ts +13 -0
  106. package/dist/stickers/tools.d.cts +81 -0
  107. package/dist/stickers/tools.d.ts +81 -0
  108. package/dist/stickers/types.d.cts +123 -0
  109. package/dist/stickers/types.d.ts +123 -0
  110. package/dist/vector/index.cjs +1018 -981
  111. package/dist/vector/index.d.cts +1 -0
  112. package/dist/vector/index.d.ts +1 -0
  113. package/dist/vector/index.js +44 -7
  114. package/dist/vector/stickers.d.cts +11 -0
  115. package/dist/vector/stickers.d.ts +11 -0
  116. package/dist/video-editor/index.cjs +344 -344
  117. package/dist/video-editor/index.js +4 -4
  118. package/package.json +11 -1
  119. package/skills/README.md +1 -0
  120. package/skills/pixerate-image-editor/SKILL.md +1 -1
  121. package/skills/pixerate-paint-editor/SKILL.md +8 -5
  122. package/skills/pixerate-stickers/SKILL.md +57 -0
@@ -72,3 +72,4 @@ export * from './editorDocument.cjs';
72
72
  export * from './paths.cjs';
73
73
  export * from './path-edit.cjs';
74
74
  export * from './content-aware-fill-session.cjs';
75
+ export * from './stickers.cjs';
@@ -72,3 +72,4 @@ export * from './editorDocument.js';
72
72
  export * from './paths.js';
73
73
  export * from './path-edit.js';
74
74
  export * from './content-aware-fill-session.js';
75
+ export * from './stickers.js';
@@ -8,7 +8,7 @@ import {
8
8
  parseOpenTypeFont,
9
9
  removeAnchorsKeepingShape,
10
10
  traceField
11
- } from "../chunk-5GLYUSNT.js";
11
+ } from "../chunk-NOHJP5TK.js";
12
12
  import {
13
13
  ColorGmm,
14
14
  GAMMA,
@@ -413,7 +413,7 @@ import {
413
413
  writePsd,
414
414
  xyToTempTint,
415
415
  xyToUv
416
- } from "../chunk-ZFSLEOSQ.js";
416
+ } from "../chunk-3TWOCSCY.js";
417
417
  import {
418
418
  parseCssColor
419
419
  } from "../chunk-3CI7FRMK.js";
@@ -474,7 +474,7 @@ import {
474
474
  layerEffectControls,
475
475
  layerEffectsBadge,
476
476
  layerEffectsPanel
477
- } from "../chunk-SC2RZ5EF.js";
477
+ } from "../chunk-2VJAVXLI.js";
478
478
  import {
479
479
  DEFAULT_GLOBAL_LIGHT,
480
480
  INTERPOLATIONS,
@@ -524,7 +524,7 @@ import {
524
524
  validateLayerEffects,
525
525
  warpSurface,
526
526
  workingToSamples
527
- } from "../chunk-UOOK7HTX.js";
527
+ } from "../chunk-3PPJRMIG.js";
528
528
  import {
529
529
  applyHomography,
530
530
  boxQuad,
@@ -569,7 +569,7 @@ import {
569
569
  spotHealPixels,
570
570
  spotHealWindow,
571
571
  toneOf
572
- } from "../chunk-4P6H35HU.js";
572
+ } from "../chunk-WA44NKPF.js";
573
573
  import {
574
574
  bestOffset,
575
575
  contentAwareFill,
@@ -674,7 +674,7 @@ import {
674
674
  wetGpuSupport,
675
675
  wetSimdSupported,
676
676
  wetSupport
677
- } from "../chunk-P3NIPIKS.js";
677
+ } from "../chunk-WQCNC4DK.js";
678
678
  import {
679
679
  BUILTIN_PROFILES,
680
680
  CmsError,
@@ -743,8 +743,9 @@ import {
743
743
  warpMeshParamAt,
744
744
  warpMeshRows,
745
745
  warpPresetMesh
746
- } from "../chunk-Q2HA52V4.js";
747
- import "../chunk-VNBUDVD4.js";
746
+ } from "../chunk-KDLBJ6QR.js";
747
+ import "../chunk-OTEPAQJX.js";
748
+ import "../chunk-WKH5ZAUA.js";
748
749
  import "../chunk-M6DNZNVY.js";
749
750
  import {
750
751
  bezierPathToSvg,
@@ -752,6 +753,7 @@ import {
752
753
  segmentNearest
753
754
  } from "../chunk-WEIK3UYB.js";
754
755
  import "../chunk-PWBZH3FK.js";
756
+ import "../chunk-SZTI6EER.js";
755
757
  import {
756
758
  EffectRendererPool
757
759
  } from "../chunk-EHLOCVWB.js";
@@ -760,9 +762,10 @@ import {
760
762
  EffectsSlot,
761
763
  createEffectPixels,
762
764
  createEffectToolProvider,
765
+ layerImageInput,
763
766
  linearToSrgb,
764
767
  resolveEffectValues
765
- } from "../chunk-OFH6Q67U.js";
768
+ } from "../chunk-JA57JIT5.js";
766
769
  import "../chunk-V2ZCJRDM.js";
767
770
  import {
768
771
  BrushstrokeCache,
@@ -802,7 +805,6 @@ import {
802
805
  StrokeCoverage,
803
806
  TIP_GRADIENT_STEPS,
804
807
  TileMedium,
805
- TileableNoise,
806
808
  addPaintGradientStop,
807
809
  applyStrokeToDeepTile,
808
810
  applyStrokeToTile,
@@ -822,12 +824,10 @@ import {
822
824
  gradientDabColor,
823
825
  grainCatch,
824
826
  grainHeights,
825
- hash2,
826
827
  hexToPaintRgb,
827
828
  isBrushstrokeBrush,
828
829
  isGradientPaint,
829
830
  loadMixer,
830
- mix32,
831
831
  mixerRates,
832
832
  normalizeBlender,
833
833
  normalizeBrush,
@@ -842,8 +842,6 @@ import {
842
842
  pathStrokeCoverage,
843
843
  pathStrokeDabs,
844
844
  put255,
845
- rand01,
846
- randSigned,
847
845
  rasterizeDab,
848
846
  readPaintSource,
849
847
  removePaintGradientStop,
@@ -851,7 +849,6 @@ import {
851
849
  resolvePaintGradient,
852
850
  reversePaintGradient,
853
851
  scalePaintGradient,
854
- seedFromString,
855
852
  smoothPoints,
856
853
  solidPaint,
857
854
  strokeGrainCatch,
@@ -860,7 +857,15 @@ import {
860
857
  tipShape,
861
858
  updatePaintGradientStop,
862
859
  walkDabs
863
- } from "../chunk-2PBZBRP5.js";
860
+ } from "../chunk-D5KGAO4Z.js";
861
+ import {
862
+ TileableNoise,
863
+ hash2,
864
+ mix32,
865
+ rand01,
866
+ randSigned,
867
+ seedFromString
868
+ } from "../chunk-4D6KP5BV.js";
864
869
  import {
865
870
  BRUSHSTROKE_MAX_SCALE,
866
871
  BRUSHSTROKE_MIN_SCALE,
@@ -875,25 +880,20 @@ import {
875
880
  PIGMENT_LAMBDA_STEP,
876
881
  PIGMENT_WAVELENGTHS,
877
882
  SHADOW_AMBIENT,
878
- base64ToBytes,
879
883
  blendChannel,
880
884
  blendImageData,
881
885
  blendLum,
882
886
  blendPixel,
883
887
  blendRgb,
884
- bytesToBase64,
885
888
  canvasCompositeOperation,
886
889
  convertSurfaceDepth,
887
890
  createPigment,
888
- decodePng,
889
891
  deepBytes,
890
892
  deepTile,
891
893
  depthOf,
892
- encodePng,
893
894
  isBitDepth,
894
895
  isBlendMode,
895
896
  isPainterlyBlendMode,
896
- isPng,
897
897
  isSeparableBlendMode,
898
898
  keepDeepSamples,
899
899
  lerpPigment,
@@ -902,9 +902,7 @@ import {
902
902
  mixPigmentRgb,
903
903
  mixPigments,
904
904
  normalizeBlendMode,
905
- parseDataUrl,
906
905
  pigment8,
907
- pngDataUrl,
908
906
  proxyOf,
909
907
  readDeepRegion,
910
908
  reflectanceToRgb,
@@ -926,7 +924,16 @@ import {
926
924
  to8From16,
927
925
  to8From32,
928
926
  writeDeepRegion
929
- } from "../chunk-42TWUPNJ.js";
927
+ } from "../chunk-IRSTHLQQ.js";
928
+ import {
929
+ base64ToBytes,
930
+ bytesToBase64,
931
+ decodePng,
932
+ encodePng,
933
+ isPng,
934
+ parseDataUrl,
935
+ pngDataUrl
936
+ } from "../chunk-OTTT5N3K.js";
930
937
  import {
931
938
  SurfaceDraft,
932
939
  TILE,
@@ -4842,14 +4849,15 @@ function effectLayerTiming(g, d) {
4842
4849
 
4843
4850
  // src/image-editor/effects.ts
4844
4851
  var IMAGE_EFFECT_PLACES = {
4845
- /** A smart filter: the effect changes the pixels below it. */
4852
+ /** A smart filter: the effect changes the pixels below it (and any effect that takes a picture: the layer is its input). */
4846
4853
  filter: ["filter"],
4847
4854
  /** An effect layer: drawn at the document's size. */
4848
4855
  layer: ["generator", "overlay", "title"]
4849
4856
  };
4850
4857
  function checkImageEffectPlace(d, place) {
4851
4858
  const allowed = IMAGE_EFFECT_PLACES[place];
4852
- if (d.kind === "motion" || !d.uses.some((u) => allowed.includes(u))) {
4859
+ const takesLayer = place === "filter" && layerImageInput(d) !== null;
4860
+ if (d.kind === "motion" || !takesLayer && !d.uses.some((u) => allowed.includes(u))) {
4853
4861
  const instead = place === "filter" && d.uses.some((u) => IMAGE_EFFECT_PLACES.layer.includes(u)) ? "; add it as an effect layer with add_effect_layer instead" : place === "layer" && d.uses.includes("filter") ? "; apply it to a layer as a smart filter with apply_effect instead" : "";
4854
4862
  throw new EffectUnsupportedError(
4855
4863
  `"${d.id}" (${d.name}) is a ${d.uses.join(" / ")} effect, and ${place === "filter" ? "a smart filter takes filter effects" : "an effect layer takes generator, overlay or title effects"}${instead}.`,
@@ -4942,9 +4950,9 @@ var ImageEffectsEngine = class {
4942
4950
  /** A filter effect over `source`: its result, or (for an overlay) the effect drawn over it. */
4943
4951
  async filter(provider, effect, values, source) {
4944
4952
  const d = await this.describe(provider, effect);
4945
- const takesSource = d.inputs.some((i) => i.name === "source");
4946
- const out = await this.render(provider, effect, source.width, source.height, 8, { time: 0, values, ...takesSource ? { inputs: { source } } : {} });
4947
- return takesSource ? out.data : over(source.data, out.data);
4953
+ const input = layerImageInput(d);
4954
+ const out = await this.render(provider, effect, source.width, source.height, 8, { time: 0, values, ...input ? { inputs: { [input]: source } } : {} });
4955
+ return input ? out.data : over(source.data, out.data);
4948
4956
  }
4949
4957
  /**
4950
4958
  * Renders a generator or overlay effect at a size and depth (an effect layer's pixels). Rejects
@@ -21491,7 +21499,8 @@ function createImageEffectsToolProvider(controller, options = {}) {
21491
21499
  skill: "pixerate-image-editor",
21492
21500
  target: { noun: "layer", id: "A layer id from list_layers." },
21493
21501
  applyUses: ["filter"],
21494
- applyDetails: "The effect becomes a smart filter: it runs on the layer's pixels after the smart filters below it, with its own blend and opacity, under the smart filter mask, and can be changed or removed later. It keeps the layer's transparency by default (preserveTransparency: the result only changes the layer's own pixels, never fills transparent ones); preserveTransparency false lets it draw over the whole canvas. A pixel, shape or type layer (or a group) is converted to a smart object first, in the same undo step (one layer keeps its id; the result says converted). With a selection, the filter mask is set from it in the same step, so the filter only changes the selected area (the result says masked); deselect first to filter the whole layer. Generators and overlays go on their own layer through add_effect_layer.",
21502
+ applyImageInputs: true,
21503
+ applyDetails: "Any effect that takes a picture also applies (an inserted sticker into a holo-foil treatment): the layer is its picture. The effect becomes a smart filter: it runs on the layer's pixels after the smart filters below it, with its own blend and opacity, under the smart filter mask, and can be changed or removed later. It keeps the layer's transparency by default (preserveTransparency: the result only changes the layer's own pixels, never fills transparent ones); preserveTransparency false lets it draw over the whole canvas. A pixel, shape or type layer (or a group) is converted to a smart object first, in the same undo step (one layer keeps its id; the result says converted). With a selection, the filter mask is set from it in the same step, so the filter only changes the selected area (the result says masked); deselect first to filter the whole layer. Generators and overlays go on their own layer through add_effect_layer.",
21495
21504
  provider: () => controller.effectsProvider,
21496
21505
  readOnlyReason,
21497
21506
  applyOptions: {
@@ -22481,6 +22490,24 @@ var ContentAwareFillSession = class _ContentAwareFillSession {
22481
22490
  return this.controller.contentAwareFillAsync({ layerId: this.plan.layerId, samplingArea: area, seed: this.settingsValue.seed, output: this.settingsValue.output, signal: options.signal });
22482
22491
  }
22483
22492
  };
22493
+
22494
+ // src/image-editor/stickers.ts
22495
+ function createImageStickerHost(controller) {
22496
+ return {
22497
+ noun: "pixel layer",
22498
+ format: "png",
22499
+ defaultCentre: () => {
22500
+ const { width, height } = controller.getCanvasSize();
22501
+ return { x: width / 2, y: height / 2 };
22502
+ },
22503
+ async insert({ asset, description, x, y }) {
22504
+ const image = asset.kind === "image" ? asset.url : `data:image/svg+xml;charset=utf-8,${encodeURIComponent(asset.svg)}`;
22505
+ const pixels = await controller.decodeImage(image);
22506
+ const id = controller.addPixelLayer({ name: description.name, pixels, x: Math.round(x - pixels.width / 2), y: Math.round(y - pixels.height / 2) });
22507
+ return { id, layerWidth: pixels.width, layerHeight: pixels.height };
22508
+ }
22509
+ };
22510
+ }
22484
22511
  export {
22485
22512
  ADJUSTMENT_KEYS,
22486
22513
  ADJUSTMENT_KINDS,
@@ -22917,6 +22944,7 @@ export {
22917
22944
  createImageSelectionTools,
22918
22945
  createImageShapeTools,
22919
22946
  createImageSmartObjectTools,
22947
+ createImageStickerHost,
22920
22948
  createImageSubjectSelectionTool,
22921
22949
  createImageTransformTools,
22922
22950
  createImageTypeTools,
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Stickers in the image editor: `insert_sticker` (see `@pixerate/editor/stickers`) puts a
3
+ * sticker's art in as a new pixel layer, centred where asked. The layer can then take any effect
4
+ * that takes a picture (`apply_effect`): the sticker is the effect's input.
5
+ */
6
+ import type { StickerInsertHost } from '../stickers/tools.cjs';
7
+ import type { ImageEditorController } from './controller.cjs';
8
+ /** `insert_sticker` for an image editor: a new pixel layer named after the sticker, one undo step. */
9
+ export declare function createImageStickerHost(controller: ImageEditorController): StickerInsertHost;
@@ -0,0 +1,9 @@
1
+ /**
2
+ * Stickers in the image editor: `insert_sticker` (see `@pixerate/editor/stickers`) puts a
3
+ * sticker's art in as a new pixel layer, centred where asked. The layer can then take any effect
4
+ * that takes a picture (`apply_effect`): the sticker is the effect's input.
5
+ */
6
+ import type { StickerInsertHost } from '../stickers/tools.js';
7
+ import type { ImageEditorController } from './controller.js';
8
+ /** `insert_sticker` for an image editor: a new pixel layer named after the sticker, one undo step. */
9
+ export declare function createImageStickerHost(controller: ImageEditorController): StickerInsertHost;
@@ -29,7 +29,7 @@
29
29
 
30
30
 
31
31
 
32
- var _chunk2ONK3ERDcjs = require('../chunk-2ONK3ERD.cjs');
32
+ var _chunk75K3W4D6cjs = require('../chunk-75K3W4D6.cjs');
33
33
 
34
34
 
35
35
 
@@ -134,7 +134,7 @@ var _chunkBB6TR422cjs = require('../chunk-BB6TR422.cjs');
134
134
 
135
135
 
136
136
 
137
- var _chunkVMROIWLLcjs = require('../chunk-VMROIWLL.cjs');
137
+ var _chunkKBYB7OWBcjs = require('../chunk-KBYB7OWB.cjs');
138
138
 
139
139
 
140
140
 
@@ -225,13 +225,15 @@ var _chunkVMROIWLLcjs = require('../chunk-VMROIWLL.cjs');
225
225
 
226
226
 
227
227
 
228
+ var _chunkI7NJPHWVcjs = require('../chunk-I7NJPHWV.cjs');
228
229
 
229
230
 
230
231
 
231
232
 
232
233
 
233
234
 
234
- var _chunkPQ3H2AANcjs = require('../chunk-PQ3H2AAN.cjs');
235
+
236
+ var _chunk3K6HWEXZcjs = require('../chunk-3K6HWEXZ.cjs');
235
237
 
236
238
 
237
239
 
@@ -249,7 +251,8 @@ var _chunkYQGCPL5Xcjs = require('../chunk-YQGCPL5X.cjs');
249
251
 
250
252
 
251
253
 
252
- var _chunkOLNIPTB3cjs = require('../chunk-OLNIPTB3.cjs');
254
+ var _chunk2VX55NFMcjs = require('../chunk-2VX55NFM.cjs');
255
+ require('../chunk-W5M3J7PV.cjs');
253
256
  require('../chunk-474IQG74.cjs');
254
257
  require('../chunk-XFM3OCHU.cjs');
255
258
 
@@ -493,4 +496,4 @@ require('../chunk-XFM3OCHU.cjs');
493
496
 
494
497
 
495
498
 
496
- exports.BODY_SCATTER = _chunkVMROIWLLcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BrushstrokeCache = _chunkPQ3H2AANcjs.BrushstrokeCache; exports.CoverageMap = _chunkPQ3H2AANcjs.CoverageMap; exports.DEFAULT_BLENDER = _chunkPQ3H2AANcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkPQ3H2AANcjs.DEFAULT_BRUSH; exports.DEFAULT_FLOW = _chunkVMROIWLLcjs.DEFAULT_FLOW; exports.DEFAULT_MIXER = _chunkPQ3H2AANcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkPQ3H2AANcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_RETOUCH = _chunk2ONK3ERDcjs.DEFAULT_RETOUCH; exports.DEFAULT_SMUDGE = _chunkPQ3H2AANcjs.DEFAULT_SMUDGE; exports.DEFAULT_WET_PAPER = _chunkVMROIWLLcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkVMROIWLLcjs.DEFAULT_WET_PARAMS; exports.DRY_EPS = _chunkVMROIWLLcjs.DRY_EPS; exports.DabWalker = _chunkPQ3H2AANcjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkPQ3H2AANcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkVMROIWLLcjs.EX; exports.EY = _chunkVMROIWLLcjs.EY; exports.FLAG_ALIVE = _chunkVMROIWLLcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkVMROIWLLcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkVMROIWLLcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkVMROIWLLcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkVMROIWLLcjs.FLAG_TOP; exports.FLAG_WET = _chunkVMROIWLLcjs.FLAG_WET; exports.FLAT = _chunkVMROIWLLcjs.FLAT; exports.FREE_INTERVAL = _chunkVMROIWLLcjs.FREE_INTERVAL; exports.GRAIN_PATTERNS = _chunkPQ3H2AANcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkPQ3H2AANcjs.GRAIN_TILE; exports.HIDE = _chunkVMROIWLLcjs.HIDE; exports.IDENTITY_CLONE_TRANSFORM = _chunk2ONK3ERDcjs.IDENTITY_CLONE_TRANSFORM; exports.MASS_CHANNELS = _chunkVMROIWLLcjs.MASS_CHANNELS; exports.MAX_BATCH = _chunkVMROIWLLcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkPQ3H2AANcjs.MAX_BRUSH_SIZE; exports.MAX_TILT_ACCEL = _chunkVMROIWLLcjs.MAX_TILT_ACCEL; exports.MAX_WET_LANES = _chunkVMROIWLLcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkVMROIWLLcjs.MAX_WET_SLOTS; exports.MIXER_DRAIN = _chunkPQ3H2AANcjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunkPQ3H2AANcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkPQ3H2AANcjs.MIXING_MODELS; exports.MixerStroke = _chunkPQ3H2AANcjs.MixerStroke; exports.OPP = _chunkVMROIWLLcjs.OPP; exports.PAINT_COLOR_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkPQ3H2AANcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkPQ3H2AANcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkPQ3H2AANcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkPQ3H2AANcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAPER_CAPACITY = _chunkVMROIWLLcjs.PAPER_CAPACITY; exports.PARAM = _chunkVMROIWLLcjs.PARAM; exports.PARAM_FLOATS = _chunkVMROIWLLcjs.PARAM_FLOATS; exports.PIGMENT_BANDS = _chunkOLNIPTB3cjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkVMROIWLLcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunkOLNIPTB3cjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunkOLNIPTB3cjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkVMROIWLLcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunkOLNIPTB3cjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkVMROIWLLcjs.PLANE; exports.PLANE_BYTES = _chunkVMROIWLLcjs.PLANE_BYTES; exports.P_D0 = _chunkVMROIWLLcjs.P_D0; exports.P_DL = _chunkVMROIWLLcjs.P_DL; exports.P_EDGE = _chunkVMROIWLLcjs.P_EDGE; exports.P_FX = _chunkVMROIWLLcjs.P_FX; exports.P_FY = _chunkVMROIWLLcjs.P_FY; exports.P_H = _chunkVMROIWLLcjs.P_H; exports.P_L = _chunkVMROIWLLcjs.P_L; exports.P_P0 = _chunkVMROIWLLcjs.P_P0; exports.P_RHO = _chunkVMROIWLLcjs.P_RHO; exports.P_SW = _chunkVMROIWLLcjs.P_SW; exports.P_UX = _chunkVMROIWLLcjs.P_UX; exports.P_UY = _chunkVMROIWLLcjs.P_UY; exports.PaintExchange = _chunkPQ3H2AANcjs.PaintExchange; exports.PaintGradientSampler = _chunkPQ3H2AANcjs.PaintGradientSampler; exports.PaintSourceError = _chunkPQ3H2AANcjs.PaintSourceError; exports.PaperGrain = _chunkPQ3H2AANcjs.PaperGrain; exports.RETOUCH_SAMPLES = _chunk2ONK3ERDcjs.RETOUCH_SAMPLES; exports.RegionPixelSource = _chunk2ONK3ERDcjs.RegionPixelSource; exports.RetouchDabStroke = _chunk2ONK3ERDcjs.RetouchDabStroke; exports.SET_PLANES = _chunkVMROIWLLcjs.SET_PLANES; exports.SLOT_BYTES = _chunkVMROIWLLcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkVMROIWLLcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkVMROIWLLcjs.SLOT_SIDE; exports.SPOT_HEAL_TYPES = _chunk2ONK3ERDcjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkVMROIWLLcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkVMROIWLLcjs.STRIP; exports.SmudgeTip = _chunkPQ3H2AANcjs.SmudgeTip; exports.StrokeCoverage = _chunkPQ3H2AANcjs.StrokeCoverage; exports.TIP_GRADIENT_STEPS = _chunkPQ3H2AANcjs.TIP_GRADIENT_STEPS; exports.TONE_RANGES = _chunk2ONK3ERDcjs.TONE_RANGES; exports.TileMedium = _chunkPQ3H2AANcjs.TileMedium; exports.TilePixelSource = _chunk2ONK3ERDcjs.TilePixelSource; exports.TileableNoise = _chunkPQ3H2AANcjs.TileableNoise; exports.TransformedPixelSource = _chunk2ONK3ERDcjs.TransformedPixelSource; exports.U_MAX = _chunkVMROIWLLcjs.U_MAX; exports.W9 = _chunkVMROIWLLcjs.W9; exports.WET_FLOW_KINDS = _chunkVMROIWLLcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkVMROIWLLcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkVMROIWLLcjs.WET_TILE; exports.WGSL_HALO = _chunkVMROIWLLcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkVMROIWLLcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkVMROIWLLcjs.WGSL_STEP; exports.WetGpuEngine = _chunkVMROIWLLcjs.WetGpuEngine; exports.WetMedium = _chunkVMROIWLLcjs.WetMedium; exports.WetWorkerPool = _chunkVMROIWLLcjs.WetWorkerPool; exports.WetWorld = _chunkVMROIWLLcjs.WetWorld; exports.WetWorldError = _chunkVMROIWLLcjs.WetWorldError; exports.addPaintGradientStop = _chunkPQ3H2AANcjs.addPaintGradientStop; exports.applyRetouchToTile = _chunk2ONK3ERDcjs.applyRetouchToTile; exports.applyStrokeToDeepTile = _chunkPQ3H2AANcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkPQ3H2AANcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk2ONK3ERDcjs.applyToneToDeepTile; exports.bestOffset = _chunkBB6TR422cjs.bestOffset; exports.blendRadius = _chunkPQ3H2AANcjs.blendRadius; exports.blenderDab = _chunkPQ3H2AANcjs.blenderDab; exports.boxBlurPixels = _chunk2ONK3ERDcjs.boxBlurPixels; exports.brushstrokeDataUrl = _chunkPQ3H2AANcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkPQ3H2AANcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkPQ3H2AANcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkPQ3H2AANcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkPQ3H2AANcjs.brushstrokeToCanvas; exports.canShareMemory = _chunkVMROIWLLcjs.canShareMemory; exports.cleanMixer = _chunkPQ3H2AANcjs.cleanMixer; exports.cloneSamplePoint = _chunk2ONK3ERDcjs.cloneSamplePoint; exports.contentAwareFill = _chunkBB6TR422cjs.contentAwareFill; exports.coverageTileCoord = _chunkPQ3H2AANcjs.coverageTileCoord; exports.createBlenderScratch = _chunkPQ3H2AANcjs.createBlenderScratch; exports.createPigment = _chunkOLNIPTB3cjs.createPigment; exports.createPigmentTools = _chunkVMROIWLLcjs.createPigmentTools; exports.createWetGpuEngine = _chunkVMROIWLLcjs.createWetGpuEngine; exports.dabCoverage = _chunkPQ3H2AANcjs.dabCoverage; exports.dabRect = _chunkPQ3H2AANcjs.dabRect; exports.dexp = _chunkVMROIWLLcjs.dexp; exports.dilateMask = _chunkBB6TR422cjs.dilateMask; exports.dlog = _chunkVMROIWLLcjs.dlog; exports.dodgeBurn = _chunk2ONK3ERDcjs.dodgeBurn; exports.dodgeBurnCurve = _chunk2ONK3ERDcjs.dodgeBurnCurve; exports.dpow = _chunkVMROIWLLcjs.dpow; exports.dsincos = _chunkVMROIWLLcjs.dsincos; exports.edgeBits = _chunkVMROIWLLcjs.edgeBits; exports.exchangeRates = _chunkPQ3H2AANcjs.exchangeRates; exports.expNeg = _chunkVMROIWLLcjs.expNeg; exports.filmPixel = _chunkVMROIWLLcjs.filmPixel; exports.filmReflectance = _chunkVMROIWLLcjs.filmReflectance; exports.findWebGpu = _chunkVMROIWLLcjs.findWebGpu; exports.flowField = _chunkVMROIWLLcjs.flowField; exports.gradientDabColor = _chunkPQ3H2AANcjs.gradientDabColor; exports.grainCatch = _chunkPQ3H2AANcjs.grainCatch; exports.grainHeights = _chunkPQ3H2AANcjs.grainHeights; exports.hash2 = _chunkPQ3H2AANcjs.hash2; exports.healPixels = _chunk2ONK3ERDcjs.healPixels; exports.hexToPaintRgb = _chunkPQ3H2AANcjs.hexToPaintRgb; exports.isBrushstrokeBrush = _chunkPQ3H2AANcjs.isBrushstrokeBrush; exports.isGradientPaint = _chunkPQ3H2AANcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk2ONK3ERDcjs.isIdentityCloneTransform; exports.latticeViscosity = _chunkVMROIWLLcjs.latticeViscosity; exports.lerpPigment = _chunkOLNIPTB3cjs.lerpPigment; exports.lerpPigmentInto = _chunkOLNIPTB3cjs.lerpPigmentInto; exports.linearToSrgb8 = _chunkVMROIWLLcjs.linearToSrgb8; exports.loadMixer = _chunkPQ3H2AANcjs.loadMixer; exports.loadWetKernel = _chunkVMROIWLLcjs.loadWetKernel; exports.luma = _chunk2ONK3ERDcjs.luma; exports.maskBounds = _chunkBB6TR422cjs.maskBounds; exports.membraneFill = _chunkBB6TR422cjs.membraneFill; exports.mix32 = _chunkPQ3H2AANcjs.mix32; exports.mixPigments = _chunkOLNIPTB3cjs.mixPigments; exports.mixerRates = _chunkPQ3H2AANcjs.mixerRates; exports.moveWetSnapshot = _chunkVMROIWLLcjs.moveWetSnapshot; exports.normalizeBlender = _chunkPQ3H2AANcjs.normalizeBlender; exports.normalizeBrush = _chunkPQ3H2AANcjs.normalizeBrush; exports.normalizeFlow = _chunkVMROIWLLcjs.normalizeFlow; exports.normalizeHexColor = _chunkPQ3H2AANcjs.normalizeHexColor; exports.normalizeMixer = _chunkPQ3H2AANcjs.normalizeMixer; exports.normalizeRetouch = _chunk2ONK3ERDcjs.normalizeRetouch; exports.normalizeSmudge = _chunkPQ3H2AANcjs.normalizeSmudge; exports.normalizeTilt = _chunkVMROIWLLcjs.normalizeTilt; exports.normalizeWetParams = _chunkVMROIWLLcjs.normalizeWetParams; exports.packWetParams = _chunkVMROIWLLcjs.packWetParams; exports.paintGradientMappingFor = _chunkPQ3H2AANcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkPQ3H2AANcjs.paintPathStroke; exports.paintSourceColor = _chunkPQ3H2AANcjs.paintSourceColor; exports.paintSourceCss = _chunkPQ3H2AANcjs.paintSourceCss; exports.parsePaintSource = _chunkPQ3H2AANcjs.parsePaintSource; exports.pathStrokeCoverage = _chunkPQ3H2AANcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkPQ3H2AANcjs.pathStrokeDabs; exports.perDabStrength = _chunk2ONK3ERDcjs.perDabStrength; exports.pigmentColor = _chunkVMROIWLLcjs.pigmentColor; exports.pigmentOf = _chunkVMROIWLLcjs.pigmentOf; exports.pixelPigment = _chunkVMROIWLLcjs.pixelPigment; exports.pointerPressure = _chunkVMROIWLLcjs.pointerPressure; exports.pointerStrokeSample = _chunkVMROIWLLcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkVMROIWLLcjs.pointerStrokeSamples; exports.put255 = _chunkPQ3H2AANcjs.put255; exports.rand01 = _chunkPQ3H2AANcjs.rand01; exports.randSigned = _chunkPQ3H2AANcjs.randSigned; exports.rasterizeDab = _chunkPQ3H2AANcjs.rasterizeDab; exports.readPaintSource = _chunkPQ3H2AANcjs.readPaintSource; exports.readSourceRegion = _chunk2ONK3ERDcjs.readSourceRegion; exports.reflectanceToRgb = _chunkOLNIPTB3cjs.reflectanceToRgb; exports.removePaintGradientStop = _chunkPQ3H2AANcjs.removePaintGradientStop; exports.renderBrushstroke = _chunkPQ3H2AANcjs.renderBrushstroke; exports.resolvePaintGradient = _chunkPQ3H2AANcjs.resolvePaintGradient; exports.retouchFilter = _chunk2ONK3ERDcjs.retouchFilter; exports.reversePaintGradient = _chunkPQ3H2AANcjs.reversePaintGradient; exports.rgbToReflectance = _chunkOLNIPTB3cjs.rgbToReflectance; exports.rgbaViewOfGrey = _chunk2ONK3ERDcjs.rgbaViewOfGrey; exports.saturationOf = _chunk2ONK3ERDcjs.saturationOf; exports.scalePaintGradient = _chunkPQ3H2AANcjs.scalePaintGradient; exports.seamlessClone = _chunkBB6TR422cjs.seamlessClone; exports.seedFromString = _chunkPQ3H2AANcjs.seedFromString; exports.setPigmentColor = _chunkOLNIPTB3cjs.setPigmentColor; exports.shadeLightTile = _chunkVMROIWLLcjs.shadeLightTile; exports.shadeTile = _chunkVMROIWLLcjs.shadeTile; exports.smoothPoints = _chunkPQ3H2AANcjs.smoothPoints; exports.smudgeEffect = _chunk2ONK3ERDcjs.smudgeEffect; exports.solidPaint = _chunkPQ3H2AANcjs.solidPaint; exports.solveMembrane = _chunkBB6TR422cjs.solveMembrane; exports.sponge = _chunk2ONK3ERDcjs.sponge; exports.spongeEffect = _chunk2ONK3ERDcjs.spongeEffect; exports.spotHealPixels = _chunk2ONK3ERDcjs.spotHealPixels; exports.spotHealWindow = _chunk2ONK3ERDcjs.spotHealWindow; exports.srgbByteToLinear = _chunkVMROIWLLcjs.srgbByteToLinear; exports.stepSlotTs = _chunkVMROIWLLcjs.stepSlotTs; exports.strokeGrainCatch = _chunkPQ3H2AANcjs.strokeGrainCatch; exports.tipFalloff = _chunkPQ3H2AANcjs.tipFalloff; exports.tipReach = _chunkPQ3H2AANcjs.tipReach; exports.tipShape = _chunkPQ3H2AANcjs.tipShape; exports.toneOf = _chunk2ONK3ERDcjs.toneOf; exports.updatePaintGradientStop = _chunkPQ3H2AANcjs.updatePaintGradientStop; exports.walkDabs = _chunkPQ3H2AANcjs.walkDabs; exports.wetGpuSupport = _chunkVMROIWLLcjs.wetGpuSupport; exports.wetSimdSupported = _chunkVMROIWLLcjs.wetSimdSupported; exports.wetSupport = _chunkVMROIWLLcjs.wetSupport;
499
+ exports.BODY_SCATTER = _chunkKBYB7OWBcjs.BODY_SCATTER; exports.BRUSHSTROKE_MAX_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MAX_SCALE; exports.BRUSHSTROKE_MIN_SCALE = _chunkYQGCPL5Xcjs.BRUSHSTROKE_MIN_SCALE; exports.BrushstrokeCache = _chunkI7NJPHWVcjs.BrushstrokeCache; exports.CoverageMap = _chunkI7NJPHWVcjs.CoverageMap; exports.DEFAULT_BLENDER = _chunkI7NJPHWVcjs.DEFAULT_BLENDER; exports.DEFAULT_BRUSH = _chunkI7NJPHWVcjs.DEFAULT_BRUSH; exports.DEFAULT_FLOW = _chunkKBYB7OWBcjs.DEFAULT_FLOW; exports.DEFAULT_MIXER = _chunkI7NJPHWVcjs.DEFAULT_MIXER; exports.DEFAULT_PAINT_GRADIENT = _chunkI7NJPHWVcjs.DEFAULT_PAINT_GRADIENT; exports.DEFAULT_PAINT_GRADIENT_MAPPING = _chunkI7NJPHWVcjs.DEFAULT_PAINT_GRADIENT_MAPPING; exports.DEFAULT_RETOUCH = _chunk75K3W4D6cjs.DEFAULT_RETOUCH; exports.DEFAULT_SMUDGE = _chunkI7NJPHWVcjs.DEFAULT_SMUDGE; exports.DEFAULT_WET_PAPER = _chunkKBYB7OWBcjs.DEFAULT_WET_PAPER; exports.DEFAULT_WET_PARAMS = _chunkKBYB7OWBcjs.DEFAULT_WET_PARAMS; exports.DRY_EPS = _chunkKBYB7OWBcjs.DRY_EPS; exports.DabWalker = _chunkI7NJPHWVcjs.DabWalker; exports.EMPTY_MIXER_LOAD = _chunkI7NJPHWVcjs.EMPTY_MIXER_LOAD; exports.EX = _chunkKBYB7OWBcjs.EX; exports.EY = _chunkKBYB7OWBcjs.EY; exports.FLAG_ALIVE = _chunkKBYB7OWBcjs.FLAG_ALIVE; exports.FLAG_BOTTOM = _chunkKBYB7OWBcjs.FLAG_BOTTOM; exports.FLAG_LEFT = _chunkKBYB7OWBcjs.FLAG_LEFT; exports.FLAG_RIGHT = _chunkKBYB7OWBcjs.FLAG_RIGHT; exports.FLAG_TOP = _chunkKBYB7OWBcjs.FLAG_TOP; exports.FLAG_WET = _chunkKBYB7OWBcjs.FLAG_WET; exports.FLAT = _chunkKBYB7OWBcjs.FLAT; exports.FREE_INTERVAL = _chunkKBYB7OWBcjs.FREE_INTERVAL; exports.GRAIN_PATTERNS = _chunkI7NJPHWVcjs.GRAIN_PATTERNS; exports.GRAIN_TILE = _chunkI7NJPHWVcjs.GRAIN_TILE; exports.HIDE = _chunkKBYB7OWBcjs.HIDE; exports.IDENTITY_CLONE_TRANSFORM = _chunk75K3W4D6cjs.IDENTITY_CLONE_TRANSFORM; exports.MASS_CHANNELS = _chunkKBYB7OWBcjs.MASS_CHANNELS; exports.MAX_BATCH = _chunkKBYB7OWBcjs.MAX_BATCH; exports.MAX_BRUSH_SIZE = _chunkI7NJPHWVcjs.MAX_BRUSH_SIZE; exports.MAX_TILT_ACCEL = _chunkKBYB7OWBcjs.MAX_TILT_ACCEL; exports.MAX_WET_LANES = _chunkKBYB7OWBcjs.MAX_WET_LANES; exports.MAX_WET_SLOTS = _chunkKBYB7OWBcjs.MAX_WET_SLOTS; exports.MIXER_DRAIN = _chunkI7NJPHWVcjs.MIXER_DRAIN; exports.MIXER_PICKUP_RATE = _chunkI7NJPHWVcjs.MIXER_PICKUP_RATE; exports.MIXING_MODELS = _chunkI7NJPHWVcjs.MIXING_MODELS; exports.MixerStroke = _chunkI7NJPHWVcjs.MixerStroke; exports.OPP = _chunkKBYB7OWBcjs.OPP; exports.PAINT_COLOR_JSON_SCHEMA = _chunkI7NJPHWVcjs.PAINT_COLOR_JSON_SCHEMA; exports.PAINT_GRADIENT_FULL_SPEED = _chunkI7NJPHWVcjs.PAINT_GRADIENT_FULL_SPEED; exports.PAINT_GRADIENT_JSON_SCHEMA = _chunkI7NJPHWVcjs.PAINT_GRADIENT_JSON_SCHEMA; exports.PAINT_GRADIENT_KIT = _chunkI7NJPHWVcjs.PAINT_GRADIENT_KIT; exports.PAINT_GRADIENT_MAPPINGS = _chunkI7NJPHWVcjs.PAINT_GRADIENT_MAPPINGS; exports.PAINT_GRADIENT_MAPPING_LABELS = _chunkI7NJPHWVcjs.PAINT_GRADIENT_MAPPING_LABELS; exports.PAINT_GRADIENT_PRESETS = _chunkI7NJPHWVcjs.PAINT_GRADIENT_PRESETS; exports.PAINT_GRADIENT_REPEATS = _chunkI7NJPHWVcjs.PAINT_GRADIENT_REPEATS; exports.PAINT_GRADIENT_REPEAT_LABELS = _chunkI7NJPHWVcjs.PAINT_GRADIENT_REPEAT_LABELS; exports.PAINT_GRADIENT_SPACES = _chunkI7NJPHWVcjs.PAINT_GRADIENT_SPACES; exports.PAINT_GRADIENT_SPACE_LABELS = _chunkI7NJPHWVcjs.PAINT_GRADIENT_SPACE_LABELS; exports.PAINT_SOURCE_JSON_SCHEMA = _chunkI7NJPHWVcjs.PAINT_SOURCE_JSON_SCHEMA; exports.PAPER_CAPACITY = _chunkKBYB7OWBcjs.PAPER_CAPACITY; exports.PARAM = _chunkKBYB7OWBcjs.PARAM; exports.PARAM_FLOATS = _chunkKBYB7OWBcjs.PARAM_FLOATS; exports.PIGMENT_BANDS = _chunk2VX55NFMcjs.PIGMENT_BANDS; exports.PIGMENT_CHANNELS = _chunkKBYB7OWBcjs.PIGMENT_CHANNELS; exports.PIGMENT_LAMBDA_MIN = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_MIN; exports.PIGMENT_LAMBDA_STEP = _chunk2VX55NFMcjs.PIGMENT_LAMBDA_STEP; exports.PIGMENT_UNIT = _chunkKBYB7OWBcjs.PIGMENT_UNIT; exports.PIGMENT_WAVELENGTHS = _chunk2VX55NFMcjs.PIGMENT_WAVELENGTHS; exports.PLANE = _chunkKBYB7OWBcjs.PLANE; exports.PLANE_BYTES = _chunkKBYB7OWBcjs.PLANE_BYTES; exports.P_D0 = _chunkKBYB7OWBcjs.P_D0; exports.P_DL = _chunkKBYB7OWBcjs.P_DL; exports.P_EDGE = _chunkKBYB7OWBcjs.P_EDGE; exports.P_FX = _chunkKBYB7OWBcjs.P_FX; exports.P_FY = _chunkKBYB7OWBcjs.P_FY; exports.P_H = _chunkKBYB7OWBcjs.P_H; exports.P_L = _chunkKBYB7OWBcjs.P_L; exports.P_P0 = _chunkKBYB7OWBcjs.P_P0; exports.P_RHO = _chunkKBYB7OWBcjs.P_RHO; exports.P_SW = _chunkKBYB7OWBcjs.P_SW; exports.P_UX = _chunkKBYB7OWBcjs.P_UX; exports.P_UY = _chunkKBYB7OWBcjs.P_UY; exports.PaintExchange = _chunkI7NJPHWVcjs.PaintExchange; exports.PaintGradientSampler = _chunkI7NJPHWVcjs.PaintGradientSampler; exports.PaintSourceError = _chunkI7NJPHWVcjs.PaintSourceError; exports.PaperGrain = _chunkI7NJPHWVcjs.PaperGrain; exports.RETOUCH_SAMPLES = _chunk75K3W4D6cjs.RETOUCH_SAMPLES; exports.RegionPixelSource = _chunk75K3W4D6cjs.RegionPixelSource; exports.RetouchDabStroke = _chunk75K3W4D6cjs.RetouchDabStroke; exports.SET_PLANES = _chunkKBYB7OWBcjs.SET_PLANES; exports.SLOT_BYTES = _chunkKBYB7OWBcjs.SLOT_BYTES; exports.SLOT_PLANES = _chunkKBYB7OWBcjs.SLOT_PLANES; exports.SLOT_SIDE = _chunkKBYB7OWBcjs.SLOT_SIDE; exports.SPOT_HEAL_TYPES = _chunk75K3W4D6cjs.SPOT_HEAL_TYPES; exports.SRGB_TO_LINEAR = _chunkKBYB7OWBcjs.SRGB_TO_LINEAR; exports.STRIP = _chunkKBYB7OWBcjs.STRIP; exports.SmudgeTip = _chunkI7NJPHWVcjs.SmudgeTip; exports.StrokeCoverage = _chunkI7NJPHWVcjs.StrokeCoverage; exports.TIP_GRADIENT_STEPS = _chunkI7NJPHWVcjs.TIP_GRADIENT_STEPS; exports.TONE_RANGES = _chunk75K3W4D6cjs.TONE_RANGES; exports.TileMedium = _chunkI7NJPHWVcjs.TileMedium; exports.TilePixelSource = _chunk75K3W4D6cjs.TilePixelSource; exports.TileableNoise = _chunk3K6HWEXZcjs.TileableNoise; exports.TransformedPixelSource = _chunk75K3W4D6cjs.TransformedPixelSource; exports.U_MAX = _chunkKBYB7OWBcjs.U_MAX; exports.W9 = _chunkKBYB7OWBcjs.W9; exports.WET_FLOW_KINDS = _chunkKBYB7OWBcjs.WET_FLOW_KINDS; exports.WET_PARAM_KEYS = _chunkKBYB7OWBcjs.WET_PARAM_KEYS; exports.WET_TILE = _chunkKBYB7OWBcjs.WET_TILE; exports.WGSL_HALO = _chunkKBYB7OWBcjs.WGSL_HALO; exports.WGSL_SHADE = _chunkKBYB7OWBcjs.WGSL_SHADE; exports.WGSL_STEP = _chunkKBYB7OWBcjs.WGSL_STEP; exports.WetGpuEngine = _chunkKBYB7OWBcjs.WetGpuEngine; exports.WetMedium = _chunkKBYB7OWBcjs.WetMedium; exports.WetWorkerPool = _chunkKBYB7OWBcjs.WetWorkerPool; exports.WetWorld = _chunkKBYB7OWBcjs.WetWorld; exports.WetWorldError = _chunkKBYB7OWBcjs.WetWorldError; exports.addPaintGradientStop = _chunkI7NJPHWVcjs.addPaintGradientStop; exports.applyRetouchToTile = _chunk75K3W4D6cjs.applyRetouchToTile; exports.applyStrokeToDeepTile = _chunkI7NJPHWVcjs.applyStrokeToDeepTile; exports.applyStrokeToTile = _chunkI7NJPHWVcjs.applyStrokeToTile; exports.applyToneToDeepTile = _chunk75K3W4D6cjs.applyToneToDeepTile; exports.bestOffset = _chunkBB6TR422cjs.bestOffset; exports.blendRadius = _chunkI7NJPHWVcjs.blendRadius; exports.blenderDab = _chunkI7NJPHWVcjs.blenderDab; exports.boxBlurPixels = _chunk75K3W4D6cjs.boxBlurPixels; exports.brushstrokeDataUrl = _chunkI7NJPHWVcjs.brushstrokeDataUrl; exports.brushstrokeKey = _chunkI7NJPHWVcjs.brushstrokeKey; exports.brushstrokeSamples = _chunkI7NJPHWVcjs.brushstrokeSamples; exports.brushstrokeScaleBucket = _chunkYQGCPL5Xcjs.brushstrokeScaleBucket; exports.brushstrokeStrokeOptions = _chunkI7NJPHWVcjs.brushstrokeStrokeOptions; exports.brushstrokeToCanvas = _chunkI7NJPHWVcjs.brushstrokeToCanvas; exports.canShareMemory = _chunkKBYB7OWBcjs.canShareMemory; exports.cleanMixer = _chunkI7NJPHWVcjs.cleanMixer; exports.cloneSamplePoint = _chunk75K3W4D6cjs.cloneSamplePoint; exports.contentAwareFill = _chunkBB6TR422cjs.contentAwareFill; exports.coverageTileCoord = _chunkI7NJPHWVcjs.coverageTileCoord; exports.createBlenderScratch = _chunkI7NJPHWVcjs.createBlenderScratch; exports.createPigment = _chunk2VX55NFMcjs.createPigment; exports.createPigmentTools = _chunkKBYB7OWBcjs.createPigmentTools; exports.createWetGpuEngine = _chunkKBYB7OWBcjs.createWetGpuEngine; exports.dabCoverage = _chunkI7NJPHWVcjs.dabCoverage; exports.dabRect = _chunkI7NJPHWVcjs.dabRect; exports.dexp = _chunkKBYB7OWBcjs.dexp; exports.dilateMask = _chunkBB6TR422cjs.dilateMask; exports.dlog = _chunkKBYB7OWBcjs.dlog; exports.dodgeBurn = _chunk75K3W4D6cjs.dodgeBurn; exports.dodgeBurnCurve = _chunk75K3W4D6cjs.dodgeBurnCurve; exports.dpow = _chunkKBYB7OWBcjs.dpow; exports.dsincos = _chunkKBYB7OWBcjs.dsincos; exports.edgeBits = _chunkKBYB7OWBcjs.edgeBits; exports.exchangeRates = _chunkI7NJPHWVcjs.exchangeRates; exports.expNeg = _chunkKBYB7OWBcjs.expNeg; exports.filmPixel = _chunkKBYB7OWBcjs.filmPixel; exports.filmReflectance = _chunkKBYB7OWBcjs.filmReflectance; exports.findWebGpu = _chunkKBYB7OWBcjs.findWebGpu; exports.flowField = _chunkKBYB7OWBcjs.flowField; exports.gradientDabColor = _chunkI7NJPHWVcjs.gradientDabColor; exports.grainCatch = _chunkI7NJPHWVcjs.grainCatch; exports.grainHeights = _chunkI7NJPHWVcjs.grainHeights; exports.hash2 = _chunk3K6HWEXZcjs.hash2; exports.healPixels = _chunk75K3W4D6cjs.healPixels; exports.hexToPaintRgb = _chunkI7NJPHWVcjs.hexToPaintRgb; exports.isBrushstrokeBrush = _chunkI7NJPHWVcjs.isBrushstrokeBrush; exports.isGradientPaint = _chunkI7NJPHWVcjs.isGradientPaint; exports.isIdentityCloneTransform = _chunk75K3W4D6cjs.isIdentityCloneTransform; exports.latticeViscosity = _chunkKBYB7OWBcjs.latticeViscosity; exports.lerpPigment = _chunk2VX55NFMcjs.lerpPigment; exports.lerpPigmentInto = _chunk2VX55NFMcjs.lerpPigmentInto; exports.linearToSrgb8 = _chunkKBYB7OWBcjs.linearToSrgb8; exports.loadMixer = _chunkI7NJPHWVcjs.loadMixer; exports.loadWetKernel = _chunkKBYB7OWBcjs.loadWetKernel; exports.luma = _chunk75K3W4D6cjs.luma; exports.maskBounds = _chunkBB6TR422cjs.maskBounds; exports.membraneFill = _chunkBB6TR422cjs.membraneFill; exports.mix32 = _chunk3K6HWEXZcjs.mix32; exports.mixPigments = _chunk2VX55NFMcjs.mixPigments; exports.mixerRates = _chunkI7NJPHWVcjs.mixerRates; exports.moveWetSnapshot = _chunkKBYB7OWBcjs.moveWetSnapshot; exports.normalizeBlender = _chunkI7NJPHWVcjs.normalizeBlender; exports.normalizeBrush = _chunkI7NJPHWVcjs.normalizeBrush; exports.normalizeFlow = _chunkKBYB7OWBcjs.normalizeFlow; exports.normalizeHexColor = _chunkI7NJPHWVcjs.normalizeHexColor; exports.normalizeMixer = _chunkI7NJPHWVcjs.normalizeMixer; exports.normalizeRetouch = _chunk75K3W4D6cjs.normalizeRetouch; exports.normalizeSmudge = _chunkI7NJPHWVcjs.normalizeSmudge; exports.normalizeTilt = _chunkKBYB7OWBcjs.normalizeTilt; exports.normalizeWetParams = _chunkKBYB7OWBcjs.normalizeWetParams; exports.packWetParams = _chunkKBYB7OWBcjs.packWetParams; exports.paintGradientMappingFor = _chunkI7NJPHWVcjs.paintGradientMappingFor; exports.paintPathStroke = _chunkI7NJPHWVcjs.paintPathStroke; exports.paintSourceColor = _chunkI7NJPHWVcjs.paintSourceColor; exports.paintSourceCss = _chunkI7NJPHWVcjs.paintSourceCss; exports.parsePaintSource = _chunkI7NJPHWVcjs.parsePaintSource; exports.pathStrokeCoverage = _chunkI7NJPHWVcjs.pathStrokeCoverage; exports.pathStrokeDabs = _chunkI7NJPHWVcjs.pathStrokeDabs; exports.perDabStrength = _chunk75K3W4D6cjs.perDabStrength; exports.pigmentColor = _chunkKBYB7OWBcjs.pigmentColor; exports.pigmentOf = _chunkKBYB7OWBcjs.pigmentOf; exports.pixelPigment = _chunkKBYB7OWBcjs.pixelPigment; exports.pointerPressure = _chunkKBYB7OWBcjs.pointerPressure; exports.pointerStrokeSample = _chunkKBYB7OWBcjs.pointerStrokeSample; exports.pointerStrokeSamples = _chunkKBYB7OWBcjs.pointerStrokeSamples; exports.put255 = _chunkI7NJPHWVcjs.put255; exports.rand01 = _chunk3K6HWEXZcjs.rand01; exports.randSigned = _chunk3K6HWEXZcjs.randSigned; exports.rasterizeDab = _chunkI7NJPHWVcjs.rasterizeDab; exports.readPaintSource = _chunkI7NJPHWVcjs.readPaintSource; exports.readSourceRegion = _chunk75K3W4D6cjs.readSourceRegion; exports.reflectanceToRgb = _chunk2VX55NFMcjs.reflectanceToRgb; exports.removePaintGradientStop = _chunkI7NJPHWVcjs.removePaintGradientStop; exports.renderBrushstroke = _chunkI7NJPHWVcjs.renderBrushstroke; exports.resolvePaintGradient = _chunkI7NJPHWVcjs.resolvePaintGradient; exports.retouchFilter = _chunk75K3W4D6cjs.retouchFilter; exports.reversePaintGradient = _chunkI7NJPHWVcjs.reversePaintGradient; exports.rgbToReflectance = _chunk2VX55NFMcjs.rgbToReflectance; exports.rgbaViewOfGrey = _chunk75K3W4D6cjs.rgbaViewOfGrey; exports.saturationOf = _chunk75K3W4D6cjs.saturationOf; exports.scalePaintGradient = _chunkI7NJPHWVcjs.scalePaintGradient; exports.seamlessClone = _chunkBB6TR422cjs.seamlessClone; exports.seedFromString = _chunk3K6HWEXZcjs.seedFromString; exports.setPigmentColor = _chunk2VX55NFMcjs.setPigmentColor; exports.shadeLightTile = _chunkKBYB7OWBcjs.shadeLightTile; exports.shadeTile = _chunkKBYB7OWBcjs.shadeTile; exports.smoothPoints = _chunkI7NJPHWVcjs.smoothPoints; exports.smudgeEffect = _chunk75K3W4D6cjs.smudgeEffect; exports.solidPaint = _chunkI7NJPHWVcjs.solidPaint; exports.solveMembrane = _chunkBB6TR422cjs.solveMembrane; exports.sponge = _chunk75K3W4D6cjs.sponge; exports.spongeEffect = _chunk75K3W4D6cjs.spongeEffect; exports.spotHealPixels = _chunk75K3W4D6cjs.spotHealPixels; exports.spotHealWindow = _chunk75K3W4D6cjs.spotHealWindow; exports.srgbByteToLinear = _chunkKBYB7OWBcjs.srgbByteToLinear; exports.stepSlotTs = _chunkKBYB7OWBcjs.stepSlotTs; exports.strokeGrainCatch = _chunkI7NJPHWVcjs.strokeGrainCatch; exports.tipFalloff = _chunkI7NJPHWVcjs.tipFalloff; exports.tipReach = _chunkI7NJPHWVcjs.tipReach; exports.tipShape = _chunkI7NJPHWVcjs.tipShape; exports.toneOf = _chunk75K3W4D6cjs.toneOf; exports.updatePaintGradientStop = _chunkI7NJPHWVcjs.updatePaintGradientStop; exports.walkDabs = _chunkI7NJPHWVcjs.walkDabs; exports.wetGpuSupport = _chunkKBYB7OWBcjs.wetGpuSupport; exports.wetSimdSupported = _chunkKBYB7OWBcjs.wetSimdSupported; exports.wetSupport = _chunkKBYB7OWBcjs.wetSupport;
@@ -29,7 +29,7 @@ import {
29
29
  spotHealPixels,
30
30
  spotHealWindow,
31
31
  toneOf
32
- } from "../chunk-4P6H35HU.js";
32
+ } from "../chunk-WA44NKPF.js";
33
33
  import {
34
34
  bestOffset,
35
35
  contentAwareFill,
@@ -134,7 +134,7 @@ import {
134
134
  wetGpuSupport,
135
135
  wetSimdSupported,
136
136
  wetSupport
137
- } from "../chunk-P3NIPIKS.js";
137
+ } from "../chunk-WQCNC4DK.js";
138
138
  import {
139
139
  BrushstrokeCache,
140
140
  CoverageMap,
@@ -173,7 +173,6 @@ import {
173
173
  StrokeCoverage,
174
174
  TIP_GRADIENT_STEPS,
175
175
  TileMedium,
176
- TileableNoise,
177
176
  addPaintGradientStop,
178
177
  applyStrokeToDeepTile,
179
178
  applyStrokeToTile,
@@ -193,12 +192,10 @@ import {
193
192
  gradientDabColor,
194
193
  grainCatch,
195
194
  grainHeights,
196
- hash2,
197
195
  hexToPaintRgb,
198
196
  isBrushstrokeBrush,
199
197
  isGradientPaint,
200
198
  loadMixer,
201
- mix32,
202
199
  mixerRates,
203
200
  normalizeBlender,
204
201
  normalizeBrush,
@@ -213,8 +210,6 @@ import {
213
210
  pathStrokeCoverage,
214
211
  pathStrokeDabs,
215
212
  put255,
216
- rand01,
217
- randSigned,
218
213
  rasterizeDab,
219
214
  readPaintSource,
220
215
  removePaintGradientStop,
@@ -222,7 +217,6 @@ import {
222
217
  resolvePaintGradient,
223
218
  reversePaintGradient,
224
219
  scalePaintGradient,
225
- seedFromString,
226
220
  smoothPoints,
227
221
  solidPaint,
228
222
  strokeGrainCatch,
@@ -231,7 +225,15 @@ import {
231
225
  tipShape,
232
226
  updatePaintGradientStop,
233
227
  walkDabs
234
- } from "../chunk-2PBZBRP5.js";
228
+ } from "../chunk-D5KGAO4Z.js";
229
+ import {
230
+ TileableNoise,
231
+ hash2,
232
+ mix32,
233
+ rand01,
234
+ randSigned,
235
+ seedFromString
236
+ } from "../chunk-4D6KP5BV.js";
235
237
  import {
236
238
  BRUSHSTROKE_MAX_SCALE,
237
239
  BRUSHSTROKE_MIN_SCALE,
@@ -249,7 +251,8 @@ import {
249
251
  reflectanceToRgb,
250
252
  rgbToReflectance,
251
253
  setPigmentColor
252
- } from "../chunk-42TWUPNJ.js";
254
+ } from "../chunk-IRSTHLQQ.js";
255
+ import "../chunk-OTTT5N3K.js";
253
256
  import "../chunk-HVVR5PZW.js";
254
257
  import "../chunk-QGHEDC7B.js";
255
258
  export {
@@ -34,6 +34,9 @@ import { type PaintGuides, type PerspectiveGuide, type ReferenceImage, type Symm
34
34
  import { MixingPad, type MixingPadTool, type PadMixOptions } from './mixing-pad.cjs';
35
35
  import { type Stencil, type StencilInput } from './stencils.cjs';
36
36
  import { type Sticker } from './stickers.cjs';
37
+ import { type StickerRasterizer } from './sticker-art.cjs';
38
+ import { StickersSlot } from '../stickers/helpers.cjs';
39
+ import type { StickerProvider, StickerRef } from '../stickers/types.cjs';
37
40
  import { type LightSpill } from './light.cjs';
38
41
  import { type PaintView } from './view.cjs';
39
42
  import { PaintWetLayers, type PaintWetOptions, type WetEngineInfo, type WetGpuMode, type WetLayerInfo } from './wet.cjs';
@@ -65,6 +68,13 @@ export interface PaintEditorOptions extends Partial<PaintCanvas> {
65
68
  historyLimit?: number;
66
69
  /** Wet media: kernel, threads, speed (steps per second) and the memory kept for undoing wet strokes. */
67
70
  wet?: PaintWetOptions;
71
+ /** The sticker library (default the editor's own stamps, `editorStickers()`); see `setStickersProvider`. */
72
+ stickers?: StickerProvider;
73
+ /**
74
+ * Draws a provider sticker's SVG or `https:` art to RGBA (default: PNG data URLs anywhere, the
75
+ * rest with the browser's `createImageBitmap` and `OffscreenCanvas`).
76
+ */
77
+ rasterizeSticker?: StickerRasterizer;
68
78
  }
69
79
  /** Wet media as panels show it. */
70
80
  export interface PaintWetStateInfo {
@@ -358,6 +368,10 @@ export declare class PaintEditorController {
358
368
  private wetOp;
359
369
  /** The effects provider slot (see `setEffectsProvider`). */
360
370
  readonly effects: EffectsSlot;
371
+ /** The sticker library slot (see `setStickersProvider`). */
372
+ readonly stickers: StickersSlot;
373
+ private readonly stickerArt;
374
+ private readonly rasterizeSticker;
361
375
  private readonly effectsRenderer;
362
376
  private paperEffectNodeCache;
363
377
  constructor(options?: PaintEditorOptions);
@@ -1075,6 +1089,28 @@ export declare class PaintEditorController {
1075
1089
  /** The next free sticker number (ids `st<n>` are unique across the document). */
1076
1090
  private nextStickerNumber;
1077
1091
  private stickerLayer;
1092
+ /** The sticker library: the editor's own stamps unless a host set its own. */
1093
+ get stickersProvider(): StickerProvider;
1094
+ /**
1095
+ * Sets the sticker library (`null` goes back to the editor's own stamps, `editorStickers()`);
1096
+ * to offer both, pass `combineStickerProviders([editorStickers(), yours])`. Loaded art is
1097
+ * forgotten. Not an edit: no undo step.
1098
+ */
1099
+ setStickersProvider(provider: StickerProvider | null): void;
1100
+ /**
1101
+ * Loads the art of `refs` (provider stickers; editor stamps need none) so sprays and placements
1102
+ * can draw them. Rejects with a `PaintEditorError` naming an unknown ref and the closest known
1103
+ * ones, or a sticker whose art failed. Emits when art arrives, so views redraw.
1104
+ */
1105
+ prepareStickers(refs: readonly StickerRef[]): Promise<void>;
1106
+ /** Whether a sticker's art is ready to draw: `ready` (always for editor stamps), `loading`, `failed` (with why) or `none`. */
1107
+ stickerArtStatus(ref: StickerRef): {
1108
+ status: 'ready' | 'loading' | 'failed' | 'none';
1109
+ error?: string;
1110
+ };
1111
+ private readStickerRef;
1112
+ /** Refuses to redraw stickers whose art has not loaded (they would vanish), naming them and what to call. */
1113
+ private requireStickerArt;
1078
1114
  /** A layer's stickers, bottom first. */
1079
1115
  listStickers(layerId?: string): Sticker[];
1080
1116
  /**
@@ -1105,7 +1141,7 @@ export declare class PaintEditorController {
1105
1141
  * which becomes one. Missing fields: size 48 px, rotation 0, the paint colour, opacity 1, a seed
1106
1142
  * from the new id. Returns the new stickers with their ids.
1107
1143
  */
1108
- addStickers(layerId: string | undefined, input: readonly (Partial<Omit<Sticker, 'id'>> & Pick<Sticker, 'stamp' | 'x' | 'y'>)[]): Sticker[];
1144
+ addStickers(layerId: string | undefined, input: readonly (Partial<Omit<Sticker, 'id'>> & Pick<Sticker, 'x' | 'y'>)[]): Sticker[];
1109
1145
  /** Brings stickers to the top (`front`) or bottom of their layer (one undo step). */
1110
1146
  arrangeStickers(layerId: string | undefined, ids: readonly string[], to: 'front' | 'back'): string[];
1111
1147
  /** Deletes stickers (`ids`, or all of them on the layer) (one undo step). Returns the ids removed. */
@@ -34,6 +34,9 @@ import { type PaintGuides, type PerspectiveGuide, type ReferenceImage, type Symm
34
34
  import { MixingPad, type MixingPadTool, type PadMixOptions } from './mixing-pad.js';
35
35
  import { type Stencil, type StencilInput } from './stencils.js';
36
36
  import { type Sticker } from './stickers.js';
37
+ import { type StickerRasterizer } from './sticker-art.js';
38
+ import { StickersSlot } from '../stickers/helpers.js';
39
+ import type { StickerProvider, StickerRef } from '../stickers/types.js';
37
40
  import { type LightSpill } from './light.js';
38
41
  import { type PaintView } from './view.js';
39
42
  import { PaintWetLayers, type PaintWetOptions, type WetEngineInfo, type WetGpuMode, type WetLayerInfo } from './wet.js';
@@ -65,6 +68,13 @@ export interface PaintEditorOptions extends Partial<PaintCanvas> {
65
68
  historyLimit?: number;
66
69
  /** Wet media: kernel, threads, speed (steps per second) and the memory kept for undoing wet strokes. */
67
70
  wet?: PaintWetOptions;
71
+ /** The sticker library (default the editor's own stamps, `editorStickers()`); see `setStickersProvider`. */
72
+ stickers?: StickerProvider;
73
+ /**
74
+ * Draws a provider sticker's SVG or `https:` art to RGBA (default: PNG data URLs anywhere, the
75
+ * rest with the browser's `createImageBitmap` and `OffscreenCanvas`).
76
+ */
77
+ rasterizeSticker?: StickerRasterizer;
68
78
  }
69
79
  /** Wet media as panels show it. */
70
80
  export interface PaintWetStateInfo {
@@ -358,6 +368,10 @@ export declare class PaintEditorController {
358
368
  private wetOp;
359
369
  /** The effects provider slot (see `setEffectsProvider`). */
360
370
  readonly effects: EffectsSlot;
371
+ /** The sticker library slot (see `setStickersProvider`). */
372
+ readonly stickers: StickersSlot;
373
+ private readonly stickerArt;
374
+ private readonly rasterizeSticker;
361
375
  private readonly effectsRenderer;
362
376
  private paperEffectNodeCache;
363
377
  constructor(options?: PaintEditorOptions);
@@ -1075,6 +1089,28 @@ export declare class PaintEditorController {
1075
1089
  /** The next free sticker number (ids `st<n>` are unique across the document). */
1076
1090
  private nextStickerNumber;
1077
1091
  private stickerLayer;
1092
+ /** The sticker library: the editor's own stamps unless a host set its own. */
1093
+ get stickersProvider(): StickerProvider;
1094
+ /**
1095
+ * Sets the sticker library (`null` goes back to the editor's own stamps, `editorStickers()`);
1096
+ * to offer both, pass `combineStickerProviders([editorStickers(), yours])`. Loaded art is
1097
+ * forgotten. Not an edit: no undo step.
1098
+ */
1099
+ setStickersProvider(provider: StickerProvider | null): void;
1100
+ /**
1101
+ * Loads the art of `refs` (provider stickers; editor stamps need none) so sprays and placements
1102
+ * can draw them. Rejects with a `PaintEditorError` naming an unknown ref and the closest known
1103
+ * ones, or a sticker whose art failed. Emits when art arrives, so views redraw.
1104
+ */
1105
+ prepareStickers(refs: readonly StickerRef[]): Promise<void>;
1106
+ /** Whether a sticker's art is ready to draw: `ready` (always for editor stamps), `loading`, `failed` (with why) or `none`. */
1107
+ stickerArtStatus(ref: StickerRef): {
1108
+ status: 'ready' | 'loading' | 'failed' | 'none';
1109
+ error?: string;
1110
+ };
1111
+ private readStickerRef;
1112
+ /** Refuses to redraw stickers whose art has not loaded (they would vanish), naming them and what to call. */
1113
+ private requireStickerArt;
1078
1114
  /** A layer's stickers, bottom first. */
1079
1115
  listStickers(layerId?: string): Sticker[];
1080
1116
  /**
@@ -1105,7 +1141,7 @@ export declare class PaintEditorController {
1105
1141
  * which becomes one. Missing fields: size 48 px, rotation 0, the paint colour, opacity 1, a seed
1106
1142
  * from the new id. Returns the new stickers with their ids.
1107
1143
  */
1108
- addStickers(layerId: string | undefined, input: readonly (Partial<Omit<Sticker, 'id'>> & Pick<Sticker, 'stamp' | 'x' | 'y'>)[]): Sticker[];
1144
+ addStickers(layerId: string | undefined, input: readonly (Partial<Omit<Sticker, 'id'>> & Pick<Sticker, 'x' | 'y'>)[]): Sticker[];
1109
1145
  /** Brings stickers to the top (`front`) or bottom of their layer (one undo step). */
1110
1146
  arrangeStickers(layerId: string | undefined, ids: readonly string[], to: 'front' | 'back'): string[];
1111
1147
  /** Deletes stickers (`ids`, or all of them on the layer) (one undo step). Returns the ids removed. */