@sumi-forge/react 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -134,6 +134,115 @@ function y(e, t) {
134
134
  }
135
135
  // src/lib/sumi-forge/presets.ts
136
136
  var b = {
137
+ classic_washi: {
138
+ id: "classic_washi",
139
+ name: "Washi Clássico & Nanquim",
140
+ jp: "水墨山水",
141
+ romaji: "Suiboku Sansui",
142
+ subtitle: "Papel Washi envelhecido, nanquim tradicional e aguadas de carvão",
143
+ isDark: !1,
144
+ colors: {
145
+ background: "#EFECE4",
146
+ ink: "#181715",
147
+ wash: "#524E46",
148
+ mist: "#EFECE4",
149
+ accent: "#C8232C"
150
+ }
151
+ },
152
+ jade_mineral: {
153
+ id: "jade_mineral",
154
+ name: "Verde Mineral & Jade",
155
+ jp: "青緑山水",
156
+ romaji: "Seiryoku Sansui",
157
+ subtitle: "Estilo imperial com pigmento mineral verde-celadon nas encostas",
158
+ isDark: !1,
159
+ colors: {
160
+ background: "#EDE8DC",
161
+ ink: "#1A211E",
162
+ wash: "#527361",
163
+ mist: "#EDE8DC",
164
+ accent: "#3B6E52"
165
+ }
166
+ },
167
+ night_obsidian: {
168
+ id: "night_obsidian",
169
+ name: "Noite Obsidiana (Dark Mode)",
170
+ jp: "夜行山水",
171
+ romaji: "Yakō Sansui",
172
+ subtitle: "Céu noturno em carvão profundo com cristas iluminadas em marfim",
173
+ isDark: !0,
174
+ colors: {
175
+ background: "#141518",
176
+ ink: "#E8E2D5",
177
+ wash: "#2A2D34",
178
+ mist: "#141518",
179
+ accent: "#C8232C"
180
+ }
181
+ },
182
+ crimson_dawn: {
183
+ id: "crimson_dawn",
184
+ name: "Alvorada Carmesim",
185
+ jp: "暁山水",
186
+ romaji: "Akatsuki Sansui",
187
+ subtitle: "Bruma matinal aquecida por aguadas de vermelhão e cinza-pedra",
188
+ isDark: !1,
189
+ colors: {
190
+ background: "#F2ECE4",
191
+ ink: "#1D1817",
192
+ wash: "#944347",
193
+ mist: "#F2ECE4",
194
+ accent: "#C8232C"
195
+ }
196
+ },
197
+ cobalt_porcelain: {
198
+ id: "cobalt_porcelain",
199
+ name: "Azul Índigo & Porcelana",
200
+ jp: "藍染山水",
201
+ romaji: "Aizome Sansui",
202
+ subtitle: "Tons serenos de índigo oriental sobre papel de arroz claro",
203
+ isDark: !1,
204
+ colors: {
205
+ background: "#EDF0F2",
206
+ ink: "#101C29",
207
+ wash: "#3B5C7A",
208
+ mist: "#EDF0F2",
209
+ accent: "#1E4E79"
210
+ }
211
+ }
212
+ }, x = [
213
+ {
214
+ id: "panoramic_river",
215
+ name: "Horizonte Fluvial & Barco Solitário",
216
+ jp: "江湖遠景",
217
+ romaji: "Kōko Enkei",
218
+ ptMeaning: "Águas tranquilas que se estendem até o horizonte infinito",
219
+ description: "Grande espelho d’água com ondulações calmas, ilhas distantes na neblina, promontório rochoso em primeiro plano e pescador solitário."
220
+ },
221
+ {
222
+ id: "karst_peaks",
223
+ name: "Picos Escarpados & Abismo",
224
+ jp: "奇峰聳立",
225
+ romaji: "Kihō Shōritsu",
226
+ ptMeaning: "Picos extraordinários que se erguem com majestade acima das nuvens",
227
+ description: "Torres verticais dramáticas com fissuras de rocha Cunfa, pinheiros agarrados às escarpas e silhuetas fantasmas ao fundo."
228
+ },
229
+ {
230
+ id: "layered_valley",
231
+ name: "Vale das Cinco Neblinas",
232
+ jp: "重巒畳嶂",
233
+ romaji: "Jūran Jōshō",
234
+ ptMeaning: "Cordilheiras sobrepostas em harmonia profunda entre o céu e a terra",
235
+ description: "Cinco a sete camadas de colinas e montanhas entrelaçadas com aguada mineral, matas de pinheiros nas cristas e neblina nos vales."
236
+ },
237
+ {
238
+ id: "twin_gorges",
239
+ name: "Desfiladeiro Noturno & Travessia",
240
+ jp: "峡谷孤舟",
241
+ romaji: "Kyōkoku Koshū",
242
+ ptMeaning: "A travessia serena entre grandes paredes de rocha milenar",
243
+ description: "Picos imponentes flanqueando um canal profundo com ilha de pinheiros em primeiro plano, perfeito tanto em papel claro quanto no Modo Noturno."
244
+ }
245
+ ], S = {
137
246
  fuji_sakura: {
138
247
  id: "fuji_sakura",
139
248
  name: "Monte Fuji & Sakura Carmesim",
@@ -255,7 +364,7 @@ var b = {
255
364
  sporeAccent: "#F59E0B"
256
365
  }
257
366
  }
258
- }, x = [
367
+ }, C = [
259
368
  {
260
369
  id: "hyb_slash_great_wave_katana",
261
370
  name: "Corte da Grande Onda (Katana Hokusai)",
@@ -333,7 +442,7 @@ var b = {
333
442
  defaultSchool: "abyssal_curse",
334
443
  description: "Braços espirais logarítmicos convergindo sobre núcleo abissal oclusivo e aguada Tarashikomi."
335
444
  }
336
- ], S = {
445
+ ], w = {
337
446
  archetype: "hyb_slash_great_wave_katana",
338
447
  school: "calligraphy_tide",
339
448
  colors: {
@@ -375,14 +484,14 @@ var b = {
375
484
  fps: 16,
376
485
  seed: 8472,
377
486
  frameSize: 128
378
- }, C = {
487
+ }, T = {
379
488
  sunIntensity: 1,
380
489
  mountainIntensity: 1,
381
490
  sakuraBranchIntensity: 1,
382
491
  sakuraPetalsIntensity: 1,
383
492
  waterReflectionIntensity: 1,
384
493
  mistKumoIntensity: 1
385
- }, w = [
494
+ }, E = [
386
495
  {
387
496
  id: 1,
388
497
  code: "TEC-01",
@@ -577,7 +686,7 @@ var b = {
577
686
  }
578
687
  ];
579
688
  // src/lib/sumi-forge/techniques.ts
580
- function T(e, t, n, r = {}) {
689
+ function D(e, t, n, r = {}) {
581
690
  let i = e.rough, a = e.colors;
582
691
  return {
583
692
  roughness: i.roughness * .65,
@@ -591,7 +700,7 @@ function T(e, t, n, r = {}) {
591
700
  ...r
592
701
  };
593
702
  }
594
- function E(e, t) {
703
+ function O(e, t) {
595
704
  let { spine: n, maxWidth: r, bristleCount: i, dryBrushGap: a, taperStart: o, taperEnd: s, color: c, alpha: f = 1, offsetNormal: p = 0, headReach: m = 1, tailRetract: h = 0, erosionProgress: g = 0, erosionScale: v = 1, hookWaves: y = 0, roundHeadCap: b = !0, seed: x } = t;
596
705
  if (n.length < 2 || m <= h + .01) return;
597
706
  let S = Math.max(1, Math.min(44, Math.round(i)));
@@ -647,7 +756,7 @@ function E(e, t) {
647
756
  }
648
757
  e.restore();
649
758
  }
650
- function D(e, t, n, r, i, a, o, s) {
759
+ function k(e, t, n, r, i, a, o, s) {
651
760
  if (t.length < 4 || r <= 0) return;
652
761
  let c = l(s + 991);
653
762
  e.save();
@@ -663,7 +772,7 @@ function D(e, t, n, r, i, a, o, s) {
663
772
  }
664
773
  e.restore();
665
774
  }
666
- function O(e, t, n, r, i) {
775
+ function A(e, t, n, r, i) {
667
776
  let { rootX: a, rootY: o, ctrl1X: s, ctrl1Y: c, ctrl2X: l, ctrl2Y: u, tipX: d, tipY: p, maxBellyWidth: m, striationCount: h = 5, alpha: g = 1, seed: y } = i, b = f({
668
777
  x: a,
669
778
  y: o
@@ -685,8 +794,8 @@ function O(e, t, n, r, i) {
685
794
  e.save(), e.beginPath(), C.forEach(([t, n], r) => {
686
795
  r === 0 ? e.moveTo(t, n) : e.lineTo(t, n);
687
796
  }), e.closePath();
688
- let w = e.createLinearGradient(a, o, d, p), E = n.colors;
689
- w.addColorStop(0, _(E.coreGlow, g)), w.addColorStop(.28, _(v(E.coreGlow, E.energySecondary, .35), g)), w.addColorStop(.68, _(E.energySecondary, g * .96)), w.addColorStop(.92, _(v(E.energySecondary, E.inkPrimary, .45), g * .95)), w.addColorStop(1, _(E.inkPrimary, g)), e.fillStyle = w, e.fill();
797
+ let w = e.createLinearGradient(a, o, d, p), T = n.colors;
798
+ w.addColorStop(0, _(T.coreGlow, g)), w.addColorStop(.28, _(v(T.coreGlow, T.energySecondary, .35), g)), w.addColorStop(.68, _(T.energySecondary, g * .96)), w.addColorStop(.92, _(v(T.energySecondary, T.inkPrimary, .45), g * .95)), w.addColorStop(1, _(T.inkPrimary, g)), e.fillStyle = w, e.fill();
690
799
  for (let t = 0; t < h; t++) {
691
800
  let n = h === 1 ? 0 : t / (h - 1) * 2 - 1;
692
801
  e.beginPath();
@@ -694,20 +803,20 @@ function O(e, t, n, r, i) {
694
803
  let r = b[t], i = Math.sin(r.t ** .58 * Math.PI) * Math.max(0, 1 - r.t) ** .7 * 1.48, a = n * .36 * m * i, o = r.x + r.nx * a, s = r.y + r.ny * a;
695
804
  t === 2 ? e.moveTo(o, s) : e.lineTo(o, s);
696
805
  }
697
- e.strokeStyle = _(t % 2 == 0 ? E.coreGlow : E.inkPrimary, g * (t % 2 == 0 ? .5 : .42)), e.lineWidth = Math.max(.5, .75 * r), e.stroke();
806
+ e.strokeStyle = _(t % 2 == 0 ? T.coreGlow : T.inkPrimary, g * (t % 2 == 0 ? .5 : .42)), e.lineWidth = Math.max(.5, .75 * r), e.stroke();
698
807
  }
699
808
  if (t && n.rough.outlineWidth > .1) {
700
809
  let e = C.filter((e, t) => t % 3 == 0);
701
- t.polygon(e, T(n, r, y, {
810
+ t.polygon(e, D(n, r, y, {
702
811
  fill: void 0,
703
- stroke: _(E.inkPrimary, g * .85)
812
+ stroke: _(T.inkPrimary, g * .85)
704
813
  }));
705
814
  }
706
815
  e.restore();
707
816
  }
708
- function k(e, t, n, r, i, a, o, s) {
817
+ function j(e, t, n, r, i, a, o, s) {
709
818
  let c = (t + r) * .5 + (i - n) * .25, l = (n + i) * .5 - (r - t) * .25;
710
- E(e, {
819
+ O(e, {
711
820
  spine: p({
712
821
  x: t,
713
822
  y: n
@@ -728,7 +837,7 @@ function k(e, t, n, r, i, a, o, s) {
728
837
  seed: s
729
838
  });
730
839
  }
731
- function A(e, t, n, r, i, a, o, s, c, u, d) {
840
+ function M(e, t, n, r, i, a, o, s, c, u, d) {
732
841
  let f = l(d), p = c.colors;
733
842
  e.save();
734
843
  for (let l = 0; l < o; l++) {
@@ -737,14 +846,14 @@ function A(e, t, n, r, i, a, o, s, c, u, d) {
737
846
  [n - x, r - S],
738
847
  [C, w],
739
848
  [v, y]
740
- ], T(c, u, d + l * 31, { strokeWidth: Math.max(.5, .7 * u) })), f() > .25) {
849
+ ], D(c, u, d + l * 31, { strokeWidth: Math.max(.5, .7 * u) })), f() > .25) {
741
850
  let t = g * (1.12 + f() * .38), i = h + a * (.5 + f() * .35), o = n + Math.cos(i) * t, s = r + Math.sin(i) * t, c = Math.max(.8, (1.1 + f() * 1.4) * u);
742
851
  e.beginPath(), e.arc(o, s, c, 0, Math.PI * 2), e.fillStyle = p.coreGlow, e.fill(), e.strokeStyle = p.inkPrimary, e.lineWidth = Math.max(.45, .6 * u), e.stroke();
743
852
  }
744
853
  }
745
854
  e.restore();
746
855
  }
747
- function j(e, t, n, r, i, a, o, s, c, l) {
856
+ function N(e, t, n, r, i, a, o, s, c, l) {
748
857
  if (n.length < 6) return;
749
858
  let u = o.colors, d = [], f = [];
750
859
  for (let e of n) {
@@ -766,15 +875,15 @@ function j(e, t, n, r, i, a, o, s, c, l) {
766
875
  e.stroke();
767
876
  }
768
877
  let g = n[n.length - 1], v = n[Math.max(0, n.length - 3)], y = Math.atan2(g.y - v.y, g.x - v.x);
769
- A(e, t, g.x, g.y, y, i, a, r * .58, o, s, l + 101);
878
+ M(e, t, g.x, g.y, y, i, a, r * .58, o, s, l + 101);
770
879
  let b = n[Math.floor(n.length * .62)];
771
880
  if (b) {
772
881
  let n = Math.atan2(b.ny * i, b.nx * i);
773
- A(e, t, b.x + b.nx * i * r * .32, b.y + b.ny * i * r * .32, n, i, Math.max(3, Math.floor(a * .65)), r * .42, o, s, l + 203);
882
+ M(e, t, b.x + b.nx * i * r * .32, b.y + b.ny * i * r * .32, n, i, Math.max(3, Math.floor(a * .65)), r * .42, o, s, l + 203);
774
883
  }
775
884
  e.restore();
776
885
  }
777
- function M(e, t, n, r, i) {
886
+ function P(e, t, n, r, i) {
778
887
  let { startX: a, startY: o, endX: s, endY: c, maxThickness: l, lobeCount: u = 3, curlRadius: d = l * .48, flip: p = 1, alpha: m = .92, seed: h } = i, g = s - a, y = c - o, b = a + g * .32 - y * .18 * p, x = o + y * .32 + g * .18 * p, S = a + g * .72 + y * .12 * p, C = o + y * .72 - g * .12 * p, w = f({
779
888
  x: a,
780
889
  y: o
@@ -787,14 +896,14 @@ function M(e, t, n, r, i) {
787
896
  }, {
788
897
  x: s,
789
898
  y: c
790
- }, 44, n.dynamics.jitterAmount * .12, h), E = [], D = [];
899
+ }, 44, n.dynamics.jitterAmount * .12, h), T = [], E = [];
791
900
  for (let e = 0; e < w.length; e++) {
792
901
  let t = w[e], n = t.t, r = .58 + .42 * Math.abs(Math.sin(n * Math.PI * u)), i = Math.sin(n ** .62 * Math.PI) * 1.28, a = l * .62 * r * i, o = l * .28 * Math.sin(n * Math.PI);
793
- E.push([t.x + t.nx * p * a, t.y + t.ny * p * a]), D.push([t.x - t.nx * p * o, t.y - t.ny * p * o]);
902
+ T.push([t.x + t.nx * p * a, t.y + t.ny * p * a]), E.push([t.x - t.nx * p * o, t.y - t.ny * p * o]);
794
903
  }
795
904
  let O = n.colors;
796
- e.save(), e.beginPath(), E.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n));
797
- for (let t = D.length - 1; t >= 0; t--) e.lineTo(D[t][0], D[t][1]);
905
+ e.save(), e.beginPath(), T.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n));
906
+ for (let t = E.length - 1; t >= 0; t--) e.lineTo(E[t][0], E[t][1]);
798
907
  e.closePath();
799
908
  let k = e.createLinearGradient(a, o, s, c);
800
909
  k.addColorStop(0, _(O.inkPrimary, m * .75)), k.addColorStop(.55, _(v(O.energySecondary, O.coreGlow, .45), m * .88)), k.addColorStop(1, _(O.coreGlow, m * .95)), e.fillStyle = k, e.fill(), e.strokeStyle = _(O.inkPrimary, m * .85), e.lineWidth = Math.max(.75, 1.15 * r * (n.rough.outlineWidth * .7)), e.stroke();
@@ -803,13 +912,13 @@ function M(e, t, n, r, i) {
803
912
  let t = e / 22, n = M + p * (.4 + t * Math.PI * 2.25), r = d * (.92 - t * .76);
804
913
  F.push([N + Math.cos(n) * r, P + Math.sin(n) * r]);
805
914
  }
806
- e.beginPath(), F.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n)), e.strokeStyle = _(O.inkPrimary, m * .92), e.lineWidth = Math.max(.8, 1.35 * r), e.stroke(), t && n.rough.outlineWidth > .2 && t.curve(F.filter((e, t) => t % 2 == 0), T(n, r, h + 59, { stroke: _(O.inkPrimary, m * .82) })), e.restore();
915
+ e.beginPath(), F.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n)), e.strokeStyle = _(O.inkPrimary, m * .92), e.lineWidth = Math.max(.8, 1.35 * r), e.stroke(), t && n.rough.outlineWidth > .2 && t.curve(F.filter((e, t) => t % 2 == 0), D(n, r, h + 59, { stroke: _(O.inkPrimary, m * .82) })), e.restore();
807
916
  }
808
- function N(e, t, n, r, i, a, o, s, c, u) {
917
+ function F(e, t, n, r, i, a, o, s, c, u) {
809
918
  let d = l(u);
810
919
  for (let l = 0; l < a; l++) {
811
920
  let f = a === 1 ? 0 : l / (a - 1) * 2 - 1, p = l % 2 == 0 ? 1 : -1, m = n + f * i * .38 - p * i * .22, h = r + (d() - .5) * i * .16;
812
- M(e, t, o, s, {
921
+ P(e, t, o, s, {
813
922
  startX: m,
814
923
  startY: h,
815
924
  endX: n + f * i * .38 + p * i * .26,
@@ -822,7 +931,7 @@ function N(e, t, n, r, i, a, o, s, c, u) {
822
931
  });
823
932
  }
824
933
  }
825
- function P(e, t, n, r, i, a, o, s, c, l, u) {
934
+ function I(e, t, n, r, i, a, o, s, c, l, u) {
826
935
  let f = [], p = Math.cos(o), m = Math.sin(o);
827
936
  for (let e = 0; e < 36; e++) {
828
937
  let t = e / 36 * Math.PI * 2, o = 1 + (d(Math.cos(t) * 1.6, Math.sin(t) * 1.6, u) - .5) * s, c = Math.cos(t) * i * o, l = Math.sin(t) * a * o;
@@ -831,12 +940,12 @@ function P(e, t, n, r, i, a, o, s, c, l, u) {
831
940
  let h = c.colors;
832
941
  e.save(), e.beginPath(), f.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n)), e.closePath(), e.globalAlpha = 1, e.fillStyle = h.energySecondary, e.fill();
833
942
  let g = n + p * i * .32, _ = r + m * i * .32, y = e.createRadialGradient(g, _, i * .08, n, r, Math.max(i, a) * 1.05);
834
- y.addColorStop(0, "#FFFFFF"), y.addColorStop(.38, h.coreGlow), y.addColorStop(.75, h.energySecondary), y.addColorStop(1, v(h.inkPrimary, h.energySecondary, .35)), e.fillStyle = y, e.fill(), e.strokeStyle = h.inkPrimary, e.lineWidth = Math.max(1, 1.5 * l), e.stroke(), t && c.rough.outlineWidth > .2 && t.polygon(f.filter((e, t) => t % 2 == 0), T(c, l, u + 41, {
943
+ y.addColorStop(0, "#FFFFFF"), y.addColorStop(.38, h.coreGlow), y.addColorStop(.75, h.energySecondary), y.addColorStop(1, v(h.inkPrimary, h.energySecondary, .35)), e.fillStyle = y, e.fill(), e.strokeStyle = h.inkPrimary, e.lineWidth = Math.max(1, 1.5 * l), e.stroke(), t && c.rough.outlineWidth > .2 && t.polygon(f.filter((e, t) => t % 2 == 0), D(c, l, u + 41, {
835
944
  fill: void 0,
836
945
  stroke: h.inkPrimary
837
946
  })), e.restore();
838
947
  }
839
- function F(e, t, n, r, i, a, o, s, c, l) {
948
+ function L(e, t, n, r, i, a, o, s, c, l) {
840
949
  let u = Math.cos(a), f = Math.sin(a);
841
950
  e.save(), e.beginPath();
842
951
  for (let a = 0; a <= 36; a++) {
@@ -847,7 +956,7 @@ function F(e, t, n, r, i, a, o, s, c, l) {
847
956
  let p = Math.max(1, Math.max(r, i)), m = e.createRadialGradient(t, n, Math.min(r, i) * .1, t, n, p);
848
957
  m.addColorStop(0, _(o, c * .42)), m.addColorStop(.68, _(s, c * .58)), m.addColorStop(.9, _(s, c * .78)), m.addColorStop(1, _(s, 0)), e.fillStyle = m, e.fill(), e.restore();
849
958
  }
850
- function I(e, t, n, r, i, a, o, s, c, l) {
959
+ function R(e, t, n, r, i, a, o, s, c, l) {
851
960
  if (a <= 1 || o <= 1) return;
852
961
  let u = Math.cos(i), d = Math.sin(i), f = -d, p = u, m = o * .5, h = a * .72, g = [n, r], y = [n + f * m, r + p * m], b = [n - f * m, r - p * m], x = [n + u * h + f * m * .82, r + d * h + p * m * .82], S = [n + u * h - f * m * .82, r + d * h - p * m * .82], C = [n + u * a, r + d * a], w = s.colors;
853
962
  e.save(), e.beginPath(), [
@@ -861,20 +970,20 @@ function I(e, t, n, r, i, a, o, s, c, l) {
861
970
  S,
862
971
  b
863
972
  ].forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n)), e.closePath(), e.fillStyle = v(w.energySecondary, w.inkPrimary, .28), e.fill(), e.beginPath(), e.moveTo(g[0], g[1]), e.lineTo(C[0], C[1]), e.strokeStyle = "#FFFFFF", e.lineWidth = Math.max(.8, 1.2 * c), e.stroke();
864
- let E = [
973
+ let T = [
865
974
  y,
866
975
  x,
867
976
  C,
868
977
  S,
869
978
  b
870
979
  ];
871
- t ? t.polygon(E, T(s, c, l, {
980
+ t ? t.polygon(T, D(s, c, l, {
872
981
  fill: s.rough.fillStyle === "solid" ? void 0 : _(w.inkPrimary, .25),
873
982
  stroke: w.inkPrimary,
874
983
  strokeWidth: Math.max(.9, s.rough.outlineWidth * .85 * c)
875
- })) : (e.beginPath(), E.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n)), e.closePath(), e.strokeStyle = w.inkPrimary, e.lineWidth = Math.max(.9, 1.3 * c), e.stroke()), e.restore();
984
+ })) : (e.beginPath(), T.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n)), e.closePath(), e.strokeStyle = w.inkPrimary, e.lineWidth = Math.max(.9, 1.3 * c), e.stroke()), e.restore();
876
985
  }
877
- function L(e, t, n, r, i, a, o, s, c = 1, u = 1) {
986
+ function z(e, t, n, r, i, a, o, s, c = 1, u = 1) {
878
987
  if (r < 1 || c <= .01) return;
879
988
  let d = l(u);
880
989
  e.save(), e.translate(t, n), e.rotate(i);
@@ -892,10 +1001,10 @@ function L(e, t, n, r, i, a, o, s, c = 1, u = 1) {
892
1001
  }
893
1002
  e.restore();
894
1003
  }
895
- function R(e, t, n, r, i, a, o, s = .92) {
1004
+ function B(e, t, n, r, i, a, o, s = .92) {
896
1005
  e.save(), e.translate(t, n), e.rotate(i), e.scale(1, Math.max(.28, Math.min(1, a))), e.beginPath(), e.moveTo(-r * .5, 0), e.bezierCurveTo(-r * .2, -r * .55, r * .45, -r * .48, r * .6, -r * .12), e.lineTo(r * .42, 0), e.lineTo(r * .6, r * .12), e.bezierCurveTo(r * .45, r * .48, -r * .2, r * .55, -r * .5, 0), e.closePath(), e.fillStyle = _(o, s), e.fill(), e.restore();
897
1006
  }
898
- function z(e, t, n, r, i, a, o, s, c, u = .9, d = 1) {
1007
+ function V(e, t, n, r, i, a, o, s, c, u = .9, d = 1) {
899
1008
  if (r < 8 || u <= .01) return;
900
1009
  let p = l(d);
901
1010
  e.save(), e.translate(t, n), e.rotate(i);
@@ -934,12 +1043,12 @@ function z(e, t, n, r, i, a, o, s, c, u = .9, d = 1) {
934
1043
  e.beginPath(), S.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n));
935
1044
  for (let t = C.length - 1; t >= 0; t--) e.lineTo(C[t][0], C[t][1]);
936
1045
  e.closePath(), e.fillStyle = _(c, u * .95), e.fill(), e.save(), e.clip();
937
- let T = v[Math.floor(v.length * .16)], D = v[Math.floor(v.length * .48)], O = v[Math.floor(v.length * .72)];
938
- T && F(e, T.x, T.y + (p() - .5) * w * .25, w * .55, w * .42, .3, s, s, u * .95, d + 11), D && F(e, D.x, D.y - w * .12, w * .62, w * .45, -.2, s, s, u * .9, d + 23), O && F(e, O.x, O.y, w * .42, w * .35, .1, o, o, u * .85, d + 37), e.restore(), e.beginPath(), S.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n));
1046
+ let T = v[Math.floor(v.length * .16)], E = v[Math.floor(v.length * .48)], D = v[Math.floor(v.length * .72)];
1047
+ T && L(e, T.x, T.y + (p() - .5) * w * .25, w * .55, w * .42, .3, s, s, u * .95, d + 11), E && L(e, E.x, E.y - w * .12, w * .62, w * .45, -.2, s, s, u * .9, d + 23), D && L(e, D.x, D.y, w * .42, w * .35, .1, o, o, u * .85, d + 37), e.restore(), e.beginPath(), S.forEach(([t, n], r) => r === 0 ? e.moveTo(t, n) : e.lineTo(t, n));
939
1048
  for (let t = C.length - 1; t >= 0; t--) e.lineTo(C[t][0], C[t][1]);
940
1049
  e.closePath(), e.strokeStyle = _(o, u * .88), e.lineWidth = Math.max(1.1, r * .018), e.stroke();
941
1050
  let k = v.slice(Math.floor(v.length * .26), Math.floor(v.length * .76));
942
- k.length >= 4 && E(e, {
1051
+ k.length >= 4 && O(e, {
943
1052
  spine: k.map((e, t, n) => ({
944
1053
  ...e,
945
1054
  t: t / Math.max(1, n.length - 1)
@@ -958,7 +1067,7 @@ function z(e, t, n, r, i, a, o, s, c, u = .9, d = 1) {
958
1067
  if (A) for (let t of [-1, 1]) e.beginPath(), e.arc(A.x - r * .03, A.y + t * w * .22, Math.max(1.1, r * .016), 0, Math.PI * 2), e.fillStyle = _(o, u), e.fill(), e.beginPath(), e.moveTo(m * .96, t * w * .1), e.quadraticCurveTo(m * 1.08, t * w * .28, m * 1.02, t * w * .42), e.strokeStyle = _(o, u * .78), e.lineWidth = Math.max(.8, r * .011), e.stroke();
959
1068
  e.restore();
960
1069
  }
961
- function B(e, t, n, r, i, a, o, s, c, u, d, m, h) {
1070
+ function H(e, t, n, r, i, a, o, s, c, u, d, m, h) {
962
1071
  if (s <= .02) return;
963
1072
  let g = l(h), _ = r - t, v = i - n, y = Math.sin(c * .9 + h) * 5, b = Math.cos(c * .75 + h) * 4, x = f({
964
1073
  x: t,
@@ -973,7 +1082,7 @@ function B(e, t, n, r, i, a, o, s, c, u, d, m, h) {
973
1082
  x: r + y,
974
1083
  y: i + b
975
1084
  }, 68, .26, h);
976
- E(e, {
1085
+ O(e, {
977
1086
  spine: x,
978
1087
  maxWidth: o,
979
1088
  bristleCount: 22,
@@ -1001,7 +1110,7 @@ function B(e, t, n, r, i, a, o, s, c, u, d, m, h) {
1001
1110
  x: f,
1002
1111
  y: m
1003
1112
  }, 40, .22, h + 50 + n * 19);
1004
- C.push(g), E(e, {
1113
+ C.push(g), O(e, {
1005
1114
  spine: g,
1006
1115
  maxWidth: o * .52,
1007
1116
  bristleCount: 12,
@@ -1022,12 +1131,12 @@ function B(e, t, n, r, i, a, o, s, c, u, d, m, h) {
1022
1131
  let l = Math.min(1, (s - a * .72) * 2.8);
1023
1132
  if (l <= .05) continue;
1024
1133
  let f = t[Math.min(t.length - 1, Math.floor(a * (t.length - 1)))], p = 1 - a * .55, _ = (g() - .45) * o * 1.1 * p, v = f.x + f.nx * _ + Math.sin(c * 1.3 + i) * 1.5, y = f.y + f.ny * _ + Math.cos(c * 1.1 + i) * 1.5, b = (o * .42 + g() * o * .34) * l;
1025
- L(e, v, y, Math.max(4, b), i * .8 + n + Math.sin(c + i) * .08, d, m, u, .95, h + 200 + n * 50 + i);
1134
+ z(e, v, y, Math.max(4, b), i * .8 + n + Math.sin(c + i) * .08, d, m, u, .95, h + 200 + n * 50 + i);
1026
1135
  }
1027
1136
  });
1028
1137
  }
1029
1138
  // node_modules/.pnpm/roughjs@4.6.6/node_modules/roughjs/bundled/rough.esm.js
1030
- function V(e, t, n) {
1139
+ function U(e, t, n) {
1031
1140
  if (e && e.length) {
1032
1141
  let [r, i] = t, a = Math.PI / 180 * n, o = Math.cos(a), s = Math.sin(a);
1033
1142
  for (let t of e) {
@@ -1036,17 +1145,17 @@ function V(e, t, n) {
1036
1145
  }
1037
1146
  }
1038
1147
  }
1039
- function H(e, t) {
1148
+ function W(e, t) {
1040
1149
  return e[0] === t[0] && e[1] === t[1];
1041
1150
  }
1042
- function U(e, t, n, r = 1) {
1151
+ function G(e, t, n, r = 1) {
1043
1152
  let i = n, a = Math.max(t, .1), o = e[0] && e[0][0] && typeof e[0][0] == "number" ? [e] : e, s = [0, 0];
1044
- if (i) for (let e of o) V(e, s, i);
1153
+ if (i) for (let e of o) U(e, s, i);
1045
1154
  let c = function(e, t, n) {
1046
1155
  let r = [];
1047
1156
  for (let t of e) {
1048
1157
  let e = [...t];
1049
- H(e[0], e[e.length - 1]) || e.push([e[0][0], e[0][1]]), e.length > 2 && r.push(e);
1158
+ W(e[0], e[e.length - 1]) || e.push([e[0][0], e[0][1]]), e.length > 2 && r.push(e);
1050
1159
  }
1051
1160
  let i = [];
1052
1161
  t = Math.max(t, .1);
@@ -1089,21 +1198,21 @@ function U(e, t, n, r = 1) {
1089
1198
  return i;
1090
1199
  }(o, a, r);
1091
1200
  if (i) {
1092
- for (let e of o) V(e, s, -i);
1201
+ for (let e of o) U(e, s, -i);
1093
1202
  (function(e, t, n) {
1094
1203
  let r = [];
1095
- e.forEach(((e) => r.push(...e))), V(r, t, n);
1204
+ e.forEach(((e) => r.push(...e))), U(r, t, n);
1096
1205
  })(c, s, -i);
1097
1206
  }
1098
1207
  return c;
1099
1208
  }
1100
- function W(e, t) {
1209
+ function K(e, t) {
1101
1210
  let n = t.hachureAngle + 90, r = t.hachureGap;
1102
1211
  r < 0 && (r = 4 * t.strokeWidth), r = Math.round(Math.max(r, .1));
1103
1212
  let i = 1;
1104
- return t.roughness >= 1 && (t.randomizer?.next() || Math.random()) > .7 && (i = r), U(e, r, n, i || 1);
1213
+ return t.roughness >= 1 && (t.randomizer?.next() || Math.random()) > .7 && (i = r), G(e, r, n, i || 1);
1105
1214
  }
1106
- var G = class {
1215
+ var q = class {
1107
1216
  constructor(e) {
1108
1217
  this.helper = e;
1109
1218
  }
@@ -1111,7 +1220,7 @@ var G = class {
1111
1220
  return this._fillPolygons(e, t);
1112
1221
  }
1113
1222
  _fillPolygons(e, t) {
1114
- let n = W(e, t);
1223
+ let n = K(e, t);
1115
1224
  return {
1116
1225
  type: "fillSketch",
1117
1226
  ops: this.renderLines(n, t)
@@ -1123,32 +1232,32 @@ var G = class {
1123
1232
  return n;
1124
1233
  }
1125
1234
  };
1126
- function K(e) {
1235
+ function J(e) {
1127
1236
  let t = e[0], n = e[1];
1128
1237
  return Math.sqrt((t[0] - n[0]) ** 2 + (t[1] - n[1]) ** 2);
1129
1238
  }
1130
- var q = class extends G {
1239
+ var Y = class extends q {
1131
1240
  fillPolygons(e, t) {
1132
1241
  let n = t.hachureGap;
1133
1242
  n < 0 && (n = 4 * t.strokeWidth), n = Math.max(n, .1);
1134
- let r = W(e, Object.assign({}, t, { hachureGap: n })), i = Math.PI / 180 * t.hachureAngle, a = [], o = .5 * n * Math.cos(i), s = .5 * n * Math.sin(i);
1135
- for (let [e, t] of r) K([e, t]) && a.push([[e[0] - o, e[1] + s], [...t]], [[e[0] + o, e[1] - s], [...t]]);
1243
+ let r = K(e, Object.assign({}, t, { hachureGap: n })), i = Math.PI / 180 * t.hachureAngle, a = [], o = .5 * n * Math.cos(i), s = .5 * n * Math.sin(i);
1244
+ for (let [e, t] of r) J([e, t]) && a.push([[e[0] - o, e[1] + s], [...t]], [[e[0] + o, e[1] - s], [...t]]);
1136
1245
  return {
1137
1246
  type: "fillSketch",
1138
1247
  ops: this.renderLines(a, t)
1139
1248
  };
1140
1249
  }
1141
- }, J = class extends G {
1250
+ }, ee = class extends q {
1142
1251
  fillPolygons(e, t) {
1143
1252
  let n = this._fillPolygons(e, t), r = Object.assign({}, t, { hachureAngle: t.hachureAngle + 90 }), i = this._fillPolygons(e, r);
1144
1253
  return n.ops = n.ops.concat(i.ops), n;
1145
1254
  }
1146
- }, Y = class {
1255
+ }, te = class {
1147
1256
  constructor(e) {
1148
1257
  this.helper = e;
1149
1258
  }
1150
1259
  fillPolygons(e, t) {
1151
- let n = W(e, t = Object.assign({}, t, { hachureAngle: 0 }));
1260
+ let n = K(e, t = Object.assign({}, t, { hachureAngle: 0 }));
1152
1261
  return this.dotsOnLines(n, t);
1153
1262
  }
1154
1263
  dotsOnLines(e, t) {
@@ -1158,7 +1267,7 @@ var q = class extends G {
1158
1267
  i < 0 && (i = t.strokeWidth / 2);
1159
1268
  let a = r / 4;
1160
1269
  for (let o of e) {
1161
- let e = K(o), s = e / r, c = Math.ceil(s) - 1, l = e - c * r, u = (o[0][0] + o[1][0]) / 2 - r / 4, d = Math.min(o[0][1], o[1][1]);
1270
+ let e = J(o), s = e / r, c = Math.ceil(s) - 1, l = e - c * r, u = (o[0][0] + o[1][0]) / 2 - r / 4, d = Math.min(o[0][1], o[1][1]);
1162
1271
  for (let e = 0; e < c; e++) {
1163
1272
  let o = d + l + e * r, s = u - a + 2 * Math.random() * a, c = o - a + 2 * Math.random() * a, f = this.helper.ellipse(s, c, i, i, t);
1164
1273
  n.push(...f.ops);
@@ -1169,12 +1278,12 @@ var q = class extends G {
1169
1278
  ops: n
1170
1279
  };
1171
1280
  }
1172
- }, ee = class {
1281
+ }, ne = class {
1173
1282
  constructor(e) {
1174
1283
  this.helper = e;
1175
1284
  }
1176
1285
  fillPolygons(e, t) {
1177
- let n = W(e, t);
1286
+ let n = K(e, t);
1178
1287
  return {
1179
1288
  type: "fillSketch",
1180
1289
  ops: this.dashedLine(n, t)
@@ -1183,7 +1292,7 @@ var q = class extends G {
1183
1292
  dashedLine(e, t) {
1184
1293
  let n = t.dashOffset < 0 ? t.hachureGap < 0 ? 4 * t.strokeWidth : t.hachureGap : t.dashOffset, r = t.dashGap < 0 ? t.hachureGap < 0 ? 4 * t.strokeWidth : t.hachureGap : t.dashGap, i = [];
1185
1294
  return e.forEach(((e) => {
1186
- let a = K(e), o = Math.floor(a / (n + r)), s = (a + r - o * (n + r)) / 2, c = e[0], l = e[1];
1295
+ let a = J(e), o = Math.floor(a / (n + r)), s = (a + r - o * (n + r)) / 2, c = e[0], l = e[1];
1187
1296
  c[0] > l[0] && (c = e[1], l = e[0]);
1188
1297
  let u = Math.atan((l[1] - c[1]) / (l[0] - c[0]));
1189
1298
  for (let e = 0; e < o; e++) {
@@ -1192,12 +1301,12 @@ var q = class extends G {
1192
1301
  }
1193
1302
  })), i;
1194
1303
  }
1195
- }, te = class {
1304
+ }, re = class {
1196
1305
  constructor(e) {
1197
1306
  this.helper = e;
1198
1307
  }
1199
1308
  fillPolygons(e, t) {
1200
- let n = t.hachureGap < 0 ? 4 * t.strokeWidth : t.hachureGap, r = t.zigzagOffset < 0 ? n : t.zigzagOffset, i = W(e, t = Object.assign({}, t, { hachureGap: n + r }));
1309
+ let n = t.hachureGap < 0 ? 4 * t.strokeWidth : t.hachureGap, r = t.zigzagOffset < 0 ? n : t.zigzagOffset, i = K(e, t = Object.assign({}, t, { hachureGap: n + r }));
1201
1310
  return {
1202
1311
  type: "fillSketch",
1203
1312
  ops: this.zigzagLines(i, r, t)
@@ -1206,7 +1315,7 @@ var q = class extends G {
1206
1315
  zigzagLines(e, t, n) {
1207
1316
  let r = [];
1208
1317
  return e.forEach(((e) => {
1209
- let i = K(e), a = Math.round(i / (2 * t)), o = e[0], s = e[1];
1318
+ let i = J(e), a = Math.round(i / (2 * t)), o = e[0], s = e[1];
1210
1319
  o[0] > s[0] && (o = e[1], s = e[0]);
1211
1320
  let c = Math.atan((s[1] - o[1]) / (s[0] - o[0]));
1212
1321
  for (let e = 0; e < a; e++) {
@@ -1215,14 +1324,14 @@ var q = class extends G {
1215
1324
  }
1216
1325
  })), r;
1217
1326
  }
1218
- }, X = {}, ne = class {
1327
+ }, X = {}, ie = class {
1219
1328
  constructor(e) {
1220
1329
  this.seed = e;
1221
1330
  }
1222
1331
  next() {
1223
1332
  return this.seed ? (2 ** 31 - 1 & (this.seed = Math.imul(48271, this.seed))) / 2 ** 31 : Math.random();
1224
1333
  }
1225
- }, re = 0, ie = 1, ae = 2, oe = {
1334
+ }, ae = 0, oe = 1, se = 2, ce = {
1226
1335
  A: 7,
1227
1336
  a: 7,
1228
1337
  C: 6,
@@ -1244,42 +1353,42 @@ var q = class extends G {
1244
1353
  Z: 0,
1245
1354
  z: 0
1246
1355
  };
1247
- function se(e, t) {
1356
+ function le(e, t) {
1248
1357
  return e.type === t;
1249
1358
  }
1250
- function ce(e) {
1359
+ function ue(e) {
1251
1360
  let t = [], n = function(e) {
1252
1361
  let t = [];
1253
1362
  for (; e !== "";) if (e.match(/^([ \t\r\n,]+)/)) e = e.substr(RegExp.$1.length);
1254
1363
  else if (e.match(/^([aAcChHlLmMqQsStTvVzZ])/)) t[t.length] = {
1255
- type: re,
1364
+ type: ae,
1256
1365
  text: RegExp.$1
1257
1366
  }, e = e.substr(RegExp.$1.length);
1258
1367
  else {
1259
1368
  if (!e.match(/^(([-+]?[0-9]+(\.[0-9]*)?|[-+]?\.[0-9]+)([eE][-+]?[0-9]+)?)/)) return [];
1260
1369
  t[t.length] = {
1261
- type: ie,
1370
+ type: oe,
1262
1371
  text: `${parseFloat(RegExp.$1)}`
1263
1372
  }, e = e.substr(RegExp.$1.length);
1264
1373
  }
1265
1374
  return t[t.length] = {
1266
- type: ae,
1375
+ type: se,
1267
1376
  text: ""
1268
1377
  }, t;
1269
1378
  }(e), r = "BOD", i = 0, a = n[i];
1270
- for (; !se(a, ae);) {
1379
+ for (; !le(a, se);) {
1271
1380
  let o = 0, s = [];
1272
1381
  if (r === "BOD") {
1273
- if (a.text !== "M" && a.text !== "m") return ce("M0,0" + e);
1274
- i++, o = oe[a.text], r = a.text;
1275
- } else se(a, ie) ? o = oe[r] : (i++, o = oe[a.text], r = a.text);
1382
+ if (a.text !== "M" && a.text !== "m") return ue("M0,0" + e);
1383
+ i++, o = ce[a.text], r = a.text;
1384
+ } else le(a, oe) ? o = ce[r] : (i++, o = ce[a.text], r = a.text);
1276
1385
  if (!(i + o < n.length)) throw Error("Path data ended short");
1277
1386
  for (let e = i; e < i + o; e++) {
1278
1387
  let t = n[e];
1279
- if (!se(t, ie)) throw Error("Param not a number: " + r + "," + t.text);
1388
+ if (!le(t, oe)) throw Error("Param not a number: " + r + "," + t.text);
1280
1389
  s[s.length] = +t.text;
1281
1390
  }
1282
- if (typeof oe[r] != "number") throw Error("Bad segment: " + r);
1391
+ if (typeof ce[r] != "number") throw Error("Bad segment: " + r);
1283
1392
  {
1284
1393
  let e = {
1285
1394
  key: r,
@@ -1290,7 +1399,7 @@ function ce(e) {
1290
1399
  }
1291
1400
  return t;
1292
1401
  }
1293
- function le(e) {
1402
+ function de(e) {
1294
1403
  let t = 0, n = 0, r = 0, i = 0, a = [];
1295
1404
  for (let { key: o, data: s } of e) switch (o) {
1296
1405
  case "M":
@@ -1423,7 +1532,7 @@ function le(e) {
1423
1532
  }
1424
1533
  return a;
1425
1534
  }
1426
- function ue(e) {
1535
+ function fe(e) {
1427
1536
  let t = [], n = "", r = 0, i = 0, a = 0, o = 0, s = 0, c = 0;
1428
1537
  for (let { key: l, data: u } of e) {
1429
1538
  switch (l) {
@@ -1513,7 +1622,7 @@ function ue(e) {
1513
1622
  c,
1514
1623
  l
1515
1624
  ]
1516
- }), r = c, i = l) : (r !== c || i !== l) && (fe(r, i, c, l, e, n, a, o, s).forEach((function(e) {
1625
+ }), r = c, i = l) : (r !== c || i !== l) && (me(r, i, c, l, e, n, a, o, s).forEach((function(e) {
1517
1626
  t.push({
1518
1627
  key: "C",
1519
1628
  data: e
@@ -1530,16 +1639,16 @@ function ue(e) {
1530
1639
  }
1531
1640
  return t;
1532
1641
  }
1533
- function de(e, t, n) {
1642
+ function pe(e, t, n) {
1534
1643
  return [e * Math.cos(n) - t * Math.sin(n), e * Math.sin(n) + t * Math.cos(n)];
1535
1644
  }
1536
- function fe(e, t, n, r, i, a, o, s, c, l) {
1645
+ function me(e, t, n, r, i, a, o, s, c, l) {
1537
1646
  let u = (d = o, Math.PI * d / 180);
1538
1647
  var d;
1539
1648
  let f = [], p = 0, m = 0, h = 0, g = 0;
1540
1649
  if (l) [p, m, h, g] = l;
1541
1650
  else {
1542
- [e, t] = de(e, t, -u), [n, r] = de(n, r, -u);
1651
+ [e, t] = pe(e, t, -u), [n, r] = pe(n, r, -u);
1543
1652
  let o = (e - n) / 2, l = (t - r) / 2, d = o * o / (i * i) + l * l / (a * a);
1544
1653
  d > 1 && (d = Math.sqrt(d), i *= d, a *= d);
1545
1654
  let f = i * i, _ = a * a, v = f * _ - f * l * l - _ * o * o, y = f * l * l + _ * o * o, b = (s === c ? -1 : 1) * Math.sqrt(Math.abs(v / y));
@@ -1548,7 +1657,7 @@ function fe(e, t, n, r, i, a, o, s, c, l) {
1548
1657
  let _ = m - p;
1549
1658
  if (Math.abs(_) > 120 * Math.PI / 180) {
1550
1659
  let e = m, t = n, s = r;
1551
- m = c && m > p ? p + 120 * Math.PI / 180 * 1 : p + 120 * Math.PI / 180 * -1, f = fe(n = h + i * Math.cos(m), r = g + a * Math.sin(m), t, s, i, a, o, 0, c, [
1660
+ m = c && m > p ? p + 120 * Math.PI / 180 * 1 : p + 120 * Math.PI / 180 * -1, f = me(n = h + i * Math.cos(m), r = g + a * Math.sin(m), t, s, i, a, o, 0, c, [
1552
1661
  m,
1553
1662
  e,
1554
1663
  h,
@@ -1570,7 +1679,7 @@ function fe(e, t, n, r, i, a, o, s, c, l) {
1570
1679
  ].concat(f);
1571
1680
  let e = [];
1572
1681
  for (let t = 0; t < f.length; t += 3) {
1573
- let n = de(f[t][0], f[t][1], u), r = de(f[t + 1][0], f[t + 1][1], u), i = de(f[t + 2][0], f[t + 2][1], u);
1682
+ let n = pe(f[t][0], f[t][1], u), r = pe(f[t + 1][0], f[t + 1][1], u), i = pe(f[t + 2][0], f[t + 2][1], u);
1574
1683
  e.push([
1575
1684
  n[0],
1576
1685
  n[1],
@@ -1583,27 +1692,27 @@ function fe(e, t, n, r, i, a, o, s, c, l) {
1583
1692
  return e;
1584
1693
  }
1585
1694
  }
1586
- var pe = {
1695
+ var he = {
1587
1696
  randOffset: function(e, t) {
1588
1697
  return Z(e, t);
1589
1698
  },
1590
1699
  randOffsetWithRange: function(e, t, n) {
1591
- return Ee(e, t, n);
1700
+ return Oe(e, t, n);
1592
1701
  },
1593
1702
  ellipse: function(e, t, n, r, i) {
1594
- return ye(e, t, i, ve(n, r, i)).opset;
1703
+ return xe(e, t, i, be(n, r, i)).opset;
1595
1704
  },
1596
1705
  doubleLineOps: function(e, t, n, r, i) {
1597
1706
  return Q(e, t, n, r, i, !0);
1598
1707
  }
1599
1708
  };
1600
- function me(e, t, n, r, i) {
1709
+ function ge(e, t, n, r, i) {
1601
1710
  return {
1602
1711
  type: "path",
1603
1712
  ops: Q(e, t, n, r, i)
1604
1713
  };
1605
1714
  }
1606
- function he(e, t, n) {
1715
+ function _e(e, t, n) {
1607
1716
  let r = (e || []).length;
1608
1717
  if (r > 2) {
1609
1718
  let i = [];
@@ -1613,14 +1722,14 @@ function he(e, t, n) {
1613
1722
  ops: i
1614
1723
  };
1615
1724
  }
1616
- return r === 2 ? me(e[0][0], e[0][1], e[1][0], e[1][1], n) : {
1725
+ return r === 2 ? ge(e[0][0], e[0][1], e[1][0], e[1][1], n) : {
1617
1726
  type: "path",
1618
1727
  ops: []
1619
1728
  };
1620
1729
  }
1621
- function ge(e, t, n, r, i) {
1730
+ function ve(e, t, n, r, i) {
1622
1731
  return function(e, t) {
1623
- return he(e, !0, t);
1732
+ return _e(e, !0, t);
1624
1733
  }([
1625
1734
  [e, t],
1626
1735
  [e + n, t],
@@ -1628,13 +1737,13 @@ function ge(e, t, n, r, i) {
1628
1737
  [e, t + r]
1629
1738
  ], i);
1630
1739
  }
1631
- function _e(e, t) {
1740
+ function ye(e, t) {
1632
1741
  if (e.length) {
1633
- let n = typeof e[0][0] == "number" ? [e] : e, r = Oe(n[0], 1 * (1 + .2 * t.roughness), t), i = t.disableMultiStroke ? [] : Oe(n[0], 1.5 * (1 + .22 * t.roughness), we(t));
1742
+ let n = typeof e[0][0] == "number" ? [e] : e, r = Ae(n[0], 1 * (1 + .2 * t.roughness), t), i = t.disableMultiStroke ? [] : Ae(n[0], 1.5 * (1 + .22 * t.roughness), Ee(t));
1634
1743
  for (let e = 1; e < n.length; e++) {
1635
1744
  let a = n[e];
1636
1745
  if (a.length) {
1637
- let e = Oe(a, 1 * (1 + .2 * t.roughness), t), n = t.disableMultiStroke ? [] : Oe(a, 1.5 * (1 + .22 * t.roughness), we(t));
1746
+ let e = Ae(a, 1 * (1 + .2 * t.roughness), t), n = t.disableMultiStroke ? [] : Ae(a, 1.5 * (1 + .22 * t.roughness), Ee(t));
1638
1747
  for (let t of e) t.op !== "move" && r.push(t);
1639
1748
  for (let e of n) e.op !== "move" && i.push(e);
1640
1749
  }
@@ -1649,7 +1758,7 @@ function _e(e, t) {
1649
1758
  ops: []
1650
1759
  };
1651
1760
  }
1652
- function ve(e, t, n) {
1761
+ function be(e, t, n) {
1653
1762
  let r = Math.sqrt(2 * Math.PI * Math.sqrt(((e / 2) ** 2 + (t / 2) ** 2) / 2)), i = Math.ceil(Math.max(n.curveStepCount, n.curveStepCount / Math.sqrt(200) * r)), a = 2 * Math.PI / i, o = Math.abs(e / 2), s = Math.abs(t / 2), c = 1 - n.curveFitting;
1654
1763
  return o += Z(o * c, n), s += Z(s * c, n), {
1655
1764
  increment: a,
@@ -1657,10 +1766,10 @@ function ve(e, t, n) {
1657
1766
  ry: s
1658
1767
  };
1659
1768
  }
1660
- function ye(e, t, n, r) {
1661
- let [i, a] = Ae(r.increment, e, t, r.rx, r.ry, 1, r.increment * Ee(.1, Ee(.4, 1, n), n), n), o = ke(i, null, n);
1769
+ function xe(e, t, n, r) {
1770
+ let [i, a] = Me(r.increment, e, t, r.rx, r.ry, 1, r.increment * Oe(.1, Oe(.4, 1, n), n), n), o = je(i, null, n);
1662
1771
  if (!n.disableMultiStroke && n.roughness !== 0) {
1663
- let [i] = Ae(r.increment, e, t, r.rx, r.ry, 1.5, 0, n), a = ke(i, null, n);
1772
+ let [i] = Me(r.increment, e, t, r.rx, r.ry, 1.5, 0, n), a = je(i, null, n);
1664
1773
  o = o.concat(a);
1665
1774
  }
1666
1775
  return {
@@ -1671,15 +1780,15 @@ function ye(e, t, n, r) {
1671
1780
  }
1672
1781
  };
1673
1782
  }
1674
- function be(e, t, n, r, i, a, o, s, c) {
1783
+ function Se(e, t, n, r, i, a, o, s, c) {
1675
1784
  let l = e, u = t, d = Math.abs(n / 2), f = Math.abs(r / 2);
1676
1785
  d += Z(.01 * d, c), f += Z(.01 * f, c);
1677
1786
  let p = i, m = a;
1678
1787
  for (; p < 0;) p += 2 * Math.PI, m += 2 * Math.PI;
1679
1788
  m - p > 2 * Math.PI && (p = 0, m = 2 * Math.PI);
1680
- let h = 2 * Math.PI / c.curveStepCount, g = Math.min(h / 2, (m - p) / 2), _ = je(g, l, u, d, f, p, m, 1, c);
1789
+ let h = 2 * Math.PI / c.curveStepCount, g = Math.min(h / 2, (m - p) / 2), _ = Ne(g, l, u, d, f, p, m, 1, c);
1681
1790
  if (!c.disableMultiStroke) {
1682
- let e = je(g, l, u, d, f, p, m, 1.5, c);
1791
+ let e = Ne(g, l, u, d, f, p, m, 1.5, c);
1683
1792
  _.push(...e);
1684
1793
  }
1685
1794
  return o && (s ? _.push(...Q(l, u, l + d * Math.cos(p), u + f * Math.sin(p), c), ...Q(l, u, l + d * Math.cos(m), u + f * Math.sin(m), c)) : _.push({
@@ -1693,8 +1802,8 @@ function be(e, t, n, r, i, a, o, s, c) {
1693
1802
  ops: _
1694
1803
  };
1695
1804
  }
1696
- function xe(e, t) {
1697
- let n = ue(le(ce(e))), r = [], i = [0, 0], a = [0, 0];
1805
+ function Ce(e, t) {
1806
+ let n = fe(de(ue(e))), r = [], i = [0, 0], a = [0, 0];
1698
1807
  for (let { key: e, data: o } of n) switch (e) {
1699
1808
  case "M":
1700
1809
  a = [o[0], o[1]], i = [o[0], o[1]];
@@ -1704,7 +1813,7 @@ function xe(e, t) {
1704
1813
  break;
1705
1814
  case "C": {
1706
1815
  let [e, n, i, s, c, l] = o;
1707
- r.push(...Me(e, n, i, s, c, l, a, t)), a = [c, l];
1816
+ r.push(...Pe(e, n, i, s, c, l, a, t)), a = [c, l];
1708
1817
  break;
1709
1818
  }
1710
1819
  case "Z": r.push(...Q(a[0], a[1], i[0], i[1], t)), a = [i[0], i[1]];
@@ -1714,7 +1823,7 @@ function xe(e, t) {
1714
1823
  ops: r
1715
1824
  };
1716
1825
  }
1717
- function Se(e, t) {
1826
+ function we(e, t) {
1718
1827
  let n = [];
1719
1828
  for (let r of e) if (r.length) {
1720
1829
  let e = t.maxRandomnessOffset || 0, i = r.length;
@@ -1734,55 +1843,55 @@ function Se(e, t) {
1734
1843
  ops: n
1735
1844
  };
1736
1845
  }
1737
- function Ce(e, t) {
1846
+ function Te(e, t) {
1738
1847
  return function(e, t) {
1739
1848
  let n = e.fillStyle || "hachure";
1740
1849
  if (!X[n]) switch (n) {
1741
1850
  case "zigzag":
1742
- X[n] || (X[n] = new q(t));
1851
+ X[n] || (X[n] = new Y(t));
1743
1852
  break;
1744
1853
  case "cross-hatch":
1745
- X[n] || (X[n] = new J(t));
1854
+ X[n] || (X[n] = new ee(t));
1746
1855
  break;
1747
1856
  case "dots":
1748
- X[n] || (X[n] = new Y(t));
1857
+ X[n] || (X[n] = new te(t));
1749
1858
  break;
1750
1859
  case "dashed":
1751
- X[n] || (X[n] = new ee(t));
1860
+ X[n] || (X[n] = new ne(t));
1752
1861
  break;
1753
1862
  case "zigzag-line":
1754
- X[n] || (X[n] = new te(t));
1863
+ X[n] || (X[n] = new re(t));
1755
1864
  break;
1756
- default: n = "hachure", X[n] || (X[n] = new G(t));
1865
+ default: n = "hachure", X[n] || (X[n] = new q(t));
1757
1866
  }
1758
1867
  return X[n];
1759
- }(t, pe).fillPolygons(e, t);
1868
+ }(t, he).fillPolygons(e, t);
1760
1869
  }
1761
- function we(e) {
1870
+ function Ee(e) {
1762
1871
  let t = Object.assign({}, e);
1763
1872
  return t.randomizer = void 0, e.seed && (t.seed = e.seed + 1), t;
1764
1873
  }
1765
- function Te(e) {
1766
- return e.randomizer ||= new ne(e.seed || 0), e.randomizer.next();
1874
+ function De(e) {
1875
+ return e.randomizer ||= new ie(e.seed || 0), e.randomizer.next();
1767
1876
  }
1768
- function Ee(e, t, n, r = 1) {
1769
- return n.roughness * r * (Te(n) * (t - e) + e);
1877
+ function Oe(e, t, n, r = 1) {
1878
+ return n.roughness * r * (De(n) * (t - e) + e);
1770
1879
  }
1771
1880
  function Z(e, t, n = 1) {
1772
- return Ee(-e, e, t, n);
1881
+ return Oe(-e, e, t, n);
1773
1882
  }
1774
1883
  function Q(e, t, n, r, i, a = !1) {
1775
- let o = a ? i.disableMultiStrokeFill : i.disableMultiStroke, s = De(e, t, n, r, i, !0, !1);
1884
+ let o = a ? i.disableMultiStrokeFill : i.disableMultiStroke, s = ke(e, t, n, r, i, !0, !1);
1776
1885
  if (o) return s;
1777
- let c = De(e, t, n, r, i, !0, !0);
1886
+ let c = ke(e, t, n, r, i, !0, !0);
1778
1887
  return s.concat(c);
1779
1888
  }
1780
- function De(e, t, n, r, i, a, o) {
1889
+ function ke(e, t, n, r, i, a, o) {
1781
1890
  let s = (e - n) ** 2 + (t - r) ** 2, c = Math.sqrt(s), l = 1;
1782
1891
  l = c < 200 ? 1 : c > 500 ? .4 : -.0016668 * c + 1.233334;
1783
1892
  let u = i.maxRandomnessOffset || 0;
1784
1893
  u * u * 100 > s && (u = c / 10);
1785
- let d = u / 2, f = .2 + .2 * Te(i), p = i.bowing * i.maxRandomnessOffset * (r - t) / 200, m = i.bowing * i.maxRandomnessOffset * (e - n) / 200;
1894
+ let d = u / 2, f = .2 + .2 * De(i), p = i.bowing * i.maxRandomnessOffset * (r - t) / 200, m = i.bowing * i.maxRandomnessOffset * (e - n) / 200;
1786
1895
  p = Z(p, i, l), m = Z(m, i, l);
1787
1896
  let h = [], g = () => Z(d, i, l), _ = () => Z(u, i, l), v = i.preserveVertices;
1788
1897
  return a && (o ? h.push({
@@ -1813,14 +1922,14 @@ function De(e, t, n, r, i, a, o) {
1813
1922
  ]
1814
1923
  }), h;
1815
1924
  }
1816
- function Oe(e, t, n) {
1925
+ function Ae(e, t, n) {
1817
1926
  if (!e.length) return [];
1818
1927
  let r = [];
1819
1928
  r.push([e[0][0] + Z(t, n), e[0][1] + Z(t, n)]), r.push([e[0][0] + Z(t, n), e[0][1] + Z(t, n)]);
1820
1929
  for (let i = 1; i < e.length; i++) r.push([e[i][0] + Z(t, n), e[i][1] + Z(t, n)]), i === e.length - 1 && r.push([e[i][0] + Z(t, n), e[i][1] + Z(t, n)]);
1821
- return ke(r, null, n);
1930
+ return je(r, null, n);
1822
1931
  }
1823
- function ke(e, t, n) {
1932
+ function je(e, t, n) {
1824
1933
  let r = e.length, i = [];
1825
1934
  if (r > 3) {
1826
1935
  let a = [], o = 1 - n.curveTightness;
@@ -1862,10 +1971,10 @@ function ke(e, t, n) {
1862
1971
  e[2][0],
1863
1972
  e[2][1]
1864
1973
  ]
1865
- })) : r === 2 && i.push(...De(e[0][0], e[0][1], e[1][0], e[1][1], n, !0, !0));
1974
+ })) : r === 2 && i.push(...ke(e[0][0], e[0][1], e[1][0], e[1][1], n, !0, !0));
1866
1975
  return i;
1867
1976
  }
1868
- function Ae(e, t, n, r, i, a, o, s) {
1977
+ function Me(e, t, n, r, i, a, o, s) {
1869
1978
  let c = [], l = [];
1870
1979
  if (s.roughness === 0) {
1871
1980
  e /= 4, l.push([t + r * Math.cos(-e), n + i * Math.sin(-e)]);
@@ -1886,13 +1995,13 @@ function Ae(e, t, n, r, i, a, o, s) {
1886
1995
  }
1887
1996
  return [l, c];
1888
1997
  }
1889
- function je(e, t, n, r, i, a, o, s, c) {
1998
+ function Ne(e, t, n, r, i, a, o, s, c) {
1890
1999
  let l = a + Z(.1, c), u = [];
1891
2000
  u.push([Z(s, c) + t + .9 * r * Math.cos(l - e), Z(s, c) + n + .9 * i * Math.sin(l - e)]);
1892
2001
  for (let a = l; a <= o; a += e) u.push([Z(s, c) + t + r * Math.cos(a), Z(s, c) + n + i * Math.sin(a)]);
1893
- return u.push([t + r * Math.cos(o), n + i * Math.sin(o)]), u.push([t + r * Math.cos(o), n + i * Math.sin(o)]), ke(u, null, c);
2002
+ return u.push([t + r * Math.cos(o), n + i * Math.sin(o)]), u.push([t + r * Math.cos(o), n + i * Math.sin(o)]), je(u, null, c);
1894
2003
  }
1895
- function Me(e, t, n, r, i, a, o, s) {
2004
+ function Pe(e, t, n, r, i, a, o, s) {
1896
2005
  let c = [], l = [s.maxRandomnessOffset || 1, (s.maxRandomnessOffset || 1) + .3], u = [0, 0], d = s.disableMultiStroke ? 1 : 2, f = s.preserveVertices;
1897
2006
  for (let p = 0; p < d; p++) p === 0 ? c.push({
1898
2007
  op: "move",
@@ -1913,20 +2022,20 @@ function Me(e, t, n, r, i, a, o, s) {
1913
2022
  });
1914
2023
  return c;
1915
2024
  }
1916
- function Ne(e) {
2025
+ function Fe(e) {
1917
2026
  return [...e];
1918
2027
  }
1919
- function Pe(e, t = 0) {
2028
+ function Ie(e, t = 0) {
1920
2029
  let n = e.length;
1921
2030
  if (n < 3) throw Error("A curve must have at least three points.");
1922
2031
  let r = [];
1923
- if (n === 3) r.push(Ne(e[0]), Ne(e[1]), Ne(e[2]), Ne(e[2]));
2032
+ if (n === 3) r.push(Fe(e[0]), Fe(e[1]), Fe(e[2]), Fe(e[2]));
1924
2033
  else {
1925
2034
  let n = [];
1926
2035
  n.push(e[0], e[0]);
1927
2036
  for (let t = 1; t < e.length; t++) n.push(e[t]), t === e.length - 1 && n.push(e[t]);
1928
2037
  let i = [], a = 1 - t;
1929
- r.push(Ne(n[0]));
2038
+ r.push(Fe(n[0]));
1930
2039
  for (let e = 1; e + 2 < n.length; e++) {
1931
2040
  let t = n[e];
1932
2041
  i[0] = [t[0], t[1]], i[1] = [t[0] + (a * n[e + 1][0] - a * n[e - 1][0]) / 6, t[1] + (a * n[e + 1][1] - a * n[e - 1][1]) / 6], i[2] = [n[e + 1][0] + (a * n[e][0] - a * n[e + 2][0]) / 6, n[e + 1][1] + (a * n[e][1] - a * n[e + 2][1]) / 6], i[3] = [n[e + 1][0], n[e + 1][1]], r.push(i[1], i[2], i[3]);
@@ -1934,19 +2043,19 @@ function Pe(e, t = 0) {
1934
2043
  }
1935
2044
  return r;
1936
2045
  }
1937
- function Fe(e, t) {
2046
+ function Le(e, t) {
1938
2047
  return (e[0] - t[0]) ** 2 + (e[1] - t[1]) ** 2;
1939
2048
  }
1940
- function Ie(e, t, n) {
1941
- let r = Fe(t, n);
1942
- if (r === 0) return Fe(e, t);
2049
+ function Re(e, t, n) {
2050
+ let r = Le(t, n);
2051
+ if (r === 0) return Le(e, t);
1943
2052
  let i = ((e[0] - t[0]) * (n[0] - t[0]) + (e[1] - t[1]) * (n[1] - t[1])) / r;
1944
- return i = Math.max(0, Math.min(1, i)), Fe(e, Le(t, n, i));
2053
+ return i = Math.max(0, Math.min(1, i)), Le(e, ze(t, n, i));
1945
2054
  }
1946
- function Le(e, t, n) {
2055
+ function ze(e, t, n) {
1947
2056
  return [e[0] + (t[0] - e[0]) * n, e[1] + (t[1] - e[1]) * n];
1948
2057
  }
1949
- function Re(e, t, n, r) {
2058
+ function Be(e, t, n, r) {
1950
2059
  let i = r || [];
1951
2060
  if (function(e, t) {
1952
2061
  let n = e[t + 0], r = e[t + 1], i = e[t + 2], a = e[t + 3], o = 3 * r[0] - 2 * n[0] - a[0];
@@ -1959,15 +2068,15 @@ function Re(e, t, n, r) {
1959
2068
  return l *= l, o < c && (o = c), s < l && (s = l), o + s;
1960
2069
  }(e, t) < n) {
1961
2070
  let n = e[t + 0];
1962
- i.length ? (a = i[i.length - 1], o = n, Math.sqrt(Fe(a, o)) > 1 && i.push(n)) : i.push(n), i.push(e[t + 3]);
2071
+ i.length ? (a = i[i.length - 1], o = n, Math.sqrt(Le(a, o)) > 1 && i.push(n)) : i.push(n), i.push(e[t + 3]);
1963
2072
  } else {
1964
- let r = .5, a = e[t + 0], o = e[t + 1], s = e[t + 2], c = e[t + 3], l = Le(a, o, r), u = Le(o, s, r), d = Le(s, c, r), f = Le(l, u, r), p = Le(u, d, r), m = Le(f, p, r);
1965
- Re([
2073
+ let r = .5, a = e[t + 0], o = e[t + 1], s = e[t + 2], c = e[t + 3], l = ze(a, o, r), u = ze(o, s, r), d = ze(s, c, r), f = ze(l, u, r), p = ze(u, d, r), m = ze(f, p, r);
2074
+ Be([
1966
2075
  a,
1967
2076
  l,
1968
2077
  f,
1969
2078
  m
1970
- ], 0, n, i), Re([
2079
+ ], 0, n, i), Be([
1971
2080
  m,
1972
2081
  p,
1973
2082
  d,
@@ -1977,23 +2086,23 @@ function Re(e, t, n, r) {
1977
2086
  var a, o;
1978
2087
  return i;
1979
2088
  }
1980
- function ze(e, t) {
1981
- return Be(e, 0, e.length, t);
2089
+ function Ve(e, t) {
2090
+ return He(e, 0, e.length, t);
1982
2091
  }
1983
- function Be(e, t, n, r, i) {
2092
+ function He(e, t, n, r, i) {
1984
2093
  let a = i || [], o = e[t], s = e[n - 1], c = 0, l = 1;
1985
2094
  for (let r = t + 1; r < n - 1; ++r) {
1986
- let t = Ie(e[r], o, s);
2095
+ let t = Re(e[r], o, s);
1987
2096
  t > c && (c = t, l = r);
1988
2097
  }
1989
- return Math.sqrt(c) > r ? (Be(e, t, l + 1, r, a), Be(e, l, n, r, a)) : (a.length || a.push(o), a.push(s)), a;
2098
+ return Math.sqrt(c) > r ? (He(e, t, l + 1, r, a), He(e, l, n, r, a)) : (a.length || a.push(o), a.push(s)), a;
1990
2099
  }
1991
- function Ve(e, t = .15, n) {
2100
+ function Ue(e, t = .15, n) {
1992
2101
  let r = [], i = (e.length - 1) / 3;
1993
- for (let n = 0; n < i; n++) Re(e, 3 * n, t, r);
1994
- return n && n > 0 ? Be(r, 0, r.length, n) : r;
2102
+ for (let n = 0; n < i; n++) Be(e, 3 * n, t, r);
2103
+ return n && n > 0 ? He(r, 0, r.length, n) : r;
1995
2104
  }
1996
- var $ = "none", He = class {
2105
+ var $ = "none", We = class {
1997
2106
  constructor(e) {
1998
2107
  this.defaultOptions = {
1999
2108
  maxRandomnessOffset: 2,
@@ -2033,10 +2142,10 @@ var $ = "none", He = class {
2033
2142
  }
2034
2143
  line(e, t, n, r, i) {
2035
2144
  let a = this._o(i);
2036
- return this._d("line", [me(e, t, n, r, a)], a);
2145
+ return this._d("line", [ge(e, t, n, r, a)], a);
2037
2146
  }
2038
2147
  rectangle(e, t, n, r, i) {
2039
- let a = this._o(i), o = [], s = ge(e, t, n, r, a);
2148
+ let a = this._o(i), o = [], s = ve(e, t, n, r, a);
2040
2149
  if (a.fill) {
2041
2150
  let i = [
2042
2151
  [e, t],
@@ -2044,17 +2153,17 @@ var $ = "none", He = class {
2044
2153
  [e + n, t + r],
2045
2154
  [e, t + r]
2046
2155
  ];
2047
- a.fillStyle === "solid" ? o.push(Se([i], a)) : o.push(Ce([i], a));
2156
+ a.fillStyle === "solid" ? o.push(we([i], a)) : o.push(Te([i], a));
2048
2157
  }
2049
2158
  return a.stroke !== $ && o.push(s), this._d("rectangle", o, a);
2050
2159
  }
2051
2160
  ellipse(e, t, n, r, i) {
2052
- let a = this._o(i), o = [], s = ve(n, r, a), c = ye(e, t, a, s);
2161
+ let a = this._o(i), o = [], s = be(n, r, a), c = xe(e, t, a, s);
2053
2162
  if (a.fill) {
2054
2163
  if (a.fillStyle === "solid") {
2055
- let n = ye(e, t, a, s).opset;
2164
+ let n = xe(e, t, a, s).opset;
2056
2165
  n.type = "fillPath", o.push(n);
2057
- } else o.push(Ce([c.estimatedPoints], a));
2166
+ } else o.push(Te([c.estimatedPoints], a));
2058
2167
  }
2059
2168
  return a.stroke !== $ && o.push(c.opset), this._d("ellipse", o, a);
2060
2169
  }
@@ -2064,15 +2173,15 @@ var $ = "none", He = class {
2064
2173
  }
2065
2174
  linearPath(e, t) {
2066
2175
  let n = this._o(t);
2067
- return this._d("linearPath", [he(e, !1, n)], n);
2176
+ return this._d("linearPath", [_e(e, !1, n)], n);
2068
2177
  }
2069
2178
  arc(e, t, n, r, i, a, o = !1, s) {
2070
- let c = this._o(s), l = [], u = be(e, t, n, r, i, a, o, !0, c);
2179
+ let c = this._o(s), l = [], u = Se(e, t, n, r, i, a, o, !0, c);
2071
2180
  if (o && c.fill) {
2072
2181
  if (c.fillStyle === "solid") {
2073
2182
  let o = Object.assign({}, c);
2074
2183
  o.disableMultiStroke = !0;
2075
- let s = be(e, t, n, r, i, a, !0, !1, o);
2184
+ let s = Se(e, t, n, r, i, a, !0, !1, o);
2076
2185
  s.type = "fillPath", l.push(s);
2077
2186
  } else l.push(function(e, t, n, r, i, a, o) {
2078
2187
  let s = e, c = t, l = Math.abs(n / 2), u = Math.abs(r / 2);
@@ -2082,16 +2191,16 @@ var $ = "none", He = class {
2082
2191
  f - d > 2 * Math.PI && (d = 0, f = 2 * Math.PI);
2083
2192
  let p = (f - d) / o.curveStepCount, m = [];
2084
2193
  for (let e = d; e <= f; e += p) m.push([s + l * Math.cos(e), c + u * Math.sin(e)]);
2085
- return m.push([s + l * Math.cos(f), c + u * Math.sin(f)]), m.push([s, c]), Ce([m], o);
2194
+ return m.push([s + l * Math.cos(f), c + u * Math.sin(f)]), m.push([s, c]), Te([m], o);
2086
2195
  }(e, t, n, r, i, a, c));
2087
2196
  }
2088
2197
  return c.stroke !== $ && l.push(u), this._d("arc", l, c);
2089
2198
  }
2090
2199
  curve(e, t) {
2091
- let n = this._o(t), r = [], i = _e(e, n);
2200
+ let n = this._o(t), r = [], i = ye(e, n);
2092
2201
  if (n.fill && n.fill !== $) {
2093
2202
  if (n.fillStyle === "solid") {
2094
- let t = _e(e, Object.assign(Object.assign({}, n), {
2203
+ let t = ye(e, Object.assign(Object.assign({}, n), {
2095
2204
  disableMultiStroke: !0,
2096
2205
  roughness: n.roughness ? n.roughness + n.fillShapeRoughnessGain : 0
2097
2206
  }));
@@ -2103,29 +2212,29 @@ var $ = "none", He = class {
2103
2212
  let t = [], i = e;
2104
2213
  if (i.length) {
2105
2214
  let e = typeof i[0][0] == "number" ? [i] : i;
2106
- for (let r of e) r.length < 3 ? t.push(...r) : r.length === 3 ? t.push(...Ve(Pe([
2215
+ for (let r of e) r.length < 3 ? t.push(...r) : r.length === 3 ? t.push(...Ue(Ie([
2107
2216
  r[0],
2108
2217
  r[0],
2109
2218
  r[1],
2110
2219
  r[2]
2111
- ]), 10, (1 + n.roughness) / 2)) : t.push(...Ve(Pe(r), 10, (1 + n.roughness) / 2));
2220
+ ]), 10, (1 + n.roughness) / 2)) : t.push(...Ue(Ie(r), 10, (1 + n.roughness) / 2));
2112
2221
  }
2113
- t.length && r.push(Ce([t], n));
2222
+ t.length && r.push(Te([t], n));
2114
2223
  }
2115
2224
  }
2116
2225
  return n.stroke !== $ && r.push(i), this._d("curve", r, n);
2117
2226
  }
2118
2227
  polygon(e, t) {
2119
- let n = this._o(t), r = [], i = he(e, !0, n);
2120
- return n.fill && (n.fillStyle === "solid" ? r.push(Se([e], n)) : r.push(Ce([e], n))), n.stroke !== $ && r.push(i), this._d("polygon", r, n);
2228
+ let n = this._o(t), r = [], i = _e(e, !0, n);
2229
+ return n.fill && (n.fillStyle === "solid" ? r.push(we([e], n)) : r.push(Te([e], n))), n.stroke !== $ && r.push(i), this._d("polygon", r, n);
2121
2230
  }
2122
2231
  path(e, t) {
2123
2232
  let n = this._o(t), r = [];
2124
2233
  if (!e) return this._d("path", r, n);
2125
2234
  e = (e || "").replace(/\n/g, " ").replace(/(-\s)/g, "-").replace("/(ss)/g", " ");
2126
2235
  let i = n.fill && n.fill !== "transparent" && n.fill !== $, a = n.stroke !== $, o = !!(n.simplification && n.simplification < 1), s = function(e, t, n) {
2127
- let r = ue(le(ce(e))), i = [], a = [], o = [0, 0], s = [], c = () => {
2128
- s.length >= 4 && a.push(...Ve(s, t)), s = [];
2236
+ let r = fe(de(ue(e))), i = [], a = [], o = [0, 0], s = [], c = () => {
2237
+ s.length >= 4 && a.push(...Ue(s, t)), s = [];
2129
2238
  }, l = () => {
2130
2239
  c(), a.length && (i.push(a), a = []);
2131
2240
  };
@@ -2148,15 +2257,15 @@ var $ = "none", He = class {
2148
2257
  if (l(), !n) return i;
2149
2258
  let u = [];
2150
2259
  for (let e of i) {
2151
- let t = ze(e, n);
2260
+ let t = Ve(e, n);
2152
2261
  t.length && u.push(t);
2153
2262
  }
2154
2263
  return u;
2155
- }(e, 1, o ? 4 - 4 * (n.simplification || 1) : (1 + n.roughness) / 2), c = xe(e, n);
2264
+ }(e, 1, o ? 4 - 4 * (n.simplification || 1) : (1 + n.roughness) / 2), c = Ce(e, n);
2156
2265
  if (i) {
2157
2266
  if (n.fillStyle === "solid") {
2158
2267
  if (s.length === 1) {
2159
- let t = xe(e, Object.assign(Object.assign({}, n), {
2268
+ let t = Ce(e, Object.assign(Object.assign({}, n), {
2160
2269
  disableMultiStroke: !0,
2161
2270
  roughness: n.roughness ? n.roughness + n.fillShapeRoughnessGain : 0
2162
2271
  }));
@@ -2164,11 +2273,11 @@ var $ = "none", He = class {
2164
2273
  type: "fillPath",
2165
2274
  ops: this._mergedShape(t.ops)
2166
2275
  });
2167
- } else r.push(Se(s, n));
2168
- } else r.push(Ce(s, n));
2276
+ } else r.push(we(s, n));
2277
+ } else r.push(Te(s, n));
2169
2278
  }
2170
2279
  return a && (o ? s.forEach(((e) => {
2171
- r.push(he(e, !1, n));
2280
+ r.push(_e(e, !1, n));
2172
2281
  })) : r.push(c)), this._d("path", r, n);
2173
2282
  }
2174
2283
  opsToPath(e, t) {
@@ -2226,9 +2335,9 @@ var $ = "none", He = class {
2226
2335
  _mergedShape(e) {
2227
2336
  return e.filter(((e, t) => t === 0 || e.op !== "move"));
2228
2337
  }
2229
- }, Ue = class {
2338
+ }, Ge = class {
2230
2339
  constructor(e, t) {
2231
- this.canvas = e, this.ctx = this.canvas.getContext("2d"), this.gen = new He(t);
2340
+ this.canvas = e, this.ctx = this.canvas.getContext("2d"), this.gen = new We(t);
2232
2341
  }
2233
2342
  draw(e) {
2234
2343
  let t = e.sets || [], n = e.options || this.getDefaultOptions(), r = this.ctx, i = e.options.fixedDecimalPlaceDigits;
@@ -2307,20 +2416,20 @@ var $ = "none", He = class {
2307
2416
  let n = this.gen.path(e, t);
2308
2417
  return this.draw(n), n;
2309
2418
  }
2310
- }, We = "http://www.w3.org/2000/svg", Ge = class {
2419
+ }, Ke = "http://www.w3.org/2000/svg", qe = class {
2311
2420
  constructor(e, t) {
2312
- this.svg = e, this.gen = new He(t);
2421
+ this.svg = e, this.gen = new We(t);
2313
2422
  }
2314
2423
  draw(e) {
2315
- let t = e.sets || [], n = e.options || this.getDefaultOptions(), r = this.svg.ownerDocument || window.document, i = r.createElementNS(We, "g"), a = e.options.fixedDecimalPlaceDigits;
2424
+ let t = e.sets || [], n = e.options || this.getDefaultOptions(), r = this.svg.ownerDocument || window.document, i = r.createElementNS(Ke, "g"), a = e.options.fixedDecimalPlaceDigits;
2316
2425
  for (let o of t) {
2317
2426
  let t = null;
2318
2427
  switch (o.type) {
2319
2428
  case "path":
2320
- t = r.createElementNS(We, "path"), t.setAttribute("d", this.opsToPath(o, a)), t.setAttribute("stroke", n.stroke), t.setAttribute("stroke-width", n.strokeWidth + ""), t.setAttribute("fill", "none"), n.strokeLineDash && t.setAttribute("stroke-dasharray", n.strokeLineDash.join(" ").trim()), n.strokeLineDashOffset && t.setAttribute("stroke-dashoffset", `${n.strokeLineDashOffset}`);
2429
+ t = r.createElementNS(Ke, "path"), t.setAttribute("d", this.opsToPath(o, a)), t.setAttribute("stroke", n.stroke), t.setAttribute("stroke-width", n.strokeWidth + ""), t.setAttribute("fill", "none"), n.strokeLineDash && t.setAttribute("stroke-dasharray", n.strokeLineDash.join(" ").trim()), n.strokeLineDashOffset && t.setAttribute("stroke-dashoffset", `${n.strokeLineDashOffset}`);
2321
2430
  break;
2322
2431
  case "fillPath":
2323
- t = r.createElementNS(We, "path"), t.setAttribute("d", this.opsToPath(o, a)), t.setAttribute("stroke", "none"), t.setAttribute("stroke-width", "0"), t.setAttribute("fill", n.fill || ""), e.shape !== "curve" && e.shape !== "polygon" || t.setAttribute("fill-rule", "evenodd");
2432
+ t = r.createElementNS(Ke, "path"), t.setAttribute("d", this.opsToPath(o, a)), t.setAttribute("stroke", "none"), t.setAttribute("stroke-width", "0"), t.setAttribute("fill", n.fill || ""), e.shape !== "curve" && e.shape !== "polygon" || t.setAttribute("fill-rule", "evenodd");
2324
2433
  break;
2325
2434
  case "fillSketch": t = this.fillSketch(r, o, n);
2326
2435
  }
@@ -2331,7 +2440,7 @@ var $ = "none", He = class {
2331
2440
  fillSketch(e, t, n) {
2332
2441
  let r = n.fillWeight;
2333
2442
  r < 0 && (r = n.strokeWidth / 2);
2334
- let i = e.createElementNS(We, "path");
2443
+ let i = e.createElementNS(Ke, "path");
2335
2444
  return i.setAttribute("d", this.opsToPath(t, n.fixedDecimalPlaceDigits)), i.setAttribute("stroke", n.fill || ""), i.setAttribute("stroke-width", r + ""), i.setAttribute("fill", "none"), n.fillLineDash && i.setAttribute("stroke-dasharray", n.fillLineDash.join(" ").trim()), n.fillLineDashOffset && i.setAttribute("stroke-dashoffset", `${n.fillLineDashOffset}`), i;
2336
2445
  }
2337
2446
  get generator() {
@@ -2379,28 +2488,28 @@ var $ = "none", He = class {
2379
2488
  let n = this.gen.path(e, t);
2380
2489
  return this.draw(n);
2381
2490
  }
2382
- }, Ke = {
2383
- canvas: (e, t) => new Ue(e, t),
2384
- svg: (e, t) => new Ge(e, t),
2385
- generator: (e) => new He(e),
2386
- newSeed: () => He.newSeed()
2491
+ }, Je = {
2492
+ canvas: (e, t) => new Ge(e, t),
2493
+ svg: (e, t) => new qe(e, t),
2494
+ generator: (e) => new We(e),
2495
+ newSeed: () => We.newSeed()
2387
2496
  };
2388
2497
  // src/lib/sumi-forge/vfxRenderer.ts
2389
- function qe(e, t, n, r, i, a, o = !1) {
2498
+ function Ye(e, t, n, r, i, a, o = !1) {
2390
2499
  let s = r / 128, c = n <= 1 ? .32 : t / (n - 1), u = a.seed, d = a.colors;
2391
2500
  e.save(), o || (a.bgMode === "washi" ? (e.fillStyle = "#F4F1EA", e.fillRect(0, 0, r, i)) : a.bgMode === "dark" && (e.fillStyle = "#111113", e.fillRect(0, 0, r, i)));
2392
2501
  let p = null;
2393
2502
  try {
2394
- p = Ke.canvas(e.canvas);
2503
+ p = Je.canvas(e.canvas);
2395
2504
  } catch {
2396
2505
  p = null;
2397
2506
  }
2398
2507
  let h = Math.min(1, 1 - (1 - c) ** 3.4), g = c < .18 ? 0 : ((c - .18) / .82) ** 1.55 * .78, _ = c < .25 ? 0 : ((c - .25) / .75) ** 1.25 * a.dynamics.erosionStrength, v = c >= .18 && c <= .46 ? Math.sin((c - .18) / .28 * Math.PI) : 0, b = a.brush.angle * Math.PI / 180, x = 64 * s, S = 64 * s;
2399
- a.dynamics.glowIntensity > .2 && _ < .88 && F(e, x, S, 46 * s * (.7 + h * .35), 38 * s * (.7 + h * .35), b, d.coreGlow, d.energySecondary, Math.max(.08, (1 - _ * .85) * .32 * a.dynamics.glowIntensity), u + 11);
2508
+ a.dynamics.glowIntensity > .2 && _ < .88 && L(e, x, S, 46 * s * (.7 + h * .35), 38 * s * (.7 + h * .35), b, d.coreGlow, d.energySecondary, Math.max(.08, (1 - _ * .85) * .32 * a.dynamics.glowIntensity), u + 11);
2400
2509
  let C = a.archetype;
2401
2510
  if (C === "hyb_slash_great_wave_katana" || C === "water_slash") {
2402
2511
  let n = -Math.PI * .78 * a.brush.arcSweep + b, r = Math.PI * .68 * a.brush.arcSweep + b, i = m(x, S, 43 * s, 36 * s * a.brush.curvature, n, r, b * .35, .12, 88, a.dynamics.jitterAmount, u);
2403
- E(e, {
2512
+ O(e, {
2404
2513
  spine: i,
2405
2514
  maxWidth: 24 * s * a.brush.strokeThickness,
2406
2515
  bristleCount: a.brush.bristleCount,
@@ -2416,10 +2525,10 @@ function qe(e, t, n, r, i, a, o = !1) {
2416
2525
  seed: u
2417
2526
  });
2418
2527
  let o = i.filter((e) => e.t >= g * .85 && e.t <= h);
2419
- o.length >= 6 && _ < .82 && j(e, p, o.map((e, t, n) => ({
2528
+ o.length >= 6 && _ < .82 && N(e, p, o.map((e, t, n) => ({
2420
2529
  ...e,
2421
2530
  t: t / Math.max(1, n.length - 1)
2422
- })), 19 * s * a.brush.strokeThickness * (1 - _ * .45), 1, C === "hyb_slash_great_wave_katana" ? 6 : 4, a, s, Math.max(.2, 1 - _ * .65), u + t * 7), E(e, {
2531
+ })), 19 * s * a.brush.strokeThickness * (1 - _ * .45), 1, C === "hyb_slash_great_wave_katana" ? 6 : 4, a, s, Math.max(.2, 1 - _ * .65), u + t * 7), O(e, {
2423
2532
  spine: i,
2424
2533
  maxWidth: (8 + v * 5) * s * a.brush.strokeThickness,
2425
2534
  bristleCount: Math.max(6, Math.floor(a.brush.bristleCount * .45)),
@@ -2433,7 +2542,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2433
2542
  erosionProgress: _ * 1.1,
2434
2543
  erosionScale: a.dynamics.erosionScale,
2435
2544
  seed: u + 303
2436
- }), D(e, i, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2545
+ }), k(e, i, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2437
2546
  } else if (C === "hyb_slash_crimson_phoenix_arc") {
2438
2547
  let t = f({
2439
2548
  x: 18 * s,
@@ -2448,7 +2557,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2448
2557
  x: 110 * s,
2449
2558
  y: 20 * s
2450
2559
  }, 92, a.dynamics.jitterAmount, u);
2451
- E(e, {
2560
+ O(e, {
2452
2561
  spine: t,
2453
2562
  maxWidth: 22 * s * a.brush.strokeThickness,
2454
2563
  bristleCount: a.brush.bristleCount,
@@ -2466,7 +2575,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2466
2575
  let r = (n + .5) / 7;
2467
2576
  if (r < g || r > h) continue;
2468
2577
  let i = t[Math.min(t.length - 1, Math.floor(r * (t.length - 1)))], o = (22 + Math.sin(r * Math.PI) * 18) * s * (1 - _ * .55), c = Math.atan2(i.ny, i.nx) - .45, l = i.x + Math.cos(c) * o, f = i.y + Math.sin(c) * o;
2469
- O(e, p, a, s, {
2578
+ A(e, p, a, s, {
2470
2579
  rootX: i.x,
2471
2580
  rootY: i.y,
2472
2581
  ctrl1X: i.x + Math.cos(c - .5) * o * .42,
@@ -2479,12 +2588,12 @@ function qe(e, t, n, r, i, a, o = !1) {
2479
2588
  striationCount: 5,
2480
2589
  alpha: Math.max(.2, 1 - _ * .65),
2481
2590
  seed: u + n * 67
2482
- }), n % 2 == 0 && _ < .7 && k(e, l, f, l + Math.cos(c - .2) * 14 * s, f + Math.sin(c - .2) * 14 * s, 3.2 * s, d.energySecondary, u + n * 131);
2591
+ }), n % 2 == 0 && _ < .7 && j(e, l, f, l + Math.cos(c - .2) * 14 * s, f + Math.sin(c - .2) * 14 * s, 3.2 * s, d.energySecondary, u + n * 131);
2483
2592
  }
2484
- D(e, t, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2593
+ k(e, t, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2485
2594
  } else if (C === "sakura_tempest_slash") {
2486
2595
  let t = m(x, S, 44 * s, 34 * s * a.brush.curvature, -Math.PI * .85 + b, Math.PI * .75 + b, -.25, -.15, 92, a.dynamics.jitterAmount, u);
2487
- E(e, {
2596
+ O(e, {
2488
2597
  spine: t,
2489
2598
  maxWidth: 21 * s * a.brush.strokeThickness,
2490
2599
  bristleCount: a.brush.bristleCount,
@@ -2497,7 +2606,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2497
2606
  erosionProgress: _,
2498
2607
  erosionScale: a.dynamics.erosionScale,
2499
2608
  seed: u
2500
- }), E(e, {
2609
+ }), O(e, {
2501
2610
  spine: t,
2502
2611
  maxWidth: 9 * s * a.brush.strokeThickness,
2503
2612
  bristleCount: Math.max(8, Math.floor(a.brush.bristleCount * .5)),
@@ -2517,11 +2626,11 @@ function qe(e, t, n, r, i, a, o = !1) {
2517
2626
  let i = (r + .4) / 9;
2518
2627
  if (i > h) continue;
2519
2628
  let a = t[Math.min(t.length - 1, Math.floor(i * (t.length - 1)))], o = Math.max(0, c - i * .35) * 18 * s, l = a.x + a.nx * ((n() - .35) * 18 * s + o), f = a.y + a.ny * ((n() - .35) * 18 * s - o * .4), p = (5.5 + r % 3 * 2.5) * s * (1 - _ * .35);
2520
- r % 2 == 0 ? L(e, l, f, p, c * 1.8 + r, d.energySecondary, d.coreGlow, d.inkPrimary, Math.max(.2, 1 - _ * .5), u + r * 43) : R(e, l, f, p * 1.1, c * 3.2 + r, .45 + .5 * Math.abs(Math.cos(c * 4 + r)), d.energySecondary, Math.max(.25, 1 - _ * .4));
2629
+ r % 2 == 0 ? z(e, l, f, p, c * 1.8 + r, d.energySecondary, d.coreGlow, d.inkPrimary, Math.max(.2, 1 - _ * .5), u + r * 43) : B(e, l, f, p * 1.1, c * 3.2 + r, .45 + .5 * Math.abs(Math.cos(c * 4 + r)), d.energySecondary, Math.max(.25, 1 - _ * .4));
2521
2630
  }
2522
2631
  } else if (C === "enso_sigil") {
2523
2632
  let t = Math.PI * 1.82 * a.brush.arcSweep, n = m(x, S, 41 * s, 40 * s * a.brush.curvature, -Math.PI * .85 + b + c * .25, -Math.PI * .85 + t + b + c * .25, 0, -.06, 96, a.dynamics.jitterAmount * .7, u);
2524
- E(e, {
2633
+ O(e, {
2525
2634
  spine: n,
2526
2635
  maxWidth: 22 * s * a.brush.strokeThickness,
2527
2636
  bristleCount: a.brush.bristleCount,
@@ -2535,7 +2644,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2535
2644
  erosionScale: a.dynamics.erosionScale,
2536
2645
  roundHeadCap: !0,
2537
2646
  seed: u
2538
- }), E(e, {
2647
+ }), O(e, {
2539
2648
  spine: n,
2540
2649
  maxWidth: 10 * s * a.brush.strokeThickness,
2541
2650
  bristleCount: Math.max(8, Math.floor(a.brush.bristleCount * .55)),
@@ -2549,12 +2658,12 @@ function qe(e, t, n, r, i, a, o = !1) {
2549
2658
  erosionProgress: _,
2550
2659
  erosionScale: a.dynamics.erosionScale,
2551
2660
  seed: u + 149
2552
- }), D(e, n, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2661
+ }), k(e, n, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2553
2662
  } else if (C === "elem_fire_meteor_bolide") {
2554
2663
  let n = Math.min(1, c * 1.25), r = (24 + n * 68) * s, i = (24 + n * 68) * s, o = (10 + n * 18) * s, l = (10 + n * 18) * s, d = Math.atan2(i - l, r - o), f = (16 - _ * 4) * s * a.brush.strokeThickness;
2555
2664
  for (let t = 0; t < 4; t++) {
2556
2665
  let n = (t - 1.5) * 14 * s;
2557
- O(e, p, a, s, {
2666
+ A(e, p, a, s, {
2558
2667
  rootX: r,
2559
2668
  rootY: i,
2560
2669
  ctrl1X: (r + o) * .55 + n,
@@ -2570,10 +2679,10 @@ function qe(e, t, n, r, i, a, o = !1) {
2570
2679
  });
2571
2680
  }
2572
2681
  if (c < .85) {
2573
- P(e, p, r, i, f * 1.12, f * .94, d, .24, a, s, u + t * 13);
2682
+ I(e, p, r, i, f * 1.12, f * .94, d, .24, a, s, u + t * 13);
2574
2683
  for (let t of [-1, 1]) {
2575
2684
  let n = d + t * Math.PI * .42, o = r + Math.cos(n) * f * .72, c = i + Math.sin(n) * f * .72, l = d + Math.PI + t * .28;
2576
- O(e, p, a, s, {
2685
+ A(e, p, a, s, {
2577
2686
  rootX: o,
2578
2687
  rootY: c,
2579
2688
  ctrl1X: o + Math.cos(n) * 10 * s,
@@ -2589,19 +2698,19 @@ function qe(e, t, n, r, i, a, o = !1) {
2589
2698
  });
2590
2699
  }
2591
2700
  }
2592
- c > .55 && N(e, p, r, i, 46 * s * ((c - .5) * 1.8), 4, a, s, Math.min(.95, (c - .5) * 1.9), u + 701);
2701
+ c > .55 && F(e, p, r, i, 46 * s * ((c - .5) * 1.8), 4, a, s, Math.min(.95, (c - .5) * 1.9), u + 701);
2593
2702
  } else if (C === "elem_water_glacial_spikes") {
2594
2703
  let t = c < .28 ? Math.min(1.12, (c / .28) ** .65 * 1.12) : Math.max(.15, 1 - Math.max(0, c - .65) * 2.1);
2595
2704
  for (let n = 0; n < 6; n++) {
2596
2705
  let r = n / 5 * 2 - 1, i = -Math.PI * .5 + r * .68 + b * .3, o = (56 - Math.abs(r) * 22) * s * t * a.brush.strokeThickness, c = (16 - Math.abs(r) * 4) * s * a.brush.strokeThickness;
2597
- I(e, p, x + r * 16 * s, 104 * s, i, o, c, a, s, u + n * 97);
2706
+ R(e, p, x + r * 16 * s, 104 * s, i, o, c, a, s, u + n * 97);
2598
2707
  }
2599
- N(e, p, x, 104 * s, 68 * s, 4, a, s, Math.max(.25, 1 - _ * .7), u + 503);
2708
+ F(e, p, x, 104 * s, 68 * s, 4, a, s, Math.max(.25, 1 - _ * .7), u + 503);
2600
2709
  } else if (C === "solid_ref_fumaca") {
2601
2710
  let t = .65 + h * .55;
2602
2711
  for (let n = 0; n < 5; n++) {
2603
2712
  let r = n / 5 * Math.PI * 2 + c * .55 + b, i = (14 + c * 24) * s, o = x + Math.cos(r) * i * .35, l = S + Math.sin(r) * i * .35, d = x + Math.cos(r + .55) * (36 * s * t), f = S + Math.sin(r + .55) * (36 * s * t);
2604
- M(e, p, a, s, {
2713
+ P(e, p, a, s, {
2605
2714
  startX: o,
2606
2715
  startY: l,
2607
2716
  endX: d,
@@ -2614,10 +2723,10 @@ function qe(e, t, n, r, i, a, o = !1) {
2614
2723
  });
2615
2724
  }
2616
2725
  } else if (C === "elem_water_healing_fountain") {
2617
- F(e, x, 82 * s, 44 * s, 26 * s, 0, d.coreGlow, d.energySecondary, .75 * (1 - _ * .5), u + 31);
2726
+ L(e, x, 82 * s, 44 * s, 26 * s, 0, d.coreGlow, d.energySecondary, .75 * (1 - _ * .5), u + 31);
2618
2727
  for (let t = 0; t < 3; t++) {
2619
2728
  let n = t * Math.PI * 2 / 3 + c * Math.PI * 1.4;
2620
- E(e, {
2729
+ O(e, {
2621
2730
  spine: f({
2622
2731
  x: x + Math.sin(n) * 20 * s,
2623
2732
  y: 106 * s
@@ -2647,7 +2756,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2647
2756
  } else if (C === "portal_abyssal_vortex") {
2648
2757
  for (let t = 0; t < 3; t++) {
2649
2758
  let n = t / 3 * Math.PI * 2 + c * Math.PI * 1.5 + b;
2650
- E(e, {
2759
+ O(e, {
2651
2760
  spine: m(x, S, 45 * s, 42 * s * a.brush.curvature, n, n + Math.PI * 1.45, 0, -.52, 76, a.dynamics.jitterAmount * .5, u + t * 61),
2652
2761
  maxWidth: 16 * s * a.brush.strokeThickness,
2653
2762
  bristleCount: Math.max(10, Math.floor(a.brush.bristleCount * .7)),
@@ -2665,7 +2774,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2665
2774
  e.beginPath(), e.arc(x, S, 13 * s * (1 - _ * .35), 0, Math.PI * 2), e.fillStyle = d.inkPrimary, e.fill(), e.strokeStyle = d.coreGlow, e.lineWidth = 1.5 * s, e.stroke();
2666
2775
  } else {
2667
2776
  let t = C === "hyb_slash_blood_moon_scythe", n = (t ? Math.PI * 1.52 : Math.PI * 1.18) * a.brush.arcSweep, r = m(x, S, 44 * s, (t ? 42 : 34) * s * a.brush.curvature, -n * .55 + b, n * .55 + b, .22, t ? -.18 : .08, 96, a.dynamics.jitterAmount, u);
2668
- E(e, {
2777
+ O(e, {
2669
2778
  spine: r,
2670
2779
  maxWidth: (t ? 28 : 23) * s * a.brush.strokeThickness,
2671
2780
  bristleCount: a.brush.bristleCount,
@@ -2680,7 +2789,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2680
2789
  hookWaves: a.dynamics.hookWaves,
2681
2790
  roundHeadCap: !0,
2682
2791
  seed: u
2683
- }), E(e, {
2792
+ }), O(e, {
2684
2793
  spine: r,
2685
2794
  maxWidth: 14 * s * a.brush.strokeThickness,
2686
2795
  bristleCount: Math.max(8, Math.floor(a.brush.bristleCount * .68)),
@@ -2696,7 +2805,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2696
2805
  hookWaves: a.dynamics.hookWaves,
2697
2806
  roundHeadCap: !1,
2698
2807
  seed: u + 199
2699
- }), E(e, {
2808
+ }), O(e, {
2700
2809
  spine: r,
2701
2810
  maxWidth: (6.5 + v * 4.5) * s * a.brush.strokeThickness,
2702
2811
  bristleCount: Math.max(5, Math.floor(a.brush.bristleCount * .38)),
@@ -2711,7 +2820,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2711
2820
  erosionScale: a.dynamics.erosionScale,
2712
2821
  roundHeadCap: !1,
2713
2822
  seed: u + 397
2714
- }), D(e, r, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2823
+ }), k(e, r, c, a.dynamics.splatterCount, a.dynamics.splatterSpread, s, d, u);
2715
2824
  }
2716
2825
  if (a.channelMode !== "composite") {
2717
2826
  let t = y(e.getImageData(0, 0, r, i), a);
@@ -2719,7 +2828,7 @@ function qe(e, t, n, r, i, a, o = !1) {
2719
2828
  }
2720
2829
  e.restore();
2721
2830
  }
2722
- function Je(e, t, n = 4) {
2831
+ function Xe(e, t, n = 4) {
2723
2832
  let r = Math.ceil(t.totalFrames / n), i = t.frameSize;
2724
2833
  e.width = i * n, e.height = i * r;
2725
2834
  let a = e.getContext("2d");
@@ -2727,12 +2836,12 @@ function Je(e, t, n = 4) {
2727
2836
  a.clearRect(0, 0, e.width, e.height);
2728
2837
  for (let e = 0; e < t.totalFrames; e++) {
2729
2838
  let r = e % n, o = Math.floor(e / n);
2730
- a.save(), a.beginPath(), a.rect(r * i, o * i, i, i), a.clip(), a.translate(r * i, o * i), qe(a, e, t.totalFrames, i, i, t, !0), a.restore();
2839
+ a.save(), a.beginPath(), a.rect(r * i, o * i, i, i), a.clip(), a.translate(r * i, o * i), Ye(a, e, t.totalFrames, i, i, t, !0), a.restore();
2731
2840
  }
2732
2841
  }
2733
2842
  }
2734
2843
  // src/lib/sumi-forge/gifEncoder.ts
2735
- function Ye(e, t, n, r) {
2844
+ function Ze(e, t, n, r) {
2736
2845
  let i = [], a = (e) => i.push(e & 255), o = (e) => {
2737
2846
  i.push(e & 255), i.push(e >> 8 & 255);
2738
2847
  }, s = (e) => {
@@ -2757,13 +2866,13 @@ function Ye(e, t, n, r) {
2757
2866
  }
2758
2867
  }
2759
2868
  a(8);
2760
- let s = Xe(e, 8);
2869
+ let s = Qe(e, 8);
2761
2870
  for (let e = 0; e < s.length; e++) a(s[e]);
2762
2871
  a(0);
2763
2872
  }
2764
2873
  return a(59), new Uint8Array(i);
2765
2874
  }
2766
- function Xe(e, t) {
2875
+ function Qe(e, t) {
2767
2876
  let n = 1 << t, r = n + 1, i = t + 1, a = r + 1, o = /* @__PURE__ */ new Map(), s = [], c = 0, l = 0, u = [], d = () => {
2768
2877
  if (u.length > 0) {
2769
2878
  s.push(u.length);
@@ -2782,24 +2891,24 @@ function Xe(e, t) {
2782
2891
  return f(p), f(r), l > 0 && u.push(c & 255), d(), s;
2783
2892
  }
2784
2893
  // src/lib/sumi-forge/components/SumiMaskReveal.tsx
2785
- var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Sumi-e revelada por máscara caligráfica", choreography: a = "fuji_masterpiece", duration: c = 3.4, bristleCount: u = 26, dryBrushGap: d = .28, seed: g = 8472, showLiveInkAccents: _ = !0, maskOnlyPreview: v = !1, progress: y, replayTrigger: b = 0, interactiveBrush: x = !0, showTouchControls: S = !0, className: C = "" }) => {
2786
- let w = r(null), T = r(null), D = r(null), O = r(""), k = r(!0), A = r(null), [j, M] = i(!1), [N, P] = i(!1), [I, z] = i(a === "interactive_brush"), [B, V] = i(0), H = r([]), U = r(null), W = r({
2894
+ var $e = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Sumi-e revelada por máscara caligráfica", choreography: a = "fuji_masterpiece", duration: c = 3.4, bristleCount: u = 26, dryBrushGap: d = .28, seed: g = 8472, showLiveInkAccents: _ = !0, maskOnlyPreview: v = !1, progress: y, replayTrigger: b = 0, interactiveBrush: x = !0, showTouchControls: S = !0, className: C = "" }) => {
2895
+ let w = r(null), T = r(null), E = r(null), D = r(""), k = r(!0), A = r(null), [j, M] = i(!1), [N, P] = i(!1), [F, I] = i(a === "interactive_brush"), [R, V] = i(0), H = r([]), U = r(null), W = r({
2787
2896
  x: 0,
2788
2897
  y: 0,
2789
2898
  active: !1
2790
2899
  }), G = r(0), K = r(performance.now());
2791
2900
  t(() => {
2792
- z(a === "interactive_brush");
2901
+ I(a === "interactive_brush");
2793
2902
  }, [a]), t(() => {
2794
- M(!1), P(!1), O.current = "";
2903
+ M(!1), P(!1), D.current = "";
2795
2904
  let t = new Image();
2796
2905
  t.crossOrigin = "anonymous", t.onload = () => {
2797
- A.current = t, O.current = "", M(!0);
2906
+ A.current = t, D.current = "", M(!0);
2798
2907
  }, t.onerror = () => {
2799
2908
  P(!0);
2800
2909
  }, t.src = e;
2801
2910
  }, [e]), t(() => {
2802
- K.current = performance.now(), H.current = [], V(0), G.current++, O.current = "";
2911
+ K.current = performance.now(), H.current = [], V(0), G.current++, D.current = "";
2803
2912
  }, [
2804
2913
  b,
2805
2914
  a,
@@ -2820,9 +2929,9 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
2820
2929
  }, []), t(() => {
2821
2930
  let e = w.current;
2822
2931
  if (!e) return;
2823
- T.current ||= document.createElement("canvas"), D.current ||= document.createElement("canvas");
2824
- let t = T.current, n = D.current, r = 0, i = e.getBoundingClientRect(), o = new ResizeObserver((e) => {
2825
- e[0] && (i = e[0].contentRect, O.current = "");
2932
+ T.current ||= document.createElement("canvas"), E.current ||= document.createElement("canvas");
2933
+ let t = T.current, n = E.current, r = 0, i = e.getBoundingClientRect(), o = new ResizeObserver((e) => {
2934
+ e[0] && (i = e[0].contentRect, D.current = "");
2826
2935
  });
2827
2936
  o.observe(e);
2828
2937
  let s = (o) => {
@@ -2831,15 +2940,15 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
2831
2940
  return;
2832
2941
  }
2833
2942
  let b = Math.min(1.75, window.devicePixelRatio || 1), x = Math.max(220, Math.floor(i.width || e.clientWidth || 500)), S = Math.max(160, Math.floor(i.height || e.clientHeight || 320)), C = Math.floor(x * b), w = Math.floor(S * b);
2834
- (e.width !== C || e.height !== w) && (e.width = C, e.height = w, t.width = C, t.height = w, n.width = C, n.height = w, O.current = "");
2835
- let T = e.getContext("2d"), D = t.getContext("2d"), M = n.getContext("2d");
2836
- if (!T || !D || !M) return;
2837
- let P = (o - K.current) / 1e3, z = I || a === "interactive_brush", B = z ? .16 : Math.min(1, P / Math.max(.4, c)), V = y === void 0 ? B : y, q = V >= .998 ? 1 : Math.round(V * 90) / 90, J = Math.max(.52, Math.min(x / 920, S / 560)), Y = `${C}x${w}:${a}:${z}:${q}:${u}:${d}:${g}:${v}:${j}:${G.current}`;
2838
- if (O.current !== Y) {
2839
- if (D.save(), D.setTransform(b, 0, 0, b, 0, 0), D.clearRect(0, 0, x, S), z) H.current.length === 0 && !U.current && F(D, x * .5, S * .48, x * .14, S * .14, 0, "#000000", "#000000", .85, g + 19);
2943
+ (e.width !== C || e.height !== w) && (e.width = C, e.height = w, t.width = C, t.height = w, n.width = C, n.height = w, D.current = "");
2944
+ let T = e.getContext("2d"), E = t.getContext("2d"), M = n.getContext("2d");
2945
+ if (!T || !E || !M) return;
2946
+ let P = (o - K.current) / 1e3, I = F || a === "interactive_brush", R = I ? .16 : Math.min(1, P / Math.max(.4, c)), V = y === void 0 ? R : y, q = V >= .998 ? 1 : Math.round(V * 90) / 90, J = Math.max(.52, Math.min(x / 920, S / 560)), Y = `${C}x${w}:${a}:${I}:${q}:${u}:${d}:${g}:${v}:${j}:${G.current}`;
2947
+ if (D.current !== Y) {
2948
+ if (E.save(), E.setTransform(b, 0, 0, b, 0, 0), E.clearRect(0, 0, x, S), I) H.current.length === 0 && !U.current && L(E, x * .5, S * .48, x * .14, S * .14, 0, "#000000", "#000000", .85, g + 19);
2840
2949
  else if (a === "fuji_masterpiece") {
2841
2950
  let e = Math.min(1, q * 2.2);
2842
- if (e > .01 && F(D, x * .79, S * .28, x * .22 * e, x * .22 * e, 0, "#000000", "#000000", 1, g + 11), [
2951
+ if (e > .01 && L(E, x * .79, S * .28, x * .22 * e, x * .22 * e, 0, "#000000", "#000000", 1, g + 11), [
2843
2952
  {
2844
2953
  x0: x * .74,
2845
2954
  y0: S * .45,
@@ -2880,7 +2989,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
2880
2989
  x: e.x1,
2881
2990
  y: e.y1
2882
2991
  }, 48, .15, g + 100 + t * 19);
2883
- E(D, {
2992
+ O(E, {
2884
2993
  spine: r,
2885
2994
  maxWidth: e.w,
2886
2995
  bristleCount: u,
@@ -2960,7 +3069,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
2960
3069
  let n = Math.max(0, Math.min(1, (q - e.start) / (e.end - e.start)));
2961
3070
  if (n <= .01) return;
2962
3071
  let r = f(e.p0, e.p1, e.p2, e.p3, 52, .2, g + 200 + t * 29);
2963
- E(D, {
3072
+ O(E, {
2964
3073
  spine: r,
2965
3074
  maxWidth: e.w,
2966
3075
  bristleCount: u,
@@ -2974,13 +3083,13 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
2974
3083
  });
2975
3084
  }), q > .55) {
2976
3085
  let e = (q - .55) / .45;
2977
- F(D, x * .5, S * .5, x * .72 * e, S * .72 * e, 0, "#000000", "#000000", Math.min(1, e * 1.35), g + 555);
3086
+ L(E, x * .5, S * .5, x * .72 * e, S * .72 * e, 0, "#000000", "#000000", Math.min(1, e * 1.35), g + 555);
2978
3087
  }
2979
3088
  } else if (a === "katana_slashes") for (let e = 0; e < 6; e++) {
2980
3089
  let t = e * .11, n = Math.max(0, Math.min(1, (q - t) / .45));
2981
3090
  if (n <= .01) continue;
2982
3091
  let r = S * (.12 + e / 5 * .78), i = S * (.08 + (5 - e) / 5 * .84), a = e % 2 == 0;
2983
- E(D, {
3092
+ O(E, {
2984
3093
  spine: p({
2985
3094
  x: a ? -x * .05 : x * 1.05,
2986
3095
  y: r
@@ -3008,7 +3117,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3008
3117
  let n = Math.max(0, Math.min(1, (q - t * .15) / .65));
3009
3118
  if (n <= .01) continue;
3010
3119
  let r = e * ((t + .6) / 3);
3011
- E(D, {
3120
+ O(E, {
3012
3121
  spine: m(x * .5, S * .5, r, r * .82, -Math.PI * .85 + t * 1.2, Math.PI * 1.35 + t * 1.2, 0, .15, 68, .15, g + t * 59),
3013
3122
  maxWidth: 190 * J,
3014
3123
  bristleCount: u,
@@ -3025,7 +3134,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3025
3134
  let t = Math.max(0, Math.min(1, (q - e * .1) / .55));
3026
3135
  if (t <= .01) continue;
3027
3136
  let n = S * (.15 + e / 4 * .72);
3028
- E(D, {
3137
+ O(E, {
3029
3138
  spine: f({
3030
3139
  x: -x * .05,
3031
3140
  y: n + 30 * J
@@ -3070,7 +3179,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3070
3179
  pressure: .75
3071
3180
  }
3072
3181
  ] : e, r = h(n, .1, g + t * 17), i = n.reduce((e, t) => e + t.pressure, 0) / n.length;
3073
- F(D, n[0].x, n[0].y, 46 * J, 38 * J, t * .7, "#000000", "#000000", .95, g + 800 + t * 19), E(D, {
3182
+ L(E, n[0].x, n[0].y, 46 * J, 38 * J, t * .7, "#000000", "#000000", .95, g + 800 + t * 19), O(E, {
3074
3183
  spine: r,
3075
3184
  maxWidth: 122 * J * (.75 + i * .85),
3076
3185
  bristleCount: Math.max(14, Math.floor(u * .85)),
@@ -3081,23 +3190,23 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3081
3190
  alpha: 1,
3082
3191
  seed: g + 900 + t * 23
3083
3192
  });
3084
- }), D.restore(), M.save(), M.setTransform(b, 0, 0, b, 0, 0), M.clearRect(0, 0, x, S), v) M.drawImage(t, 0, 0, x, S);
3193
+ }), E.restore(), M.save(), M.setTransform(b, 0, 0, b, 0, 0), M.clearRect(0, 0, x, S), v) M.drawImage(t, 0, 0, x, S);
3085
3194
  else if (j && A.current && !N) {
3086
3195
  let e = A.current, n = e.width / Math.max(1, e.height), r = x / S, i = x, a = S, o = 0, s = 0;
3087
- r > n ? (i = x, a = x / n, s = (S - a) * .5) : (a = S, i = S * n, o = (x - i) * .5), M.drawImage(e, o, s, i, a), M.globalCompositeOperation = "destination-in", M.drawImage(t, 0, 0, x, S), M.globalCompositeOperation = "source-over", z && (M.globalCompositeOperation = "destination-over", M.globalAlpha = .12, M.drawImage(e, o, s, i, a), M.globalAlpha = 1, M.globalCompositeOperation = "source-over");
3196
+ r > n ? (i = x, a = x / n, s = (S - a) * .5) : (a = S, i = S * n, o = (x - i) * .5), M.drawImage(e, o, s, i, a), M.globalCompositeOperation = "destination-in", M.drawImage(t, 0, 0, x, S), M.globalCompositeOperation = "source-over", I && (M.globalCompositeOperation = "destination-over", M.globalAlpha = .12, M.drawImage(e, o, s, i, a), M.globalAlpha = 1, M.globalCompositeOperation = "source-over");
3088
3197
  } else M.drawImage(t, 0, 0, x, S);
3089
- M.restore(), O.current = Y;
3198
+ M.restore(), D.current = Y;
3090
3199
  }
3091
3200
  if (T.save(), T.setTransform(b, 0, 0, b, 0, 0), T.clearRect(0, 0, x, S), T.drawImage(n, 0, 0, x, S), v || ((U.current ? [...H.current, U.current] : H.current).forEach((e, t) => {
3092
3201
  if (e.length !== 0) for (let n = 0; n < e.length; n += 4) {
3093
3202
  let r = e[n];
3094
- L(T, r.x + Math.sin(t + n) * 8 * J, r.y + Math.cos(t + n) * 8 * J, (6.5 + n % 3 * 2) * J, (t + n) * .7, "#C8232C", "#FFF5F5", "#141413", .78, g + 1400 + t * 31 + n);
3203
+ z(T, r.x + Math.sin(t + n) * 8 * J, r.y + Math.cos(t + n) * 8 * J, (6.5 + n % 3 * 2) * J, (t + n) * .7, "#C8232C", "#FFF5F5", "#141413", .78, g + 1400 + t * 31 + n);
3095
3204
  }
3096
3205
  }), W.current.active && U.current && (T.beginPath(), T.arc(W.current.x, W.current.y, 24 * J, 0, Math.PI * 2), T.strokeStyle = "rgba(200, 35, 44, 0.55)", T.lineWidth = 1.75, T.stroke())), _ && !v && V > .15) {
3097
3206
  let e = l(g + 777);
3098
3207
  for (let t = 0; t < 14; t++) {
3099
3208
  let n = e() * x * .72, r = e() * S * .78, i = 16 + e() * 22, a = (n + P * i * 1.2 + Math.sin(P * 1.5 + t) * 16 * J) % (x * .96), o = (r + P * i * .55 + Math.cos(P * 1.2 + t) * 12 * J) % (S * .9);
3100
- t % 5 == 0 ? L(T, a, o, (6.5 + t % 3 * 2) * J, P * .9 + t, "#C8232C", "#FFF5F5", "#141413", .85 * Math.min(1, (V - .15) * 2), g + t * 31) : R(T, a, o, (5 + t % 4 * 2) * J, P * 1.8 + t, .4 + .55 * Math.abs(Math.sin(P * 2.2 + t)), "#C8232C", .88 * Math.min(1, (V - .15) * 2));
3209
+ t % 5 == 0 ? z(T, a, o, (6.5 + t % 3 * 2) * J, P * .9 + t, "#C8232C", "#FFF5F5", "#141413", .85 * Math.min(1, (V - .15) * 2), g + t * 31) : B(T, a, o, (5 + t % 4 * 2) * J, P * 1.8 + t, .4 + .55 * Math.abs(Math.sin(P * 2.2 + t)), "#C8232C", .88 * Math.min(1, (V - .15) * 2));
3101
3210
  }
3102
3211
  }
3103
3212
  T.restore(), (V < 1 || _ && !v || U.current !== null) && (r = requestAnimationFrame(s));
@@ -3109,7 +3218,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3109
3218
  j,
3110
3219
  N,
3111
3220
  a,
3112
- I,
3221
+ F,
3113
3222
  c,
3114
3223
  u,
3115
3224
  d,
@@ -3194,20 +3303,20 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3194
3303
  className: "absolute bottom-2.5 left-2.5 right-2.5 flex flex-wrap items-center justify-between gap-1.5 pointer-events-none z-10",
3195
3304
  children: [/* @__PURE__ */ s("div", {
3196
3305
  className: "inline-flex items-center gap-1.5 px-2.5 py-1 rounded-md bg-[#F8F4EC]/90 backdrop-blur-md border border-[#11100E]/20 text-[11px] font-medium text-[#11100E] shadow-xs",
3197
- children: [/* @__PURE__ */ o("span", { className: "w-2 h-2 rounded-full bg-[#C8232C] shrink-0" }), /* @__PURE__ */ o("span", { children: I ? B === 0 ? "Arraste o dedo ou toque na tela para revelar a pintura" : `${B} ${B === 1 ? "pincelada aplicada" : "pinceladas aplicadas"}` : "Toque ou arraste na tela para pintar" })]
3306
+ children: [/* @__PURE__ */ o("span", { className: "w-2 h-2 rounded-full bg-[#C8232C] shrink-0" }), /* @__PURE__ */ o("span", { children: F ? R === 0 ? "Arraste o dedo ou toque na tela para revelar a pintura" : `${R} ${R === 1 ? "pincelada aplicada" : "pinceladas aplicadas"}` : "Toque ou arraste na tela para pintar" })]
3198
3307
  }), /* @__PURE__ */ s("div", {
3199
3308
  className: "flex items-center gap-1.5 pointer-events-auto",
3200
3309
  children: [/* @__PURE__ */ o("button", {
3201
3310
  type: "button",
3202
3311
  onClick: (e) => {
3203
- e.stopPropagation(), H.current = [], V(0), z(!0), q();
3312
+ e.stopPropagation(), H.current = [], V(0), I(!0), q();
3204
3313
  },
3205
- className: `px-2.5 py-1 rounded-[3px] text-[11px] font-medium border transition-colors cursor-pointer ${I ? "bg-[#C8232C] text-[#FAF7F0] border-[#11100E]" : "bg-[#F8F4EC]/92 text-[#11100E] border-[#11100E]/60 hover:bg-[#11100E] hover:text-[#FAF7F0]"}`,
3206
- children: I ? "Limpar & Pintar do Zero" : "Pintar do Zero (Toque)"
3207
- }), I && /* @__PURE__ */ o("button", {
3314
+ className: `px-2.5 py-1 rounded-[3px] text-[11px] font-medium border transition-colors cursor-pointer ${F ? "bg-[#C8232C] text-[#FAF7F0] border-[#11100E]" : "bg-[#F8F4EC]/92 text-[#11100E] border-[#11100E]/60 hover:bg-[#11100E] hover:text-[#FAF7F0]"}`,
3315
+ children: F ? "Limpar & Pintar do Zero" : "Pintar do Zero (Toque)"
3316
+ }), F && /* @__PURE__ */ o("button", {
3208
3317
  type: "button",
3209
3318
  onClick: (e) => {
3210
- e.stopPropagation(), H.current = [], V(0), z(!1), K.current = performance.now(), q();
3319
+ e.stopPropagation(), H.current = [], V(0), I(!1), K.current = performance.now(), q();
3211
3320
  },
3212
3321
  className: "px-2.5 py-1 rounded-[3px] text-[11px] font-medium bg-[#11100E] text-[#FAF7F0] border border-[#11100E] hover:bg-[#272420] transition-colors cursor-pointer",
3213
3322
  children: "Auto-Revelar"
@@ -3215,24 +3324,24 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3215
3324
  })]
3216
3325
  })]
3217
3326
  });
3218
- }, Qe = ({ revealProgress: e, revealProgressRef: n, layers: i, colors: a, seed: s = 8472, animated: c = !0, windSpeed: u = 1, className: h = "", interactive: g = !0 }) => {
3327
+ }, et = ({ revealProgress: e, revealProgressRef: n, layers: i, colors: a, seed: s = 8472, animated: c = !0, windSpeed: u = 1, className: h = "", interactive: g = !0 }) => {
3219
3328
  let y = r(null), b = r(!0), x = r({
3220
3329
  x: .5,
3221
3330
  y: .5,
3222
3331
  smoothX: .5,
3223
3332
  smoothY: .5,
3224
3333
  active: !1
3225
- }), w = r(performance.now()), T = {
3226
- ...C,
3334
+ }), S = r(performance.now()), C = {
3335
+ ...T,
3227
3336
  ...i
3228
- }, D = {
3337
+ }, E = {
3229
3338
  inkPrimary: a?.inkPrimary ?? "#141413",
3230
3339
  energySecondary: a?.energySecondary ?? "#C8232C",
3231
3340
  coreGlow: a?.coreGlow ?? "#FFF7F5",
3232
3341
  sporeAccent: a?.sporeAccent ?? "#4A5559"
3233
3342
  };
3234
3343
  return t(() => {
3235
- w.current = performance.now();
3344
+ S.current = performance.now();
3236
3345
  }, [s]), t(() => {
3237
3346
  let e = y.current;
3238
3347
  if (!e || typeof IntersectionObserver > "u") return;
@@ -3245,8 +3354,8 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3245
3354
  }, []), t(() => {
3246
3355
  let t = y.current;
3247
3356
  if (!t) return;
3248
- let r = document.createElement("canvas"), i = document.createElement("canvas"), a = document.createElement("canvas"), o = document.createElement("canvas"), h = document.createElement("canvas"), g = [], C = "", O = 0, k = t.getBoundingClientRect(), A = new ResizeObserver((e) => {
3249
- e[0] && (k = e[0].contentRect, C = "");
3357
+ let r = document.createElement("canvas"), i = document.createElement("canvas"), a = document.createElement("canvas"), o = document.createElement("canvas"), h = document.createElement("canvas"), g = [], T = "", D = 0, k = t.getBoundingClientRect(), A = new ResizeObserver((e) => {
3358
+ e[0] && (k = e[0].contentRect, T = "");
3250
3359
  });
3251
3360
  A.observe(t);
3252
3361
  let j = (e, t, n) => {
@@ -3261,29 +3370,29 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3261
3370
  e.width = c, e.height = u;
3262
3371
  });
3263
3372
  let d = e < 640, y = Math.min(e / (d ? 720 : 1200), t / 700), b = r.getContext("2d");
3264
- if (b && T.sunIntensity > .02) {
3373
+ if (b && C.sunIntensity > .02) {
3265
3374
  b.save(), b.setTransform(n, 0, 0, n, 0, 0), b.clearRect(0, 0, e, t);
3266
- let r = e * (d ? .75 : .795), i = t * (d ? .23 : .275), a = Math.min(e, t) * (d ? .185 : .165) * Math.min(1.3, T.sunIntensity);
3267
- F(b, r, i, a * 1.08, a * 1.05, .15, D.energySecondary, D.energySecondary, .88 * Math.min(1, T.sunIntensity), s + 11), b.save(), b.beginPath(), b.arc(r, i, a * .94, 0, Math.PI * 2), b.fillStyle = _(D.energySecondary, .94 * Math.min(1, T.sunIntensity)), b.fill(), b.restore(), E(b, {
3375
+ let r = e * (d ? .75 : .795), i = t * (d ? .23 : .275), a = Math.min(e, t) * (d ? .185 : .165) * Math.min(1.3, C.sunIntensity);
3376
+ L(b, r, i, a * 1.08, a * 1.05, .15, E.energySecondary, E.energySecondary, .88 * Math.min(1, C.sunIntensity), s + 11), b.save(), b.beginPath(), b.arc(r, i, a * .94, 0, Math.PI * 2), b.fillStyle = _(E.energySecondary, .94 * Math.min(1, C.sunIntensity)), b.fill(), b.restore(), O(b, {
3268
3377
  spine: m(r, i, a * .92, a * .92, -Math.PI * .85, Math.PI * .95, 0, 0, 64, .12, s + 23),
3269
3378
  maxWidth: a * .24,
3270
3379
  bristleCount: 16,
3271
3380
  dryBrushGap: .46,
3272
3381
  taperStart: .5,
3273
3382
  taperEnd: .92,
3274
- color: D.energySecondary,
3275
- alpha: .95 * Math.min(1, T.sunIntensity),
3383
+ color: E.energySecondary,
3384
+ alpha: .95 * Math.min(1, C.sunIntensity),
3276
3385
  headReach: 1,
3277
3386
  seed: s + 29
3278
3387
  }), b.restore();
3279
3388
  }
3280
3389
  let x = i.getContext("2d");
3281
3390
  if (x) {
3282
- if (x.save(), x.setTransform(n, 0, 0, n, 0, 0), x.clearRect(0, 0, e, t), T.mountainIntensity > .02) {
3283
- let n = e * (d ? .68 : .735), r = t * (d ? .52 : .485), i = e * (d ? .065 : .046), a = e * (d ? .16 : .33), o = e * .99, c = t * .79, u = Math.min(1, T.mountainIntensity);
3391
+ if (x.save(), x.setTransform(n, 0, 0, n, 0, 0), x.clearRect(0, 0, e, t), C.mountainIntensity > .02) {
3392
+ let n = e * (d ? .68 : .735), r = t * (d ? .52 : .485), i = e * (d ? .065 : .046), a = e * (d ? .16 : .33), o = e * .99, c = t * .79, u = Math.min(1, C.mountainIntensity);
3284
3393
  x.save(), x.beginPath(), x.moveTo(a, c), x.quadraticCurveTo(e * (d ? .48 : .58), t * .68, n - i, r + 4 * y), x.lineTo(n - i * .3, r), x.lineTo(n + i * .45, r + 2 * y), x.lineTo(n + i, r + 6 * y), x.quadraticCurveTo(e * .84, t * .65, o, c - 12 * y), x.closePath();
3285
3394
  let f = x.createLinearGradient(n, r, n, c);
3286
- f.addColorStop(0, _(D.inkPrimary, .92 * u)), f.addColorStop(.45, _(v(D.inkPrimary, D.sporeAccent, .45), .78 * u)), f.addColorStop(.85, _(D.sporeAccent, .32 * u)), f.addColorStop(1, _(D.sporeAccent, 0)), x.fillStyle = f, x.fill(), x.restore(), E(x, {
3395
+ f.addColorStop(0, _(E.inkPrimary, .92 * u)), f.addColorStop(.45, _(v(E.inkPrimary, E.sporeAccent, .45), .78 * u)), f.addColorStop(.85, _(E.sporeAccent, .32 * u)), f.addColorStop(1, _(E.sporeAccent, 0)), x.fillStyle = f, x.fill(), x.restore(), O(x, {
3287
3396
  spine: p({
3288
3397
  x: n - i,
3289
3398
  y: r + 4 * y
@@ -3299,11 +3408,11 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3299
3408
  dryBrushGap: .38,
3300
3409
  taperStart: .4,
3301
3410
  taperEnd: .95,
3302
- color: D.inkPrimary,
3411
+ color: E.inkPrimary,
3303
3412
  alpha: .88 * u,
3304
3413
  headReach: 1,
3305
3414
  seed: s + 107
3306
- }), E(x, {
3415
+ }), O(x, {
3307
3416
  spine: p({
3308
3417
  x: n + i,
3309
3418
  y: r + 5 * y
@@ -3319,7 +3428,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3319
3428
  dryBrushGap: .42,
3320
3429
  taperStart: .4,
3321
3430
  taperEnd: .95,
3322
- color: D.inkPrimary,
3431
+ color: E.inkPrimary,
3323
3432
  alpha: .85 * u,
3324
3433
  headReach: 1,
3325
3434
  seed: s + 113
@@ -3327,7 +3436,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3327
3436
  let m = l(s + 151);
3328
3437
  for (let a = 0; a < 12; a++) {
3329
3438
  let o = a / 11 * 2 - 1, c = n + o * i * .92, l = r + Math.abs(o) * 6 * y, d = n + o * e * (.14 + m() * .08), f = r + t * (.11 + m() * .09);
3330
- E(x, {
3439
+ O(x, {
3331
3440
  spine: p({
3332
3441
  x: c,
3333
3442
  y: l
@@ -3343,7 +3452,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3343
3452
  dryBrushGap: .32,
3344
3453
  taperStart: .25,
3345
3454
  taperEnd: .92,
3346
- color: a % 2 == 0 ? "#FAF8F5" : D.inkPrimary,
3455
+ color: a % 2 == 0 ? "#FAF8F5" : E.inkPrimary,
3347
3456
  alpha: (a % 2 == 0 ? .95 : .78) * u,
3348
3457
  headReach: 1,
3349
3458
  roundHeadCap: !1,
@@ -3351,26 +3460,26 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3351
3460
  });
3352
3461
  }
3353
3462
  }
3354
- let r = Math.min(1, T.waterReflectionIntensity), a = Math.min(1, T.mistKumoIntensity);
3463
+ let r = Math.min(1, C.waterReflectionIntensity), a = Math.min(1, C.mistKumoIntensity);
3355
3464
  if (a > .02) {
3356
3465
  let n = null;
3357
3466
  try {
3358
- n = Ke.canvas(i);
3467
+ n = Je.canvas(i);
3359
3468
  } catch {
3360
3469
  n = null;
3361
3470
  }
3362
3471
  let r = {
3363
- ...S,
3472
+ ...w,
3364
3473
  colors: {
3365
- inkPrimary: v(D.sporeAccent, "#D6D1C7", .6),
3474
+ inkPrimary: v(E.sporeAccent, "#D6D1C7", .6),
3366
3475
  energySecondary: "#EFECE4",
3367
3476
  coreGlow: "#FAF8F4",
3368
- sporeAccent: D.sporeAccent
3477
+ sporeAccent: E.sporeAccent
3369
3478
  }
3370
3479
  };
3371
3480
  for (let i = 0; i < 4; i++) {
3372
3481
  let o = e * (.45 + i * .14), c = t * (.75 + i % 2 * .03);
3373
- M(x, n, r, y, {
3482
+ P(x, n, r, y, {
3374
3483
  startX: o - 75 * y,
3375
3484
  startY: c,
3376
3485
  endX: o + 75 * y,
@@ -3385,7 +3494,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3385
3494
  }
3386
3495
  if (r > .02) {
3387
3496
  let n = t * .845;
3388
- E(x, {
3497
+ O(x, {
3389
3498
  spine: f({
3390
3499
  x: e * (d ? .46 : .56),
3391
3500
  y: n + 6 * y
@@ -3404,7 +3513,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3404
3513
  dryBrushGap: .22,
3405
3514
  taperStart: .75,
3406
3515
  taperEnd: .65,
3407
- color: D.inkPrimary,
3516
+ color: E.inkPrimary,
3408
3517
  alpha: .94 * r,
3409
3518
  headReach: 1,
3410
3519
  seed: s + 521
@@ -3445,14 +3554,14 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3445
3554
  x: e.x,
3446
3555
  y: e.y - e.h
3447
3556
  }, 16, .15, s + 600 + t);
3448
- E(x, {
3557
+ O(x, {
3449
3558
  spine: n,
3450
3559
  maxWidth: 4.2 * y,
3451
3560
  bristleCount: 5,
3452
3561
  dryBrushGap: .15,
3453
3562
  taperStart: .2,
3454
3563
  taperEnd: .7,
3455
- color: D.inkPrimary,
3564
+ color: E.inkPrimary,
3456
3565
  alpha: .95 * r,
3457
3566
  seed: s + 610 + t
3458
3567
  });
@@ -3467,14 +3576,14 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3467
3576
  x: e.x + a,
3468
3577
  y: i + 2 * y
3469
3578
  }, 18, .2, s + 630 + t * 10 + n);
3470
- E(x, {
3579
+ O(x, {
3471
3580
  spine: o,
3472
3581
  maxWidth: 9 * y,
3473
3582
  bristleCount: 7,
3474
3583
  dryBrushGap: .3,
3475
3584
  taperStart: .7,
3476
3585
  taperEnd: .7,
3477
- color: D.inkPrimary,
3586
+ color: E.inkPrimary,
3478
3587
  alpha: .92 * r,
3479
3588
  seed: s + 650 + t * 10 + n
3480
3589
  });
@@ -3484,10 +3593,10 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3484
3593
  x.restore();
3485
3594
  }
3486
3595
  g = [];
3487
- let C = a.getContext("2d");
3488
- if (C && T.sakuraBranchIntensity > .02) {
3489
- C.save(), C.setTransform(n, 0, 0, n, 0, 0), C.clearRect(0, 0, e, t);
3490
- let r = Math.min(1, T.sakuraBranchIntensity), i = f({
3596
+ let S = a.getContext("2d");
3597
+ if (S && C.sakuraBranchIntensity > .02) {
3598
+ S.save(), S.setTransform(n, 0, 0, n, 0, 0), S.clearRect(0, 0, e, t);
3599
+ let r = Math.min(1, C.sakuraBranchIntensity), i = f({
3491
3600
  x: -24 * y,
3492
3601
  y: t * .68
3493
3602
  }, {
@@ -3500,14 +3609,14 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3500
3609
  x: e * .46,
3501
3610
  y: -t * .08
3502
3611
  }, 80, .28, s + 701);
3503
- E(C, {
3612
+ O(S, {
3504
3613
  spine: i,
3505
- maxWidth: 44 * y * Math.min(1.25, T.sakuraBranchIntensity),
3614
+ maxWidth: 44 * y * Math.min(1.25, C.sakuraBranchIntensity),
3506
3615
  bristleCount: 24,
3507
3616
  dryBrushGap: .28,
3508
3617
  taperStart: .1,
3509
3618
  taperEnd: .99,
3510
- color: D.inkPrimary,
3619
+ color: E.inkPrimary,
3511
3620
  alpha: .96 * r,
3512
3621
  headReach: 1,
3513
3622
  roundHeadCap: !0,
@@ -3612,25 +3721,25 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3612
3721
  ], o = [i];
3613
3722
  if (a.forEach((e, t) => {
3614
3723
  let n = f(e.p0, e.p1, e.p2, e.p3, 48, .24, s + 750 + t * 31);
3615
- o.push(n), E(C, {
3724
+ o.push(n), O(S, {
3616
3725
  spine: n,
3617
- maxWidth: e.width * Math.min(1.25, T.sakuraBranchIntensity),
3726
+ maxWidth: e.width * Math.min(1.25, C.sakuraBranchIntensity),
3618
3727
  bristleCount: 14,
3619
3728
  dryBrushGap: .26,
3620
3729
  taperStart: .12,
3621
3730
  taperEnd: .99,
3622
- color: D.inkPrimary,
3731
+ color: E.inkPrimary,
3623
3732
  alpha: .95 * r,
3624
3733
  headReach: 1,
3625
3734
  roundHeadCap: !1,
3626
3735
  seed: s + 760 + t * 31
3627
3736
  });
3628
- }), T.sakuraPetalsIntensity > .02) {
3737
+ }), C.sakuraPetalsIntensity > .02) {
3629
3738
  let e = l(s + 881);
3630
3739
  o.forEach((t, n) => {
3631
3740
  let r = n === 0 ? 18 : 11;
3632
3741
  for (let i = 0; i < r; i++) {
3633
- let a = .12 + i / Math.max(1, r - 1) * .87, o = t[Math.min(t.length - 1, Math.floor(a * (t.length - 1)))], c = 1 - a * .55, l = (e() - .45) * 26 * y * c, u = o.x + o.nx * l, d = o.y + o.ny * l, f = (8.5 + e() * 10.5) * y * Math.min(1.25, T.sakuraPetalsIntensity), p = .48 + a * .26 + n * .025 + e() * .05;
3742
+ let a = .12 + i / Math.max(1, r - 1) * .87, o = t[Math.min(t.length - 1, Math.floor(a * (t.length - 1)))], c = 1 - a * .55, l = (e() - .45) * 26 * y * c, u = o.x + o.nx * l, d = o.y + o.ny * l, f = (8.5 + e() * 10.5) * y * Math.min(1.25, C.sakuraPetalsIntensity), p = .48 + a * .26 + n * .025 + e() * .05;
3634
3743
  g.push({
3635
3744
  bx: u,
3636
3745
  by: d,
@@ -3642,77 +3751,77 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3642
3751
  }
3643
3752
  });
3644
3753
  }
3645
- C.restore();
3754
+ S.restore();
3646
3755
  }
3647
- let w = o.getContext("2d");
3648
- if (w) {
3649
- w.save(), w.setTransform(1, 0, 0, 1, 0, 0), w.clearRect(0, 0, c, u), w.drawImage(r, 0, 0), w.drawImage(i, 0, 0), w.drawImage(a, 0, 0), w.setTransform(n, 0, 0, n, 0, 0);
3650
- let e = Math.min(1, T.sakuraPetalsIntensity);
3756
+ let T = o.getContext("2d");
3757
+ if (T) {
3758
+ T.save(), T.setTransform(1, 0, 0, 1, 0, 0), T.clearRect(0, 0, c, u), T.drawImage(r, 0, 0), T.drawImage(i, 0, 0), T.drawImage(a, 0, 0), T.setTransform(n, 0, 0, n, 0, 0);
3759
+ let e = Math.min(1, C.sakuraPetalsIntensity);
3651
3760
  g.forEach((t) => {
3652
- let n = w.createRadialGradient(t.bx, t.by, 0, t.bx, t.by, t.radius * 1.45);
3653
- n.addColorStop(0, _(D.energySecondary, .22 * e)), n.addColorStop(.65, _(D.energySecondary, .08 * e)), n.addColorStop(1, _(D.energySecondary, 0)), w.fillStyle = n, w.beginPath(), w.arc(t.bx, t.by, t.radius * 1.45, 0, Math.PI * 2), w.fill(), L(w, t.bx, t.by, t.radius, t.angle, D.energySecondary, D.coreGlow, D.inkPrimary, .95 * e, t.seed);
3654
- }), w.restore();
3761
+ let n = T.createRadialGradient(t.bx, t.by, 0, t.bx, t.by, t.radius * 1.45);
3762
+ n.addColorStop(0, _(E.energySecondary, .22 * e)), n.addColorStop(.65, _(E.energySecondary, .08 * e)), n.addColorStop(1, _(E.energySecondary, 0)), T.fillStyle = n, T.beginPath(), T.arc(t.bx, t.by, t.radius * 1.45, 0, Math.PI * 2), T.fill(), z(T, t.bx, t.by, t.radius, t.angle, E.energySecondary, E.coreGlow, E.inkPrimary, .95 * e, t.seed);
3763
+ }), T.restore();
3655
3764
  }
3656
- }, N = (f) => {
3765
+ }, M = (f) => {
3657
3766
  if (!b.current && e === 1) {
3658
- c && (O = requestAnimationFrame(N));
3767
+ c && (D = requestAnimationFrame(M));
3659
3768
  return;
3660
3769
  }
3661
- let m = Math.min(1.75, window.devicePixelRatio || 1), v = Math.max(300, Math.floor(k.width || t.clientWidth || 800)), y = Math.max(220, Math.floor(k.height || t.clientHeight || 500)), S = Math.floor(v * m), A = Math.floor(y * m);
3662
- (t.width !== S || t.height !== A) && (t.width = S, t.height = A, C = "");
3663
- let M = `${S}x${A}:${s}:${T.sunIntensity}:${T.mountainIntensity}:${T.sakuraBranchIntensity}:${T.sakuraPetalsIntensity}:${T.waterReflectionIntensity}:${T.mistKumoIntensity}:${D.inkPrimary}:${D.energySecondary}`;
3664
- C !== M && (j(v, y, m), C = M);
3770
+ let m = Math.min(1.75, window.devicePixelRatio || 1), v = Math.max(300, Math.floor(k.width || t.clientWidth || 800)), y = Math.max(220, Math.floor(k.height || t.clientHeight || 500)), w = Math.floor(v * m), A = Math.floor(y * m);
3771
+ (t.width !== w || t.height !== A) && (t.width = w, t.height = A, T = "");
3772
+ let N = `${w}x${A}:${s}:${C.sunIntensity}:${C.mountainIntensity}:${C.sakuraBranchIntensity}:${C.sakuraPetalsIntensity}:${C.waterReflectionIntensity}:${C.mistKumoIntensity}:${E.inkPrimary}:${E.energySecondary}`;
3773
+ T !== N && (j(v, y, m), T = N);
3665
3774
  let P = t.getContext("2d");
3666
3775
  if (!P) return;
3667
- let F = (f - w.current) / 1e3, I = Math.min(1, F / 2.4), z = n?.current === void 0 ? e === void 0 ? I : e : n.current, B = Math.max(0, Math.min(1, z)), V = c ? F * u : 1.5, H = x.current, U = H.active ? H.x : .5, W = H.active ? H.y : .5;
3776
+ let F = (f - S.current) / 1e3, I = Math.min(1, F / 2.4), L = n?.current === void 0 ? e === void 0 ? I : e : n.current, R = Math.max(0, Math.min(1, L)), V = c ? F * u : 1.5, H = x.current, U = H.active ? H.x : .5, W = H.active ? H.y : .5;
3668
3777
  H.smoothX += (U - H.smoothX) * .08, H.smoothY += (W - H.smoothY) * .08;
3669
3778
  let G = v < 640, K = Math.min(v / (G ? 720 : 1200), y / 700), q = (H.smoothX - .5) * 14 * K, J = (H.smoothY - .5) * 8 * K;
3670
- if (P.save(), P.setTransform(m, 0, 0, m, 0, 0), P.clearRect(0, 0, v, y), B >= .998) P.drawImage(o, q * .35, J * .3, v, y);
3779
+ if (P.save(), P.setTransform(m, 0, 0, m, 0, 0), P.clearRect(0, 0, v, y), R >= .998) P.drawImage(o, q * .35, J * .3, v, y);
3671
3780
  else {
3672
- let e = v * (G ? .75 : .795) + q * .35, t = y * (G ? .23 : .275) + J * .25, n = Math.min(v, y) * (G ? .185 : .165) * Math.min(1.3, T.sunIntensity), o = Math.max(0, Math.min(1, B / .44));
3673
- if (T.sunIntensity > .02 && o > .005) {
3781
+ let e = v * (G ? .75 : .795) + q * .35, t = y * (G ? .23 : .275) + J * .25, n = Math.min(v, y) * (G ? .185 : .165) * Math.min(1.3, C.sunIntensity), o = Math.max(0, Math.min(1, R / .44));
3782
+ if (C.sunIntensity > .02 && o > .005) {
3674
3783
  let i = 1 - (1 - o) ** 3, a = n * (.35 + i * .95), s = P.createRadialGradient(e, t, a * .08, e, t, a);
3675
- s.addColorStop(0, _(D.energySecondary, .85 * i)), s.addColorStop(.65, _(D.energySecondary, .55 * i)), s.addColorStop(.88, _(D.energySecondary, .24 * i)), s.addColorStop(1, _(D.energySecondary, 0)), P.save(), P.fillStyle = s, P.beginPath(), P.arc(e, t, a, 0, Math.PI * 2), P.fill(), P.globalAlpha = o ** 1.4, P.drawImage(r, q * .35, J * .3, v, y), P.restore();
3784
+ s.addColorStop(0, _(E.energySecondary, .85 * i)), s.addColorStop(.65, _(E.energySecondary, .55 * i)), s.addColorStop(.88, _(E.energySecondary, .24 * i)), s.addColorStop(1, _(E.energySecondary, 0)), P.save(), P.fillStyle = s, P.beginPath(), P.arc(e, t, a, 0, Math.PI * 2), P.fill(), P.globalAlpha = o ** 1.4, P.drawImage(r, q * .35, J * .3, v, y), P.restore();
3676
3785
  }
3677
- let s = Math.max(0, Math.min(1, (B - .1) / .52));
3786
+ let s = Math.max(0, Math.min(1, (R - .1) / .52));
3678
3787
  if (s > .005) {
3679
3788
  let e = h.getContext("2d");
3680
3789
  if (e) {
3681
- e.save(), e.setTransform(1, 0, 0, 1, 0, 0), e.clearRect(0, 0, S, A), e.drawImage(i, 0, 0), e.setTransform(m, 0, 0, m, 0, 0), e.globalCompositeOperation = "destination-in";
3790
+ e.save(), e.setTransform(1, 0, 0, 1, 0, 0), e.clearRect(0, 0, w, A), e.drawImage(i, 0, 0), e.setTransform(m, 0, 0, m, 0, 0), e.globalCompositeOperation = "destination-in";
3682
3791
  let t = 1 - (1 - s) ** 2.5, n = v * .72, r = y * .65, a = Math.hypot(v * .75, y * .6) * t, o = e.createRadialGradient(n, r, a * .2, n, r, Math.max(10, a));
3683
3792
  o.addColorStop(0, "rgba(0,0,0,1)"), o.addColorStop(.82, "rgba(0,0,0,0.92)"), o.addColorStop(1, "rgba(0,0,0,0)"), e.fillStyle = o, e.fillRect(0, 0, v, y), e.restore(), P.drawImage(h, q * .35, J * .3, v, y);
3684
3793
  }
3685
3794
  }
3686
- let c = Math.max(0, Math.min(1, (B - .08) / .46));
3687
- if (T.sakuraBranchIntensity > .02 && c > .005) {
3795
+ let c = Math.max(0, Math.min(1, (R - .08) / .46));
3796
+ if (C.sakuraBranchIntensity > .02 && c > .005) {
3688
3797
  let e = h.getContext("2d");
3689
3798
  if (e) {
3690
- e.save(), e.setTransform(1, 0, 0, 1, 0, 0), e.clearRect(0, 0, S, A), e.drawImage(a, 0, 0), e.setTransform(m, 0, 0, m, 0, 0), e.globalCompositeOperation = "destination-in";
3799
+ e.save(), e.setTransform(1, 0, 0, 1, 0, 0), e.clearRect(0, 0, w, A), e.drawImage(a, 0, 0), e.setTransform(m, 0, 0, m, 0, 0), e.globalCompositeOperation = "destination-in";
3691
3800
  let t = 1 - (1 - c) ** 2.2, n = Math.hypot(v * .68, y * .85) * 1.12, r = Math.max(12, n * t), i = y * .64, o = e.createRadialGradient(0, i, r * .55, 0, i, r);
3692
3801
  o.addColorStop(0, "rgba(0,0,0,1)"), o.addColorStop(.85, "rgba(0,0,0,1)"), o.addColorStop(1, "rgba(0,0,0,0)"), e.fillStyle = o, e.fillRect(0, 0, v, y), e.restore(), P.drawImage(h, q * .35, J * .3, v, y);
3693
3802
  }
3694
3803
  }
3695
- if (T.sakuraPetalsIntensity > .02 && B > .48) {
3696
- let e = Math.min(1, T.sakuraPetalsIntensity);
3804
+ if (C.sakuraPetalsIntensity > .02 && R > .48) {
3805
+ let e = Math.min(1, C.sakuraPetalsIntensity);
3697
3806
  P.save(), P.translate(q * .35, J * .3);
3698
3807
  for (let t = 0; t < g.length; t++) {
3699
- let n = g[t], r = (B - n.stainStart) / .16;
3808
+ let n = g[t], r = (R - n.stainStart) / .16;
3700
3809
  if (r <= .01) continue;
3701
3810
  let i = Math.min(1, r), a = 1 - (1 - i) ** 3, o = n.radius * (.4 + a * 1.25), s = i < .5 ? i / .5 * .42 * e : (.42 - (i - .5) / .5 * .2) * e, c = P.createRadialGradient(n.bx, n.by, 0, n.bx, n.by, o);
3702
- if (c.addColorStop(0, _(D.energySecondary, s * 1.3)), c.addColorStop(.6, _(D.energySecondary, s * .7)), c.addColorStop(1, _(D.energySecondary, 0)), P.fillStyle = c, P.beginPath(), P.arc(n.bx, n.by, o, 0, Math.PI * 2), P.fill(), i > .18) {
3811
+ if (c.addColorStop(0, _(E.energySecondary, s * 1.3)), c.addColorStop(.6, _(E.energySecondary, s * .7)), c.addColorStop(1, _(E.energySecondary, 0)), P.fillStyle = c, P.beginPath(), P.arc(n.bx, n.by, o, 0, Math.PI * 2), P.fill(), i > .18) {
3703
3812
  let t = 1 - (1 - Math.min(1, (i - .18) / .82)) ** 2.5;
3704
- L(P, n.bx, n.by, n.radius * (.45 + t * .55), n.angle, D.energySecondary, D.coreGlow, D.inkPrimary, .95 * e * t, n.seed);
3813
+ z(P, n.bx, n.by, n.radius * (.45 + t * .55), n.angle, E.energySecondary, E.coreGlow, E.inkPrimary, .95 * e * t, n.seed);
3705
3814
  }
3706
3815
  }
3707
3816
  P.restore();
3708
3817
  }
3709
3818
  }
3710
- let Y = Math.max(0, Math.min(1, B * 1.6));
3711
- if (T.sunIntensity > .02 && Y > .2) {
3712
- let e = v * (G ? .75 : .795) + q * .35, t = y * (G ? .23 : .275) + J * .25, n = Math.min(v, y) * (G ? .185 : .165) * Y ** .45 * Math.min(1.3, T.sunIntensity), r = l(s + 47);
3819
+ let Y = Math.max(0, Math.min(1, R * 1.6));
3820
+ if (C.sunIntensity > .02 && Y > .2) {
3821
+ let e = v * (G ? .75 : .795) + q * .35, t = y * (G ? .23 : .275) + J * .25, n = Math.min(v, y) * (G ? .185 : .165) * Y ** .45 * Math.min(1.3, C.sunIntensity), r = l(s + 47);
3713
3822
  for (let i = 0; i < 7; i++) {
3714
3823
  let a = t + n * (.58 + i / 7 * .72), o = n * (1.12 - Math.abs(i - 2.5) * .12 + Math.sin(V * 1.5 + i) * .04), c = (r() - .35) * n * .45;
3715
- E(P, {
3824
+ O(P, {
3716
3825
  spine: p({
3717
3826
  x: e - o + c,
3718
3827
  y: a
@@ -3728,20 +3837,20 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3728
3837
  dryBrushGap: .48,
3729
3838
  taperStart: .85,
3730
3839
  taperEnd: .85,
3731
- color: D.energySecondary,
3732
- alpha: (.8 - i * .06) * Math.min(1, T.sunIntensity) * Y,
3840
+ color: E.energySecondary,
3841
+ alpha: (.8 - i * .06) * Math.min(1, C.sunIntensity) * Y,
3733
3842
  headReach: Y,
3734
3843
  roundHeadCap: !1,
3735
3844
  seed: s + i * 41
3736
3845
  });
3737
3846
  }
3738
3847
  }
3739
- let ee = Math.max(0, Math.min(1, (B - .2) * 1.4));
3740
- if (T.waterReflectionIntensity > .02 && ee > .15) {
3741
- let e = Math.min(1, T.waterReflectionIntensity), t = l(s + 401);
3848
+ let ee = Math.max(0, Math.min(1, (R - .2) * 1.4));
3849
+ if (C.waterReflectionIntensity > .02 && ee > .15) {
3850
+ let e = Math.min(1, C.waterReflectionIntensity), t = l(s + 401);
3742
3851
  for (let n = 0; n < 9; n++) {
3743
3852
  let r = y * (.81 + n / 9 * .16), i = v * (.28 + t() * .62) + Math.sin(V * .9 + n) * 8 * K, a = v * (.08 + t() * .16);
3744
- E(P, {
3853
+ O(P, {
3745
3854
  spine: p({
3746
3855
  x: i - a,
3747
3856
  y: r
@@ -3757,7 +3866,7 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3757
3866
  dryBrushGap: .52,
3758
3867
  taperStart: .85,
3759
3868
  taperEnd: .85,
3760
- color: n % 3 == 0 ? D.inkPrimary : D.sporeAccent,
3869
+ color: n % 3 == 0 ? E.inkPrimary : E.sporeAccent,
3761
3870
  alpha: (.22 + n % 3 * .11) * e * ee,
3762
3871
  headReach: ee,
3763
3872
  roundHeadCap: !1,
@@ -3765,31 +3874,31 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3765
3874
  });
3766
3875
  }
3767
3876
  }
3768
- if (T.sakuraPetalsIntensity > .05 && B > .62) {
3769
- let e = Math.min(1, (B - .62) / .3), t = l(s + 1201), n = Math.round((G ? 14 : 22) * Math.min(1.4, T.sakuraPetalsIntensity));
3877
+ if (C.sakuraPetalsIntensity > .05 && R > .62) {
3878
+ let e = Math.min(1, (R - .62) / .3), t = l(s + 1201), n = Math.round((G ? 14 : 22) * Math.min(1.4, C.sakuraPetalsIntensity));
3770
3879
  for (let r = 0; r < n; r++) {
3771
3880
  let n = t() * v * .75, i = t() * y * .82, a = 18 + t() * 24, o = (n + V * a * 1.35 + Math.sin(V * 1.5 + r) * 20 * K) % (v * .95), c = (i + V * a * .65 + Math.cos(V * 1.1 + r) * 12 * K) % (y * .88), l = d(o * .005, c * .005, s + r);
3772
- R(P, o, c, (5.5 + r % 4 * 2) * K, V * (1.2 + r % 3 * .4) + l * Math.PI, .35 + .6 * Math.abs(Math.sin(V * 2.1 + r)), D.energySecondary, .88 * e);
3881
+ B(P, o, c, (5.5 + r % 4 * 2) * K, V * (1.2 + r % 3 * .4) + l * Math.PI, .35 + .6 * Math.abs(Math.sin(V * 2.1 + r)), E.energySecondary, .88 * e);
3773
3882
  }
3774
3883
  }
3775
- P.restore(), (c || e === void 0 && !n) && (O = requestAnimationFrame(N));
3884
+ P.restore(), (c || e === void 0 && !n) && (D = requestAnimationFrame(M));
3776
3885
  };
3777
- return O = requestAnimationFrame(N), () => {
3778
- cancelAnimationFrame(O), A.disconnect();
3886
+ return D = requestAnimationFrame(M), () => {
3887
+ cancelAnimationFrame(D), A.disconnect();
3779
3888
  };
3780
3889
  }, [
3781
3890
  e,
3782
3891
  n,
3783
- T.sunIntensity,
3784
- T.mountainIntensity,
3785
- T.sakuraBranchIntensity,
3786
- T.sakuraPetalsIntensity,
3787
- T.waterReflectionIntensity,
3788
- T.mistKumoIntensity,
3789
- D.inkPrimary,
3790
- D.energySecondary,
3791
- D.coreGlow,
3792
- D.sporeAccent,
3892
+ C.sunIntensity,
3893
+ C.mountainIntensity,
3894
+ C.sakuraBranchIntensity,
3895
+ C.sakuraPetalsIntensity,
3896
+ C.waterReflectionIntensity,
3897
+ C.mistKumoIntensity,
3898
+ E.inkPrimary,
3899
+ E.energySecondary,
3900
+ E.coreGlow,
3901
+ E.sporeAccent,
3793
3902
  s,
3794
3903
  c,
3795
3904
  u
@@ -3805,13 +3914,13 @@ var Ze = ({ src: e = "/assets/aistudio/image_8f7809d3.png", alt: n = "Pintura Su
3805
3914
  },
3806
3915
  className: `block w-full h-full select-none ${h}`
3807
3916
  });
3808
- }, $e = {
3917
+ }, tt = {
3809
3918
  inkPrimary: "#141413",
3810
3919
  energySecondary: "#C8232C",
3811
3920
  coreGlow: "#FFF5F5",
3812
3921
  sporeAccent: "#4A4742"
3813
3922
  };
3814
- function et(e, t = 880, n = 460) {
3923
+ function nt(e, t = 880, n = 460) {
3815
3924
  let r = (e) => e / 880 * t, i = (e) => e / 460 * n, a = Math.max(.55, Math.min(t / 820, n / 440));
3816
3925
  return [
3817
3926
  {
@@ -4009,10 +4118,10 @@ function et(e, t = 880, n = 460) {
4009
4118
  }
4010
4119
  ];
4011
4120
  }
4012
- function tt(e, t, n = 1) {
4121
+ function rt(e, t, n = 1) {
4013
4122
  if (t.points.length < 2 || n <= .01) return;
4014
4123
  let r = h(t.points, .14, t.seed), i = t.points.reduce((e, t) => e + t.pressure, 0) / t.points.length, a = 32 * t.thickness * (.45 + i * .85), { inkPrimary: o, energySecondary: s, coreGlow: c, sporeAccent: u } = t.colors, d = {
4015
- ...S,
4124
+ ...w,
4016
4125
  colors: t.colors,
4017
4126
  seed: t.seed
4018
4127
  };
@@ -4020,11 +4129,11 @@ function tt(e, t, n = 1) {
4020
4129
  let c = Math.max(1, Math.floor(r.length / 7)), l = Math.max(1, Math.floor(r.length * n));
4021
4130
  for (let n = 0; n < l; n += c) {
4022
4131
  let c = r[n], l = Math.atan2(-c.nx, c.ny);
4023
- F(e, c.x, c.y, a * .95 * (.6 + i * .6), a * .82 * (.6 + i * .6), l, s, o, .52, t.seed + n * 19);
4132
+ L(e, c.x, c.y, a * .95 * (.6 + i * .6), a * .82 * (.6 + i * .6), l, s, o, .52, t.seed + n * 19);
4024
4133
  }
4025
4134
  } else if (t.brushType === "sumi_kasure") {
4026
4135
  let i = r[Math.floor(r.length * .45)], s = Math.atan2(-r[0].nx, r[0].ny);
4027
- F(e, i.x, i.y, a * 1.3, a * .7, s, u, o, .16 * n, t.seed + 7), E(e, {
4136
+ L(e, i.x, i.y, a * 1.3, a * .7, s, u, o, .16 * n, t.seed + 7), O(e, {
4028
4137
  spine: r,
4029
4138
  maxWidth: a,
4030
4139
  bristleCount: t.bristleCount,
@@ -4037,7 +4146,7 @@ function tt(e, t, n = 1) {
4037
4146
  seed: t.seed
4038
4147
  });
4039
4148
  } else if (t.brushType === "sakura_branch") {
4040
- E(e, {
4149
+ O(e, {
4041
4150
  spine: r,
4042
4151
  maxWidth: a * .82,
4043
4152
  bristleCount: t.bristleCount,
@@ -4053,12 +4162,12 @@ function tt(e, t, n = 1) {
4053
4162
  for (let n = 2; n < d; n += 3) {
4054
4163
  if (u() < .22) continue;
4055
4164
  let l = r[n], d = (u() - .48) * a * 1.15, f = l.x + l.nx * d, p = l.y + l.ny * d, m = (6.5 + u() * 8.5) * (.7 + i * .5);
4056
- u() > .55 && F(e, f, p, m * 1.45, m * 1.35, u() * Math.PI, s, o, .24, t.seed + n * 41), L(e, f, p, m, u() * Math.PI * 2, s, c, o, .94, t.seed + n * 29);
4165
+ u() > .55 && L(e, f, p, m * 1.45, m * 1.35, u() * Math.PI, s, o, .24, t.seed + n * 41), z(e, f, p, m, u() * Math.PI * 2, s, c, o, .94, t.seed + n * 29);
4057
4166
  }
4058
- } else if (t.brushType === "hokusai_wave") j(e, null, r.slice(0, Math.max(6, Math.floor(r.length * n))), a * 1.35, 1, 6, d, 1, .95, t.seed);
4167
+ } else if (t.brushType === "hokusai_wave") N(e, null, r.slice(0, Math.max(6, Math.floor(r.length * n))), a * 1.35, 1, 6, d, 1, .95, t.seed);
4059
4168
  else if (t.brushType === "suibokuga_flame") {
4060
4169
  let i = r[0], o = r[Math.floor(r.length * .33 * n)] || i, s = r[Math.floor(r.length * .66 * n)] || o, c = r[Math.max(1, Math.floor((r.length - 1) * n))] || s;
4061
- O(e, null, d, 1, {
4170
+ A(e, null, d, 1, {
4062
4171
  rootX: i.x,
4063
4172
  rootY: i.y,
4064
4173
  ctrl1X: o.x,
@@ -4074,7 +4183,7 @@ function tt(e, t, n = 1) {
4074
4183
  });
4075
4184
  } else if (t.brushType === "kumo_cloud") {
4076
4185
  let i = r[0], o = r[Math.max(1, Math.floor((r.length - 1) * n))] || i;
4077
- M(e, null, d, 1, {
4186
+ P(e, null, d, 1, {
4078
4187
  startX: i.x,
4079
4188
  startY: i.y,
4080
4189
  endX: o.x,
@@ -4086,7 +4195,7 @@ function tt(e, t, n = 1) {
4086
4195
  });
4087
4196
  }
4088
4197
  }
4089
- var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s = 1.25, bristleCount: c = 26, dryBrushGap: l = .32, activeLayer: u = "foreground", layerOpacities: d = {
4198
+ var it = ({ activeBrush: n = "sakura_branch", colors: a = tt, strokeThickness: s = 1.25, bristleCount: c = 26, dryBrushGap: l = .32, activeLayer: u = "foreground", layerOpacities: d = {
4090
4199
  background: 1,
4091
4200
  midground: 1,
4092
4201
  foreground: 1
@@ -4117,7 +4226,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4117
4226
  ].forEach((t) => {
4118
4227
  let n = d[t] ?? 1;
4119
4228
  n <= .01 || (e.save(), e.globalAlpha = n, S.current.forEach((n) => {
4120
- n.layerId === t && tt(e, n, 1);
4229
+ n.layerId === t && rt(e, n, 1);
4121
4230
  }), e.restore());
4122
4231
  }), e.restore();
4123
4232
  }, [
@@ -4128,7 +4237,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4128
4237
  let e = g.current;
4129
4238
  if (!e) return;
4130
4239
  let t = Math.min(1.75, window.devicePixelRatio || 1), n = Math.max(240, e.clientWidth || 640), r = Math.max(180, e.clientHeight || 420);
4131
- !C.current && n > 0 && r > 0 && (S.current = et(a, n, r), C.current = !0, v.current = !1), (e.width !== Math.floor(n * t) || e.height !== Math.floor(r * t)) && (e.width = Math.floor(n * t), e.height = Math.floor(r * t), v.current = !1), _.current ||= document.createElement("canvas");
4240
+ !C.current && n > 0 && r > 0 && (S.current = nt(a, n, r), C.current = !0, v.current = !1), (e.width !== Math.floor(n * t) || e.height !== Math.floor(r * t)) && (e.width = Math.floor(n * t), e.height = Math.floor(r * t), v.current = !1), _.current ||= document.createElement("canvas");
4132
4241
  let i = _.current;
4133
4242
  (i.width !== e.width || i.height !== e.height) && (i.width = e.width, i.height = e.height, v.current = !1);
4134
4243
  let o = e.getContext("2d"), s = i.getContext("2d");
@@ -4146,10 +4255,10 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4146
4255
  t <= .01 || (o.save(), o.globalAlpha = t, S.current.forEach((t, n) => {
4147
4256
  if (t.layerId !== e) return;
4148
4257
  let r = n / i, a = (n + 1) / i, s = Math.max(0, Math.min(1, (u - r) / (a - r)));
4149
- tt(o, t, s);
4258
+ rt(o, t, s);
4150
4259
  }), o.restore());
4151
4260
  }), o.restore();
4152
- } else v.current ||= (O(s, n, r, t), !0), o.save(), o.setTransform(t, 0, 0, t, 0, 0), o.clearRect(0, 0, n, r), o.drawImage(i, 0, 0, n, r), w.current && (o.globalAlpha = d[w.current.layerId] ?? 1, tt(o, w.current, 1)), o.restore();
4261
+ } else v.current ||= (O(s, n, r, t), !0), o.save(), o.setTransform(t, 0, 0, t, 0, 0), o.clearRect(0, 0, n, r), o.drawImage(i, 0, 0, n, r), w.current && (o.globalAlpha = d[w.current.layerId] ?? 1, rt(o, w.current, 1)), o.restore();
4153
4262
  }, [
4154
4263
  a,
4155
4264
  d,
@@ -4219,7 +4328,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4219
4328
  },
4220
4329
  loadFujiPresetStrokes: () => {
4221
4330
  let e = g.current, t = Math.max(260, e?.clientWidth || 880), n = Math.max(200, e?.clientHeight || 460);
4222
- S.current = et(a, t, n), D(), A();
4331
+ S.current = nt(a, t, n), D(), A();
4223
4332
  },
4224
4333
  exportPng: () => {
4225
4334
  let e = g.current;
@@ -4317,7 +4426,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4317
4426
  style: { touchAction: "none" },
4318
4427
  className: `block w-full h-full cursor-crosshair touch-none select-none ${h}`
4319
4428
  });
4320
- }, rt = ({ variant: e = "horizontal_kasure", inkColor: n = "#141413", accentColor: i = "#C8232C", bristleCount: a = 18, dryBrushGap: s = .36, thickness: c = 14, seed: l = 4096, animateOnMount: u = !0, className: d = "" }) => {
4429
+ }, at = ({ variant: e = "horizontal_kasure", inkColor: n = "#141413", accentColor: i = "#C8232C", bristleCount: a = 18, dryBrushGap: s = .36, thickness: c = 14, seed: l = 4096, animateOnMount: u = !0, className: d = "" }) => {
4321
4430
  let h = r(null);
4322
4431
  return t(() => {
4323
4432
  let t = h.current;
@@ -4331,7 +4440,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4331
4440
  let x = u ? Math.min(1, (h - o) / 950) : 1, S = 1 - (1 - x) ** 3.2;
4332
4441
  if (e === "enso_seal") {
4333
4442
  let e = Math.min(v, y) * .38;
4334
- E(b, {
4443
+ O(b, {
4335
4444
  spine: m(v * .5, y * .5, e, e * .96, -Math.PI * .8, Math.PI * .95, 0, -.05, 72, .12, l),
4336
4445
  maxWidth: c,
4337
4446
  bristleCount: a,
@@ -4342,7 +4451,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4342
4451
  headReach: S,
4343
4452
  seed: l
4344
4453
  });
4345
- } else if (e === "s_curve_flourish") E(b, {
4454
+ } else if (e === "s_curve_flourish") O(b, {
4346
4455
  spine: f({
4347
4456
  x: 12,
4348
4457
  y: y * .65
@@ -4379,7 +4488,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4379
4488
  x: v - 12,
4380
4489
  y: y * .42
4381
4490
  }, 72, .18, l);
4382
- E(b, {
4491
+ O(b, {
4383
4492
  spine: e,
4384
4493
  maxWidth: c,
4385
4494
  bristleCount: a,
@@ -4397,9 +4506,9 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4397
4506
  ].forEach((t, r) => {
4398
4507
  if (t > S) return;
4399
4508
  let a = e[Math.floor(t * (e.length - 1))];
4400
- a && L(b, a.x, a.y + (r % 2 == 0 ? -4 : 4), Math.min(y * .32, c * .75), r * .9, i, "#FFF5F5", n, .95, l + r * 31);
4509
+ a && z(b, a.x, a.y + (r % 2 == 0 ? -4 : 4), Math.min(y * .32, c * .75), r * .9, i, "#FFF5F5", n, .95, l + r * 31);
4401
4510
  });
4402
- } else E(b, {
4511
+ } else O(b, {
4403
4512
  spine: p({
4404
4513
  x: 8,
4405
4514
  y: y * .55
@@ -4435,24 +4544,24 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4435
4544
  ref: h,
4436
4545
  className: `block w-full select-none ${d}`
4437
4546
  });
4438
- }, it = ({ config: e, mode: n = "player", fixedFrame: i = null, size: a = 256, paused: s = !1, onFrameTick: c, className: l = "" }) => {
4547
+ }, ot = ({ config: e, mode: n = "player", fixedFrame: i = null, size: a = 256, paused: s = !1, onFrameTick: c, className: l = "" }) => {
4439
4548
  let u = r(null), d = r(0), f = r(!0), p = {
4440
- ...S,
4549
+ ...w,
4441
4550
  ...e,
4442
4551
  colors: {
4443
- ...S.colors,
4552
+ ...w.colors,
4444
4553
  ...e?.colors
4445
4554
  },
4446
4555
  brush: {
4447
- ...S.brush,
4556
+ ...w.brush,
4448
4557
  ...e?.brush
4449
4558
  },
4450
4559
  dynamics: {
4451
- ...S.dynamics,
4560
+ ...w.dynamics,
4452
4561
  ...e?.dynamics
4453
4562
  },
4454
4563
  rough: {
4455
- ...S.rough,
4564
+ ...w.rough,
4456
4565
  ...e?.rough
4457
4566
  }
4458
4567
  };
@@ -4472,14 +4581,14 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4472
4581
  let e = u.current;
4473
4582
  if (!e) return;
4474
4583
  if (n === "spritesheet") {
4475
- Je(e, p, 4);
4584
+ Xe(e, p, 4);
4476
4585
  return;
4477
4586
  }
4478
4587
  e.width = a, e.height = a;
4479
4588
  let t = e.getContext("2d");
4480
4589
  if (!t) return;
4481
4590
  let r = (e) => {
4482
- t.clearRect(0, 0, a, a), qe(t, e, p.totalFrames, a, a, p, p.bgMode === "checker" || p.bgMode === "transparent");
4591
+ t.clearRect(0, 0, a, a), Ye(t, e, p.totalFrames, a, a, p, p.bgMode === "checker" || p.bgMode === "transparent");
4483
4592
  };
4484
4593
  if (i !== null || s) {
4485
4594
  r(i === null ? d.current : i);
@@ -4501,8 +4610,8 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4501
4610
  ref: u,
4502
4611
  className: `block max-w-full h-auto select-none ${p.bgMode === "checker" ? "checker-bg" : ""} ${l}`
4503
4612
  });
4504
- }, at = ({ theme: e, scrollProgress: n = 1, scrollProgressRef: i, school: a = "fuji_sakura", seed: s = 8472, ambientMotion: c = !0, className: u = "" }) => {
4505
- let d = r(null), h = r(null), g = r(""), y = r(!0), x = r(performance.now());
4613
+ }, st = ({ theme: e, scrollProgress: n = 1, scrollProgressRef: i, school: a = "fuji_sakura", seed: s = 8472, ambientMotion: c = !0, className: u = "" }) => {
4614
+ let d = r(null), h = r(null), g = r(""), y = r(!0), b = r(performance.now());
4506
4615
  return t(() => {
4507
4616
  let t = d.current;
4508
4617
  if (!t || typeof IntersectionObserver > "u") return;
@@ -4523,23 +4632,23 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4523
4632
  let t = d.current;
4524
4633
  if (!t) return;
4525
4634
  h.current ||= document.createElement("canvas");
4526
- let r = h.current, o = 0, u = t.getBoundingClientRect(), C = new ResizeObserver((e) => {
4635
+ let r = h.current, o = 0, u = t.getBoundingClientRect(), x = new ResizeObserver((e) => {
4527
4636
  e[0] && (u = e[0].contentRect, g.current = "");
4528
4637
  });
4529
- C.observe(t);
4530
- let w = (t, n, r, i, o, c) => {
4638
+ x.observe(t);
4639
+ let C = (t, n, r, i, o, c) => {
4531
4640
  if (t.save(), t.setTransform(o, 0, 0, o, 0, 0), t.clearRect(0, 0, r, i), c <= .005) {
4532
4641
  t.restore();
4533
4642
  return;
4534
4643
  }
4535
- let l = r < 640, u = Math.min(r / (l ? 760 : 1280), Math.max(.62, i / 520)), d = b[a]?.colors ?? b.fuji_sakura.colors, h = {
4536
- ...S,
4644
+ let l = r < 640, u = Math.min(r / (l ? 760 : 1280), Math.max(.62, i / 520)), d = S[a]?.colors ?? S.fuji_sakura.colors, h = {
4645
+ ...w,
4537
4646
  school: a,
4538
4647
  colors: d,
4539
4648
  seed: s
4540
4649
  }, g = null;
4541
4650
  try {
4542
- g = Ke.canvas(n);
4651
+ g = Je.canvas(n);
4543
4652
  } catch {
4544
4653
  g = null;
4545
4654
  }
@@ -4547,7 +4656,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4547
4656
  let e = (r + 48) * c;
4548
4657
  t.save(), t.beginPath(), t.moveTo(-24, 0), t.lineTo(e, 0), t.quadraticCurveTo(e - 12, i * .62, Math.max(-24, e - 36), i - 4), t.bezierCurveTo(e * .68, i - 1, e * .32, i - 6, -24, i - 3), t.closePath();
4549
4658
  let n = t.createLinearGradient(0, 0, 0, i);
4550
- n.addColorStop(0, "rgba(245, 240, 230, 0.97)"), n.addColorStop(.78, "rgba(239, 232, 219, 0.95)"), n.addColorStop(1, "rgba(230, 221, 206, 0.88)"), t.fillStyle = n, t.fill(), t.restore(), E(t, {
4659
+ n.addColorStop(0, "rgba(245, 240, 230, 0.97)"), n.addColorStop(.78, "rgba(239, 232, 219, 0.95)"), n.addColorStop(1, "rgba(230, 221, 206, 0.88)"), t.fillStyle = n, t.fill(), t.restore(), O(t, {
4551
4660
  spine: f({
4552
4661
  x: -20,
4553
4662
  y: i * .5
@@ -4585,7 +4694,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4585
4694
  x: r + 20,
4586
4695
  y: i - 5
4587
4696
  }, 64, .04, s + 19);
4588
- if (E(t, {
4697
+ if (O(t, {
4589
4698
  spine: a,
4590
4699
  maxWidth: 5.5,
4591
4700
  bristleCount: 10,
@@ -4597,7 +4706,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4597
4706
  headReach: c,
4598
4707
  roundHeadCap: !0,
4599
4708
  seed: s + 23
4600
- }), E(t, {
4709
+ }), O(t, {
4601
4710
  spine: a,
4602
4711
  maxWidth: 3.2,
4603
4712
  bristleCount: 7,
@@ -4612,11 +4721,11 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4612
4721
  seed: s + 29
4613
4722
  }), c > .65) {
4614
4723
  let e = Math.min(.85, (c - .65) * 2.5);
4615
- R(t, r * .88, i - 7, 5.5, .4, .7, "#C8232C", e), R(t, r * .91, i - 4, 4.2, 1.2, .55, "#E11D48", e);
4724
+ B(t, r * .88, i - 7, 5.5, .4, .7, "#C8232C", e), B(t, r * .91, i - 4, 4.2, 1.2, .55, "#E11D48", e);
4616
4725
  }
4617
- } else if (e === "sakura_katana_canopy") F(t, r * .84, i * .18, r * .15 * c, r * .15 * c, 0, "#FFF5F5", "#C8232C", .2, s + 19), B(t, r + 18, i * .14, r * (l ? .56 : .65), i * .04, -1, Math.max(16, 26 * u), c, 0, d.inkPrimary, d.energySecondary, d.coreGlow, s + 101), B(t, -18, i * .94, r * (l ? .36 : .28), i * .81, 1, Math.max(15, 24 * u), c, 1.5, d.inkPrimary, d.energySecondary, d.coreGlow, s + 149);
4726
+ } else if (e === "sakura_katana_canopy") L(t, r * .84, i * .18, r * .15 * c, r * .15 * c, 0, "#FFF5F5", "#C8232C", .2, s + 19), H(t, r + 18, i * .14, r * (l ? .56 : .65), i * .04, -1, Math.max(16, 26 * u), c, 0, d.inkPrimary, d.energySecondary, d.coreGlow, s + 101), H(t, -18, i * .94, r * (l ? .36 : .28), i * .81, 1, Math.max(15, 24 * u), c, 1.5, d.inkPrimary, d.energySecondary, d.coreGlow, s + 149);
4618
4727
  else if (e === "koi_river_rapids") {
4619
- let e = b.calligraphy_tide.colors, n = {
4728
+ let e = S.calligraphy_tide.colors, n = {
4620
4729
  ...h,
4621
4730
  colors: e
4622
4731
  }, a = f({
@@ -4632,7 +4741,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4632
4741
  x: r * 1.05,
4633
4742
  y: i * .22
4634
4743
  }, 72, .1, s + 211);
4635
- E(t, {
4744
+ O(t, {
4636
4745
  spine: a,
4637
4746
  maxWidth: Math.max(95, 185 * u),
4638
4747
  bristleCount: 22,
@@ -4645,7 +4754,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4645
4754
  hookWaves: 3,
4646
4755
  roundHeadCap: !1,
4647
4756
  seed: s + 223
4648
- }), E(t, {
4757
+ }), O(t, {
4649
4758
  spine: a,
4650
4759
  maxWidth: Math.max(42, 82 * u),
4651
4760
  bristleCount: 14,
@@ -4672,7 +4781,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4672
4781
  x: r * .27,
4673
4782
  y: i * .2
4674
4783
  }, 52, .14, s + 241).filter((e) => e.t <= c);
4675
- o.length >= 8 && j(t, g, o.map((e, t, n) => ({
4784
+ o.length >= 8 && N(t, g, o.map((e, t, n) => ({
4676
4785
  ...e,
4677
4786
  t: t / Math.max(1, n.length - 1)
4678
4787
  })), Math.max(34, 66 * u), 1, 6, n, Math.max(.85, u * 1.1), .68, s + 251);
@@ -4689,10 +4798,10 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4689
4798
  x: r * .74,
4690
4799
  y: i * .28
4691
4800
  }, 52, .14, s + 263).filter((e) => e.t <= c);
4692
- d.length >= 8 && j(t, g, d.map((e, t, n) => ({
4801
+ d.length >= 8 && N(t, g, d.map((e, t, n) => ({
4693
4802
  ...e,
4694
4803
  t: t / Math.max(1, n.length - 1)
4695
- })), Math.max(32, 58 * u), -1, 5, n, Math.max(.82, u * 1.05), .64, s + 271), B(t, r + 14, i * .07, r * (l ? .68 : .76), i * .16, 1, Math.max(14, 22 * u), c, 0, "#11100E", "#C8232C", "#FFF5F5", s + 299);
4804
+ })), Math.max(32, 58 * u), -1, 5, n, Math.max(.82, u * 1.05), .64, s + 271), H(t, r + 14, i * .07, r * (l ? .68 : .76), i * .16, 1, Math.max(14, 22 * u), c, 0, "#11100E", "#C8232C", "#FFF5F5", s + 299);
4696
4805
  } else if (e === "misty_mountains_sakura") [{
4697
4806
  x0: -r * .02,
4698
4807
  xPeak: r * .16,
@@ -4710,7 +4819,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4710
4819
  }].forEach((e, n) => {
4711
4820
  t.save(), t.beginPath(), t.moveTo(e.x0, e.yBase), t.quadraticCurveTo((e.x0 + e.xPeak) * .5, (e.yBase + e.yPeak) * .52, e.xPeak, e.yPeak), t.quadraticCurveTo((e.xPeak + e.x1) * .5, (e.yBase + e.yPeak) * .52, e.x1, e.yBase), t.closePath();
4712
4821
  let r = t.createLinearGradient(e.xPeak, e.yPeak, e.xPeak, e.yBase);
4713
- r.addColorStop(0, _(d.inkPrimary, e.alpha * c)), r.addColorStop(.7, _(v(d.inkPrimary, "#4A5559", .5), e.alpha * .5 * c)), r.addColorStop(1, _(d.inkPrimary, 0)), t.fillStyle = r, t.fill(), t.restore(), E(t, {
4822
+ r.addColorStop(0, _(d.inkPrimary, e.alpha * c)), r.addColorStop(.7, _(v(d.inkPrimary, "#4A5559", .5), e.alpha * .5 * c)), r.addColorStop(1, _(d.inkPrimary, 0)), t.fillStyle = r, t.fill(), t.restore(), O(t, {
4714
4823
  spine: p({
4715
4824
  x: e.xPeak,
4716
4825
  y: e.yPeak
@@ -4731,12 +4840,12 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4731
4840
  headReach: c,
4732
4841
  seed: s + 320 + n * 17
4733
4842
  });
4734
- }), N(t, g, r * .15, i * .18, Math.max(140, 235 * u * c), 4, h, Math.max(.8, u), .26 * c, s + 331), N(t, g, r * .85, i * .78, Math.max(150, 250 * u * c), 4, h, Math.max(.8, u), .26 * c, s + 347), B(t, -14, i * .96, r * (l ? .28 : .2), i * .76, 1, Math.max(16, 24 * u), c, 0, d.inkPrimary, "#C8232C", "#FFF5F5", s + 373), B(t, r + 14, i * .96, r * (l ? .72 : .8), i * .76, -1, Math.max(16, 24 * u), c, 1.2, d.inkPrimary, "#C8232C", "#FFF5F5", s + 389);
4843
+ }), F(t, g, r * .15, i * .18, Math.max(140, 235 * u * c), 4, h, Math.max(.8, u), .26 * c, s + 331), F(t, g, r * .85, i * .78, Math.max(150, 250 * u * c), 4, h, Math.max(.8, u), .26 * c, s + 347), H(t, -14, i * .96, r * (l ? .28 : .2), i * .76, 1, Math.max(16, 24 * u), c, 0, d.inkPrimary, "#C8232C", "#FFF5F5", s + 373), H(t, r + 14, i * .96, r * (l ? .72 : .8), i * .76, -1, Math.max(16, 24 * u), c, 1.2, d.inkPrimary, "#C8232C", "#FFF5F5", s + 389);
4735
4844
  else if (e === "enso_imperial_seal") {
4736
4845
  let e = r * .5, n = i * .52, a = Math.min(r, i) * .44;
4737
- F(t, e, n, a * 1.04 * c, a * 1.02 * c, .1, d.coreGlow, d.energySecondary, .18 * c, s + 401);
4846
+ L(t, e, n, a * 1.04 * c, a * 1.02 * c, .1, d.coreGlow, d.energySecondary, .18 * c, s + 401);
4738
4847
  let o = m(e, n, a, a * .96, -Math.PI * .82, Math.PI * .96, 0, -.06, 84, .16, s + 419);
4739
- E(t, {
4848
+ O(t, {
4740
4849
  spine: o,
4741
4850
  maxWidth: Math.max(20, 38 * u),
4742
4851
  bristleCount: 24,
@@ -4748,7 +4857,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4748
4857
  headReach: c,
4749
4858
  roundHeadCap: !0,
4750
4859
  seed: s + 431
4751
- }), E(t, {
4860
+ }), O(t, {
4752
4861
  spine: o,
4753
4862
  maxWidth: Math.max(7, 13 * u),
4754
4863
  bristleCount: 12,
@@ -4760,7 +4869,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4760
4869
  alpha: .34,
4761
4870
  headReach: Math.max(0, c - .08),
4762
4871
  seed: s + 449
4763
- }), B(t, -12, i * .84, r * (l ? .28 : .22), i * .52, 1, Math.max(15, 23 * u), c, 0, d.inkPrimary, d.energySecondary, d.coreGlow, s + 463), B(t, r + 12, i * .22, r * (l ? .72 : .78), i * .5, -1, Math.max(15, 23 * u), c, 1.1, d.inkPrimary, d.energySecondary, d.coreGlow, s + 479);
4872
+ }), H(t, -12, i * .84, r * (l ? .28 : .22), i * .52, 1, Math.max(15, 23 * u), c, 0, d.inkPrimary, d.energySecondary, d.coreGlow, s + 463), H(t, r + 12, i * .22, r * (l ? .72 : .78), i * .5, -1, Math.max(15, 23 * u), c, 1.1, d.inkPrimary, d.energySecondary, d.coreGlow, s + 479);
4764
4873
  }
4765
4874
  t.restore();
4766
4875
  }, T = (d) => {
@@ -4770,43 +4879,43 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4770
4879
  }
4771
4880
  let f = Math.min(1.75, window.devicePixelRatio || 1), p = Math.max(240, Math.floor(u.width || t.clientWidth || 600)), m = Math.max(52, Math.floor(u.height || t.clientHeight || 120)), h = Math.floor(p * f), _ = Math.floor(m * f);
4772
4881
  (t.width !== h || t.height !== _) && (t.width = h, t.height = _, r.width = h, r.height = _, g.current = "");
4773
- let v = t.getContext("2d"), S = r.getContext("2d");
4774
- if (!v || !S) return;
4775
- let C = i ? i.current : n, E = Math.max(0, Math.min(1, C));
4882
+ let v = t.getContext("2d"), x = r.getContext("2d");
4883
+ if (!v || !x) return;
4884
+ let w = i ? i.current : n, E = Math.max(0, Math.min(1, w));
4776
4885
  if (e === "header_single_stroke" && E <= .005) {
4777
4886
  v.clearRect(0, 0, h, _);
4778
4887
  return;
4779
4888
  }
4780
4889
  let D = e === "header_single_stroke" ? Math.min(1, E ** .6) : Math.min(1, E ** .65 * 1.15), O = D >= .995 ? 1 : Math.round(D * 60) / 60, k = `${e}:${h}x${_}:${O}:${a}:${s}`;
4781
- if (g.current !== k && (w(S, r, p, m, f, O), g.current = k), v.save(), v.setTransform(f, 0, 0, f, 0, 0), v.clearRect(0, 0, p, m), v.drawImage(r, 0, 0, p, m), c && D > .1) {
4782
- let t = (d - x.current) / 1e3, n = p < 640, r = Math.min(p / (n ? 760 : 1280), Math.max(.62, m / 520)), i = b[a]?.colors ?? b.fuji_sakura.colors;
4890
+ if (g.current !== k && (C(x, r, p, m, f, O), g.current = k), v.save(), v.setTransform(f, 0, 0, f, 0, 0), v.clearRect(0, 0, p, m), v.drawImage(r, 0, 0, p, m), c && D > .1) {
4891
+ let t = (d - b.current) / 1e3, n = p < 640, r = Math.min(p / (n ? 760 : 1280), Math.max(.62, m / 520)), i = S[a]?.colors ?? S.fuji_sakura.colors;
4783
4892
  if (e === "sakura_katana_canopy") {
4784
4893
  let e = l(s + 199), a = n ? 10 : 15;
4785
4894
  for (let n = 0; n < a; n++) {
4786
4895
  let a = e() * p, o = e() * m;
4787
- R(v, (a + t * (16 + n % 5 * 5) + Math.sin(t + n) * 16) % p, (o + t * (7 + n % 3 * 4) + Math.cos(t + n) * 10) % m, (5 + n % 4 * 1.8) * r, t * 1.4 + n, .35 + .55 * Math.abs(Math.sin(t * 2 + n)), i.energySecondary, .72 * D);
4896
+ B(v, (a + t * (16 + n % 5 * 5) + Math.sin(t + n) * 16) % p, (o + t * (7 + n % 3 * 4) + Math.cos(t + n) * 10) % m, (5 + n % 4 * 1.8) * r, t * 1.4 + n, .35 + .55 * Math.abs(Math.sin(t * 2 + n)), i.energySecondary, .72 * D);
4788
4897
  }
4789
4898
  } else if (e === "koi_river_rapids" && D > .15) {
4790
4899
  let e = Math.min(.95, (D - .12) * 1.35);
4791
- z(v, p * .56 + Math.cos(t * .6) * 22 * r, m * .18 + Math.sin(t * .75) * 12 * r, Math.max(95, 160 * r), -.24 + Math.sin(t * .7) * .08, t * 3.2, "#11100E", "#C8232C", "#FAF8F5", e, s + 281), z(v, p * .08 + Math.sin(t * .55) * 16 * r, m * .43 + Math.cos(t * .7) * 18 * r, Math.max(88, 145 * r), -.95 + Math.cos(t * .65) * .08, t * 3 + 1.4, "#11100E", "#E11D48", "#FFF7ED", e, s + 293), z(v, p * .63 + Math.sin(t * .5) * 24 * r, m * .91 + Math.cos(t * .6) * 10 * r, Math.max(90, 148 * r), -Math.PI + .28 + Math.sin(t * .6) * .07, t * 3.1 + 2.7, "#11100E", "#C8232C", "#FAF8F5", e, s + 307);
4900
+ V(v, p * .56 + Math.cos(t * .6) * 22 * r, m * .18 + Math.sin(t * .75) * 12 * r, Math.max(95, 160 * r), -.24 + Math.sin(t * .7) * .08, t * 3.2, "#11100E", "#C8232C", "#FAF8F5", e, s + 281), V(v, p * .08 + Math.sin(t * .55) * 16 * r, m * .43 + Math.cos(t * .7) * 18 * r, Math.max(88, 145 * r), -.95 + Math.cos(t * .65) * .08, t * 3 + 1.4, "#11100E", "#E11D48", "#FFF7ED", e, s + 293), V(v, p * .63 + Math.sin(t * .5) * 24 * r, m * .91 + Math.cos(t * .6) * 10 * r, Math.max(90, 148 * r), -Math.PI + .28 + Math.sin(t * .6) * .07, t * 3.1 + 2.7, "#11100E", "#C8232C", "#FAF8F5", e, s + 307);
4792
4901
  } else if (e === "misty_mountains_sakura") {
4793
4902
  let e = l(s + 395);
4794
4903
  for (let n = 0; n < 10; n++) {
4795
4904
  let i = e() * p, a = e() * m;
4796
- R(v, (i + t * (14 + n % 4 * 4) + Math.sin(t + n) * 14) % p, (a + t * (6 + n % 3 * 3) + Math.cos(t + n) * 8) % m, (4.8 + n % 3 * 1.6) * r, t * 1.2 + n, .4 + .5 * Math.abs(Math.sin(t * 1.8 + n)), "#C8232C", .65 * D);
4905
+ B(v, (i + t * (14 + n % 4 * 4) + Math.sin(t + n) * 14) % p, (a + t * (6 + n % 3 * 3) + Math.cos(t + n) * 8) % m, (4.8 + n % 3 * 1.6) * r, t * 1.2 + n, .4 + .5 * Math.abs(Math.sin(t * 1.8 + n)), "#C8232C", .65 * D);
4797
4906
  }
4798
4907
  } else if (e === "enso_imperial_seal") {
4799
4908
  let e = p * .5, n = m * .52, a = Math.min(p, m) * .44, o = l(s + 499);
4800
4909
  for (let s = 0; s < 12; s++) {
4801
4910
  let c = s / 12 * Math.PI * 2 + t * .22, l = a * (.85 + (o() - .3) * .35);
4802
- R(v, e + Math.cos(c) * l, n + Math.sin(c) * l, Math.max(5, 8 * r * D), t * 1.3 + s, .4 + .5 * Math.abs(Math.sin(t + s)), i.energySecondary, .5 * D);
4911
+ B(v, e + Math.cos(c) * l, n + Math.sin(c) * l, Math.max(5, 8 * r * D), t * 1.3 + s, .4 + .5 * Math.abs(Math.sin(t + s)), i.energySecondary, .5 * D);
4803
4912
  }
4804
4913
  }
4805
4914
  }
4806
4915
  v.restore(), (c || i) && (o = requestAnimationFrame(T));
4807
4916
  };
4808
4917
  return o = requestAnimationFrame(T), () => {
4809
- cancelAnimationFrame(o), C.disconnect();
4918
+ cancelAnimationFrame(o), x.disconnect();
4810
4919
  };
4811
4920
  }, [
4812
4921
  e,
@@ -4819,7 +4928,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4819
4928
  ref: d,
4820
4929
  className: `block w-full h-full pointer-events-none select-none ${u}`
4821
4930
  });
4822
- }, ot = ({ name: e, size: n = 22, color: i = "#11100E", seed: a = 101, className: s = "" }) => {
4931
+ }, ct = ({ name: e, size: n = 22, color: i = "#11100E", seed: a = 101, className: s = "" }) => {
4823
4932
  let c = r(null), l = Math.max(20, n);
4824
4933
  return t(() => {
4825
4934
  let t = c.current;
@@ -4830,7 +4939,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4830
4939
  if (!r) return;
4831
4940
  let o = i;
4832
4941
  i === "currentColor" && t.parentElement && (o = window.getComputedStyle(t.parentElement).color || "#11100E"), r.save(), r.scale(n, n), r.clearRect(0, 0, l, l), r.lineCap = "round", r.lineJoin = "round";
4833
- let s = Ke.canvas(t), u = l / 24, d = {
4942
+ let s = Je.canvas(t), u = l / 24, d = {
4834
4943
  stroke: o,
4835
4944
  strokeWidth: Math.max(1.85, 2 * u),
4836
4945
  roughness: .22,
@@ -4843,7 +4952,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
4843
4952
  fill: o,
4844
4953
  fillStyle: "solid"
4845
4954
  };
4846
- if (e === "logo") E(r, {
4955
+ if (e === "logo") O(r, {
4847
4956
  spine: m(12 * u, 12 * u, 9.2 * u, 9 * u, -Math.PI * .78, Math.PI * 1.05, 0, 0, 36, .08, a),
4848
4957
  maxWidth: 3.4 * u,
4849
4958
  bristleCount: 10,
@@ -5032,7 +5141,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
5032
5141
  className: `inline-block shrink-0 pointer-events-none select-none ${s}`,
5033
5142
  "aria-hidden": "true"
5034
5143
  });
5035
- }, st = ({ size: e = 36, className: n = "" }) => {
5144
+ }, lt = ({ size: e = 36, className: n = "" }) => {
5036
5145
  let i = r(null);
5037
5146
  return t(() => {
5038
5147
  let t = i.current;
@@ -5043,14 +5152,14 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
5043
5152
  if (!r) return;
5044
5153
  r.save(), r.scale(n, n), r.clearRect(0, 0, e, e);
5045
5154
  let a = e / 40;
5046
- Ke.canvas(t).circle(25.5 * a, 14.5 * a, 14.5 * a, {
5155
+ Je.canvas(t).circle(25.5 * a, 14.5 * a, 14.5 * a, {
5047
5156
  stroke: "#C8232C",
5048
5157
  fill: "#C8232C",
5049
5158
  fillStyle: "solid",
5050
5159
  roughness: .25,
5051
5160
  preserveVertices: !0,
5052
5161
  seed: 77
5053
- }), E(r, {
5162
+ }), O(r, {
5054
5163
  spine: m(20 * a, 20 * a, 15.5 * a, 15.2 * a, -Math.PI * .82, Math.PI * .98, 0, -.05, 54, .08, 8472),
5055
5164
  maxWidth: 4.8 * a,
5056
5165
  bristleCount: 14,
@@ -5061,7 +5170,7 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
5061
5170
  alpha: .96,
5062
5171
  roundHeadCap: !0,
5063
5172
  seed: 8472
5064
- }), E(r, {
5173
+ }), O(r, {
5065
5174
  spine: p({
5066
5175
  x: 10 * a,
5067
5176
  y: 29 * a
@@ -5091,9 +5200,9 @@ var nt = ({ activeBrush: n = "sakura_branch", colors: a = $e, strokeThickness: s
5091
5200
  className: `inline-block shrink-0 pointer-events-none select-none ${n}`,
5092
5201
  "aria-hidden": "true"
5093
5202
  });
5094
- }, ct = /* @__PURE__ */ new Map();
5095
- function lt(e, t, n, r, i) {
5096
- let a = `${e}x${t}:${n}:${r ?? "none"}:${i}`, o = ct.get(a);
5203
+ }, ut = /* @__PURE__ */ new Map();
5204
+ function dt(e, t, n, r, i) {
5205
+ let a = `${e}x${t}:${n}:${r ?? "none"}:${i}`, o = ut.get(a);
5097
5206
  if (o) return {
5098
5207
  mainPaths: [o[0] ?? ""],
5099
5208
  accentPaths: o[1] ? [o[1]] : []
@@ -5102,7 +5211,7 @@ function lt(e, t, n, r, i) {
5102
5211
  mainPaths: [],
5103
5212
  accentPaths: []
5104
5213
  };
5105
- let s = document.createElementNS("http://www.w3.org/2000/svg", "svg"), c = Ke.svg(s), l = c.rectangle(1.5, 1.5, Math.max(4, e - 3), Math.max(4, t - 3), {
5214
+ let s = document.createElementNS("http://www.w3.org/2000/svg", "svg"), c = Je.svg(s), l = c.rectangle(1.5, 1.5, Math.max(4, e - 3), Math.max(4, t - 3), {
5106
5215
  stroke: n,
5107
5216
  strokeWidth: 1.45,
5108
5217
  roughness: .36,
@@ -5125,12 +5234,12 @@ function lt(e, t, n, r, i) {
5125
5234
  }).querySelectorAll("path").forEach((e) => {
5126
5235
  let t = e.getAttribute("d");
5127
5236
  t && d.push(t);
5128
- }), ct.set(a, [u.join(" "), d.join(" ")]), {
5237
+ }), ut.set(a, [u.join(" "), d.join(" ")]), {
5129
5238
  mainPaths: u,
5130
5239
  accentPaths: d
5131
5240
  };
5132
5241
  }
5133
- var ut = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108, fullWidth: l = !1, className: u = "", children: d, disabled: f, ...p }) => {
5242
+ var ft = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108, fullWidth: l = !1, className: u = "", children: d, disabled: f, ...p }) => {
5134
5243
  let m = r(null), [h, g] = i({
5135
5244
  w: 0,
5136
5245
  h: 0
@@ -5160,7 +5269,7 @@ var ut = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108,
5160
5269
  sm: "px-3.5 py-1.5 text-xs gap-2 min-h-[34px]",
5161
5270
  md: "px-4 py-2.5 text-xs sm:text-sm gap-2.5 min-h-[40px]",
5162
5271
  lg: "px-5 py-3 text-sm gap-2.5 min-h-[44px]"
5163
- }, { mainPaths: T, accentPaths: E } = h.w > 0 && h.h > 0 ? lt(h.w, h.h, S, C, c) : {
5272
+ }, { mainPaths: T, accentPaths: E } = h.w > 0 && h.h > 0 ? dt(h.w, h.h, S, C, c) : {
5164
5273
  mainPaths: [],
5165
5274
  accentPaths: []
5166
5275
  };
@@ -5199,7 +5308,7 @@ var ut = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108,
5199
5308
  children: d
5200
5309
  })]
5201
5310
  });
5202
- }, dt = ({ strokeColor: e = "#11100E", innerAccentColor: n = "rgba(17, 16, 14, 0.14)", seed: a = 303, className: c = "", children: l, ...u }) => {
5311
+ }, pt = ({ strokeColor: e = "#11100E", innerAccentColor: n = "rgba(17, 16, 14, 0.14)", seed: a = 303, className: c = "", children: l, ...u }) => {
5203
5312
  let d = r(null), [f, p] = i({
5204
5313
  w: 0,
5205
5314
  h: 0
@@ -5218,7 +5327,7 @@ var ut = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108,
5218
5327
  let n = new ResizeObserver(t);
5219
5328
  return n.observe(e), () => n.disconnect();
5220
5329
  }, []);
5221
- let { mainPaths: m, accentPaths: h } = f.w > 0 && f.h > 0 ? lt(f.w, f.h, e, n, a) : {
5330
+ let { mainPaths: m, accentPaths: h } = f.w > 0 && f.h > 0 ? dt(f.w, f.h, e, n, a) : {
5222
5331
  mainPaths: [],
5223
5332
  accentPaths: []
5224
5333
  };
@@ -5247,7 +5356,7 @@ var ut = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108,
5247
5356
  }, `main-${n}`))]
5248
5357
  }), l]
5249
5358
  });
5250
- }, ft = ({ jp: e, romaji: n, pt: l, variant: u = "inline", tooltipPlacement: d = "top", className: f = "" }) => {
5359
+ }, mt = ({ jp: e, romaji: n, pt: l, variant: u = "inline", tooltipPlacement: d = "top", className: f = "" }) => {
5251
5360
  let [p, m] = i(!1), h = r(null), [g, _] = i({
5252
5361
  top: 0,
5253
5362
  left: 0,
@@ -5349,6 +5458,425 @@ var ut = ({ variant: e = "washi", size: t = "md", active: a = !1, seed: c = 108,
5349
5458
  })
5350
5459
  }), x] });
5351
5460
  };
5352
- export { x as ARCHETYPE_CATALOG, C as DEFAULT_FUJI_LAYERS, S as DEFAULT_VFX_CONFIG, ft as JapaneseCalligraphy, b as MAGIC_SCHOOLS, st as SumiBrandEmblem, nt as SumiBrushCanvas, ut as SumiButton, ot as SumiIcon, Qe as SumiLandscape, Ze as SumiMaskReveal, dt as SumiRoughBox, at as SumiSectionPainter, rt as SumiStroke, it as SumiVFX, w as TECHNIQUES_CATALOG, l as createSeededRandom, z as drawCalligraphicKoiCarp, D as drawCentrifugalSplatters, B as drawCornerSakuraBranch, k as drawDetachedSumiFlameWisp, I as drawFacetedRoughCrystal, O as drawFlamePetalTongue, R as drawFloatingSakuraPetal, A as drawHokusaiFoamClawCluster, j as drawHokusaiWaveCrest, L as drawSakuraBlossom, P as drawSolidOpaqueCoreSphere, E as drawSumiKasureRibbon, F as drawTarashikomiWashBlob, N as drawUkiyoeCloudBank, M as drawUkiyoeCloudScrollVolute, Ye as encodeAnimatedGIF89a, d as fbmNoise2D, g as hexToRgb, T as makeFineRoughOptions, v as mixHex, y as recolorReferenceSheetData, Je as renderCompleteSpriteSheet, qe as renderVFXFrame, _ as rgbaStr, f as sampleCubicCurve, u as sampleNoise2D, m as samplePolarArc, p as sampleQuadraticCurve, h as samplesToSpine };
5461
+ // src/lib/sumi-forge/components/SumiSansui.tsx
5462
+ function ht(e) {
5463
+ let t = e.replace("#", "").trim();
5464
+ if (t.length < 6) return !1;
5465
+ let n = parseInt(t.slice(0, 2), 16) || 0, r = parseInt(t.slice(2, 4), 16) || 0, i = parseInt(t.slice(4, 6), 16) || 0;
5466
+ return (.299 * n + .587 * r + .114 * i) / 255 < .32;
5467
+ }
5468
+ function gt(e, t, n, r, i) {
5469
+ let a = b.classic_washi;
5470
+ if (e === "auto" && typeof window < "u") {
5471
+ a = document.documentElement.classList.contains("dark") ? b.night_obsidian : b.classic_washi;
5472
+ let e = getComputedStyle(document.documentElement), o = e.getPropertyValue("--sumi-bg").trim(), s = e.getPropertyValue("--sumi-ink").trim(), c = e.getPropertyValue("--sumi-wash").trim(), l = e.getPropertyValue("--sumi-mist").trim(), u = e.getPropertyValue("--sumi-accent").trim(), d = {
5473
+ background: n || t?.background || o || a.colors.background,
5474
+ ink: r || t?.ink || s || a.colors.ink,
5475
+ wash: i || t?.wash || c || a.colors.wash,
5476
+ mist: t?.mist || l || n || t?.background || a.colors.mist,
5477
+ accent: t?.accent || u || a.colors.accent
5478
+ };
5479
+ return {
5480
+ resolved: d,
5481
+ isDark: ht(d.background)
5482
+ };
5483
+ }
5484
+ e !== "auto" && b[e] && (a = b[e]);
5485
+ let o = n || t?.background || a.colors.background;
5486
+ return {
5487
+ resolved: {
5488
+ background: o,
5489
+ ink: r || t?.ink || a.colors.ink,
5490
+ wash: i || t?.wash || a.colors.wash,
5491
+ mist: t?.mist || n || t?.background || a.colors.mist,
5492
+ accent: t?.accent || a.colors.accent
5493
+ },
5494
+ isDark: ht(o)
5495
+ };
5496
+ }
5497
+ function _t(e, t, n, r, i, a, o, s, c) {
5498
+ let u = l(c), d = (u() - .5) * r * .24, f = t + d, p = n - r;
5499
+ e.save(), e.beginPath(), e.moveTo(t, n + 2 * i), e.quadraticCurveTo(t + d * .35, n - r * .52, f, p), e.strokeStyle = _(a, s * .92), e.lineWidth = Math.max(.8, r * .068), e.lineCap = "round", e.stroke();
5500
+ let m = Math.max(3, Math.min(7, Math.floor(r / (5.5 * i)) + 2));
5501
+ for (let t = 0; t < m; t++) {
5502
+ let n = t / Math.max(1, m - 1), c = p + n * r * .68, l = f - d * n * .55 + (u() - .5) * 2.5 * i, h = r * (.24 + Math.sin(n * Math.PI * .85) * .28) * (.8 + u() * .35);
5503
+ e.beginPath(), e.ellipse(l, c, h * .58, Math.max(1.2, r * .065), 0, 0, Math.PI * 2), e.fillStyle = _(o, s * .34), e.fill(), e.beginPath(), e.moveTo(l - h * .55, c + (u() - .5) * 1.5 * i), e.quadraticCurveTo(l, c - 1.6 * i, l + h * .55, c + (u() - .5) * 1.5 * i), e.strokeStyle = _(a, s * .94), e.lineWidth = Math.max(.9, r * .062), e.stroke();
5504
+ }
5505
+ e.restore();
5506
+ }
5507
+ function vt(e, t, n, r, i, a, o, s, c) {
5508
+ let u = l(c);
5509
+ e.save(), e.lineCap = "round", e.lineJoin = "round";
5510
+ let d = t - r * .32, f = n + r * .06, p = r * .78;
5511
+ e.beginPath(), e.moveTo(d, f + 4 * i), e.quadraticCurveTo(d - p * .12, f - p * .48, d - p * .24, f - p), e.moveTo(d - p * .1, f - p * .55), e.lineTo(d - p * .38, f - p * .78), e.moveTo(d - p * .14, f - p * .68), e.lineTo(d + p * .08, f - p * .88), e.strokeStyle = _(a, s * .92), e.lineWidth = Math.max(1.2, r * .048), e.stroke();
5512
+ for (let c = 0; c < 2; c++) {
5513
+ let l = t + c * r * .28, d = n + c * r * .05, f = r * (c === 0 ? 1.02 : .88), p = l + (c === 0 ? .08 : .15) * f, m = d - f;
5514
+ e.beginPath(), e.moveTo(l, d + 5 * i), e.quadraticCurveTo(l - f * .06, d - f * .5, p, m), e.strokeStyle = _(a, s * .95), e.lineWidth = Math.max(1.3, f * .052), e.stroke(), e.beginPath(), e.moveTo(l - f * .02, d - f * .58), e.lineTo(p + f * .18, m + f * .16), e.lineWidth = Math.max(.9, f * .035), e.stroke();
5515
+ for (let t = 0; t < 7; t++) {
5516
+ let n = t / 7 * Math.PI * 2 + u() * .5, r = f * (.06 + u() * .22), i = p + Math.cos(n) * r, c = m + Math.sin(n) * r * .68, l = Math.max(1.8, f * (.055 + u() * .045)), d = t % 2 == 0;
5517
+ e.beginPath(), e.arc(i, c, l, 0, Math.PI * 2), e.fillStyle = _(d ? a : o, s * (d ? .86 : .52)), e.fill();
5518
+ }
5519
+ }
5520
+ e.restore();
5521
+ }
5522
+ function yt(e, t, n, r, i, a, o, s, c) {
5523
+ let u = l(i.seed), f = (i.centerX - i.spanW * .5) * t, p = (i.centerX + i.spanW * .5) * t, m = i.peakY * n, h = i.baseY * n, g = Math.max(12, h - m), y = Math.max(48, Math.min(130, Math.floor((p - f) / (4 * r)))), b = [];
5524
+ for (let e = 0; e <= y; e++) {
5525
+ let t = e / y, n = f + t * (p - f), r = Math.max(0, Math.min(1, t + (i.skew || 0) * Math.sin(t * Math.PI))), a = Math.sin(r * Math.PI), o = Math.max(0, a) ** +i.sharpness;
5526
+ if (i.plateau && i.plateau > 0) {
5527
+ let e = 1 - i.plateau * .42;
5528
+ o = Math.min(e, o) / e;
5529
+ }
5530
+ let s = d(t * 3.6, i.seed * .013, i.seed), c = d(t * 9.5, i.seed * .029, i.seed + 71), l = .72 + (s - .35) * .52 + (c - .5) * .16, u = h - g * o * Math.max(.12, l);
5531
+ b.push({
5532
+ x: n,
5533
+ y: u,
5534
+ u: t,
5535
+ env: o
5536
+ });
5537
+ }
5538
+ let x = b[0];
5539
+ for (let e of b) e.y < x.y && (x = e);
5540
+ e.save(), e.beginPath(), e.moveTo(f, h + 6 * r);
5541
+ for (let t of b) e.lineTo(t.x, t.y);
5542
+ e.lineTo(p, h + 6 * r), e.closePath();
5543
+ let S = e.createLinearGradient(0, x.y, 0, h + 4 * r), C = (.14 + i.depth * .42) * (o ? 1.35 : 1), w = Math.max(.52, Math.min(.95, .92 - c * .18));
5544
+ if (o) {
5545
+ let e = v(a.wash, a.ink, .16 * i.depth);
5546
+ S.addColorStop(0, _(e, Math.min(.95, C + .25))), S.addColorStop(w * .65, _(a.wash, Math.min(.9, C * .85))), S.addColorStop(1, _(a.mist, .96));
5547
+ } else {
5548
+ let e = v(a.wash, a.ink, .18 * i.depth);
5549
+ S.addColorStop(0, _(e, C)), S.addColorStop(w * .6, _(a.wash, C * .58)), S.addColorStop(w, _(a.mist, .85)), S.addColorStop(1, _(a.mist, .98));
5550
+ }
5551
+ if (e.fillStyle = S, e.fill(), i.cunfaDensity > .05 && i.depth > .22) {
5552
+ e.save(), e.clip();
5553
+ let t = Math.floor((14 + i.spanW * 28) * i.cunfaDensity * (.55 + i.depth * .65));
5554
+ for (let n = 0; n < t; n++) {
5555
+ let t = b[Math.floor((.08 + u() * .84) * (b.length - 1))];
5556
+ if (!t || t.env < .14) continue;
5557
+ let o = h - t.y;
5558
+ if (o < 10 * r) continue;
5559
+ let s = o * (.03 + u() * .38), c = t.x + (u() - .5) * 14 * r, l = t.y + s, d = o * (.22 + u() * .48), f = t.u < .5 ? -1 : 1, p = i.sharpness > 1.35 ? f * (4 + u() * 14) * r : f * (12 + u() * 28) * r;
5560
+ e.beginPath(), e.moveTo(c, l), e.bezierCurveTo(c + p * .35 + (u() - .5) * 6 * r, l + d * .35, c + p * .7 - (u() - .5) * 6 * r, l + d * .72, c + p, l + d);
5561
+ let m = (.14 + i.depth * .32) * (.5 + u() * .6);
5562
+ e.strokeStyle = _(a.ink, m), e.lineWidth = (.55 + u() * .95) * r, e.lineCap = "round", e.stroke(), n % 5 == 0 && i.depth > .55 && (e.beginPath(), e.moveTo(t.x, t.y + 1.5 * r), e.quadraticCurveTo(t.x + p * .45, t.y + d * .42, t.x + p * .85, t.y + d * .82), e.strokeStyle = _(a.ink, m * 1.25), e.lineWidth = (.9 + u() * .9) * r, e.stroke());
5563
+ }
5564
+ e.restore();
5565
+ }
5566
+ if (i.depth > .18) {
5567
+ let t = Math.min(.98, .22 + i.depth * .76), n = (1.1 + i.depth * 2.4) * r;
5568
+ for (let o = 0; o < b.length - 1; o++) {
5569
+ let s = b[o], c = b[o + 1], l = Math.sin(s.u * Math.PI);
5570
+ if (l < .04) continue;
5571
+ let u = .75 + .5 * d(s.u * 12, i.seed * .07, i.seed + 303), f = Math.max(.45 * r, n * l ** .65 * u);
5572
+ e.beginPath(), e.moveTo(s.x, s.y), e.lineTo(c.x, c.y), e.strokeStyle = _(a.ink, t * Math.min(1, l * 1.6)), e.lineWidth = f, e.lineCap = "round", e.stroke();
5573
+ }
5574
+ }
5575
+ if (i.treeStyle !== "none" && s > .05) {
5576
+ if (i.treeStyle === "foliage") {
5577
+ let t = b[Math.floor(b.length * .46)];
5578
+ t && vt(e, t.x, t.y + 8 * r, Math.min(72 * r, g * 1.15), r, a.ink, a.wash, .95, i.seed + 501);
5579
+ } else if (i.treeStyle === "pines") {
5580
+ let t = Math.max(1, Math.floor((3 + i.spanW * 8) * s * (.5 + i.depth * .7)));
5581
+ for (let n = 0; n < t; n++) {
5582
+ let t = b[Math.floor((.15 + u() * .7) * (b.length - 1))];
5583
+ if (!t || t.env < .22) continue;
5584
+ let o = (9 + u() * 16 * i.depth) * r;
5585
+ _t(e, t.x, t.y + (u() * 5 + 1) * r, o, r, a.ink, a.wash, Math.min(.96, .45 + i.depth * .55), i.seed + 700 + n * 29);
5586
+ }
5587
+ } else if (i.treeStyle === "distant_dots") {
5588
+ let t = Math.floor(12 * s);
5589
+ for (let n = 0; n < t; n++) {
5590
+ let t = b[Math.floor((.18 + u() * .64) * (b.length - 1))];
5591
+ if (!t || t.env < .25) continue;
5592
+ let n = (2.5 + u() * 3.8) * r;
5593
+ e.beginPath(), e.moveTo(t.x, t.y + .5 * r), e.lineTo(t.x + (u() - .5) * 1.5 * r, t.y - n), e.strokeStyle = _(a.ink, .55 * i.depth), e.lineWidth = .85 * r, e.stroke(), e.beginPath(), e.arc(t.x, t.y - n, (1.1 + u() * 1.2) * r, 0, Math.PI * 2), e.fillStyle = _(a.ink, .5 * i.depth), e.fill();
5594
+ }
5595
+ }
5596
+ }
5597
+ e.restore();
5598
+ }
5599
+ function bt(e, t, n, r, i, a) {
5600
+ e.save(), e.translate(t, n), e.beginPath(), e.moveTo(-r * .95, -r * .12), e.quadraticCurveTo(0, r * .24, r * .98, -r * .16), e.quadraticCurveTo(0, r * .08, -r * .95, -r * .12), e.fillStyle = _(i, a * .94), e.fill();
5601
+ let o = -r * .12;
5602
+ e.beginPath(), e.moveTo(o, r * .02), e.lineTo(o + r * .04, -r * .52), e.strokeStyle = _(i, a * .92), e.lineWidth = Math.max(1.1, r * .11), e.lineCap = "round", e.stroke(), e.beginPath(), e.moveTo(o - r * .2, -r * .48), e.lineTo(o + r * .05, -r * .66), e.lineTo(o + r * .26, -r * .48), e.closePath(), e.fillStyle = _(i, a * .94), e.fill(), e.beginPath(), e.moveTo(o + r * .22, -r * .42), e.lineTo(-r * .48, r * .22), e.strokeStyle = _(i, a * .72), e.lineWidth = Math.max(.65, r * .055), e.stroke();
5603
+ for (let t = 0; t < 2; t++) {
5604
+ let n = r * (.22 + t * .14), o = r * (.65 - t * .2);
5605
+ e.beginPath(), e.moveTo(-o, n), e.lineTo(o, n), e.strokeStyle = _(i, a * (.28 - t * .1)), e.lineWidth = Math.max(.5, r * .045), e.stroke();
5606
+ }
5607
+ e.restore();
5608
+ }
5609
+ function xt(e, t, n) {
5610
+ let r = l(t), i = [];
5611
+ if (e === "panoramic_river") return i.push({
5612
+ centerX: .71 + (r() - .5) * .06,
5613
+ spanW: .42,
5614
+ peakY: .22 + r() * .05,
5615
+ baseY: .37,
5616
+ sharpness: .95,
5617
+ skew: .15,
5618
+ depth: .16,
5619
+ cunfaDensity: .1,
5620
+ treeStyle: "none",
5621
+ seed: t + 11
5622
+ }), i.push({
5623
+ centerX: .94,
5624
+ spanW: .28,
5625
+ peakY: .27,
5626
+ baseY: .38,
5627
+ sharpness: .85,
5628
+ depth: .2,
5629
+ cunfaDensity: .1,
5630
+ treeStyle: "none",
5631
+ seed: t + 23
5632
+ }), i.push({
5633
+ centerX: .58 + (r() - .5) * .05,
5634
+ spanW: .34,
5635
+ peakY: .3 + r() * .03,
5636
+ baseY: .38,
5637
+ sharpness: .75,
5638
+ plateau: .65,
5639
+ skew: -.2,
5640
+ depth: .58,
5641
+ cunfaDensity: .75,
5642
+ treeStyle: "distant_dots",
5643
+ seed: t + 37
5644
+ }), i.push({
5645
+ centerX: .83 + (r() - .5) * .04,
5646
+ spanW: .26,
5647
+ peakY: .28 + r() * .03,
5648
+ baseY: .39,
5649
+ sharpness: 1.05,
5650
+ skew: -.1,
5651
+ depth: .66,
5652
+ cunfaDensity: .85,
5653
+ treeStyle: "distant_dots",
5654
+ seed: t + 53
5655
+ }), i.push({
5656
+ centerX: .93,
5657
+ spanW: .29,
5658
+ peakY: .81,
5659
+ baseY: 1.02,
5660
+ sharpness: .82,
5661
+ skew: -.15,
5662
+ depth: .98,
5663
+ cunfaDensity: 1.25,
5664
+ treeStyle: "foliage",
5665
+ seed: t + 89
5666
+ }), i;
5667
+ if (e === "karst_peaks") return i.push({
5668
+ centerX: .57 + (r() - .5) * .06,
5669
+ spanW: .36,
5670
+ peakY: .34,
5671
+ baseY: .86,
5672
+ sharpness: 1.55,
5673
+ depth: .18,
5674
+ cunfaDensity: .15,
5675
+ treeStyle: "none",
5676
+ seed: t + 101
5677
+ }), i.push({
5678
+ centerX: .9 + (r() - .5) * .04,
5679
+ spanW: .32,
5680
+ peakY: .36 + r() * .06,
5681
+ baseY: .93,
5682
+ sharpness: 1.85,
5683
+ skew: -.12,
5684
+ depth: .68,
5685
+ cunfaDensity: 1.15,
5686
+ treeStyle: "pines",
5687
+ seed: t + 131
5688
+ }), i.push({
5689
+ centerX: .68 + (r() - .5) * .05,
5690
+ spanW: .31,
5691
+ peakY: .16 + r() * .05,
5692
+ baseY: .94,
5693
+ sharpness: 2.15,
5694
+ skew: .08,
5695
+ depth: .92,
5696
+ cunfaDensity: 1.35,
5697
+ treeStyle: "pines",
5698
+ seed: t + 167
5699
+ }), i.push({
5700
+ centerX: .92,
5701
+ spanW: .32,
5702
+ peakY: .86,
5703
+ baseY: 1.03,
5704
+ sharpness: .88,
5705
+ depth: 1,
5706
+ cunfaDensity: 1.2,
5707
+ treeStyle: "pines",
5708
+ seed: t + 199
5709
+ }), i;
5710
+ if (e === "twin_gorges") return i.push({
5711
+ centerX: .18,
5712
+ spanW: .45,
5713
+ peakY: .22,
5714
+ baseY: .78,
5715
+ sharpness: 1.35,
5716
+ depth: .18,
5717
+ cunfaDensity: .15,
5718
+ treeStyle: "none",
5719
+ seed: t + 211
5720
+ }), i.push({
5721
+ centerX: .82,
5722
+ spanW: .45,
5723
+ peakY: .2,
5724
+ baseY: .78,
5725
+ sharpness: 1.4,
5726
+ depth: .2,
5727
+ cunfaDensity: .15,
5728
+ treeStyle: "none",
5729
+ seed: t + 223
5730
+ }), i.push({
5731
+ centerX: .28 + (r() - .5) * .04,
5732
+ spanW: .28,
5733
+ peakY: .42,
5734
+ baseY: .9,
5735
+ sharpness: 1.9,
5736
+ depth: .65,
5737
+ cunfaDensity: 1,
5738
+ treeStyle: "pines",
5739
+ seed: t + 241
5740
+ }), i.push({
5741
+ centerX: .76 + (r() - .5) * .04,
5742
+ spanW: .3,
5743
+ peakY: .35,
5744
+ baseY: .91,
5745
+ sharpness: 1.95,
5746
+ depth: .76,
5747
+ cunfaDensity: 1.15,
5748
+ treeStyle: "pines",
5749
+ seed: t + 263
5750
+ }), i.push({
5751
+ centerX: .55 + (r() - .5) * .04,
5752
+ spanW: .34,
5753
+ peakY: .18 + r() * .04,
5754
+ baseY: .93,
5755
+ sharpness: 2.1,
5756
+ skew: .06,
5757
+ depth: .94,
5758
+ cunfaDensity: 1.3,
5759
+ treeStyle: "pines",
5760
+ seed: t + 281
5761
+ }), i.push({
5762
+ centerX: .12,
5763
+ spanW: .34,
5764
+ peakY: .85,
5765
+ baseY: 1.03,
5766
+ sharpness: .9,
5767
+ depth: 1,
5768
+ cunfaDensity: 1.2,
5769
+ treeStyle: "pines",
5770
+ seed: t + 307
5771
+ }), i;
5772
+ let a = Math.max(4, Math.min(8, n));
5773
+ for (let e = 0; e < a; e++) {
5774
+ let n = e / Math.max(1, a - 1), o = e % 2 == 0, s = o ? .22 + (r() - .4) * .18 : .78 + (r() - .6) * .18, c = .54 + r() * .22, l = .16 + n * .48 + (r() - .5) * .05, u = Math.min(1.04, l + .34 + n * .12);
5775
+ i.push({
5776
+ centerX: s,
5777
+ spanW: c,
5778
+ peakY: l,
5779
+ baseY: u,
5780
+ sharpness: 1.05 + (r() - .5) * .35,
5781
+ skew: o ? -.14 : .14,
5782
+ depth: .16 + n ** .85 * .84,
5783
+ cunfaDensity: .35 + n * .95,
5784
+ treeStyle: n < .25 ? "none" : "pines",
5785
+ seed: t + 400 + e * 43
5786
+ });
5787
+ }
5788
+ return i;
5789
+ }
5790
+ var St = ({ seed: n = 8472, composition: i = "panoramic_river", theme: a = "classic_washi", colors: s, backgroundColor: c, inkColor: u, washColor: d, ridgeLayers: f = 6, treeDensity: p = 1, mistDensity: m = 1, showBoat: h = !0, animated: g = !1, actionsRef: v, className: y = "" }) => {
5791
+ let b = r(null), x = r(null), S = r(""), C = r(!0), w = e((e) => {
5792
+ let t = b.current;
5793
+ if (!t) return;
5794
+ let r = document.createElement("a");
5795
+ r.download = e || `sumi-sansui-${i}-${n}.png`, r.href = t.toDataURL("image/png"), r.click();
5796
+ }, [i, n]);
5797
+ return t(() => {
5798
+ v && (v.current = { exportPng: w });
5799
+ }, [v, w]), t(() => {
5800
+ let e = b.current;
5801
+ if (!e || typeof IntersectionObserver > "u") return;
5802
+ let t = new IntersectionObserver((e) => {
5803
+ e.forEach((e) => {
5804
+ C.current = e.isIntersecting;
5805
+ });
5806
+ }, {
5807
+ rootMargin: "100px 0px",
5808
+ threshold: .01
5809
+ });
5810
+ return t.observe(e), () => t.disconnect();
5811
+ }, []), t(() => {
5812
+ let e = b.current;
5813
+ if (!e) return;
5814
+ x.current ||= document.createElement("canvas");
5815
+ let t = x.current, r = 0, o = e.getBoundingClientRect(), v = new ResizeObserver((e) => {
5816
+ e[0] && (o = e[0].contentRect, S.current = "");
5817
+ });
5818
+ v.observe(e);
5819
+ let y = performance.now(), w = (v) => {
5820
+ if (!C.current && g) {
5821
+ r = requestAnimationFrame(w);
5822
+ return;
5823
+ }
5824
+ let b = Math.min(2, window.devicePixelRatio || 1), x = Math.max(220, Math.floor(o.width || e.clientWidth || 640)), T = Math.max(150, Math.floor(o.height || e.clientHeight || 360)), E = Math.floor(x * b), D = Math.floor(T * b);
5825
+ (e.width !== E || e.height !== D) && (e.width = E, e.height = D, t.width = E, t.height = D, S.current = "");
5826
+ let { resolved: O, isDark: k } = gt(a, s, c, u, d), A = Math.max(.55, Math.min(x / 900, T / 460)), j = `${E}x${D}:${n}:${i}:${f}:${p}:${m}:${O.background}:${O.ink}:${O.wash}:${O.mist}:${O.accent}`, M = e.getContext("2d"), N = t.getContext("2d");
5827
+ if (!M || !N) return;
5828
+ if (S.current !== j) {
5829
+ N.save(), N.setTransform(b, 0, 0, b, 0, 0), N.clearRect(0, 0, x, T), N.fillStyle = O.background, N.fillRect(0, 0, x, T);
5830
+ let e = l(n + 999);
5831
+ N.strokeStyle = _(O.ink, k ? .03 : .022), N.lineWidth = .6;
5832
+ for (let t = 0; t < 42; t++) {
5833
+ let t = e() * T;
5834
+ N.beginPath(), N.moveTo(0, t), N.lineTo(x, t + (e() - .5) * 4), N.stroke();
5835
+ }
5836
+ let t = xt(i, n, f), r = t.filter((e) => e.depth < .9), a = t.filter((e) => e.depth >= .9);
5837
+ for (let e of r) yt(N, x, T, A, e, O, k, p, m);
5838
+ let o = l(n + 777), s = i === "panoramic_river" ? T * .37 : i === "layered_valley" ? T * .72 : T * .88, c = i === "panoramic_river" ? 58 : i === "layered_valley" ? 18 : 16;
5839
+ for (let e = 0; e < c; e++) {
5840
+ let e = o() ** .85, t = s + e * (T * .96 - s), n = o() * x * .92, r = (28 + o() * 135) * A * (.65 + (1 - e) * .5);
5841
+ N.beginPath(), N.moveTo(n - r * .5, t), N.lineTo(n + r * .5, t), N.strokeStyle = _(O.ink, (k ? .14 : .18) * (.45 + o() * .55)), N.lineWidth = Math.max(.5, .75 * A), N.stroke();
5842
+ }
5843
+ for (let e of a) yt(N, x, T, A, e, O, k, p, m);
5844
+ N.restore(), S.current = j;
5845
+ }
5846
+ M.save(), M.setTransform(b, 0, 0, b, 0, 0), M.clearRect(0, 0, x, T), M.drawImage(t, 0, 0, x, T);
5847
+ let P = g ? (v - y) / 1e3 : 0;
5848
+ if (h) {
5849
+ let e = l(n + 555), t = x * .61, r = T * .81, a = 15 * A;
5850
+ i === "panoramic_river" ? (t = x * (.58 + (e() - .5) * .08), r = T * (.76 + (e() - .5) * .05), a = 15.5 * A) : i === "karst_peaks" ? (t = x * (.43 + (e() - .5) * .06), r = T * .94, a = 12 * A) : i === "layered_valley" ? (t = x * .51, r = T * .9, a = 10.5 * A) : i === "twin_gorges" && (t = x * .37, r = T * .94, a = 11.5 * A);
5851
+ let o = g ? Math.sin(P * .55) * 8 * A : 0, s = g ? Math.cos(P * 1.1) * 1.2 * A : 0;
5852
+ bt(M, t + o, r + s, Math.max(8, a), O.ink, .92);
5853
+ }
5854
+ M.restore(), g && (r = requestAnimationFrame(w));
5855
+ };
5856
+ return r = requestAnimationFrame(w), () => {
5857
+ cancelAnimationFrame(r), v.disconnect();
5858
+ };
5859
+ }, [
5860
+ n,
5861
+ i,
5862
+ a,
5863
+ s,
5864
+ c,
5865
+ u,
5866
+ d,
5867
+ f,
5868
+ p,
5869
+ m,
5870
+ h,
5871
+ g
5872
+ ]), /* @__PURE__ */ o("div", {
5873
+ className: `relative w-full h-full overflow-hidden select-none ${y}`,
5874
+ children: /* @__PURE__ */ o("canvas", {
5875
+ ref: b,
5876
+ className: "block w-full h-full"
5877
+ })
5878
+ });
5879
+ };
5880
+ export { C as ARCHETYPE_CATALOG, T as DEFAULT_FUJI_LAYERS, w as DEFAULT_VFX_CONFIG, mt as JapaneseCalligraphy, S as MAGIC_SCHOOLS, x as SANSUI_COMPOSITIONS, b as SANSUI_THEMES, lt as SumiBrandEmblem, it as SumiBrushCanvas, ft as SumiButton, ct as SumiIcon, et as SumiLandscape, $e as SumiMaskReveal, pt as SumiRoughBox, St as SumiSansui, st as SumiSectionPainter, at as SumiStroke, ot as SumiVFX, E as TECHNIQUES_CATALOG, l as createSeededRandom, V as drawCalligraphicKoiCarp, k as drawCentrifugalSplatters, H as drawCornerSakuraBranch, j as drawDetachedSumiFlameWisp, R as drawFacetedRoughCrystal, A as drawFlamePetalTongue, B as drawFloatingSakuraPetal, M as drawHokusaiFoamClawCluster, N as drawHokusaiWaveCrest, z as drawSakuraBlossom, I as drawSolidOpaqueCoreSphere, O as drawSumiKasureRibbon, L as drawTarashikomiWashBlob, F as drawUkiyoeCloudBank, P as drawUkiyoeCloudScrollVolute, Ze as encodeAnimatedGIF89a, d as fbmNoise2D, g as hexToRgb, D as makeFineRoughOptions, v as mixHex, y as recolorReferenceSheetData, Xe as renderCompleteSpriteSheet, Ye as renderVFXFrame, _ as rgbaStr, f as sampleCubicCurve, u as sampleNoise2D, m as samplePolarArc, p as sampleQuadraticCurve, h as samplesToSpine };
5353
5881
 
5354
5882
  //# sourceMappingURL=index.js.map