@harmonics/lattice-ui 0.8.1 → 0.9.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.
@@ -1,1423 +0,0 @@
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
- let e = 4.2, [t, n] = Je(e, 0);
855
- return [
856
- {
857
- part: "glue-cell",
858
- look: "line",
859
- d: h(t)
860
- },
861
- {
862
- part: "glue-cell",
863
- look: "line",
864
- d: h(n)
865
- },
866
- {
867
- part: "glue-seam",
868
- look: "heavy",
869
- d: $([{
870
- x: 8,
871
- y: 8 - e / 2
872
- }, {
873
- x: 8,
874
- y: 10.1
875
- }])
876
- }
877
- ];
878
- }, Xe = () => {
879
- let [e, t] = Je(3.7, 2);
880
- return [{
881
- part: "apart-cell",
882
- look: "line",
883
- d: h(e)
884
- }, {
885
- part: "apart-cell",
886
- look: "line",
887
- d: h(t)
888
- }];
889
- }, Ze = () => {
890
- let [, e, t, n, r, i] = Q(8, 9.4, 5.2), a = (e) => $([{
891
- x: e,
892
- y: 8.6
893
- }, {
894
- x: e,
895
- y: 12.2
896
- }]);
897
- return [
898
- {
899
- part: "bin-can",
900
- look: "line",
901
- d: $([
902
- i,
903
- r,
904
- n,
905
- t,
906
- e
907
- ])
908
- },
909
- {
910
- part: "bin-rib",
911
- look: "line",
912
- d: `${a(6.5)} ${a(9.5)}`
913
- },
914
- {
915
- part: "bin-lid",
916
- look: "line",
917
- d: h(Ue(8, 3.9, 5))
918
- }
919
- ];
920
- }, Qe = (e, t, n, r, i) => {
921
- let a = (n - e) / Z * (i ? -1 : 1);
922
- return [
923
- {
924
- x: e,
925
- y: t
926
- },
927
- {
928
- x: n,
929
- y: t + a
930
- },
931
- {
932
- x: n,
933
- y: t + a + r
934
- },
935
- {
936
- x: e,
937
- y: t + r
938
- }
939
- ];
940
- }, $e = {
941
- shears: We,
942
- done: Ge,
943
- note: Ke,
944
- turn: qe,
945
- glue: Ye,
946
- apart: Xe,
947
- bin: Ze,
948
- name: () => {
949
- let e = 3.6, t = Qe(5, 9.9, 14.4, e, !0), n = 9.9 - 7 / Z;
950
- return [
951
- {
952
- part: "name-body",
953
- look: "line",
954
- d: h(t)
955
- },
956
- {
957
- part: "name-point",
958
- look: "fill",
959
- d: h(He(5, 11.700000000000001, e, -1))
960
- },
961
- {
962
- part: "name-band",
963
- look: "line",
964
- d: $([{
965
- x: 12,
966
- y: n
967
- }, {
968
- x: 12,
969
- y: n + e
970
- }])
971
- }
972
- ];
973
- },
974
- split: () => {
975
- let e = He(3, 8, 13, 1), [t, n, r] = e, i = (e, t) => ({
976
- x: (e.x + t.x) / 2,
977
- y: (e.y + t.y) / 2
978
- });
979
- return [{
980
- part: "split-whole",
981
- look: "line",
982
- d: h(e)
983
- }, {
984
- part: "split-hole",
985
- look: "line",
986
- d: h([
987
- i(t, r),
988
- i(t, n),
989
- i(n, r)
990
- ])
991
- }];
992
- },
993
- search: () => [{
994
- part: "search-lens",
995
- look: "line",
996
- d: h(Q(6.4, 6.4, 4.6))
997
- }, {
998
- part: "search-handle",
999
- look: "fill",
1000
- d: h(Qe(11.2, 8.07, 15.2, 2.2, !1))
1001
- }]
1002
- }, et = /*#__PURE__*/ u("<svg viewBox=\"0 0 16 16\"aria-hidden=true>"), tt = /*#__PURE__*/ u("<svg><path></svg>", !1, !0, !1);
1003
- function nt(e) {
1004
- return (() => {
1005
- var t = et();
1006
- return c(t, s(o, {
1007
- get each() {
1008
- return $e[e.name]();
1009
- },
1010
- children: (e) => (() => {
1011
- var t = tt();
1012
- return a((n) => {
1013
- var r = `${e.part} ${e.look}`, i = e.part, a = e.d;
1014
- 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;
1015
- }, {
1016
- e: void 0,
1017
- t: void 0,
1018
- a: void 0
1019
- }), t;
1020
- })()
1021
- })), a(() => w(t, "class", `mark mark-${e.name}`)), t;
1022
- })();
1023
- }
1024
- //#endregion
1025
- //#region src/elements/icon.css?inline
1026
- var rt = ":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}", it = /*#__PURE__*/ u("<span part=icon>"), at = /*#__PURE__*/ u("<span part=icon role=img>"), ot = "lattice-icon", st = [
1027
- "shears",
1028
- "done",
1029
- "note",
1030
- "turn",
1031
- "glue",
1032
- "apart",
1033
- "bin",
1034
- "name",
1035
- "split",
1036
- "search"
1037
- ], ct = (e) => Object.hasOwn($e, e), lt = S(rt), ut = class e extends v {
1038
- static observedAttributes = ["name", "label"];
1039
- inputs = e.observedAttributes;
1040
- nameSignal = _("shears");
1041
- labelSignal = _("");
1042
- get name() {
1043
- return this.nameSignal[0]();
1044
- }
1045
- set name(e) {
1046
- let t = String(e ?? "").toLowerCase();
1047
- this.nameSignal[1](ct(t) ? t : "shears");
1048
- }
1049
- get label() {
1050
- return this.labelSignal[0]();
1051
- }
1052
- set label(e) {
1053
- this.labelSignal[1](String(e ?? ""));
1054
- }
1055
- attributeChangedCallback(e, t, n) {
1056
- Reflect.set(this, e, n ?? "");
1057
- }
1058
- sheet() {
1059
- return lt();
1060
- }
1061
- draw() {
1062
- let e = () => {
1063
- let e = this;
1064
- return s(nt, { get name() {
1065
- return e.name;
1066
- } });
1067
- }, t = this;
1068
- return s(ne, {
1069
- get when() {
1070
- return t.label;
1071
- },
1072
- get fallback() {
1073
- return (() => {
1074
- var t = it();
1075
- return c(t, e), t;
1076
- })();
1077
- },
1078
- children: (t) => (() => {
1079
- var n = at();
1080
- return c(n, e), a(() => w(n, "aria-label", t())), n;
1081
- })()
1082
- });
1083
- }
1084
- }, dt = (e) => C(ot, ut, e), ft = /*#__PURE__*/ u("<svg class=\"shape woods\"part=shape><g class=faces></g><path class=seams></path><g class=ring part=ring>"), pt = /*#__PURE__*/ u("<svg><path></svg>", !1, !0, !1), mt = /*#__PURE__*/ u("<svg><line></svg>", !1, !0, !1), ht = "lattice-shape", gt = (e) => Object.hasOwn(b, e), _t = S(`${te}\n${d}`), vt = 4, yt = !1, bt = class e extends v {
1085
- static observedAttributes = [
1086
- "shape",
1087
- "parts",
1088
- "tone",
1089
- "lift",
1090
- "scale",
1091
- "label",
1092
- "pressable",
1093
- "pressed",
1094
- "disabled"
1095
- ];
1096
- inputs = e.observedAttributes;
1097
- shapeSignal = _("cell");
1098
- partsSignal = _();
1099
- toneSignal = _(0);
1100
- liftSignal = _(8);
1101
- scaleSignal = _(1);
1102
- labelSignal = _("");
1103
- pressableSignal = _(!1);
1104
- pressedSignal = _();
1105
- disabledSignal = _(!1);
1106
- get shape() {
1107
- return this.shapeSignal[0]();
1108
- }
1109
- set shape(e) {
1110
- let t = String(e ?? "").toLowerCase();
1111
- this.shapeSignal[1](gt(t) ? t : "cell");
1112
- }
1113
- made;
1114
- get parts() {
1115
- let e = [
1116
- this.partsSignal[0](),
1117
- this.shape,
1118
- this.tone
1119
- ];
1120
- if (!this.made || e.some((e, t) => e !== this.made?.from[t])) {
1121
- let [t, n, r] = e, i = t === void 0 ? b[n](r) : x(t, r);
1122
- this.made = {
1123
- from: e,
1124
- parts: i
1125
- };
1126
- }
1127
- return this.made.parts;
1128
- }
1129
- set parts(e) {
1130
- this.partsSignal[1](() => e === null || e === "" ? void 0 : e);
1131
- }
1132
- get tone() {
1133
- return this.toneSignal[0]();
1134
- }
1135
- set tone(e) {
1136
- this.toneSignal[1](ee(p(e, 0)));
1137
- }
1138
- get lift() {
1139
- return this.liftSignal[0]();
1140
- }
1141
- set lift(e) {
1142
- this.liftSignal[1](Math.max(0, p(e, 8)));
1143
- }
1144
- get scale() {
1145
- return this.scaleSignal[0]();
1146
- }
1147
- set scale(e) {
1148
- let t = p(e, 1);
1149
- this.scaleSignal[1](t > 0 ? t : 1);
1150
- }
1151
- get label() {
1152
- return this.labelSignal[0]();
1153
- }
1154
- set label(e) {
1155
- this.labelSignal[1](String(e ?? ""));
1156
- }
1157
- get pressable() {
1158
- return this.pressableSignal[0]();
1159
- }
1160
- set pressable(e) {
1161
- let t = f(e);
1162
- this.pressableSignal[1](t), this.hasAttribute("pressable") !== t && this.toggleAttribute("pressable", t);
1163
- }
1164
- get pressed() {
1165
- return this.pressedSignal[0]() ?? !1;
1166
- }
1167
- set pressed(e) {
1168
- this.pressedSignal[1](e == null ? void 0 : f(e));
1169
- }
1170
- get disabled() {
1171
- return this.disabledSignal[0]();
1172
- }
1173
- set disabled(e) {
1174
- this.disabledSignal[1](f(e));
1175
- }
1176
- attributeChangedCallback(e, t, n) {
1177
- e === "parts" ? this.parts = n : e === "pressable" || e === "pressed" || e === "disabled" ? Reflect.set(this, e, n) : Reflect.set(this, e, n ?? "");
1178
- }
1179
- sheet() {
1180
- return _t();
1181
- }
1182
- beAButton() {
1183
- let e = !1;
1184
- r(() => {
1185
- let t = this.pressable, n = this.disabled, r = this.pressedSignal[0](), i = (e, t) => {
1186
- t === void 0 ? this.removeAttribute(e) : this.getAttribute(e) !== t && this.setAttribute(e, t);
1187
- };
1188
- 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 && !yt && (yt = !0, console.warn("<lattice-shape pressable> has no label: give it one, so it can be named"));
1189
- });
1190
- }
1191
- draw() {
1192
- this.beAButton();
1193
- let [e, r] = _(!1), [i, u] = _(!1), d = () => this.pressable && !this.disabled, f = () => {
1194
- d() && this.tell("press", {
1195
- shape: this.shape,
1196
- parts: this.parts
1197
- });
1198
- }, p = [
1199
- ["click", () => f()],
1200
- ["keydown", (e) => {
1201
- let { key: t, repeat: n } = e;
1202
- !d() || t !== "Enter" && t !== " " || (e.preventDefault(), t === " " ? u(!0) : n || f());
1203
- }],
1204
- ["keyup", (e) => {
1205
- e.key === " " && i() && (u(!1), f());
1206
- }],
1207
- ["pointerdown", () => d() && u(!0)],
1208
- ["pointerup", () => u(!1)],
1209
- ["pointerleave", () => u(!1)],
1210
- ["blur", () => u(!1)]
1211
- ];
1212
- for (let [e, t] of p) this.addEventListener(e, t);
1213
- g(() => {
1214
- for (let [e, t] of p) this.removeEventListener(e, t);
1215
- });
1216
- let h = () => this.pressable ? i() || this.pressed ? this.lift / 2 : e() && !this.disabled ? this.lift + vt : this.lift : this.lift, v = n(() => l(this.parts, h())), y = n(() => l(this.parts, this.pressable ? this.lift + vt : this.lift).box), b = n(() => ae(ie("shape", this.parts))), x = () => !this.pressable && this.label !== "", S = this;
1217
- return (() => {
1218
- var e = ft(), n = e.firstChild, i = n.nextSibling, l = i.nextSibling;
1219
- return m(n, "pointerleave", () => r(!1)), m(n, "pointerenter", () => r(!0)), c(n, s(t, {
1220
- get each() {
1221
- return v().faces;
1222
- },
1223
- children: (e) => (() => {
1224
- var t = pt();
1225
- return a((n) => {
1226
- var r = `flat-${e().kind}`, i = e().tone, a = e().d;
1227
- 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;
1228
- }, {
1229
- e: void 0,
1230
- t: void 0,
1231
- a: void 0
1232
- }), t;
1233
- })()
1234
- })), c(l, s(o, {
1235
- get each() {
1236
- return b();
1237
- },
1238
- children: ([e, t]) => (() => {
1239
- var n = mt();
1240
- return a((r) => {
1241
- var i = e.x, a = e.y, o = t.x, s = t.y;
1242
- 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;
1243
- }, {
1244
- e: void 0,
1245
- t: void 0,
1246
- a: void 0,
1247
- o: void 0
1248
- }), n;
1249
- })()
1250
- })), a((t) => {
1251
- 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()})`;
1252
- 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;
1253
- }, {
1254
- e: void 0,
1255
- t: void 0,
1256
- a: void 0,
1257
- o: void 0,
1258
- i: void 0,
1259
- n: void 0,
1260
- s: void 0,
1261
- h: void 0
1262
- }), e;
1263
- })();
1264
- }
1265
- }, xt = (e) => C(ht, bt, e), St = ":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}", Ct = 220;
1266
- function wt() {
1267
- let [e, t] = _([]), n, r = () => {
1268
- let i = performance.now();
1269
- t((e) => e.filter((e) => i - e.at < Ct)), n = e().length > 0 ? requestAnimationFrame(r) : void 0;
1270
- };
1271
- return g(() => {
1272
- n !== void 0 && cancelAnimationFrame(n);
1273
- }), {
1274
- points: () => e().map((e) => `${e.p.x},${e.p.y}`).join(" "),
1275
- add: (e) => {
1276
- t((t) => [...t, {
1277
- p: e,
1278
- at: performance.now()
1279
- }]), n ??= requestAnimationFrame(r);
1280
- }
1281
- };
1282
- }
1283
- //#endregion
1284
- //#region src/elements/shears.tsx
1285
- var Tt = /*#__PURE__*/ u("<svg class=trail part=trail aria-hidden=true><polyline class=blade>"), Et = "shears-pad", Dt = S(St), Ot = class t extends v {
1286
- static observedAttributes = ["disabled"];
1287
- inputs = t.observedAttributes;
1288
- disabledSignal = _(!1);
1289
- get disabled() {
1290
- return this.disabledSignal[0]();
1291
- }
1292
- set disabled(e) {
1293
- this.disabledSignal[1](f(e));
1294
- }
1295
- attributeChangedCallback(e, t, n) {
1296
- this.disabled = n;
1297
- }
1298
- sheet() {
1299
- return Dt();
1300
- }
1301
- draw() {
1302
- let t = wt(), n, i, o = (e) => {
1303
- let t = this.getBoundingClientRect();
1304
- return {
1305
- x: e.clientX - t.left,
1306
- y: e.clientY - t.top
1307
- };
1308
- }, s = (e) => {
1309
- if (!n || i === void 0) return;
1310
- let t = n, r = i;
1311
- n = void 0, i = void 0, this.hasPointerCapture(r) && this.releasePointerCapture(r), this.tell("strokeend", {
1312
- points: t,
1313
- cancelled: e
1314
- });
1315
- }, c = (e) => {
1316
- if (this.disabled || e.button !== 0 || n) return;
1317
- e.preventDefault(), i = e.pointerId, this.setPointerCapture(i);
1318
- let t = o(e);
1319
- n = [t], this.tell("stroke", {
1320
- points: [t],
1321
- point: t,
1322
- fresh: !0
1323
- });
1324
- }, l = (e) => {
1325
- if (!n || e.pointerId !== i) return;
1326
- let r = o(e);
1327
- n.push(r), t.add(r), this.tell("stroke", {
1328
- points: [...n],
1329
- point: r,
1330
- fresh: !1
1331
- });
1332
- }, u = (e) => (t) => {
1333
- t.pointerId === i && s(e);
1334
- }, d = [
1335
- ["pointerdown", c],
1336
- ["pointermove", l],
1337
- ["pointerup", u(!1)],
1338
- ["pointercancel", u(!0)],
1339
- ["lostpointercapture", u(!0)]
1340
- ];
1341
- for (let [e, t] of d) this.addEventListener(e, t);
1342
- return r(e(() => this.disabled, (e) => e && s(!0), { defer: !0 })), g(() => {
1343
- s(!0);
1344
- for (let [e, t] of d) this.removeEventListener(e, t);
1345
- }), (() => {
1346
- var e = Tt(), n = e.firstChild;
1347
- return a(() => w(n, "points", t.points())), e;
1348
- })();
1349
- }
1350
- }, kt = (e) => C(Et, Ot, e), At = ":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)}", jt = /*#__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%>"), Mt = "hex-sky", Nt = S(At), Pt = 0, Ft = class e extends v {
1351
- static observedAttributes = [
1352
- "kind",
1353
- "orient",
1354
- "scale",
1355
- "x",
1356
- "y"
1357
- ];
1358
- inputs = e.observedAttributes;
1359
- kindSignal = _("sky");
1360
- orientSignal = _("pointy");
1361
- scaleSignal = _(1);
1362
- xSignal = _(0);
1363
- ySignal = _(0);
1364
- get kind() {
1365
- return this.kindSignal[0]();
1366
- }
1367
- set kind(e) {
1368
- this.kindSignal[1](String(e ?? "").toLowerCase() === "earth" ? "earth" : "sky");
1369
- }
1370
- get orient() {
1371
- return this.orientSignal[0]();
1372
- }
1373
- set orient(e) {
1374
- this.orientSignal[1](String(e ?? "").toLowerCase() === "flat" ? "flat" : "pointy");
1375
- }
1376
- get scale() {
1377
- return this.scaleSignal[0]();
1378
- }
1379
- set scale(e) {
1380
- let t = p(e, 1);
1381
- this.scaleSignal[1](t > 0 ? t : 1);
1382
- }
1383
- get x() {
1384
- return this.xSignal[0]();
1385
- }
1386
- set x(e) {
1387
- this.xSignal[1](p(e, 0));
1388
- }
1389
- get y() {
1390
- return this.ySignal[0]();
1391
- }
1392
- set y(e) {
1393
- this.ySignal[1](p(e, 0));
1394
- }
1395
- attributeChangedCallback(e, t, n) {
1396
- Reflect.set(this, e, n ?? "");
1397
- }
1398
- sheet() {
1399
- return Nt();
1400
- }
1401
- draw() {
1402
- let e = `${Mt}-${++Pt}`, t = this;
1403
- return (() => {
1404
- var n = jt(), r = n.firstChild, i = r.firstChild, o = i.firstChild, s = r.nextSibling;
1405
- return w(i, "id", e), w(s, "fill", `url(#${e})`), a((e) => {
1406
- 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];
1407
- 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;
1408
- }, {
1409
- e: void 0,
1410
- t: void 0,
1411
- a: void 0,
1412
- o: void 0
1413
- }), n;
1414
- })();
1415
- }
1416
- }, It = (e) => C(Mt, Ft, e);
1417
- //#endregion
1418
- //#region src/elements/index.ts
1419
- function Lt() {
1420
- Ve(), It(), xt(), kt(), dt();
1421
- }
1422
- //#endregion
1423
- export { Fe as _, Et as a, bt as c, st as d, ot as f, Be as g, Pe as h, It as i, ht as l, dt as m, Ft as n, Ot as o, ut as p, Mt as r, kt as s, Lt as t, xt as u, Ve as v, K as y };