@harmonics/lattice-ui 0.5.1 → 0.7.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.
@@ -0,0 +1,1346 @@
1
+ import { A as e, C as t, D as n, E as r, M as i, O as a, S as o, T as s, _ as c, a as l, b as u, c as d, d as f, f as p, g as m, h, j as g, k as _, l as v, m as y, n as b, o as x, p as S, s as ee, t as te, u as C, w as ne, y as w } from "./woods-C8W11GkD.js";
2
+ import { L as re, S as ie, x as ae, z as oe } from "./hexes-DwdbCYSF.js";
3
+ //#region src/faceLattice.ts
4
+ var T = Math.sqrt(3), E = (e) => `M${e.map((e) => `${Math.round(e.x * 100) / 100} ${Math.round(e.y * 100) / 100}`).join("L")}Z`;
5
+ function se(e, t = {
6
+ x: 0,
7
+ y: 0
8
+ }) {
9
+ let n = e.x - t.x, r = e.y - t.y, i = [
10
+ 0,
11
+ 60,
12
+ 120
13
+ ].map((e) => {
14
+ let t = e * Math.PI / 180;
15
+ return Math.abs(n * Math.cos(t) + r * Math.sin(t));
16
+ });
17
+ return Math.max(...i) / (T / 2);
18
+ }
19
+ var ce = /* @__PURE__ */ new Map();
20
+ function le(e) {
21
+ let t = ce.get(e);
22
+ if (t) return t;
23
+ let n = 120 / e, r = n * T / 2, i = (e, t) => ({
24
+ x: r * t,
25
+ y: n * e + n / 2 * t
26
+ }), a = [];
27
+ for (let t = -2 * e; t <= 2 * e; t++) for (let n = -3 * e; n <= 3 * e; n++) for (let e of [0, 1]) {
28
+ let r = e === 0 ? [
29
+ i(n, t),
30
+ i(n, t + 1),
31
+ i(n + 1, t)
32
+ ] : [
33
+ i(n, t + 1),
34
+ i(n + 1, t + 1),
35
+ i(n + 1, t)
36
+ ], o = {
37
+ x: r.reduce((e, t) => e + t.x, 0) / 3 / 120,
38
+ y: r.reduce((e, t) => e + t.y, 0) / 3 / 120
39
+ };
40
+ se(o) < .999 && a.push({
41
+ corners: r,
42
+ mid: o,
43
+ i: n,
44
+ j: t,
45
+ k: e
46
+ });
47
+ }
48
+ return ce.set(e, a), a;
49
+ }
50
+ var D = 1 / 16, O = () => D * T / 2, ue = (e) => {
51
+ let t = Math.round(e.x / O()), n = Math.round((e.y - D / 2 * t) / D);
52
+ return {
53
+ x: O() * t,
54
+ y: D * n + D / 2 * t
55
+ };
56
+ }, k = (e, t) => (n) => se(n, ue(e)) < Math.max(1, Math.round(t / D)) * D - 1e-6, A = (e, t, n) => (r) => ((r.x - e.x) / t) ** 2 + ((r.y - e.y) / n) ** 2 < 1, j = (e, t) => (n) => e.slice(1).some((r, i) => {
57
+ let a = e[i], o = r.x - a.x, s = r.y - a.y, c = Math.max(0, Math.min(1, ((n.x - a.x) * o + (n.y - a.y) * s) / (o * o + s * s)));
58
+ return Math.hypot(n.x - (a.x + c * o), n.y - (a.y + c * s)) < t;
59
+ }), M = (e, t, n, r = 16) => Array.from({ length: r + 1 }, (i, a) => {
60
+ let o = a / r, s = 1 - o;
61
+ return {
62
+ x: s * s * e.x + 2 * s * o * t.x + o * o * n.x,
63
+ y: s * s * e.y + 2 * s * o * t.y + o * o * n.y
64
+ };
65
+ }), N = (...e) => (t) => e.every((e) => e(t)), P = (e) => (t) => !e(t), F = (...e) => (t) => e.some((e) => e(t)), I = (e) => (t) => {
66
+ let n = e.map(ue);
67
+ return n.slice(1).some((e, r) => {
68
+ let i = n[r], a = e.x - i.x, o = e.y - i.y, s = ((t.x - i.x) * a + (t.y - i.y) * o) / (a * a + o * o);
69
+ if (s < 0 || s > 1) return !1;
70
+ let c = {
71
+ x: t.x - (i.x + s * a),
72
+ y: t.y - (i.y + s * o)
73
+ };
74
+ return (Math.abs(a) < 1e-9 ? c.x * Math.sign(i.x || 1) > 0 : c.y > 0) && Math.hypot(c.x, c.y) < O() * .999;
75
+ });
76
+ }, de = (e, t) => {
77
+ let n = t * Math.tan(Math.PI / 6);
78
+ return [
79
+ {
80
+ x: e.x - t,
81
+ y: e.y - n
82
+ },
83
+ e,
84
+ {
85
+ x: e.x + t,
86
+ y: e.y - n
87
+ }
88
+ ];
89
+ }, L = (e) => F(e(-1), e(1)), R = -.18, z = .34, B = (e) => ({
90
+ x: e * z,
91
+ y: R
92
+ }), V = (e) => (t) => Math.hypot(t.x - e.x, t.y - e.y) < D * .58, H = (e, t, n = 0) => (r) => e({
93
+ x: r.x - n * O(),
94
+ y: r.y - t * D - n * D / 2
95
+ }), U = (e, t, n = 0) => e.map(([e, r]) => [e, H(r, t, n)]), fe = (e, t, n = 0) => e > 0 && (e + n) % t < .16, W = (e, t) => e % t / t, G = (e, t) => Math.floor(e / t) % 2, pe = (e, t = .04) => I(de({
96
+ x: e * z,
97
+ y: R + t
98
+ }, .14)), me = (e, t) => F(k({
99
+ x: e.x - .07 * t,
100
+ y: e.y - .04 * t
101
+ }, .09 * t), k({
102
+ x: e.x + .07 * t,
103
+ y: e.y - .04 * t
104
+ }, .09 * t), (n) => n.y > e.y - .04 * t && n.y < e.y + .2 * t && Math.abs(n.x - e.x) < .16 * t * (1 - (n.y - e.y + .04 * t) / (.24 * t))), K = [
105
+ {
106
+ name: "Happy",
107
+ idle: "Bobs, blinks, cheeks glow",
108
+ at: (e) => {
109
+ let t = fe(e, 3.4, 1), n = e > 0 && W(e, 2.4) < .5 ? .11 : .09;
110
+ return U([
111
+ ["ink", L((e) => t ? pe(e) : k(B(e), .15))],
112
+ ["glint", L((e) => t ? () => !1 : V({
113
+ x: e * z + .05,
114
+ y: -.22999999999999998
115
+ }))],
116
+ ["ink", j(M({
117
+ x: -.4,
118
+ y: .2
119
+ }, {
120
+ x: 0,
121
+ y: .5
122
+ }, {
123
+ x: .4,
124
+ y: .2
125
+ }), .045)],
126
+ ["blush", L((e) => k({
127
+ x: e * .6,
128
+ y: .1
129
+ }, n))]
130
+ ], e > 0 && W(e, 1.2) < .5 ? -1 : 0);
131
+ }
132
+ },
133
+ {
134
+ name: "Laughing",
135
+ idle: "Shakes with each ha",
136
+ at: (e) => {
137
+ let t = e > 0 && W(e, 1.8) < .6 ? G(e, .12) : 0, n = t ? .04 : 0;
138
+ return U([
139
+ ["ink", L((e) => j(M({
140
+ x: e * z - .13,
141
+ y: -.12
142
+ }, {
143
+ x: e * z,
144
+ y: -.36
145
+ }, {
146
+ x: e * z + .13,
147
+ y: -.12
148
+ }), .04))],
149
+ ["ink", N(A({
150
+ x: 0,
151
+ y: .16
152
+ }, .42, .36 + n), (e) => e.y > .16)],
153
+ ["tongue", N(A({
154
+ x: 0,
155
+ y: .16
156
+ }, .42, .36 + n), A({
157
+ x: 0,
158
+ y: .5 + n
159
+ }, .22, .12))],
160
+ ["glint", N(A({
161
+ x: 0,
162
+ y: .16
163
+ }, .42, .36), (e) => e.y > .16 && e.y < .22)],
164
+ ["blush", L((e) => k({
165
+ x: e * .62,
166
+ y: .06
167
+ }, .09))]
168
+ ], -t);
169
+ }
170
+ },
171
+ {
172
+ name: "Sad",
173
+ idle: "A tear runs down; the lip trembles",
174
+ at: (e) => {
175
+ let t = fe(e, 4.2, 2), n = .06 + (e > 0 ? W(e, 2) : 0) * .5, r = e > 0 ? G(e, .2) : 0;
176
+ return [
177
+ ["ink", L((e) => t ? pe(e) : k(B(e), .13))],
178
+ ["glint", L((e) => t ? () => !1 : V({
179
+ x: e * z + .04,
180
+ y: -.22
181
+ }))],
182
+ ["ink", L((e) => j([{
183
+ x: e * .52,
184
+ y: -.36
185
+ }, {
186
+ x: e * .2,
187
+ y: -.46
188
+ }], .035))],
189
+ ["ink", H(j(M({
190
+ x: -.3,
191
+ y: .46
192
+ }, {
193
+ x: 0,
194
+ y: .18
195
+ }, {
196
+ x: .3,
197
+ y: .46
198
+ }), .04), r)],
199
+ ["tear", F(k({
200
+ x: -.34,
201
+ y: n
202
+ }, .06), k({
203
+ x: -.34,
204
+ y: n + .12
205
+ }, .08))]
206
+ ];
207
+ }
208
+ },
209
+ {
210
+ name: "Surprised",
211
+ idle: "Eyes dart; brows jump",
212
+ at: (e) => {
213
+ let t = e > 0 ? [
214
+ 0,
215
+ -1,
216
+ 0,
217
+ 1
218
+ ][Math.floor(W(e, 3.2) * 4)] : 0, n = e > 0 && W(e, 1.6) < .18 ? -1 : 0;
219
+ return [
220
+ ["ink", L((e) => N(k(B(e), .19), P(k(B(e), .14))))],
221
+ ["ink", L((e) => H(k(B(e), .07), 0, t))],
222
+ ["ink", L((e) => H(j(M({
223
+ x: e * .52,
224
+ y: -.42
225
+ }, {
226
+ x: e * .34,
227
+ y: -.58
228
+ }, {
229
+ x: e * .16,
230
+ y: -.44
231
+ }), .035), n))],
232
+ ["ink", N(k({
233
+ x: 0,
234
+ y: .36
235
+ }, .17), P(k({
236
+ x: 0,
237
+ y: .36
238
+ }, .09)))]
239
+ ];
240
+ }
241
+ },
242
+ {
243
+ name: "Angry",
244
+ idle: "Fumes and shakes",
245
+ at: (e) => {
246
+ let t = e > 0 && W(e, 2) < .4 ? G(e, .07) ? 1 : -1 : 0, n = +(e > 0 && W(e, 2) > .5), r = e > 0 ? W(e, 1) : -1, i = [
247
+ ["ink", L((e) => N(k(B(e), .15), (t) => t.y > -.26 + .4 * (-e * (t.x - e * z))))],
248
+ ["ink", L((e) => H(j([{
249
+ x: e * .58,
250
+ y: -.44
251
+ }, {
252
+ x: e * .12,
253
+ y: -.28
254
+ }], .045), n))],
255
+ ["ink", j(M({
256
+ x: -.32,
257
+ y: .42
258
+ }, {
259
+ x: 0,
260
+ y: .3
261
+ }, {
262
+ x: .32,
263
+ y: .42
264
+ }), .045)]
265
+ ];
266
+ return r >= 0 && i.push(["tear", L((e) => k({
267
+ x: e * (.5 + r * .04),
268
+ y: -.46 - r * .14
269
+ }, .05 + r * .03))]), U(i, 0, t);
270
+ }
271
+ },
272
+ {
273
+ name: "Worried",
274
+ idle: "Sweats; glances about",
275
+ at: (e) => {
276
+ let t = e > 0 ? [
277
+ 0,
278
+ -1,
279
+ -1,
280
+ 0,
281
+ 1,
282
+ 1
283
+ ][Math.floor(W(e, 3) * 6)] : 0, n = e > 0 ? W(e, 2.2) : 0, r = e > 0 && G(e, .3) ? -1 : 1;
284
+ return [
285
+ ["ink", L((e) => H(k(B(e), .14), 0, t))],
286
+ ["glint", L((e) => H(V({
287
+ x: e * z + .04,
288
+ y: -.22999999999999998
289
+ }), 0, t))],
290
+ ["ink", L((e) => j([{
291
+ x: e * .54,
292
+ y: -.38
293
+ }, {
294
+ x: e * .16,
295
+ y: -.5
296
+ }], .035))],
297
+ ["ink", j(Array.from({ length: 9 }, (e, t) => ({
298
+ x: -.4 + t * .1,
299
+ y: .36 + (t % 2 == 0 ? .04 : -.04) * r
300
+ })), .035)],
301
+ ["tear", F(k({
302
+ x: .66,
303
+ y: -.46 + n * .3
304
+ }, .06), k({
305
+ x: .66,
306
+ y: -.34 + n * .3
307
+ }, .08))]
308
+ ];
309
+ }
310
+ },
311
+ {
312
+ name: "Sleepy",
313
+ idle: "Breathes in its bubble",
314
+ at: (e) => {
315
+ let t = e > 0 ? W(e, 3) : .3, n = t > .92, r = .13 + Math.sin(Math.PI * Math.min(1, t / .92)) * .09, i = e > 0 ? W(e, 2.4) : 0, a = [
316
+ ["ink", L((e) => {
317
+ let t = de({
318
+ x: e * z,
319
+ y: -.13
320
+ }, .16), n = Math.tan(Math.PI / 6), r = (t, r) => {
321
+ let i = e * (z + t), a = -.13 - t * n;
322
+ return I([{
323
+ x: i,
324
+ y: a + .02
325
+ }, {
326
+ x: i,
327
+ y: a + .02 + r
328
+ }]);
329
+ };
330
+ return F(I(t), r(.04, .05), r(.09, .06), r(.14, .05));
331
+ })],
332
+ ["blush", L((e) => k({
333
+ x: e * .56,
334
+ y: .16
335
+ }, .09))],
336
+ ["ink", N(k({
337
+ x: 0,
338
+ y: .42
339
+ }, .12), P(k({
340
+ x: 0,
341
+ y: .42
342
+ }, .06)))],
343
+ ["tear", F(k({
344
+ x: .42,
345
+ y: -.44 - i * .1
346
+ }, .04), k({
347
+ x: .5,
348
+ y: -.58 - i * .1
349
+ }, .06))]
350
+ ];
351
+ return n || a.push(["tear", N(k({
352
+ x: .2,
353
+ y: .18
354
+ }, r), P(k({
355
+ x: .2,
356
+ y: .18
357
+ }, r - .06)))]), a;
358
+ }
359
+ },
360
+ {
361
+ name: "Wink",
362
+ idle: "Winks again",
363
+ at: (e) => {
364
+ let t = e > 0 && W(e, 2.6) > .7 && W(e, 2.6) < .85, n = e > 0 && W(e, 2.6) < .3 ? .11 : .09;
365
+ return [
366
+ ["ink", k(B(-1), .15)],
367
+ ["glint", V({
368
+ x: -.34 + .05,
369
+ y: -.22999999999999998
370
+ })],
371
+ t ? ["ink", k(B(1), .15)] : ["ink", j(M({
372
+ x: .19000000000000003,
373
+ y: R
374
+ }, {
375
+ x: z,
376
+ y: -.3
377
+ }, {
378
+ x: .49,
379
+ y: R
380
+ }), .04)],
381
+ ["ink", j(M({
382
+ x: -.3,
383
+ y: .32
384
+ }, {
385
+ x: .06,
386
+ y: .5
387
+ }, {
388
+ x: .38,
389
+ y: .22
390
+ }), .045)],
391
+ ["blush", k({
392
+ x: .6,
393
+ y: .1
394
+ }, n)]
395
+ ];
396
+ }
397
+ },
398
+ {
399
+ name: "Smitten",
400
+ idle: "Hearts beat",
401
+ at: (e) => {
402
+ let t = e > 0 ? W(e, 1.1) : .9, n = t < .12 || t > .24 && t < .36 ? 1.3 : 1;
403
+ return [["blush", L((e) => me({
404
+ x: e * z,
405
+ y: R
406
+ }, n))], ["ink", j(M({
407
+ x: -.34,
408
+ y: .24
409
+ }, {
410
+ x: 0,
411
+ y: .5
412
+ }, {
413
+ x: .34,
414
+ y: .24
415
+ }), .045)]];
416
+ }
417
+ }
418
+ ], he = (e, t) => {
419
+ let n = "plate";
420
+ for (let [r, i] of e) i(t) && (n = r);
421
+ return n;
422
+ }, ge = (e) => e.k === 0 ? "right" : "left";
423
+ function _e(e, t, n) {
424
+ let r = le(t);
425
+ D = 1 / t;
426
+ let i = r.map((t) => he(e, t.mid)), a = r.map(() => "top"), o = Math.max(1, Math.round(.035 / D)), s = (t, n) => he(e, {
427
+ x: t.mid.x,
428
+ y: t.mid.y - n * D
429
+ });
430
+ return r.forEach((e, t) => {
431
+ let r = i[t];
432
+ if (n === "raised" && r === "plate") for (let n = 1; n <= o; n++) {
433
+ let r = s(e, n);
434
+ if (r !== "plate" && r !== "glint") {
435
+ i[t] = r, a[t] = ge(e);
436
+ break;
437
+ }
438
+ }
439
+ else if (n === "carved" && r !== "plate" && r !== "glint") {
440
+ for (let n = 1; n <= o; n++) if (s(e, n) === "plate") {
441
+ a[t] = ge(e);
442
+ break;
443
+ }
444
+ } else if (n === "cubes" && r !== "plate" && r !== "glint") {
445
+ let n = (e.k === 0 ? [
446
+ [e.i, e.j],
447
+ [e.i, e.j + 1],
448
+ [e.i + 1, e.j]
449
+ ] : [
450
+ [e.i, e.j + 1],
451
+ [e.i + 1, e.j + 1],
452
+ [e.i + 1, e.j]
453
+ ]).find(([e, t]) => ((t - e) % 3 + 3) % 3 == 0), r = {
454
+ x: T / 2 * D * n[1],
455
+ y: D * n[0] + D / 2 * n[1]
456
+ }, i = (Math.atan2(e.mid.x - r.x, -(e.mid.y - r.y)) * 180 / Math.PI + 360) % 360;
457
+ a[t] = i < 60 || i >= 300 ? "top" : i < 180 ? "right" : "left";
458
+ }
459
+ }), {
460
+ inks: i,
461
+ shades: a
462
+ };
463
+ }
464
+ function ve(e, t, n) {
465
+ let r = /* @__PURE__ */ new Map();
466
+ return e.forEach((e, i) => {
467
+ let a = t[i], o = n?.[i] ?? "top", s = `${a}:${o}`, c = r.get(s) ?? {
468
+ ink: a,
469
+ shade: o,
470
+ d: []
471
+ };
472
+ c.d.push(E(e.corners)), r.set(s, c);
473
+ }), [...r.values()].map((e) => ({
474
+ ink: e.ink,
475
+ shade: e.shade,
476
+ d: e.d.join("")
477
+ }));
478
+ }
479
+ //#endregion
480
+ //#region src/faceDrawing.tsx
481
+ var ye = /*#__PURE__*/ u("<svg><path class=facet></svg>", !1, !0, !1), be = 16, xe = 1400, Se = 300, Ce = 100;
482
+ function we(e, t) {
483
+ let n = (e) => ({
484
+ x: e.x,
485
+ y: e.y - t
486
+ }), [, , r, i, a] = e;
487
+ return {
488
+ shade: E([
489
+ a,
490
+ i,
491
+ n(i),
492
+ n(a)
493
+ ]),
494
+ shadow: E([
495
+ i,
496
+ r,
497
+ n(r),
498
+ n(i)
499
+ ]),
500
+ top: E(e.map(n))
501
+ };
502
+ }
503
+ var Te = {
504
+ happy: "Happy",
505
+ content: "Happy",
506
+ asleep: "Sleepy",
507
+ sad: "Sad",
508
+ distressed: "Worried",
509
+ puzzled: "Surprised",
510
+ relieved: "Laughing"
511
+ }, q = (e) => K.find((t) => t.name.toLowerCase() === e.trim().toLowerCase()), Ee = (e) => q(Te[e]) ?? K[0], De = q("Laughing");
512
+ function Oe(e, t) {
513
+ let n = _e(e.at(t), be, "raised");
514
+ return ve(le(be), n.inks, n.shades);
515
+ }
516
+ function ke(t) {
517
+ let a = y(), o = () => a() || (t.still?.() ?? !1), [s, c] = _(!1), l;
518
+ r(e(t.pulse, (e, t) => {
519
+ t === void 0 || e === t || o() || (c(!0), clearTimeout(l), l = setTimeout(() => c(!1), xe));
520
+ }));
521
+ let [u, d] = _(0);
522
+ r(() => {
523
+ if (o()) {
524
+ d(0);
525
+ return;
526
+ }
527
+ if (!(t.shown?.() ?? !0)) return;
528
+ let e = performance.now() - i(u) * 1e3, n = performance.now(), r = requestAnimationFrame(function t(i) {
529
+ i - n >= Ce && (n = i, d((i - e) / 1e3)), r = requestAnimationFrame(t);
530
+ });
531
+ g(() => cancelAnimationFrame(r));
532
+ }), g(() => clearTimeout(l));
533
+ let f = n(() => s() ? De : t.expression()), p = n(() => Oe(f(), u())), [m, h] = _(), v;
534
+ return r(e(f, (e, t) => {
535
+ t && !o() && (h(Oe(t, u())), clearTimeout(v), v = setTimeout(() => h(void 0), Se));
536
+ })), g(() => clearTimeout(v)), {
537
+ face: p,
538
+ leaving: m
539
+ };
540
+ }
541
+ function Ae(e) {
542
+ return s(t, {
543
+ get each() {
544
+ return e.drawing;
545
+ },
546
+ children: (e) => (() => {
547
+ var t = ye();
548
+ return a((n) => {
549
+ var r = e().ink, i = e().shade, a = e().d;
550
+ return r !== n.e && w(t, "data-ink", n.e = r), i !== n.t && w(t, "data-shade", n.t = i), a !== n.a && w(t, "d", n.a = a), n;
551
+ }, {
552
+ e: void 0,
553
+ t: void 0,
554
+ a: void 0
555
+ }), t;
556
+ })()
557
+ });
558
+ }
559
+ //#endregion
560
+ //#region src/elements/face.css?inline
561
+ var je = ".face .plate-top{fill:var(--color-tree-raised);stroke:color-mix(in srgb, var(--color-tree-wood-0) 60%, var(--sky));stroke-width:var(--tree-rule-width);stroke-linejoin:round}.face .plate-shade{fill:color-mix(in srgb, var(--color-tree-wood-0) 45%, var(--sky))}.face .plate-shadow{fill:color-mix(in srgb, var(--color-tree-wood-0) 70%, var(--sky))}.face .facet{--ink:color-mix(in srgb, var(--color-tree-wood-0) 40%, var(--color-tree-ink));fill:var(--ink);stroke:var(--ink);stroke-width:var(--tree-rule-width);stroke-linejoin:round;vector-effect:non-scaling-stroke}.face .facet[data-ink=plate]{fill:none;stroke:color-mix(in srgb, var(--color-tree-wood-0) 14%, var(--color-tree-raised))}.face .facet[data-ink=glint]{--ink:var(--color-tree-raised)}.face .facet[data-ink=blush]{--ink:color-mix(in srgb, var(--color-tree-alert) 55%, var(--color-tree-raised))}.face .facet[data-ink=tear]{--ink:var(--color-tree-wood-2)}.face .facet[data-ink=tongue]{--ink:color-mix(in srgb, var(--color-tree-alert) 75%, var(--color-tree-raised))}.face .facet[data-shade=left]{fill:color-mix(in srgb, var(--ink) 72%, var(--color-tree-ink));stroke:color-mix(in srgb, var(--ink) 72%, var(--color-tree-ink))}.face .facet[data-shade=right]{fill:color-mix(in srgb, var(--ink) 48%, var(--color-tree-ink));stroke:color-mix(in srgb, var(--ink) 48%, var(--color-tree-ink))}.face .facet[data-ink=ink][data-shade=top]{fill:color-mix(in srgb, var(--color-tree-wood-0) 70%, var(--color-tree-ink));stroke:color-mix(in srgb, var(--color-tree-wood-0) 70%, var(--color-tree-ink))}.face .facet[data-ink=ink][data-shade=left]{fill:color-mix(in srgb, var(--color-tree-wood-0) 35%, var(--color-tree-ink));stroke:color-mix(in srgb, var(--color-tree-wood-0) 35%, var(--color-tree-ink))}.face .facet[data-ink=ink][data-shade=right]{fill:var(--color-tree-ink);stroke:var(--color-tree-ink)}.face .face-leaving{animation:.3s ease-in forwards face-sink}@keyframes face-sink{to{opacity:0;transform:translateY(var(--space-tree-2))}}@media (prefers-reduced-motion:reduce){.face .face-leaving{animation:none}}", Me = /*#__PURE__*/ u("<svg class=face part=face><path class=plate-shade></path><path class=plate-shadow></path><path class=plate-top></path><g transform=\"translate(0 -10)\"><g>"), Ne = /*#__PURE__*/ u("<svg><g class=face-leaving></svg>", !1, !0, !1), Pe = "lattice-face", Fe = Object.keys(Te), Ie = (e) => Fe.includes(e), J = 10, Le = 2, Y = 120 * T / 2, Re = we([
562
+ {
563
+ x: 0,
564
+ y: -120
565
+ },
566
+ {
567
+ x: Y,
568
+ y: -60
569
+ },
570
+ {
571
+ x: Y,
572
+ y: 60
573
+ },
574
+ {
575
+ x: 0,
576
+ y: 120
577
+ },
578
+ {
579
+ x: -Y,
580
+ y: 60
581
+ },
582
+ {
583
+ x: -Y,
584
+ y: -60
585
+ }
586
+ ], J), X = {
587
+ x: -Y - Le,
588
+ y: -120 - J - Le,
589
+ width: 2 * (Y + Le),
590
+ height: 240 + J + 4
591
+ }, ze = S(`${je}\n.plate-top { vector-effect: non-scaling-stroke; }`), Be = class e extends v {
592
+ static observedAttributes = [
593
+ "mood",
594
+ "expression",
595
+ "pulse",
596
+ "still",
597
+ "size",
598
+ "label",
599
+ "decorative"
600
+ ];
601
+ inputs = e.observedAttributes;
602
+ moodSignal = _("happy");
603
+ expressionSignal = _("");
604
+ pulseSignal = _(0);
605
+ stillSignal = _(!1);
606
+ sizeSignal = _(96);
607
+ labelSignal = _("");
608
+ decorativeSignal = _(!1);
609
+ get mood() {
610
+ return this.moodSignal[0]();
611
+ }
612
+ set mood(e) {
613
+ let t = String(e ?? "").toLowerCase();
614
+ this.moodSignal[1](Ie(t) ? t : "happy");
615
+ }
616
+ get expression() {
617
+ return this.expressionSignal[0]();
618
+ }
619
+ set expression(e) {
620
+ this.expressionSignal[1](String(e ?? ""));
621
+ }
622
+ get pulse() {
623
+ return this.pulseSignal[0]();
624
+ }
625
+ set pulse(e) {
626
+ this.pulseSignal[1](p(e, 0));
627
+ }
628
+ get still() {
629
+ return this.stillSignal[0]();
630
+ }
631
+ set still(e) {
632
+ this.stillSignal[1](f(e));
633
+ }
634
+ get size() {
635
+ return this.sizeSignal[0]();
636
+ }
637
+ set size(e) {
638
+ this.sizeSignal[1](Math.max(1, p(e, 96)));
639
+ }
640
+ get label() {
641
+ return this.labelSignal[0]();
642
+ }
643
+ set label(e) {
644
+ this.labelSignal[1](String(e ?? ""));
645
+ }
646
+ get decorative() {
647
+ return this.decorativeSignal[0]();
648
+ }
649
+ set decorative(e) {
650
+ this.decorativeSignal[1](f(e));
651
+ }
652
+ attributeChangedCallback(e, t, n) {
653
+ e === "still" || e === "decorative" ? Reflect.set(this, e, n) : Reflect.set(this, e, n ?? "");
654
+ }
655
+ sheet() {
656
+ return ze();
657
+ }
658
+ draw() {
659
+ let e = n(() => q(this.expression) ?? Ee(this.mood)), [t, r] = _(!0);
660
+ if (typeof IntersectionObserver < "u") {
661
+ let e = new IntersectionObserver((e) => {
662
+ let t = e.at(-1);
663
+ t && r(t.isIntersecting);
664
+ });
665
+ e.observe(this), g(() => e.disconnect());
666
+ }
667
+ let { face: i, leaving: o } = ke({
668
+ expression: e,
669
+ pulse: () => this.pulse,
670
+ still: () => this.still,
671
+ shown: t
672
+ }), l = () => this.label || `A ${e().name.toLowerCase()} face`, u = this;
673
+ return (() => {
674
+ var e = Me(), t = e.firstChild, n = t.nextSibling, r = n.nextSibling, d = r.nextSibling, f = d.firstChild;
675
+ return c(d, s(ne, {
676
+ get when() {
677
+ return o();
678
+ },
679
+ children: (e) => (() => {
680
+ var t = Ne();
681
+ return c(t, s(Ae, { get drawing() {
682
+ return e();
683
+ } })), t;
684
+ })()
685
+ }), f), c(f, s(Ae, { get drawing() {
686
+ return i();
687
+ } })), a((i) => {
688
+ var a = u.size, o = u.size * X.height / X.width, s = `${X.x} ${X.y} ${X.width} ${X.height}`, c = u.decorative ? void 0 : "img", d = u.decorative ? void 0 : l(), f = u.decorative ? "true" : void 0, p = Re.shade, m = Re.shadow, h = Re.top;
689
+ return a !== i.e && w(e, "width", i.e = a), o !== i.t && w(e, "height", i.t = o), s !== i.a && w(e, "viewBox", i.a = s), c !== i.o && w(e, "role", i.o = c), d !== i.i && w(e, "aria-label", i.i = d), f !== i.n && w(e, "aria-hidden", i.n = f), p !== i.s && w(t, "d", i.s = p), m !== i.h && w(n, "d", i.h = m), h !== i.r && w(r, "d", i.r = h), i;
690
+ }, {
691
+ e: void 0,
692
+ t: void 0,
693
+ a: void 0,
694
+ o: void 0,
695
+ i: void 0,
696
+ n: void 0,
697
+ s: void 0,
698
+ h: void 0,
699
+ r: void 0
700
+ }), e;
701
+ })();
702
+ }
703
+ }, Ve = (e) => C(Pe, Be, e), Z = Math.sqrt(3), Q = (e, t, n) => {
704
+ let r = n * Z / 2;
705
+ return [
706
+ {
707
+ x: e,
708
+ y: t - n
709
+ },
710
+ {
711
+ x: e + r,
712
+ y: t - n / 2
713
+ },
714
+ {
715
+ x: e + r,
716
+ y: t + n / 2
717
+ },
718
+ {
719
+ x: e,
720
+ y: t + n
721
+ },
722
+ {
723
+ x: e - r,
724
+ y: t + n / 2
725
+ },
726
+ {
727
+ x: e - r,
728
+ y: t - n / 2
729
+ }
730
+ ];
731
+ }, $ = (e) => `M ${e.map((e) => `${e.x} ${e.y}`).join(" L ")}`, He = (e, t, n, r) => [
732
+ {
733
+ x: e,
734
+ y: t - n / 2
735
+ },
736
+ {
737
+ x: e + r * n * Z / 2,
738
+ y: t
739
+ },
740
+ {
741
+ x: e,
742
+ y: t + n / 2
743
+ }
744
+ ], Ue = (e, t, n) => {
745
+ let r = n / Z;
746
+ return [
747
+ {
748
+ x: e - n,
749
+ y: t
750
+ },
751
+ {
752
+ x: e,
753
+ y: t - r
754
+ },
755
+ {
756
+ x: e + n,
757
+ y: t
758
+ },
759
+ {
760
+ x: e,
761
+ y: t + r
762
+ }
763
+ ];
764
+ }, We = () => {
765
+ let e = (e, t) => [
766
+ e,
767
+ {
768
+ x: e.x + t * 8.66,
769
+ y: e.y - 5
770
+ },
771
+ {
772
+ x: e.x + t * 8.66,
773
+ y: e.y - 6.6
774
+ },
775
+ {
776
+ x: e.x,
777
+ y: e.y - 1.6
778
+ }
779
+ ];
780
+ return [
781
+ {
782
+ part: "shears-blade",
783
+ look: "fill",
784
+ d: h(e({
785
+ x: 4.6,
786
+ y: 10
787
+ }, 1))
788
+ },
789
+ {
790
+ part: "shears-blade",
791
+ look: "fill",
792
+ d: h(e({
793
+ x: 11.4,
794
+ y: 10
795
+ }, -1))
796
+ },
797
+ {
798
+ part: "shears-handle",
799
+ look: "line",
800
+ d: h(Q(4.6, 12.6, 2.6))
801
+ },
802
+ {
803
+ part: "shears-handle",
804
+ look: "line",
805
+ d: h(Q(11.4, 12.6, 2.6))
806
+ }
807
+ ];
808
+ }, Ge = () => [{
809
+ part: "done-cell",
810
+ look: "line",
811
+ d: h(Q(8, 8, 7))
812
+ }, {
813
+ part: "done-check",
814
+ look: "heavy",
815
+ d: "M 4.3 8.4 L 7 9.96 L 11.8 7.19"
816
+ }], Ke = () => [
817
+ {
818
+ part: "note-cell",
819
+ look: "line",
820
+ d: h(Q(8, 8, 7))
821
+ },
822
+ {
823
+ part: "note-line",
824
+ look: "line",
825
+ d: "M 4.8 8.6 L 11.2 4.9"
826
+ },
827
+ {
828
+ part: "note-line",
829
+ look: "line",
830
+ d: "M 4.8 11.2 L 9.4 8.54"
831
+ }
832
+ ], qe = () => {
833
+ let [e, t, n, r, i, a] = Q(8, 8.6, 6.2);
834
+ return [{
835
+ part: "turn-path",
836
+ look: "line",
837
+ d: $([
838
+ t,
839
+ n,
840
+ r,
841
+ i,
842
+ a,
843
+ e
844
+ ])
845
+ }, {
846
+ part: "turn-arrow",
847
+ look: "fill",
848
+ d: h(He(e.x, e.y, 4.2, 1))
849
+ }];
850
+ }, Je = (e, t) => {
851
+ let n = e * Z / 2;
852
+ return [Q(8 - n - t / 2, 8, e), Q(8 + n + t / 2, 8, e)];
853
+ }, Ye = {
854
+ shears: We,
855
+ done: Ge,
856
+ note: Ke,
857
+ turn: qe,
858
+ glue: () => {
859
+ let e = 4.2, [t, n] = Je(e, 0);
860
+ return [
861
+ {
862
+ part: "glue-cell",
863
+ look: "line",
864
+ d: h(t)
865
+ },
866
+ {
867
+ part: "glue-cell",
868
+ look: "line",
869
+ d: h(n)
870
+ },
871
+ {
872
+ part: "glue-seam",
873
+ look: "heavy",
874
+ d: $([{
875
+ x: 8,
876
+ y: 8 - e / 2
877
+ }, {
878
+ x: 8,
879
+ y: 10.1
880
+ }])
881
+ }
882
+ ];
883
+ },
884
+ apart: () => {
885
+ let [e, t] = Je(3.7, 2);
886
+ return [{
887
+ part: "apart-cell",
888
+ look: "line",
889
+ d: h(e)
890
+ }, {
891
+ part: "apart-cell",
892
+ look: "line",
893
+ d: h(t)
894
+ }];
895
+ },
896
+ bin: () => {
897
+ let [, e, t, n, r, i] = Q(8, 9.4, 5.2), a = (e) => $([{
898
+ x: e,
899
+ y: 8.6
900
+ }, {
901
+ x: e,
902
+ y: 12.2
903
+ }]);
904
+ return [
905
+ {
906
+ part: "bin-can",
907
+ look: "line",
908
+ d: $([
909
+ i,
910
+ r,
911
+ n,
912
+ t,
913
+ e
914
+ ])
915
+ },
916
+ {
917
+ part: "bin-rib",
918
+ look: "line",
919
+ d: `${a(6.5)} ${a(9.5)}`
920
+ },
921
+ {
922
+ part: "bin-lid",
923
+ look: "line",
924
+ d: h(Ue(8, 3.9, 5))
925
+ }
926
+ ];
927
+ }
928
+ }, Xe = /*#__PURE__*/ u("<svg viewBox=\"0 0 16 16\"aria-hidden=true>"), Ze = /*#__PURE__*/ u("<svg><path></svg>", !1, !0, !1);
929
+ function Qe(e) {
930
+ return (() => {
931
+ var t = Xe();
932
+ return c(t, s(o, {
933
+ get each() {
934
+ return Ye[e.name]();
935
+ },
936
+ children: (e) => (() => {
937
+ var t = Ze();
938
+ return a((n) => {
939
+ var r = `${e.part} ${e.look}`, i = e.part, a = e.d;
940
+ return r !== n.e && w(t, "class", n.e = r), i !== n.t && w(t, "part", n.t = i), a !== n.a && w(t, "d", n.a = a), n;
941
+ }, {
942
+ e: void 0,
943
+ t: void 0,
944
+ a: void 0
945
+ }), t;
946
+ })()
947
+ })), a(() => w(t, "class", `mark mark-${e.name}`)), t;
948
+ })();
949
+ }
950
+ //#endregion
951
+ //#region src/elements/icon.css?inline
952
+ var $e = ":host{width:var(--lattice-icon-size,var(--space-tree-4));height:var(--lattice-icon-size,var(--space-tree-4))}span{width:100%;height:100%;display:block}svg{width:100%;height:100%}.mark{fill:none;stroke:currentColor;stroke-width:1.3px;stroke-linejoin:miter}.mark .fill{fill:currentColor}.mark .heavy{stroke-width:1.6px}", et = /*#__PURE__*/ u("<span part=icon>"), tt = /*#__PURE__*/ u("<span part=icon role=img>"), nt = "lattice-icon", rt = [
953
+ "shears",
954
+ "done",
955
+ "note",
956
+ "turn",
957
+ "glue",
958
+ "apart",
959
+ "bin"
960
+ ], it = (e) => Object.hasOwn(Ye, e), at = S($e), ot = class e extends v {
961
+ static observedAttributes = ["name", "label"];
962
+ inputs = e.observedAttributes;
963
+ nameSignal = _("shears");
964
+ labelSignal = _("");
965
+ get name() {
966
+ return this.nameSignal[0]();
967
+ }
968
+ set name(e) {
969
+ let t = String(e ?? "").toLowerCase();
970
+ this.nameSignal[1](it(t) ? t : "shears");
971
+ }
972
+ get label() {
973
+ return this.labelSignal[0]();
974
+ }
975
+ set label(e) {
976
+ this.labelSignal[1](String(e ?? ""));
977
+ }
978
+ attributeChangedCallback(e, t, n) {
979
+ Reflect.set(this, e, n ?? "");
980
+ }
981
+ sheet() {
982
+ return at();
983
+ }
984
+ draw() {
985
+ let e = () => {
986
+ let e = this;
987
+ return s(Qe, { get name() {
988
+ return e.name;
989
+ } });
990
+ }, t = this;
991
+ return s(ne, {
992
+ get when() {
993
+ return t.label;
994
+ },
995
+ get fallback() {
996
+ return (() => {
997
+ var t = et();
998
+ return c(t, e), t;
999
+ })();
1000
+ },
1001
+ children: (t) => (() => {
1002
+ var n = tt();
1003
+ return c(n, e), a(() => w(n, "aria-label", t())), n;
1004
+ })()
1005
+ });
1006
+ }
1007
+ }, st = (e) => C(nt, ot, e), ct = /*#__PURE__*/ u("<svg class=\"shape woods\"part=shape><g class=faces></g><path class=seams></path><g class=ring part=ring>"), lt = /*#__PURE__*/ u("<svg><path></svg>", !1, !0, !1), ut = /*#__PURE__*/ u("<svg><line></svg>", !1, !0, !1), dt = "lattice-shape", ft = (e) => Object.hasOwn(b, e), pt = S(`${te}\n${d}`), mt = 4, ht = !1, gt = class e extends v {
1008
+ static observedAttributes = [
1009
+ "shape",
1010
+ "parts",
1011
+ "tone",
1012
+ "lift",
1013
+ "scale",
1014
+ "label",
1015
+ "pressable",
1016
+ "pressed",
1017
+ "disabled"
1018
+ ];
1019
+ inputs = e.observedAttributes;
1020
+ shapeSignal = _("cell");
1021
+ partsSignal = _();
1022
+ toneSignal = _(0);
1023
+ liftSignal = _(8);
1024
+ scaleSignal = _(1);
1025
+ labelSignal = _("");
1026
+ pressableSignal = _(!1);
1027
+ pressedSignal = _();
1028
+ disabledSignal = _(!1);
1029
+ get shape() {
1030
+ return this.shapeSignal[0]();
1031
+ }
1032
+ set shape(e) {
1033
+ let t = String(e ?? "").toLowerCase();
1034
+ this.shapeSignal[1](ft(t) ? t : "cell");
1035
+ }
1036
+ made;
1037
+ get parts() {
1038
+ let e = [
1039
+ this.partsSignal[0](),
1040
+ this.shape,
1041
+ this.tone
1042
+ ];
1043
+ if (!this.made || e.some((e, t) => e !== this.made?.from[t])) {
1044
+ let [t, n, r] = e, i = t === void 0 ? b[n](r) : x(t, r);
1045
+ this.made = {
1046
+ from: e,
1047
+ parts: i
1048
+ };
1049
+ }
1050
+ return this.made.parts;
1051
+ }
1052
+ set parts(e) {
1053
+ this.partsSignal[1](() => e === null || e === "" ? void 0 : e);
1054
+ }
1055
+ get tone() {
1056
+ return this.toneSignal[0]();
1057
+ }
1058
+ set tone(e) {
1059
+ this.toneSignal[1](ee(p(e, 0)));
1060
+ }
1061
+ get lift() {
1062
+ return this.liftSignal[0]();
1063
+ }
1064
+ set lift(e) {
1065
+ this.liftSignal[1](Math.max(0, p(e, 8)));
1066
+ }
1067
+ get scale() {
1068
+ return this.scaleSignal[0]();
1069
+ }
1070
+ set scale(e) {
1071
+ let t = p(e, 1);
1072
+ this.scaleSignal[1](t > 0 ? t : 1);
1073
+ }
1074
+ get label() {
1075
+ return this.labelSignal[0]();
1076
+ }
1077
+ set label(e) {
1078
+ this.labelSignal[1](String(e ?? ""));
1079
+ }
1080
+ get pressable() {
1081
+ return this.pressableSignal[0]();
1082
+ }
1083
+ set pressable(e) {
1084
+ let t = f(e);
1085
+ this.pressableSignal[1](t), this.hasAttribute("pressable") !== t && this.toggleAttribute("pressable", t);
1086
+ }
1087
+ get pressed() {
1088
+ return this.pressedSignal[0]() ?? !1;
1089
+ }
1090
+ set pressed(e) {
1091
+ this.pressedSignal[1](e == null ? void 0 : f(e));
1092
+ }
1093
+ get disabled() {
1094
+ return this.disabledSignal[0]();
1095
+ }
1096
+ set disabled(e) {
1097
+ this.disabledSignal[1](f(e));
1098
+ }
1099
+ attributeChangedCallback(e, t, n) {
1100
+ e === "parts" ? this.parts = n : e === "pressable" || e === "pressed" || e === "disabled" ? Reflect.set(this, e, n) : Reflect.set(this, e, n ?? "");
1101
+ }
1102
+ sheet() {
1103
+ return pt();
1104
+ }
1105
+ beAButton() {
1106
+ let e = !1;
1107
+ r(() => {
1108
+ let t = this.pressable, n = this.disabled, r = this.pressedSignal[0](), i = (e, t) => {
1109
+ t === void 0 ? this.removeAttribute(e) : this.getAttribute(e) !== t && this.setAttribute(e, t);
1110
+ };
1111
+ i("role", t ? "button" : void 0), i("aria-label", t && this.label ? this.label : void 0), i("aria-pressed", t && r !== void 0 ? String(r) : void 0), i("aria-disabled", t && n ? "true" : void 0), t && !n && !this.hasAttribute("tabindex") ? (this.setAttribute("tabindex", "0"), e = !0) : (!t || n) && e && (this.removeAttribute("tabindex"), e = !1), t && !this.label && !ht && (ht = !0, console.warn("<lattice-shape pressable> has no label: give it one, so it can be named"));
1112
+ });
1113
+ }
1114
+ draw() {
1115
+ this.beAButton();
1116
+ let [e, r] = _(!1), [i, u] = _(!1), d = () => this.pressable && !this.disabled, f = () => {
1117
+ d() && this.tell("press", {
1118
+ shape: this.shape,
1119
+ parts: this.parts
1120
+ });
1121
+ }, p = [
1122
+ ["click", () => f()],
1123
+ ["keydown", (e) => {
1124
+ let { key: t, repeat: n } = e;
1125
+ !d() || t !== "Enter" && t !== " " || (e.preventDefault(), t === " " ? u(!0) : n || f());
1126
+ }],
1127
+ ["keyup", (e) => {
1128
+ e.key === " " && i() && (u(!1), f());
1129
+ }],
1130
+ ["pointerdown", () => d() && u(!0)],
1131
+ ["pointerup", () => u(!1)],
1132
+ ["pointerleave", () => u(!1)],
1133
+ ["blur", () => u(!1)]
1134
+ ];
1135
+ for (let [e, t] of p) this.addEventListener(e, t);
1136
+ g(() => {
1137
+ for (let [e, t] of p) this.removeEventListener(e, t);
1138
+ });
1139
+ let h = () => this.pressable ? i() || this.pressed ? this.lift / 2 : e() && !this.disabled ? this.lift + mt : this.lift : this.lift, v = n(() => l(this.parts, h())), y = n(() => l(this.parts, this.pressable ? this.lift + mt : this.lift).box), b = n(() => ae(ie("shape", this.parts))), x = () => !this.pressable && this.label !== "", S = this;
1140
+ return (() => {
1141
+ var e = ct(), n = e.firstChild, i = n.nextSibling, l = i.nextSibling;
1142
+ return m(n, "pointerleave", () => r(!1)), m(n, "pointerenter", () => r(!0)), c(n, s(t, {
1143
+ get each() {
1144
+ return v().faces;
1145
+ },
1146
+ children: (e) => (() => {
1147
+ var t = lt();
1148
+ return a((n) => {
1149
+ var r = `flat-${e().kind}`, i = e().tone, a = e().d;
1150
+ return r !== n.e && w(t, "class", n.e = r), i !== n.t && w(t, "data-tone", n.t = i), a !== n.a && w(t, "d", n.a = a), n;
1151
+ }, {
1152
+ e: void 0,
1153
+ t: void 0,
1154
+ a: void 0
1155
+ }), t;
1156
+ })()
1157
+ })), c(l, s(o, {
1158
+ get each() {
1159
+ return b();
1160
+ },
1161
+ children: ([e, t]) => (() => {
1162
+ var n = ut();
1163
+ return a((r) => {
1164
+ var i = e.x, a = e.y, o = t.x, s = t.y;
1165
+ return i !== r.e && w(n, "x1", r.e = i), a !== r.t && w(n, "y1", r.t = a), o !== r.a && w(n, "x2", r.a = o), s !== r.o && w(n, "y2", r.o = s), r;
1166
+ }, {
1167
+ e: void 0,
1168
+ t: void 0,
1169
+ a: void 0,
1170
+ o: void 0
1171
+ }), n;
1172
+ })()
1173
+ })), a((t) => {
1174
+ var n = y().width * S.scale, r = y().height * S.scale, a = `${y().x} ${y().y} ${y().width} ${y().height}`, o = x() ? "img" : void 0, s = x() ? S.label : void 0, c = x() ? void 0 : "true", u = v().seams, d = `translate(0 ${-h()})`;
1175
+ return n !== t.e && w(e, "width", t.e = n), r !== t.t && w(e, "height", t.t = r), a !== t.a && w(e, "viewBox", t.a = a), o !== t.o && w(e, "role", t.o = o), s !== t.i && w(e, "aria-label", t.i = s), c !== t.n && w(e, "aria-hidden", t.n = c), u !== t.s && w(i, "d", t.s = u), d !== t.h && w(l, "transform", t.h = d), t;
1176
+ }, {
1177
+ e: void 0,
1178
+ t: void 0,
1179
+ a: void 0,
1180
+ o: void 0,
1181
+ i: void 0,
1182
+ n: void 0,
1183
+ s: void 0,
1184
+ h: void 0
1185
+ }), e;
1186
+ })();
1187
+ }
1188
+ }, _t = (e) => C(dt, gt, e), vt = ":host{touch-action:none;cursor:crosshair;display:block;position:relative}:host([disabled]){cursor:auto;pointer-events:none}.trail{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.blade{fill:none;stroke:var(--color-tree-alert);stroke-width:var(--tree-rule-thick-width);stroke-linecap:round;stroke-linejoin:round}", yt = 220;
1189
+ function bt() {
1190
+ let [e, t] = _([]), n, r = () => {
1191
+ let i = performance.now();
1192
+ t((e) => e.filter((e) => i - e.at < yt)), n = e().length > 0 ? requestAnimationFrame(r) : void 0;
1193
+ };
1194
+ return g(() => {
1195
+ n !== void 0 && cancelAnimationFrame(n);
1196
+ }), {
1197
+ points: () => e().map((e) => `${e.p.x},${e.p.y}`).join(" "),
1198
+ add: (e) => {
1199
+ t((t) => [...t, {
1200
+ p: e,
1201
+ at: performance.now()
1202
+ }]), n ??= requestAnimationFrame(r);
1203
+ }
1204
+ };
1205
+ }
1206
+ //#endregion
1207
+ //#region src/elements/shears.tsx
1208
+ var xt = /*#__PURE__*/ u("<svg class=trail part=trail aria-hidden=true><polyline class=blade>"), St = "shears-pad", Ct = S(vt), wt = class t extends v {
1209
+ static observedAttributes = ["disabled"];
1210
+ inputs = t.observedAttributes;
1211
+ disabledSignal = _(!1);
1212
+ get disabled() {
1213
+ return this.disabledSignal[0]();
1214
+ }
1215
+ set disabled(e) {
1216
+ this.disabledSignal[1](f(e));
1217
+ }
1218
+ attributeChangedCallback(e, t, n) {
1219
+ this.disabled = n;
1220
+ }
1221
+ sheet() {
1222
+ return Ct();
1223
+ }
1224
+ draw() {
1225
+ let t = bt(), n, i, o = (e) => {
1226
+ let t = this.getBoundingClientRect();
1227
+ return {
1228
+ x: e.clientX - t.left,
1229
+ y: e.clientY - t.top
1230
+ };
1231
+ }, s = (e) => {
1232
+ if (!n || i === void 0) return;
1233
+ let t = n, r = i;
1234
+ n = void 0, i = void 0, this.hasPointerCapture(r) && this.releasePointerCapture(r), this.tell("strokeend", {
1235
+ points: t,
1236
+ cancelled: e
1237
+ });
1238
+ }, c = (e) => {
1239
+ if (this.disabled || e.button !== 0 || n) return;
1240
+ e.preventDefault(), i = e.pointerId, this.setPointerCapture(i);
1241
+ let t = o(e);
1242
+ n = [t], this.tell("stroke", {
1243
+ points: [t],
1244
+ point: t,
1245
+ fresh: !0
1246
+ });
1247
+ }, l = (e) => {
1248
+ if (!n || e.pointerId !== i) return;
1249
+ let r = o(e);
1250
+ n.push(r), t.add(r), this.tell("stroke", {
1251
+ points: [...n],
1252
+ point: r,
1253
+ fresh: !1
1254
+ });
1255
+ }, u = (e) => (t) => {
1256
+ t.pointerId === i && s(e);
1257
+ }, d = [
1258
+ ["pointerdown", c],
1259
+ ["pointermove", l],
1260
+ ["pointerup", u(!1)],
1261
+ ["pointercancel", u(!0)],
1262
+ ["lostpointercapture", u(!0)]
1263
+ ];
1264
+ for (let [e, t] of d) this.addEventListener(e, t);
1265
+ return r(e(() => this.disabled, (e) => e && s(!0), { defer: !0 })), g(() => {
1266
+ s(!0);
1267
+ for (let [e, t] of d) this.removeEventListener(e, t);
1268
+ }), (() => {
1269
+ var e = xt(), n = e.firstChild;
1270
+ return a(() => w(n, "points", t.points())), e;
1271
+ })();
1272
+ }
1273
+ }, Tt = (e) => C(St, wt, e), Et = ":host{background:var(--color-tree-sky);display:block;position:relative}:host([kind=earth]){background:var(--color-tree-earth)}.sky{width:100%;height:100%;position:absolute;inset:0;overflow:hidden}.line{fill:none;stroke:var(--color-tree-lattice-sky);stroke-width:var(--tree-rule-width)}:host([kind=earth]) .line{stroke:var(--color-tree-lattice-earth)}", Dt = /*#__PURE__*/ u("<svg class=sky part=sky aria-hidden=true><defs><pattern patternUnits=userSpaceOnUse><path class=line></path></pattern></defs><rect width=100% height=100%>"), Ot = "hex-sky", kt = S(Et), At = 0, jt = class e extends v {
1274
+ static observedAttributes = [
1275
+ "kind",
1276
+ "orient",
1277
+ "scale",
1278
+ "x",
1279
+ "y"
1280
+ ];
1281
+ inputs = e.observedAttributes;
1282
+ kindSignal = _("sky");
1283
+ orientSignal = _("pointy");
1284
+ scaleSignal = _(1);
1285
+ xSignal = _(0);
1286
+ ySignal = _(0);
1287
+ get kind() {
1288
+ return this.kindSignal[0]();
1289
+ }
1290
+ set kind(e) {
1291
+ this.kindSignal[1](String(e ?? "").toLowerCase() === "earth" ? "earth" : "sky");
1292
+ }
1293
+ get orient() {
1294
+ return this.orientSignal[0]();
1295
+ }
1296
+ set orient(e) {
1297
+ this.orientSignal[1](String(e ?? "").toLowerCase() === "flat" ? "flat" : "pointy");
1298
+ }
1299
+ get scale() {
1300
+ return this.scaleSignal[0]();
1301
+ }
1302
+ set scale(e) {
1303
+ let t = p(e, 1);
1304
+ this.scaleSignal[1](t > 0 ? t : 1);
1305
+ }
1306
+ get x() {
1307
+ return this.xSignal[0]();
1308
+ }
1309
+ set x(e) {
1310
+ this.xSignal[1](p(e, 0));
1311
+ }
1312
+ get y() {
1313
+ return this.ySignal[0]();
1314
+ }
1315
+ set y(e) {
1316
+ this.ySignal[1](p(e, 0));
1317
+ }
1318
+ attributeChangedCallback(e, t, n) {
1319
+ Reflect.set(this, e, n ?? "");
1320
+ }
1321
+ sheet() {
1322
+ return kt();
1323
+ }
1324
+ draw() {
1325
+ let e = `${Ot}-${++At}`, t = this;
1326
+ return (() => {
1327
+ var n = Dt(), r = n.firstChild, i = r.firstChild, o = i.firstChild, s = r.nextSibling;
1328
+ return w(i, "id", e), w(s, "fill", `url(#${e})`), a((e) => {
1329
+ var n = re.width, r = re.height, a = `translate(${t.x} ${t.y})${t.orient === "flat" ? " rotate(90)" : ""} scale(${t.scale})`, s = oe[t.kind];
1330
+ return n !== e.e && w(i, "width", e.e = n), r !== e.t && w(i, "height", e.t = r), a !== e.a && w(i, "patternTransform", e.a = a), s !== e.o && w(o, "d", e.o = s), e;
1331
+ }, {
1332
+ e: void 0,
1333
+ t: void 0,
1334
+ a: void 0,
1335
+ o: void 0
1336
+ }), n;
1337
+ })();
1338
+ }
1339
+ }, Mt = (e) => C(Ot, jt, e);
1340
+ //#endregion
1341
+ //#region src/elements/index.ts
1342
+ function Nt() {
1343
+ Ve(), Mt(), _t(), Tt(), st();
1344
+ }
1345
+ //#endregion
1346
+ export { Fe as _, St as a, gt as c, rt as d, nt as f, Be as g, Pe as h, Mt as i, dt as l, st as m, jt as n, wt as o, ot as p, Ot as r, Tt as s, Nt as t, _t as u, Ve as v, K as y };