@norbert_bodziony/bloub 0.3.0 → 0.6.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (66) hide show
  1. package/README.md +32 -5
  2. package/dist/package/assets/boule.webp +0 -0
  3. package/dist/package/assets/cloe-corps.webp +0 -0
  4. package/dist/package/assets/cloe-oeil0-x.webp +0 -0
  5. package/dist/package/assets/cloe-oeil0-y.webp +0 -0
  6. package/dist/package/assets/cloe-oeil1-x.webp +0 -0
  7. package/dist/package/assets/cloe-oeil1-y.webp +0 -0
  8. package/dist/package/assets/forme-capsule.webp +0 -0
  9. package/dist/package/assets/forme-carre.webp +0 -0
  10. package/dist/package/assets/forme-cercle.webp +0 -0
  11. package/dist/package/assets/forme-galet.webp +0 -0
  12. package/dist/package/assets/forme-goutte.webp +0 -0
  13. package/dist/package/assets/forme-hexagone.webp +0 -0
  14. package/dist/package/assets/forme-losange.webp +0 -0
  15. package/dist/package/assets/forme-nuage.webp +0 -0
  16. package/dist/package/assets/forme-pentagone.webp +0 -0
  17. package/dist/package/assets/forme-squircle.webp +0 -0
  18. package/dist/package/assets/forme-triangle.webp +0 -0
  19. package/dist/package/assets/fred-corps.webp +0 -0
  20. package/dist/package/assets/fred-oeil0-x.webp +0 -0
  21. package/dist/package/assets/fred-oeil0-y.webp +0 -0
  22. package/dist/package/assets/fred-oeil1-x.webp +0 -0
  23. package/dist/package/assets/fred-oeil1-y.webp +0 -0
  24. package/dist/package/assets/malu-corps.webp +0 -0
  25. package/dist/package/assets/malu-oeil0-x.webp +0 -0
  26. package/dist/package/assets/malu-oeil0-y.webp +0 -0
  27. package/dist/package/assets/malu-oeil1-x.webp +0 -0
  28. package/dist/package/assets/malu-oeil1-y.webp +0 -0
  29. package/dist/package/assets/nexo-corps.webp +0 -0
  30. package/dist/package/assets/nexo-oeil0-x.webp +0 -0
  31. package/dist/package/assets/nexo-oeil0-y.webp +0 -0
  32. package/dist/package/assets/nexo-oeil1-x.webp +0 -0
  33. package/dist/package/assets/nexo-oeil1-y.webp +0 -0
  34. package/dist/package/assets/vita-corps.webp +0 -0
  35. package/dist/package/assets/vita-oeil0-x.webp +0 -0
  36. package/dist/package/assets/vita-oeil0-y.webp +0 -0
  37. package/dist/package/assets/vita-oeil1-x.webp +0 -0
  38. package/dist/package/assets/vita-oeil1-y.webp +0 -0
  39. package/dist/package/assets/yoshi-corps.webp +0 -0
  40. package/dist/package/assets/yoshi-oeil0-x.webp +0 -0
  41. package/dist/package/assets/yoshi-oeil0-y.webp +0 -0
  42. package/dist/package/assets/yoshi-oeil1-x.webp +0 -0
  43. package/dist/package/assets/yoshi-oeil1-y.webp +0 -0
  44. package/dist/package/chunks/BloubBot-_XolrDe1.js +2226 -0
  45. package/dist/package/chunks/BloubBot-server-V9r0a_k-.js +1 -0
  46. package/dist/package/index.js +2 -2115
  47. package/dist/package/plush-server.js +1 -0
  48. package/dist/package/plush.js +1202 -0
  49. package/dist/package/server.js +1 -1
  50. package/dist/package/types/bot/engine.d.ts +57 -1
  51. package/dist/package/types/bot/skins.d.ts +1 -1
  52. package/dist/package/types/bot/states.d.ts +2 -0
  53. package/dist/package/types/components/BloubBot.d.ts +48 -1
  54. package/dist/package/types/index.d.ts +1 -1
  55. package/dist/package/types/plush/PlushBot.d.ts +64 -0
  56. package/dist/package/types/plush/assets.d.ts +1 -0
  57. package/dist/package/types/plush/body.d.ts +28 -0
  58. package/dist/package/types/plush/catalogue.d.ts +56 -0
  59. package/dist/package/types/plush/index.d.ts +5 -0
  60. package/dist/package/types/plush/layer.d.ts +36 -0
  61. package/dist/package/types/plush/motion.d.ts +236 -0
  62. package/dist/package/types/plush/slices.d.ts +49 -0
  63. package/dist/package/types/plush/tint.d.ts +27 -0
  64. package/dist/package/types/plush/transition.d.ts +33 -0
  65. package/dist/package/types/plush/warp.d.ts +10 -0
  66. package/package.json +13 -2
@@ -0,0 +1,1202 @@
1
+ import { A as e, B as t, G as n, H as r, I as i, J as a, K as o, M as s, R as c, T as l, U as u, W as d, X as f, Y as p, k as m, q as h, t as g } from "./chunks/BloubBot-_XolrDe1.js";
2
+ import { createComponent as _, effect as v, insert as y, memo as b, mergeProps as x, ref as ee, setAttribute as S, setStyleProperty as C, style as w, template as T } from "@solidjs/web";
3
+ import { For as E, Show as D, createEffect as O, createMemo as k, createSignal as A, createUniqueId as j, onCleanup as M, untrack as N } from "solid-js";
4
+ //#region src/plush/assets.ts
5
+ var te = {
6
+ "boule.webp": new URL("./assets/boule.webp", import.meta.url).href,
7
+ "cloe-corps.webp": new URL("./assets/cloe-corps.webp", import.meta.url).href,
8
+ "cloe-oeil0-x.webp": new URL("./assets/cloe-oeil0-x.webp", import.meta.url).href,
9
+ "cloe-oeil0-y.webp": new URL("./assets/cloe-oeil0-y.webp", import.meta.url).href,
10
+ "cloe-oeil1-x.webp": new URL("./assets/cloe-oeil1-x.webp", import.meta.url).href,
11
+ "cloe-oeil1-y.webp": new URL("./assets/cloe-oeil1-y.webp", import.meta.url).href,
12
+ "forme-capsule.webp": new URL("./assets/forme-capsule.webp", import.meta.url).href,
13
+ "forme-carre.webp": new URL("./assets/forme-carre.webp", import.meta.url).href,
14
+ "forme-cercle.webp": new URL("./assets/forme-cercle.webp", import.meta.url).href,
15
+ "forme-galet.webp": new URL("./assets/forme-galet.webp", import.meta.url).href,
16
+ "forme-goutte.webp": new URL("./assets/forme-goutte.webp", import.meta.url).href,
17
+ "forme-hexagone.webp": new URL("./assets/forme-hexagone.webp", import.meta.url).href,
18
+ "forme-losange.webp": new URL("./assets/forme-losange.webp", import.meta.url).href,
19
+ "forme-nuage.webp": new URL("./assets/forme-nuage.webp", import.meta.url).href,
20
+ "forme-pentagone.webp": new URL("./assets/forme-pentagone.webp", import.meta.url).href,
21
+ "forme-squircle.webp": new URL("./assets/forme-squircle.webp", import.meta.url).href,
22
+ "forme-triangle.webp": new URL("./assets/forme-triangle.webp", import.meta.url).href,
23
+ "fred-corps.webp": new URL("./assets/fred-corps.webp", import.meta.url).href,
24
+ "fred-oeil0-x.webp": new URL("./assets/fred-oeil0-x.webp", import.meta.url).href,
25
+ "fred-oeil0-y.webp": new URL("./assets/fred-oeil0-y.webp", import.meta.url).href,
26
+ "fred-oeil1-x.webp": new URL("./assets/fred-oeil1-x.webp", import.meta.url).href,
27
+ "fred-oeil1-y.webp": new URL("./assets/fred-oeil1-y.webp", import.meta.url).href,
28
+ "malu-corps.webp": new URL("./assets/malu-corps.webp", import.meta.url).href,
29
+ "malu-oeil0-x.webp": new URL("./assets/malu-oeil0-x.webp", import.meta.url).href,
30
+ "malu-oeil0-y.webp": new URL("./assets/malu-oeil0-y.webp", import.meta.url).href,
31
+ "malu-oeil1-x.webp": new URL("./assets/malu-oeil1-x.webp", import.meta.url).href,
32
+ "malu-oeil1-y.webp": new URL("./assets/malu-oeil1-y.webp", import.meta.url).href,
33
+ "nexo-corps.webp": new URL("./assets/nexo-corps.webp", import.meta.url).href,
34
+ "nexo-oeil0-x.webp": new URL("./assets/nexo-oeil0-x.webp", import.meta.url).href,
35
+ "nexo-oeil0-y.webp": new URL("./assets/nexo-oeil0-y.webp", import.meta.url).href,
36
+ "nexo-oeil1-x.webp": new URL("./assets/nexo-oeil1-x.webp", import.meta.url).href,
37
+ "nexo-oeil1-y.webp": new URL("./assets/nexo-oeil1-y.webp", import.meta.url).href,
38
+ "vita-corps.webp": new URL("./assets/vita-corps.webp", import.meta.url).href,
39
+ "vita-oeil0-x.webp": new URL("./assets/vita-oeil0-x.webp", import.meta.url).href,
40
+ "vita-oeil0-y.webp": new URL("./assets/vita-oeil0-y.webp", import.meta.url).href,
41
+ "vita-oeil1-x.webp": new URL("./assets/vita-oeil1-x.webp", import.meta.url).href,
42
+ "vita-oeil1-y.webp": new URL("./assets/vita-oeil1-y.webp", import.meta.url).href,
43
+ "yoshi-corps.webp": new URL("./assets/yoshi-corps.webp", import.meta.url).href,
44
+ "yoshi-oeil0-x.webp": new URL("./assets/yoshi-oeil0-x.webp", import.meta.url).href,
45
+ "yoshi-oeil0-y.webp": new URL("./assets/yoshi-oeil0-y.webp", import.meta.url).href,
46
+ "yoshi-oeil1-x.webp": new URL("./assets/yoshi-oeil1-x.webp", import.meta.url).href,
47
+ "yoshi-oeil1-y.webp": new URL("./assets/yoshi-oeil1-y.webp", import.meta.url).href
48
+ }, ne = [
49
+ "cercle",
50
+ "galet",
51
+ "squircle",
52
+ "capsule",
53
+ "triangle",
54
+ "hexagone",
55
+ "nuage",
56
+ "goutte",
57
+ "carre",
58
+ "losange",
59
+ "pentagone"
60
+ ], re = [
61
+ "idle",
62
+ "wink",
63
+ "wide",
64
+ "thinking",
65
+ "notify",
66
+ "asleep",
67
+ "failed"
68
+ ], P = (e, t, n = 0) => ({
69
+ w: e,
70
+ h: t,
71
+ tilt: n,
72
+ open: 1
73
+ }), F = {
74
+ nexo: [[
75
+ .8463031722054379,
76
+ 1.1432813538461537,
77
+ .035,
78
+ -.065
79
+ ], [
80
+ .8463031722054379,
81
+ 1.1432813538461537,
82
+ -.015,
83
+ -.058
84
+ ]],
85
+ vita: [[
86
+ 1.1065201648485468,
87
+ 1.3715440577454037,
88
+ .034055756216271146,
89
+ -.05281578999623958
90
+ ], [
91
+ .9879326262863181,
92
+ .704834060505008,
93
+ -.026029860323685244,
94
+ -.05510519721699535
95
+ ]],
96
+ cloe: [[
97
+ .7330933320692096,
98
+ .5707016106480031,
99
+ .024552162164021694,
100
+ -.038398427223289566
101
+ ], [
102
+ .7626944185432071,
103
+ .5431152830931956,
104
+ -.041541687753233185,
105
+ -.03950575553898529
106
+ ]],
107
+ malu: [[
108
+ 1.0586630508735577,
109
+ 1.201687371851717,
110
+ .009231984564124829,
111
+ -.0044476764477897265
112
+ ], [
113
+ .8266234890168364,
114
+ .8621901641452211,
115
+ -.026116871314858032,
116
+ .0003016649469345866
117
+ ]],
118
+ yoshi: [[
119
+ .8527194256418902,
120
+ .7757119056093287,
121
+ .03916727618687797,
122
+ .007869041986432974
123
+ ], [
124
+ .8797267768823489,
125
+ .7829079218623657,
126
+ -.028381687537700435,
127
+ .012892774756514975
128
+ ]],
129
+ fred: [[
130
+ 1.7586780224155572,
131
+ 1.667393362265376,
132
+ .039353114938410254,
133
+ -.035566855454058126
134
+ ], [
135
+ 1.8556643796915675,
136
+ 1.6423739844251715,
137
+ -.055407781997306026,
138
+ -.03778285688705488
139
+ ]]
140
+ }, I = (e, t, n, [r, i, a, o]) => {
141
+ let s = Math.min(n.w, n.h), c = n.w > n.h ? n.w - s : 0, l = n.h > n.w ? n.h - s : 0, u = `${e}-oeil${t}`;
142
+ return {
143
+ file: `${u}-x.webp`,
144
+ images: {
145
+ x: `${u}-x.webp`,
146
+ y: `${u}-y.webp`
147
+ },
148
+ court: s,
149
+ kw: (r - c) / s,
150
+ kh: (i - l) / s,
151
+ dx: a,
152
+ dy: o
153
+ };
154
+ };
155
+ function L(e, t, n, r, i, a, o, s = 0) {
156
+ let [c, l] = F[e];
157
+ return {
158
+ id: e,
159
+ shape: t,
160
+ ink: n,
161
+ body: `${e}-corps.webp`,
162
+ pads: [I(e, 0, i[0], c), I(e, 1, i[1], l)],
163
+ face: {
164
+ id: `plush-${e}`,
165
+ gaze: {
166
+ yaw: a,
167
+ pitch: o,
168
+ roll: s
169
+ },
170
+ split: r,
171
+ eyes: i
172
+ }
173
+ };
174
+ }
175
+ var ie = [
176
+ L("nexo", "squircle", "#e45206", 16, [P(.205, .43, -28), P(.205, .43, 35)], 1, -7, -1),
177
+ L("vita", "hexagone", "#22c377", 17, [P(.27, .51, 3), P(.49, .13, -4)], -4, 5, 8),
178
+ L("cloe", "triangle", "#df2986", 20, [P(.33, .12, 28), P(.34, .11, -26)], 3, 16),
179
+ L("malu", "cercle", "#9a55ef", 15, [P(.23, .42, -3), P(.19, .18)], 9, 4, -8),
180
+ L("yoshi", "capsule", "#e94741", 18, [P(.3, .16, 17), P(.31, .15, -18)], 11, 20, 2),
181
+ L("fred", "hexagone", "#efb428", 21, [P(.46, .5), P(.48, .5)], 7, -3)
182
+ ], R = new Map(ie.map((e) => [e.id, e])), ae = {
183
+ ...R.get("fred").pads[0],
184
+ dx: 0,
185
+ dy: 0
186
+ }, oe = (e) => `forme-${e}.webp`, se = "boule.webp", ce = [
187
+ "flip",
188
+ "pop",
189
+ "warp",
190
+ "dissolve",
191
+ "cut"
192
+ ], le = "flip", z = l.SHAPE_MORPH, B = m.get("notify"), V = (e) => B.pose(e).notif?.r ?? 0, H = V(10), ue = (e) => V(e) / H, de = (() => {
193
+ for (let e = 1; e < 5e3; e++) if (V(e / 1e3) === H && V((e - 1) / 1e3) !== H) return e / 1e3;
194
+ return z;
195
+ })(), U = z / 2, fe = {
196
+ cut: z,
197
+ warp: z,
198
+ dissolve: z,
199
+ flip: z * 2,
200
+ pop: U + de
201
+ }, pe = {
202
+ corps: "avant",
203
+ melange: 0,
204
+ sx: 1,
205
+ sy: 1,
206
+ bascule: !1,
207
+ fini: !1
208
+ }, W = {
209
+ corps: "apres",
210
+ melange: 1,
211
+ sx: 1,
212
+ sy: 1,
213
+ bascule: !0,
214
+ fini: !0
215
+ };
216
+ function me(e, t) {
217
+ if (t < 0) return pe;
218
+ let n = fe[e];
219
+ if (t >= n) return W;
220
+ let r = t / n;
221
+ switch (e) {
222
+ case "cut": return {
223
+ ...W,
224
+ fini: !1
225
+ };
226
+ case "warp":
227
+ case "dissolve": return {
228
+ corps: "deux",
229
+ melange: p.easeOutQuint(r),
230
+ sx: 1,
231
+ sy: 1,
232
+ bascule: !0,
233
+ fini: !1
234
+ };
235
+ case "flip": {
236
+ let e = p.easeInOutCubic(r), t = e >= .5;
237
+ return {
238
+ corps: t ? "apres" : "avant",
239
+ melange: +!!t,
240
+ sx: Math.abs(Math.cos(Math.PI * e)),
241
+ sy: 1,
242
+ bascule: t,
243
+ fini: !1
244
+ };
245
+ }
246
+ case "pop": {
247
+ if (t < U) {
248
+ let e = 1 - p.easeInOutCubic(t / U);
249
+ return {
250
+ corps: "avant",
251
+ melange: 0,
252
+ sx: e,
253
+ sy: e,
254
+ bascule: !1,
255
+ fini: !1
256
+ };
257
+ }
258
+ let e = t - U, n = p.easeOutQuint(a(e / de)) * ue(e);
259
+ return {
260
+ corps: "apres",
261
+ melange: 1,
262
+ sx: n,
263
+ sy: n,
264
+ bascule: !0,
265
+ fini: !1
266
+ };
267
+ }
268
+ }
269
+ }
270
+ function he(e, t, n) {
271
+ let r = p.easeOutQuint(a(n / z));
272
+ return t.map((t, n) => f(e[n] ?? t, t, r));
273
+ }
274
+ //#endregion
275
+ //#region src/plush/warp.ts
276
+ var ge = "#version 300 es\nin vec2 p;\nout vec2 v;\nvoid main() {\n v = p;\n gl_Position = vec4(p, 0.0, 1.0);\n}", _e = "#version 300 es\nprecision highp float;\n#define N 64\nin vec2 v;\nout vec4 couleur;\nuniform sampler2D ta;\nuniform sampler2D tb;\nuniform float ra[N];\nuniform float rb[N];\nuniform float rc[N];\nuniform float melange;\nconst float TAU = 6.283185307179586;\n\n// comme radiusAtAngle : interpolation lineaire entre deux echantillons voisins\nfloat rayon(float r[N], float t) {\n int i = int(floor(t));\n float f = t - floor(t);\n return mix(r[i % N], r[(i + 1) % N], f);\n}\n\nvoid main() {\n // repere du viewBox : y vers le bas, comme le moteur\n vec2 q = vec2(v.x, -v.y);\n float ang = atan(q.y, q.x);\n float t = fract(ang / TAU) * float(N);\n float r = rayon(rc, t);\n vec2 qa = q * rayon(ra, t) / r;\n vec2 qb = q * rayon(rb, t) / r;\n // l'image couvre le viewBox ; sa premiere ligne est le haut\n vec4 a = texture(ta, (qa + 1.0) * 0.5);\n vec4 b = texture(tb, (qb + 1.0) * 0.5);\n couleur = mix(a, b, melange);\n}";
277
+ function G(e) {
278
+ return new Promise((t, n) => {
279
+ let r = new Image();
280
+ r.onload = () => t(r), r.onerror = () => n(/* @__PURE__ */ Error(`warp: image introuvable ${e}`)), r.src = e;
281
+ });
282
+ }
283
+ function ve(e) {
284
+ let t = e.getContext("webgl2", {
285
+ premultipliedAlpha: !0,
286
+ alpha: !0
287
+ });
288
+ if (!t) return null;
289
+ let n = (e, n) => {
290
+ let r = t.createShader(e);
291
+ if (t.shaderSource(r, n), t.compileShader(r), !t.getShaderParameter(r, t.COMPILE_STATUS)) throw Error(t.getShaderInfoLog(r) ?? "shader");
292
+ return r;
293
+ }, r = t.createProgram();
294
+ if (t.attachShader(r, n(t.VERTEX_SHADER, ge)), t.attachShader(r, n(t.FRAGMENT_SHADER, _e)), t.linkProgram(r), !t.getProgramParameter(r, t.LINK_STATUS)) throw Error(t.getProgramInfoLog(r) ?? "programme");
295
+ t.useProgram(r);
296
+ let i = t.createBuffer();
297
+ t.bindBuffer(t.ARRAY_BUFFER, i), t.bufferData(t.ARRAY_BUFFER, new Float32Array([
298
+ -1,
299
+ -1,
300
+ 1,
301
+ -1,
302
+ -1,
303
+ 1,
304
+ 1,
305
+ 1
306
+ ]), t.STATIC_DRAW);
307
+ let a = t.getAttribLocation(r, "p");
308
+ t.enableVertexAttribArray(a), t.vertexAttribPointer(a, 2, t.FLOAT, !1, 0, 0);
309
+ let o = (e, n) => {
310
+ let i = t.createTexture();
311
+ return t.activeTexture(t.TEXTURE0 + e), t.bindTexture(t.TEXTURE_2D, i), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MIN_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_MAG_FILTER, t.LINEAR), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_S, t.CLAMP_TO_EDGE), t.texParameteri(t.TEXTURE_2D, t.TEXTURE_WRAP_T, t.CLAMP_TO_EDGE), t.uniform1i(t.getUniformLocation(r, n), e), i;
312
+ }, s = o(0, "ta"), c = o(1, "tb"), l = {
313
+ ra: t.getUniformLocation(r, "ra"),
314
+ rb: t.getUniformLocation(r, "rb"),
315
+ rc: t.getUniformLocation(r, "rc"),
316
+ melange: t.getUniformLocation(r, "melange")
317
+ }, u = (e, n, r) => {
318
+ t.activeTexture(t.TEXTURE0 + e), t.bindTexture(t.TEXTURE_2D, n), t.pixelStorei(t.UNPACK_PREMULTIPLY_ALPHA_WEBGL, !0), t.texImage2D(t.TEXTURE_2D, 0, t.RGBA, t.RGBA, t.UNSIGNED_BYTE, r);
319
+ }, d = 0;
320
+ return {
321
+ async corps(e, t) {
322
+ let n = ++d, [r, i] = await Promise.all([G(e), G(t)]);
323
+ n === d && (u(0, s, r), u(1, c, i));
324
+ },
325
+ dessine(n, r, i, a) {
326
+ t.viewport(0, 0, e.width, e.height), t.clearColor(0, 0, 0, 0), t.clear(t.COLOR_BUFFER_BIT), t.uniform1fv(l.ra, n), t.uniform1fv(l.rb, r), t.uniform1fv(l.rc, i), t.uniform1f(l.melange, a), t.drawArrays(t.TRIANGLE_STRIP, 0, 4);
327
+ },
328
+ detruit() {
329
+ d++, t.getExtension("WEBGL_lose_context")?.loseContext();
330
+ }
331
+ };
332
+ }
333
+ var K = 316, ye = /* @__PURE__ */ T("<svg><image></svg>", 2), be = /* @__PURE__ */ T("<svg><foreignObject><canvas style=width:100%;height:100%;display:block></svg>", 2), xe = /* @__PURE__ */ T("<svg><filter filterUnits=userSpaceOnUse primitiveUnits=userSpaceOnUse color-interpolation-filters=sRGB><feTurbulence type=fractalNoise baseFrequency=0.05 numOctaves=4 seed=7></feTurbulence><feColorMatrix type=matrix values=\"1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 0 0 0 0 1\"></feColorMatrix><feComponentTransfer><feFuncR type=linear></feFuncR><feFuncG type=linear></feFuncG><feFuncB type=linear></svg>", 2), Se = /* @__PURE__ */ T("<svg><mask maskUnits=userSpaceOnUse><rect></svg>", 2), Ce = /* @__PURE__ */ T("<svg><defs><!><!><!><!></svg>", 2), q = (e, t) => _(D, {
334
+ when: e,
335
+ children: (e) => (() => {
336
+ var n = ye();
337
+ return S(n, "x", -158), S(n, "y", -158), S(n, "width", K), S(n, "height", K), S(n, "mask", t ? `url(#${t})` : void 0), v(() => e(), (e) => {
338
+ S(n, "href", e);
339
+ }), n;
340
+ })()
341
+ });
342
+ function we(e) {
343
+ let t = () => e.rendu().corps === "deux", [n, r] = A(!1), i = () => e.transition === "warp" && t(), a = () => e.transition === "dissolve" && t();
344
+ return [
345
+ _(D, {
346
+ get when() {
347
+ return i();
348
+ },
349
+ get children() {
350
+ return _(Te, x(e, { onPret: r }));
351
+ }
352
+ }),
353
+ _(D, {
354
+ get when() {
355
+ return a();
356
+ },
357
+ get children() {
358
+ return _(De, {
359
+ get passage() {
360
+ return e.passage;
361
+ },
362
+ melange: () => e.rendu().melange
363
+ });
364
+ }
365
+ }),
366
+ _(D, {
367
+ get when() {
368
+ return b(() => !(i() && n()))() && !a();
369
+ },
370
+ get children() {
371
+ return q(e.rendu().corps === "avant" ? e.passage.avant.url : e.passage.apres.url);
372
+ }
373
+ })
374
+ ];
375
+ }
376
+ function Te(e) {
377
+ let [t, n] = A(!1), r = Math.round((e.size ?? K) * (globalThis.devicePixelRatio || 1)), i, a = () => i ? ve(i) : null, o = null;
378
+ M(() => {
379
+ o?.detruit(), e.onPret(!1);
380
+ }), O(() => e.passage, (t) => {
381
+ o ??= a();
382
+ let { avant: r, apres: i } = t;
383
+ !o || !r.url || !i.url || (n(!1), e.onPret(!1), o.corps(r.url, i.url).then(() => {
384
+ n(!0), e.onPret(!0);
385
+ }));
386
+ }), O(() => {
387
+ if (!t()) return null;
388
+ let n = e.passage;
389
+ return {
390
+ p: n,
391
+ s: e.clock() - n.debut,
392
+ melange: e.rendu().melange
393
+ };
394
+ }, (e) => {
395
+ if (!e || !o) return;
396
+ let { p: t, s: n, melange: r } = e;
397
+ o.dessine(t.avant.radii, t.apres.radii, he(t.avant.radii, t.apres.radii, n), r);
398
+ });
399
+ var s = be(), c = s.firstChild;
400
+ S(s, "x", -158), S(s, "y", -158), S(s, "width", K), S(s, "height", K);
401
+ var l = i;
402
+ return typeof l == "function" || Array.isArray(l) ? ee(() => l, c) : i = c, S(c, "width", r), S(c, "height", r), v(() => t() ? "inline" : "none", (e) => {
403
+ C(s, "display", e);
404
+ }), s;
405
+ }
406
+ var Ee = .12;
407
+ function De(e) {
408
+ let t = j(), n = (t) => {
409
+ let n = e.melange(), r = -1 / (.4 * Ee), i = (n * 1.12 + .75) / Ee;
410
+ return t ? {
411
+ pente: 20.833333333333332,
412
+ origine: 1 - i
413
+ } : {
414
+ pente: r,
415
+ origine: i
416
+ };
417
+ }, r = (e, t) => (() => {
418
+ var r = xe(), i = r.firstChild.nextSibling.nextSibling.firstChild, a = i.nextSibling, o = a.nextSibling;
419
+ return S(r, "id", e), S(r, "x", -158), S(r, "y", -158), S(r, "width", K), S(r, "height", K), v(() => ({
420
+ e: n(t).pente,
421
+ t: n(t).origine,
422
+ a: n(t).pente,
423
+ o: n(t).origine,
424
+ i: n(t).pente,
425
+ n: n(t).origine
426
+ }), ({ e, t, a: n, o: r, i: s, n: c }, l) => {
427
+ e !== l?.e && S(i, "slope", e), t !== l?.t && S(i, "intercept", t), n !== l?.a && S(a, "slope", n), r !== l?.o && S(a, "intercept", r), s !== l?.i && S(o, "slope", s), c !== l?.n && S(o, "intercept", c);
428
+ }), r;
429
+ })(), i = (e, t) => (() => {
430
+ var n = Se(), r = n.firstChild;
431
+ return S(n, "id", e), S(n, "x", -158), S(n, "y", -158), S(n, "width", K), S(n, "height", K), S(r, "x", -158), S(r, "y", -158), S(r, "width", K), S(r, "height", K), S(r, "filter", `url(#${t})`), n;
432
+ })();
433
+ return [
434
+ (() => {
435
+ var e = Ce(), n = e.firstChild, a = n.nextSibling, o = a.nextSibling, s = o.nextSibling;
436
+ return y(e, () => r(`${t}-fa`, !0), n), y(e, () => r(`${t}-fb`, !1), a), y(e, () => i(`${t}-ma`, `${t}-fa`), o), y(e, () => i(`${t}-mb`, `${t}-fb`), s), e;
437
+ })(),
438
+ b(() => q(e.passage.avant.url, `${t}-ma`)),
439
+ b(() => q(e.passage.apres.url, `${t}-mb`))
440
+ ];
441
+ }
442
+ //#endregion
443
+ //#region src/plush/slices.ts
444
+ var Oe = .5;
445
+ function ke(e, t, n) {
446
+ let r = Math.min(t, n), i = t >= n, a = (Math.max(t, n) - r) / 2, [o, s] = i ? [e.kw * r, e.kh * r] : [e.kh * r, e.kw * r], c = Oe * r, l = o + 2 * c, u = (e, t, n, r) => i ? {
447
+ src: "x",
448
+ x: e,
449
+ y: -s / 2,
450
+ w: t - e,
451
+ h: s,
452
+ viewBox: `${n / l} 0 ${(r - n) / l} 1`
453
+ } : {
454
+ src: "y",
455
+ x: -s / 2,
456
+ y: e,
457
+ w: s,
458
+ h: t - e,
459
+ viewBox: `0 ${n / l} 1 ${(r - n) / l}`
460
+ }, d = [], f = (e, t, n, r) => {
461
+ d.push(u(e, t, n, r)), d.push(u(-t, -e, l - r, l - n));
462
+ }, p = Math.max(c, a / 3);
463
+ p === c ? f(-a - o / 2, Math.min(-a + c, 0), 0, o / 2 + Math.min(a, c)) : f(-a - o / 2, -a, 0, o / 2);
464
+ for (let e = +(p === c); e * p < a - 1e-9 * r; e++) {
465
+ let t = -a + e * p, n = Math.min(t + p, 0), r = o / 2 + e % 2 * c;
466
+ f(t, n, r, r + (n - t) / p * c);
467
+ }
468
+ return d;
469
+ }
470
+ function Ae(e) {
471
+ let t = 0, n = 0;
472
+ for (let r of e) t = Math.max(t, Math.abs(r.x), Math.abs(r.x + r.w)), n = Math.max(n, Math.abs(r.y), Math.abs(r.y + r.h));
473
+ return {
474
+ x: t,
475
+ y: n
476
+ };
477
+ }
478
+ //#endregion
479
+ //#region src/plush/motion.ts
480
+ var je = (e) => e === "thinking" || e === "asleep" || e === "failed" ? "idle" : e, J = (e) => m.get(e === "asleep" ? "sleep" : e === "failed" ? "idle" : e).morph, Me = {
481
+ yaw: 0,
482
+ pitch: 0,
483
+ mix: 0,
484
+ spin: 0,
485
+ wander: .4
486
+ }, Ne = {
487
+ yaw: 18,
488
+ pitch: 22,
489
+ mix: 1,
490
+ spin: 0,
491
+ wander: .4
492
+ }, Pe = {
493
+ yaw: 0,
494
+ pitch: 0,
495
+ mix: 0,
496
+ spin: 0,
497
+ wander: .15,
498
+ blink: 0
499
+ }, Fe = (e) => e === "thinking" ? Ne : e === "asleep" ? Pe : Me, Ie = (e, t, n) => ({
500
+ yaw: f(e.yaw, t.yaw, n),
501
+ pitch: f(e.pitch, t.pitch, n),
502
+ mix: f(e.mix, t.mix, n),
503
+ spin: f(e.spin, t.spin, n),
504
+ wander: f(e.wander, t.wander, n),
505
+ ...e.blink === void 0 && t.blink === void 0 ? {} : { blink: f(e.blink ?? 1, t.blink ?? 1, n) }
506
+ }), Le = (e, t, n) => (r) => Ie(e, t, p.easeOutQuint(a(r / n))), Y = .8, Re = (e) => e <= 0 || e >= .8 ? 0 : 12 * Math.sin(2 * h * e / Y) * Math.sin(Math.PI * e / Y);
507
+ function ze(e, t) {
508
+ let n = Le(e, Fe(t), J(t));
509
+ return t === "failed" ? (e) => {
510
+ let t = n(e);
511
+ return {
512
+ ...t,
513
+ spin: t.spin + Re(e)
514
+ };
515
+ } : n;
516
+ }
517
+ var Be = t.get("somnolent"), Ve = {
518
+ w: .3,
519
+ h: m.get("wink").pose(0).eyes[1].h,
520
+ open: 1,
521
+ tilt: 0
522
+ }, He = {
523
+ id: "plush-asleep",
524
+ gaze: Be.gaze,
525
+ split: Be.split,
526
+ eyes: [{ ...Ve }, { ...Ve }]
527
+ }, Ue = t.get("triste"), We = 1.8, Ge = [.6, 1.7], Ke = (e) => +(e.eyes[1].w * e.eyes[1].h > e.eyes[0].w * e.eyes[0].h), qe = /* @__PURE__ */ new WeakMap();
528
+ function Je(e) {
529
+ let t = qe.get(e);
530
+ if (!t) {
531
+ let { w: n, h: r } = e.eyes[Ke(e)], i = n / r > Ge[0] && n / r < Ge[1] ? n / We : r, a = (e) => ({
532
+ w: n,
533
+ h: i,
534
+ tilt: Ue.eyes[e].tilt,
535
+ open: 1
536
+ });
537
+ t = {
538
+ id: `${e.id}-failed`,
539
+ gaze: { ...Ue.gaze },
540
+ split: e.split,
541
+ eyes: [a(0), a(1)]
542
+ }, qe.set(e, t);
543
+ }
544
+ return t;
545
+ }
546
+ var Ye = /* @__PURE__ */ new WeakMap();
547
+ function Xe(e, t) {
548
+ let n = Ye.get(e);
549
+ if (!n) {
550
+ let r = e[Ke(t)];
551
+ n = [{
552
+ ...r,
553
+ dx: e[0].dx,
554
+ dy: e[0].dy
555
+ }, {
556
+ ...r,
557
+ dx: e[1].dx,
558
+ dy: e[1].dy
559
+ }], Ye.set(e, n);
560
+ }
561
+ return n;
562
+ }
563
+ var Ze = {
564
+ from: null,
565
+ at: -Infinity,
566
+ start: 1
567
+ }, Qe = (e, t) => e.from ? e.start + (1 - e.start) * p.easeOutQuint(a((t - e.at) / l.SHAPE_MORPH)) : 1, $e = (e, t, n) => ({
568
+ from: t,
569
+ at: n,
570
+ start: 1 - Qe(e, n)
571
+ });
572
+ function et(e, t) {
573
+ let n = e.map(() => ({
574
+ x: 0,
575
+ y: 0
576
+ }));
577
+ if (t === 1 || !e.length) return n;
578
+ let r = 0, i = 0;
579
+ for (let { m: t } of e) r += (t[4] ?? 0) / e.length, i += (t[5] ?? 0) / e.length;
580
+ let a = Math.hypot(r, i);
581
+ if (a < 1e-6) return n;
582
+ let o = r / a, s = i / a, c = -Infinity;
583
+ for (let { m: t, w: n, h: r } of e) {
584
+ let [e = 1, i = 0, a = 0, l = 1, u = 0, d = 0] = t, f = Math.hypot(n / 2 * (e * o + i * s), r / 2 * (a * o + l * s));
585
+ c = Math.max(c, u * o + d * s + f);
586
+ }
587
+ let l = r + (c - a) * o, u = i + (c - a) * s;
588
+ return e.map(({ m: e }) => ({
589
+ x: (t - 1) * ((e[4] ?? 0) - l),
590
+ y: (t - 1) * ((e[5] ?? 0) - u)
591
+ }));
592
+ }
593
+ var tt = (e) => (e.match(/-?[\d.]+(?:e-?\d+)?/g) ?? []).map(Number), nt = 30 / 205, rt = .1, it = r(0);
594
+ function at(e, t) {
595
+ if (t >= 1) return;
596
+ let [n = 1, r = 0, i = 0, a = 1] = e, o = r / t, s = a / t, c = n * a - r * i;
597
+ return `matrix(${(a * n - i * o) / c},${(n * o - r * n) / c},${(a * i - i * s) / c},${(n * s - r * i) / c},0,0)`;
598
+ }
599
+ function ot(e, t, n, r, i) {
600
+ if (n >= 1) return {
601
+ w: r,
602
+ h: i
603
+ };
604
+ let [a = 1, o = 0, s = 0, c = 1] = e, l = o / t, u = c / t;
605
+ return {
606
+ w: r * Math.hypot(a, l * n) / Math.hypot(a, l),
607
+ h: i * Math.hypot(s, u * n) / Math.hypot(s, u)
608
+ };
609
+ }
610
+ function st(e, t, n, r, i) {
611
+ if (t >= n) return null;
612
+ let [, , , , o = 0, s = 0] = e, c = a((t - it) / (n - it)), l = Math.min(r.x, r.y), u = nt * 2 * l, d = Math.max(u, Math.hypot(i.x - r.x + l, i.y - r.y + l) - l), f = u + c ** 8 * (d - u), p = rt * 2 * l, m = [];
613
+ for (let e = 3; e >= 0; e--) {
614
+ let t = f + p * e / 4;
615
+ m.push({
616
+ w: r.x + t,
617
+ h: r.y + t,
618
+ r: l + t,
619
+ alpha: 1 / (e + 1)
620
+ });
621
+ }
622
+ return {
623
+ x: o,
624
+ y: s,
625
+ s: c,
626
+ bands: m
627
+ };
628
+ }
629
+ var ct = (e, t) => e === "asleep" ? He : e === "failed" ? Je(t) : null, lt = .62, ut = -1.3, dt = .6, ft = .3, X = {
630
+ phase: 0,
631
+ at: -Infinity,
632
+ from: 0,
633
+ on: !1,
634
+ exit: 1
635
+ };
636
+ function Z(e, t) {
637
+ let n = t - e.at;
638
+ return e.on ? e.from + (1 - e.from) * p.easeOutCubic(a(n / ft)) : e.from * (1 - p.easeOutQuint(a(n / e.exit)));
639
+ }
640
+ function pt(e, t, n, r) {
641
+ if (t === e.on) return e;
642
+ let i = Z(e, n);
643
+ return {
644
+ phase: t && i < .001 ? n : e.phase,
645
+ at: n,
646
+ from: i,
647
+ on: t,
648
+ exit: J(r)
649
+ };
650
+ }
651
+ function mt(t, r) {
652
+ let i = Z(t, r);
653
+ return i < .001 ? [] : n.map((n, a) => {
654
+ let o = e(r - t.phase, a);
655
+ return {
656
+ x: lt + n * dt,
657
+ y: ut,
658
+ r: d * dt * (1 + (u - 1) * o) * (.5 + .5 * i),
659
+ opacity: i * (.55 + .45 * o)
660
+ };
661
+ });
662
+ }
663
+ var ht = 3, gt = {
664
+ x: .55,
665
+ y: -.74
666
+ }, _t = {
667
+ x: 1.25,
668
+ y: -1.38
669
+ }, vt = [.1, .2];
670
+ function yt(e, t) {
671
+ let n = Z(e, t);
672
+ if (n < .001) return [];
673
+ let r = [];
674
+ for (let i = 0; i < ht; i++) {
675
+ let o = (((t - e.phase) / 3 - i / ht) % 1 + 1) % 1, s = a(o / .15) * a((1 - o) / .45);
676
+ s * n < .001 || r.push({
677
+ x: f(gt.x, _t.x, o) + Math.sin(o * h) * .04,
678
+ y: f(gt.y, _t.y, o),
679
+ size: f(vt[0], vt[1], o),
680
+ opacity: s * n
681
+ });
682
+ }
683
+ return r;
684
+ }
685
+ //#endregion
686
+ //#region src/plush/layer.tsx
687
+ var bt = /* @__PURE__ */ T("<svg><g><!><!></svg>", 2), xt = /* @__PURE__ */ T("<svg><g></svg>", 2), St = /* @__PURE__ */ T("<svg preserveAspectRatio=none><image width=1 height=1 preserveAspectRatio=none>"), Ct = /* @__PURE__ */ T("<svg><g><g><!><!></svg>", 2), wt = /* @__PURE__ */ T("<svg><g><path fill=none stroke=#1c1a1d stroke-linecap=round></svg>", 2), Tt = /* @__PURE__ */ T("<svg><mask><g><g><g></svg>", 2), Et = /* @__PURE__ */ T("<svg><rect fill=#fff></svg>", 2), Dt = /* @__PURE__ */ T("<svg><image></svg>", 2), Ot = /* @__PURE__ */ T("<svg><path fill=none stroke-linecap=round stroke-linejoin=round></svg>", 2), Q = .8, kt = .24, $ = (e) => Math.round(e * 10) / 10, At = .42, jt = .2, Mt = "mix-blend-mode:plus-lighter", Nt = "isolation:isolate";
688
+ function Pt(e) {
689
+ let t = () => e.context.frame(), n = k(() => (t(), e.frozen ? W : me(e.transition, e.context.clock() - e.passage.debut)));
690
+ O(() => {
691
+ let { bascule: e, fini: t } = n();
692
+ return `${e}|${t}`;
693
+ }, (t) => {
694
+ let [n, r] = t.split("|");
695
+ e.onStep?.({
696
+ bascule: n === "true",
697
+ fini: r === "true"
698
+ });
699
+ });
700
+ let r = () => {
701
+ let { sx: e, sy: t } = n();
702
+ return e === 1 && t === 1 ? void 0 : `scale(${e},${t})`;
703
+ }, i = k(() => (t(), mt(e.dots, e.context.time()))), a = k(() => (t(), yt(e.zs, e.context.time()))), o = k(() => (t(), e.padFade ? Qe(e.padFade, e.context.clock()) : 1)), s = k(() => (t(), Z(e.zs, e.context.time()))), c = k(() => {
704
+ let n = e.eyeScale ?? 1;
705
+ return n === 1 ? null : et(t().eyes.map((t, n) => {
706
+ let r = e.pads[n] ?? e.pads[0], i = tt(t.matrix);
707
+ return i[4] = (i[4] ?? 0) + r.dx * 100, i[5] = (i[5] ?? 0) + r.dy * 100, {
708
+ m: i,
709
+ w: t.w,
710
+ h: t.h
711
+ };
712
+ }), n);
713
+ }), l = () => e.eyeScale && e.eyeScale !== 1 ? ` scale(${e.eyeScale})` : "";
714
+ return [
715
+ (() => {
716
+ var i = bt(), a = i.firstChild, u = a.nextSibling;
717
+ return y(i, _(we, {
718
+ get passage() {
719
+ return e.passage;
720
+ },
721
+ get transition() {
722
+ return e.transition;
723
+ },
724
+ rendu: n,
725
+ get clock() {
726
+ return e.context.clock;
727
+ },
728
+ get size() {
729
+ return e.size;
730
+ }
731
+ }), a), y(i, _(E, {
732
+ get each() {
733
+ return t().eyes;
734
+ },
735
+ keyed: !1,
736
+ children: (t, n) => {
737
+ let r = () => e.pads[n] ?? e.pads[0], i = () => {
738
+ let t = e.padFade?.from, i = t?.[n] ?? t?.[0];
739
+ return i && i.file !== r().file && o() < 1 ? i : null;
740
+ }, a = k(() => tt(t().matrix)), u = k(() => ot(a(), t().open, t().rest, t().w, t().h)), d = k(() => ke(r(), u().w, u().h)), f = k(() => at(a(), t().open)), p = k(() => {
741
+ let e = {
742
+ x: u().w / 2,
743
+ y: u().h / 2
744
+ };
745
+ return st(a(), t().open, t().rest, e, Ae(d()));
746
+ }), m = `${e.context.uid}-paupiere-${n}`, h = () => r().dx * 100 + (c()?.[n]?.x ?? 0), g = () => r().dy * 100 + (c()?.[n]?.y ?? 0), b = (t, n, r) => {
747
+ let i = () => n().length > 1;
748
+ var a = xt();
749
+ return y(a, _(E, {
750
+ get each() {
751
+ return n();
752
+ },
753
+ keyed: !1,
754
+ children: (n) => (() => {
755
+ var r = St(), a = r.firstChild;
756
+ return v(() => ({
757
+ e: n().x,
758
+ t: n().y,
759
+ a: n().w,
760
+ o: n().h,
761
+ i: n().viewBox,
762
+ n: i() ? Mt : void 0,
763
+ s: e.padHref(t().images[n().src])
764
+ }), ({ e, t, a: n, o: i, i: o, n: s, s: c }, l) => {
765
+ e !== l?.e && S(r, "x", e), t !== l?.t && S(r, "y", t), n !== l?.a && S(r, "width", n), i !== l?.o && S(r, "height", i), o !== l?.i && S(r, "viewBox", o), w(r, s, l?.n), c !== l?.s && S(a, "href", c);
766
+ }), r;
767
+ })()
768
+ })), v(() => ({
769
+ e: r() < 1 ? r() : void 0,
770
+ t: f(),
771
+ a: i() ? Nt : void 0
772
+ }), ({ e, t, a: n }, r) => {
773
+ e !== r?.e && S(a, "opacity", e), t !== r?.t && S(a, "transform", t), w(a, n, r?.a);
774
+ }), a;
775
+ }, x = () => `translate(${h()},${g()}) ${t().matrix}${l()}`;
776
+ return [_(D, {
777
+ get when() {
778
+ return s() < 1;
779
+ },
780
+ get children() {
781
+ var e = Ct(), n = e.firstChild, a = n.firstChild, c = a.nextSibling;
782
+ return y(e, _(D, {
783
+ get when() {
784
+ return p();
785
+ },
786
+ children: (e) => {
787
+ let t = () => h() + e().x, n = () => g() + e().y;
788
+ var r = Tt(), i = r.firstChild, a = i.firstChild, o = a.firstChild;
789
+ return S(r, "id", m), y(o, _(E, {
790
+ get each() {
791
+ return e().bands;
792
+ },
793
+ keyed: !1,
794
+ children: (e) => (() => {
795
+ var t = Et();
796
+ return v(() => ({
797
+ e: -e().w,
798
+ t: -e().h,
799
+ a: 2 * e().w,
800
+ o: 2 * e().h,
801
+ i: e().r,
802
+ n: e().alpha
803
+ }), ({ e, t: n, a: r, o: i, i: a, n: o }, s) => {
804
+ e !== s?.e && S(t, "x", e), n !== s?.t && S(t, "y", n), r !== s?.a && S(t, "width", r), i !== s?.o && S(t, "height", i), a !== s?.i && S(t, "rx", a), o !== s?.n && S(t, "fill-opacity", o);
805
+ }), t;
806
+ })()
807
+ })), v(() => ({
808
+ e: `translate(${t()},${n()}) scale(1,${e().s}) translate(${-t()},${-n()})`,
809
+ t: x(),
810
+ a: f()
811
+ }), ({ e, t, a: n }, r) => {
812
+ e !== r?.e && S(i, "transform", e), t !== r?.t && S(a, "transform", t), n !== r?.a && S(o, "transform", n);
813
+ }), r;
814
+ }
815
+ }), e.firstChild), y(n, _(D, {
816
+ get when() {
817
+ return i();
818
+ },
819
+ children: (e) => {
820
+ let t = k(() => ke(e(), u().w, u().h));
821
+ return b(e, t, () => (1 - s()) * (1 - o()));
822
+ }
823
+ }), a), y(n, () => b(r, d, () => (1 - s()) * (i() ? o() : 1)), c), v(() => ({
824
+ e: p() ? `url(#${m})` : void 0,
825
+ t: x(),
826
+ a: t().alpha
827
+ }), ({ e: t, t: r, a: i }, a) => {
828
+ t !== a?.e && S(e, "mask", t), r !== a?.t && S(n, "transform", r), i !== a?.a && S(n, "opacity", i);
829
+ }), e;
830
+ }
831
+ }), _(D, {
832
+ get when() {
833
+ return s() > 0;
834
+ },
835
+ get children() {
836
+ var e = wt(), n = e.firstChild;
837
+ return v(() => ({
838
+ e: x(),
839
+ t: t().alpha,
840
+ a: `M${$(-t().w / 2)},0Q0,${$(t().w * At)} ${$(t().w / 2)},0`,
841
+ o: $(t().w * jt),
842
+ i: s()
843
+ }), ({ e: t, t: r, a: i, o: a, i: o }, s) => {
844
+ t !== s?.e && S(e, "transform", t), r !== s?.t && S(e, "opacity", r), i !== s?.a && S(n, "d", i), a !== s?.o && S(n, "stroke-width", a), o !== s?.i && S(n, "opacity", o);
845
+ }), e;
846
+ }
847
+ })];
848
+ }
849
+ }), u), v(() => ({
850
+ e: t().bodyAlpha,
851
+ t: r()
852
+ }), ({ e, t }, n) => {
853
+ e !== n?.e && S(i, "opacity", e), t !== n?.t && S(i, "transform", t);
854
+ }), i;
855
+ })(),
856
+ _(D, {
857
+ get when() {
858
+ return e.dot;
859
+ },
860
+ children: (e) => _(E, {
861
+ get each() {
862
+ return i();
863
+ },
864
+ keyed: !1,
865
+ children: (t) => (() => {
866
+ var n = Dt();
867
+ return v(() => ({
868
+ e: e(),
869
+ t: (t().x - t().r / Q) * 100,
870
+ a: (t().y - t().r / Q) * 100,
871
+ o: 2 * t().r / Q * 100,
872
+ i: 2 * t().r / Q * 100,
873
+ n: t().opacity
874
+ }), ({ e, t, a: r, o: i, i: a, n: o }, s) => {
875
+ e !== s?.e && S(n, "href", e), t !== s?.t && S(n, "x", t), r !== s?.a && S(n, "y", r), i !== s?.o && S(n, "width", i), a !== s?.i && S(n, "height", a), o !== s?.n && S(n, "opacity", o);
876
+ }), n;
877
+ })()
878
+ })
879
+ }),
880
+ _(E, {
881
+ get each() {
882
+ return a();
883
+ },
884
+ keyed: !1,
885
+ children: (t) => {
886
+ let n = () => {
887
+ let { x: e, y: n, size: r } = t(), i = r * 100 / 2, a = e * 100, o = n * 100;
888
+ return `M${$(a - i)},${$(o - i)}H${$(a + i)}L${$(a - i)},${$(o + i)}H${$(a + i)}`;
889
+ };
890
+ var r = Ot();
891
+ return v(() => ({
892
+ e: n(),
893
+ t: e.context.ink(),
894
+ a: $(t().size * 100 * kt),
895
+ o: t().opacity
896
+ }), ({ e, t, a: n, o: i }, a) => {
897
+ e !== a?.e && S(r, "d", e), t !== a?.t && S(r, "stroke", t), n !== a?.a && S(r, "stroke-width", n), i !== a?.o && S(r, "opacity", i);
898
+ }), r;
899
+ }
900
+ }),
901
+ _(D, {
902
+ get when() {
903
+ return b(() => !!e.notif)() ? t().notif : null;
904
+ },
905
+ children: (t) => (() => {
906
+ var n = Dt();
907
+ return v(() => ({
908
+ e: e.notif,
909
+ t: t().x - t().r / Q,
910
+ a: t().y - t().r / Q,
911
+ o: 2 * t().r / Q,
912
+ i: 2 * t().r / Q
913
+ }), ({ e, t, a: r, o: i, i: a }, o) => {
914
+ e !== o?.e && S(n, "href", e), t !== o?.t && S(n, "x", t), r !== o?.a && S(n, "y", r), i !== o?.o && S(n, "width", i), a !== o?.i && S(n, "height", a);
915
+ }), n;
916
+ })()
917
+ })
918
+ ];
919
+ }
920
+ //#endregion
921
+ //#region src/plush/tint.ts
922
+ var Ft = .55, It = {
923
+ gamma: .6,
924
+ sheen: .08
925
+ }, Lt = (e) => e <= .04045 ? e / 12.92 : ((e + .055) / 1.055) ** 2.4, Rt = (e) => e <= .0031308 ? e * 12.92 : 1.055 * e ** (1 / 2.4) - .055;
926
+ function zt(e) {
927
+ let t = Number.parseInt(e.slice(1), 16);
928
+ return [
929
+ t >> 16 & 255,
930
+ t >> 8 & 255,
931
+ t & 255
932
+ ];
933
+ }
934
+ function Bt(e, { gamma: t, sheen: n } = It) {
935
+ let r = zt(e).map((e) => Lt(e / 255)), i = Lt(Ft), a = /* @__PURE__ */ new Uint8ClampedArray(768);
936
+ for (let e = 0; e < 256; e++) {
937
+ let o = (Lt(e / 255) / i) ** t, s = n * Math.max(0, (e / 255 - Ft) / .44999999999999996) ** 2;
938
+ for (let t = 0; t < 3; t++) {
939
+ let n = Math.min(1, r[t] * o);
940
+ a[e * 3 + t] = Math.round(Rt(n + (1 - n) * s) * 255);
941
+ }
942
+ }
943
+ return a;
944
+ }
945
+ var Vt = /* @__PURE__ */ new Map();
946
+ function Ht(e) {
947
+ return new Promise((t, n) => {
948
+ let r = new Image();
949
+ r.crossOrigin = "anonymous", r.onload = () => t(r), r.onerror = () => n(/* @__PURE__ */ Error(`plush: image introuvable ${e}`)), r.src = e;
950
+ });
951
+ }
952
+ function Ut(e, t) {
953
+ let n = `${t.toLowerCase()} ${e}`, r = Vt.get(n);
954
+ return r || (r = Ht(e).then((e) => {
955
+ let n = document.createElement("canvas");
956
+ n.width = e.naturalWidth, n.height = e.naturalHeight;
957
+ let r = n.getContext("2d", { willReadFrequently: !0 });
958
+ r.drawImage(e, 0, 0);
959
+ let i = r.getImageData(0, 0, n.width, n.height), a = Bt(t), o = i.data;
960
+ for (let e = 0; e < o.length; e += 4) {
961
+ let t = o[e] * 3;
962
+ o[e] = a[t], o[e + 1] = a[t + 1], o[e + 2] = a[t + 2];
963
+ }
964
+ return r.putImageData(i, 0, 0), new Promise((e) => n.toBlob((t) => e(t ? URL.createObjectURL(t) : n.toDataURL()), "image/webp", .92));
965
+ }), r.catch(() => Vt.delete(n)), Vt.set(n, r)), r;
966
+ }
967
+ //#endregion
968
+ //#region src/plush/PlushBot.tsx
969
+ var Wt = 2.4;
970
+ function Gt(e) {
971
+ let n = k(() => e.character ? R.get(e.character) ?? null : null), r = (t) => e.assetBase ? `${e.assetBase}${t}` : te[t] ?? "", a = k(() => {
972
+ let t = n();
973
+ if (t) return t.ink;
974
+ let r = e.color ?? "encre";
975
+ return s.get(r)?.hex ?? (/^#[0-9a-f]{6}$/i.test(r) ? r : "#0a0a0c");
976
+ }), u = k(() => n()?.shape ?? e.shape ?? "cercle"), d = t.get(c), f = () => e.state ?? "idle", p = () => e.transition ?? "flip", m = k(() => {
977
+ let e = n(), t = e ? {
978
+ url: r(e.body),
979
+ hex: null
980
+ } : {
981
+ url: r(oe(u())),
982
+ hex: a()
983
+ };
984
+ return {
985
+ clef: `${t.hex ?? ""}|${t.url}`,
986
+ source: t,
987
+ shape: u(),
988
+ pads: e?.pads ?? [ae, ae],
989
+ face: e?.face ?? null
990
+ };
991
+ }), h = (e) => ({
992
+ url: e.url,
993
+ radii: i.get(e.shape)?.radii ?? []
994
+ }), v = N(() => {
995
+ let { source: e, ...t } = m();
996
+ return {
997
+ ...t,
998
+ url: null
999
+ };
1000
+ }), [y, x] = A({
1001
+ avant: v,
1002
+ apres: v,
1003
+ debut: -Infinity
1004
+ }), [ee, S] = A(!0), C = null, w = !1, T = null;
1005
+ function E(t) {
1006
+ let n = N(y);
1007
+ if (n.apres.clef === t.clef) {
1008
+ C = null, x({
1009
+ avant: n.avant.clef === t.clef ? t : n.avant,
1010
+ apres: t,
1011
+ debut: n.debut
1012
+ });
1013
+ return;
1014
+ }
1015
+ if (w && N(p) !== "cut") {
1016
+ C = t;
1017
+ return;
1018
+ }
1019
+ if (C = null, !T || N(() => e.frozenAt) !== void 0 || n.apres.url === null || N(p) === "cut") {
1020
+ x({
1021
+ avant: t,
1022
+ apres: t,
1023
+ debut: -Infinity
1024
+ }), S(!0);
1025
+ return;
1026
+ }
1027
+ w = !0, T.hold(fe[N(p)]), x({
1028
+ avant: n.apres,
1029
+ apres: t,
1030
+ debut: T.clock()
1031
+ }), S(me(N(p), 0).bascule);
1032
+ }
1033
+ function D(e) {
1034
+ S(e.bascule), e.fini && (w = !1, C && E(C));
1035
+ }
1036
+ let j = () => {
1037
+ let e = y();
1038
+ return ee() ? e.apres : e.avant;
1039
+ }, ne = k(() => {
1040
+ let n = ct(f(), j().face ?? d);
1041
+ if (n) return n;
1042
+ let r = e.expression;
1043
+ return r === void 0 ? j().face ?? d : typeof r == "string" ? t.get(r) ?? d : r;
1044
+ }), re = (e) => e === "failed" ? Xe(j().pads, j().face ?? d) : j().pads, P = k(() => re(f())), F = /* @__PURE__ */ new Set();
1045
+ O(() => j().pads.flatMap((e) => [r(e.images.x), r(e.images.y)]).join("|"), (e) => {
1046
+ if (!(typeof Image > "u")) {
1047
+ F.clear();
1048
+ for (let t of e.split("|")) {
1049
+ if (!t) continue;
1050
+ let e = new Image();
1051
+ e.src = t, F.add(e);
1052
+ }
1053
+ }
1054
+ }), M(() => F.clear());
1055
+ let I = k(() => {
1056
+ let e = y();
1057
+ return {
1058
+ avant: h(e.avant),
1059
+ apres: h(e.apres),
1060
+ debut: e.debut
1061
+ };
1062
+ }), [L, ie] = A(null), [ce, le] = A(null), z = !0;
1063
+ M(() => {
1064
+ z = !1;
1065
+ });
1066
+ function B(e, t) {
1067
+ let n = 0;
1068
+ O(() => {
1069
+ let { url: t, hex: n } = e();
1070
+ return `${n ?? ""}|${t}`;
1071
+ }, (e) => {
1072
+ let [r, i] = e.split("|"), a = ++n;
1073
+ if (!r) return void t(i);
1074
+ typeof document > "u" || Ut(i, r).then((e) => z && a === n && t(e), () => z && a === n && t(null));
1075
+ });
1076
+ }
1077
+ B(() => m().source, (e) => {
1078
+ let { source: t, ...n } = N(m);
1079
+ E({
1080
+ ...n,
1081
+ url: e
1082
+ });
1083
+ }), B(() => ({
1084
+ url: r(se),
1085
+ hex: a()
1086
+ }), ie), B(() => ({
1087
+ url: r(se),
1088
+ hex: o
1089
+ }), le);
1090
+ let V = Fe(N(f)), H = V, ue = (e) => ({ run: (t) => H = e(t) }), [de, U] = A(ue(() => V));
1091
+ O(f, (e, t) => {
1092
+ t !== void 0 && U(ue(ze(H, e)));
1093
+ });
1094
+ let [pe, W] = A(N(f) === "thinking" ? {
1095
+ ...X,
1096
+ from: 1,
1097
+ on: !0
1098
+ } : X), [he, ge] = A(N(f) === "asleep" ? {
1099
+ ...X,
1100
+ from: 1,
1101
+ on: !0
1102
+ } : X), [_e, G] = A(Ze);
1103
+ O(f, (t, n) => {
1104
+ if (!T || n === void 0 || t === "failed" == (n === "failed") || N(() => e.frozenAt) !== void 0) return;
1105
+ let r = N(() => re(n));
1106
+ G((e) => $e(e, r, T.clock()));
1107
+ }), O(f, (e) => {
1108
+ T && (T.hold(Math.max(J(e), e === "failed" ? Y : 0, ft, l.SHAPE_MORPH)), W((t) => pt(t, e === "thinking", T.clock(), e)), ge((t) => pt(t, e === "asleep", T.clock(), e)));
1109
+ });
1110
+ let ve = N(() => [{
1111
+ state: je(f()),
1112
+ duration: Wt
1113
+ }]);
1114
+ return _(g, {
1115
+ get size() {
1116
+ return e.size;
1117
+ },
1118
+ get shape() {
1119
+ return j().shape;
1120
+ },
1121
+ get color() {
1122
+ return a();
1123
+ },
1124
+ get expression() {
1125
+ return ne();
1126
+ },
1127
+ get state() {
1128
+ return je(f());
1129
+ },
1130
+ cycle: ve,
1131
+ get fps() {
1132
+ return e.fps;
1133
+ },
1134
+ get autoPause() {
1135
+ return e.autoPause;
1136
+ },
1137
+ get paused() {
1138
+ return e.paused;
1139
+ },
1140
+ get frozenAt() {
1141
+ return e.frozenAt;
1142
+ },
1143
+ get follow() {
1144
+ return b(() => !!e.follow)() ? f() === "idle" || f() === "wink" || f() === "wide" || f() === "notify" : e.follow;
1145
+ },
1146
+ get gaze() {
1147
+ return de().run;
1148
+ },
1149
+ get initialPhase() {
1150
+ return e.initialPhase;
1151
+ },
1152
+ get ariaLabel() {
1153
+ return e.ariaLabel ?? "Animated plush Bloub avatar";
1154
+ },
1155
+ get class() {
1156
+ return e.class;
1157
+ },
1158
+ get style() {
1159
+ return e.style;
1160
+ },
1161
+ layer: (t) => (T = t, _(Pt, {
1162
+ context: t,
1163
+ get passage() {
1164
+ return I();
1165
+ },
1166
+ get transition() {
1167
+ return p();
1168
+ },
1169
+ get frozen() {
1170
+ return e.frozenAt !== void 0;
1171
+ },
1172
+ onStep: D,
1173
+ get size() {
1174
+ return e.size;
1175
+ },
1176
+ get pads() {
1177
+ return P();
1178
+ },
1179
+ get eyeScale() {
1180
+ return e.eyeScale;
1181
+ },
1182
+ get padFade() {
1183
+ return _e();
1184
+ },
1185
+ padHref: r,
1186
+ get dot() {
1187
+ return L();
1188
+ },
1189
+ get notif() {
1190
+ return ce();
1191
+ },
1192
+ get dots() {
1193
+ return pe();
1194
+ },
1195
+ get zs() {
1196
+ return he();
1197
+ }
1198
+ }))
1199
+ });
1200
+ }
1201
+ //#endregion
1202
+ export { le as DEFAULT_TRANSITION, ie as PLUSH_CHARACTERS, R as PLUSH_CHARACTER_BY_ID, ne as PLUSH_SHAPES, re as PLUSH_STATES, ce as PLUSH_TRANSITIONS, Gt as PlushBot, Bt as tintRamp };