@harmonics/lattice-ui 0.8.0 → 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.
package/dist/board.js CHANGED
@@ -1,72 +1,72 @@
1
- import { A as e, C as t, D as n, E as r, O as i, S as a, T as o, _ as s, b as c, c as l, d as u, f as d, g as f, h as p, j as m, k as h, l as g, m as _, o as v, p as y, t as b, u as x, v as S, w as C, x as w, y as T } from "./woods-C8W11GkD.js";
2
- import { A as E, C as D, D as O, E as k, F as A, I as j, L as M, M as ee, P as N, R as P, S as F, T as I, _ as L, a as R, b as te, c as z, g as ne, h as re, i as ie, j as B, k as V, m as H, n as ae, p as oe, r as se, s as U, v as W, w as ce, x as le, y as G } from "./hexes-DwdbCYSF.js";
1
+ import { A as e, C as t, D as n, E as r, M as i, N as a, O as o, S as s, T as c, _ as l, b as u, c as d, d as f, f as p, g as m, h, j as g, k as _, m as v, o as y, p as b, t as x, u as S, v as C, w, x as T, y as E } from "./woods-S4dnVPib.js";
2
+ import { A as D, C as O, D as ee, E as te, F as k, I as A, L as j, M as ne, P as M, R as N, S as P, T as F, _ as I, a as L, b as re, c as R, g as ie, h as ae, i as z, j as B, k as V, m as oe, n as se, p as ce, r as le, s as H, v as ue, w as de, x as fe, y as U } from "./hexes-DwdbCYSF.js";
3
3
  //#region src/board.ts
4
- var { half: ue } = M, de = 5, K = (e) => `${e.q},${e.r}`, fe = /* @__PURE__ */ new Set();
5
- function pe(e) {
6
- let t = e.hooks ?? {}, r = () => e.fixed?.() ?? fe, i = 4, a = () => (i = (i + 1) % de, i), [o, s] = h(e.initial), c = () => o().filter((e) => !r().has(e.id)), [l, u] = h(), [d, f] = h(), [p, g] = h(), _ = (e) => o().find((t) => t.id === e), v = (e, t) => o().flatMap((n) => n.id === e ? t : [n]), y = (e, n, i, a) => (s(n), t.change?.(n.filter((e) => !r().has(e.id)), i, a) !== !1 || (s(e), !1)), b = n(() => {
4
+ var { half: pe } = j, me = 5, W = (e) => `${e.q},${e.r}`, he = /* @__PURE__ */ new Set();
5
+ function ge(e) {
6
+ let t = e.hooks ?? {}, n = () => e.fixed?.() ?? he, r = 4, i = () => (r = (r + 1) % me, r), [o, s] = g(e.initial), c = () => o().filter((e) => !n().has(e.id)), [l, u] = g(), [d, f] = g(), [p, m] = g(), h = (e) => o().find((t) => t.id === e), v = (e, t) => o().flatMap((n) => n.id === e ? t : [n]), y = (e, r, i, a) => (s(r), t.change?.(r.filter((e) => !n().has(e.id)), i, a) !== !1 || (s(e), !1)), b = _(() => {
7
7
  let t = l();
8
8
  if (!t) return;
9
- let n = t.now.x - t.start.x, r = t.now.y - t.start.y, i = W(t.from, n, r, t.held);
9
+ let n = t.now.x - t.start.x, r = t.now.y - t.start.y, i = ue(t.from, n, r, t.held);
10
10
  return e.calm() ? {
11
11
  ...i,
12
12
  x: n,
13
13
  y: r
14
14
  } : i;
15
- }), x = n(() => {
15
+ }), x = _(() => {
16
16
  let e = l(), t = b();
17
- return e && t ? G(e.from, t.step) : void 0;
18
- }), S = n(() => new Set((e.tray?.() ?? []).map(K))), C = () => {
17
+ return e && t ? U(e.from, t.step) : void 0;
18
+ }), S = _(() => new Set((e.tray?.() ?? []).map(W))), C = () => {
19
19
  let e = l();
20
- return e ? S().has(K(ne(e.now.x, e.now.y))) : !1;
21
- }, w = n(() => {
20
+ return e ? S().has(W(ie(e.now.x, e.now.y))) : !1;
21
+ }, w = _(() => {
22
22
  let t = x();
23
- return t ? se(t, o(), e.area(), e.clear()) : /* @__PURE__ */ new Set();
24
- }), T = (t) => oe(t, o(), e.area(), e.clear()), D = () => {
23
+ return t ? le(t, o(), e.area(), e.clear()) : /* @__PURE__ */ new Set();
24
+ }), T = (t) => ce(t, o(), e.area(), e.clear()), E = () => {
25
25
  let e = x();
26
26
  return e ? T(e) : !1;
27
- }, k = n(() => [...o()].sort((e, t) => e.id === l()?.id ? 1 : t.id === l()?.id ? -1 : ie(e) - ie(t)).map((e) => e.id)), M = n(() => {
28
- let e = p(), t = e && !l() ? _(e) : void 0;
29
- return t ? c().filter((e) => e.id !== t.id && ee(t, e)).flatMap((e) => O(t, e)) : [];
30
- }), N, P = (e) => {
31
- f(e), clearTimeout(N), N = setTimeout(() => f(void 0), 300);
32
- }, F;
33
- m(() => {
34
- clearTimeout(N), clearTimeout(F);
27
+ }, O = _(() => [...o()].sort((e, t) => e.id === l()?.id ? 1 : t.id === l()?.id ? -1 : z(e) - z(t)).map((e) => e.id)), te = _(() => {
28
+ let e = p(), t = e && !l() ? h(e) : void 0;
29
+ return t ? c().filter((e) => e.id !== t.id && ne(t, e)).flatMap((e) => ee(t, e)) : [];
30
+ }), j, M = (e) => {
31
+ f(e), clearTimeout(j), j = setTimeout(() => f(void 0), 300);
32
+ }, N;
33
+ a(() => {
34
+ clearTimeout(j), clearTimeout(N);
35
35
  });
36
- let I = (e, n) => {
37
- let i = _(e);
38
- if (!i || r().has(e)) return;
39
- let a = A(i, n), c = l();
36
+ let P = (e, r) => {
37
+ let i = h(e);
38
+ if (!i || n().has(e)) return;
39
+ let a = k(i, r), c = l();
40
40
  if (c?.id === e) u({
41
41
  ...c,
42
- from: A(c.from, n)
42
+ from: k(c.from, r)
43
43
  }), s(v(e, [a]));
44
44
  else if (!T(a)) {
45
- P(e);
45
+ M(e);
46
46
  return;
47
47
  } else if (!y(o(), v(e, [a]), "turn", e)) return;
48
- t.turned?.(e, n);
49
- }, L = (e) => {
50
- let n = _(e);
51
- if (!n || r().has(e)) return;
52
- let { piece: i, absorbed: a } = re(n, c());
48
+ t.turned?.(e, r);
49
+ }, F = (e) => {
50
+ let r = h(e);
51
+ if (!r || n().has(e)) return;
52
+ let { piece: i, absorbed: a } = ae(r, c());
53
53
  if (a.length === 0) {
54
- P(e);
54
+ M(e);
55
55
  return;
56
56
  }
57
57
  let s = o().filter((e) => !a.includes(e.id)).map((t) => t.id === e ? i : t);
58
- y(o(), s, "glue", e) && (g(e), t.focus?.(e));
59
- }, z = (n) => {
60
- let i = _(n);
61
- if (!i || r().has(n) || i.parts.length < 2) {
62
- P(n);
58
+ y(o(), s, "glue", e) && (m(e), t.focus?.(e));
59
+ }, I = (r) => {
60
+ let i = h(r);
61
+ if (!i || n().has(r) || i.parts.length < 2) {
62
+ M(r);
63
63
  return;
64
64
  }
65
- let a = ae(i, e.id), s = a[0];
66
- y(o(), v(n, a), "break", n) && (g(s.id), t.focus?.(s.id));
67
- }, V = (e) => {
68
- !r().has(e) && _(e) && y(o(), v(e, []), "remove", e) && g(void 0);
69
- }, H = (e, t, n, r) => {
65
+ let a = se(i, e.id), s = a[0];
66
+ y(o(), v(r, a), "break", r) && (m(s.id), t.focus?.(s.id));
67
+ }, R = (e) => {
68
+ !n().has(e) && h(e) && y(o(), v(e, []), "remove", e) && m(void 0);
69
+ }, V = (e, t, n, r) => {
70
70
  let i = r ?? o();
71
71
  u({
72
72
  id: e.id,
@@ -80,50 +80,50 @@ function pe(e) {
80
80
  restore: r,
81
81
  before: i,
82
82
  action: n
83
- }), g(void 0);
83
+ }), m(void 0);
84
84
  };
85
85
  return {
86
86
  pieces: o,
87
87
  setPieces: s,
88
88
  handled: c,
89
- pieceById: _,
89
+ pieceById: h,
90
90
  carried: l,
91
91
  magnet: b,
92
92
  target: x,
93
93
  overTray: C,
94
94
  blocked: w,
95
- lands: D,
96
- drawn: k,
97
- glueSides: M,
95
+ lands: E,
96
+ drawn: O,
97
+ glueSides: te,
98
98
  refused: d,
99
99
  touched: p,
100
- touch: g,
101
- lift: (t, n, i) => {
102
- let a = _(t);
103
- if (!(!a || r().has(t) || l())) {
100
+ touch: m,
101
+ lift: (t, r, i) => {
102
+ let a = h(t);
103
+ if (!(!a || n().has(t) || l())) {
104
104
  if (i !== void 0 && a.parts.length > 1) {
105
- let r = o(), [c, ...l] = ce(a, i, e.id);
106
- s(v(t, [c, ...l])), H(c, n, "pull", r);
107
- } else H(a, n, "move");
105
+ let n = o(), [c, ...l] = de(a, i, e.id);
106
+ s(v(t, [c, ...l])), V(c, r, "pull", n);
107
+ } else V(a, r, "move");
108
108
  }
109
109
  },
110
110
  fromTray: (t, n) => {
111
111
  if (l()) return;
112
- let r = o(), i = j(t, n.x, n.y, a(), e.id());
113
- s([...r, i]), H(i, n, "add", r);
112
+ let r = o(), a = A(t, n.x, n.y, i(), e.id());
113
+ s([...r, a]), V(a, n, "add", r);
114
114
  },
115
115
  placeFromTray: (n) => {
116
116
  let r = e.tray?.()?.[0];
117
117
  if (!r) return;
118
- let i = a();
119
- for (let a = r.r - 1; a >= 0; a--) for (let s = 0; s < 12; s++) {
120
- let c = R({
121
- q: r.q + s + Math.floor((r.r - a) / 2),
122
- r: a
123
- }), l = j(n, c.x + ue, c.y + 44, i, e.id());
118
+ let a = i();
119
+ for (let i = r.r - 1; i >= 0; i--) for (let s = 0; s < 12; s++) {
120
+ let c = L({
121
+ q: r.q + s + Math.floor((r.r - i) / 2),
122
+ r: i
123
+ }), l = A(n, c.x + pe, c.y + 44, a, e.id());
124
124
  if (T(l)) {
125
125
  if (!y(o(), [...o(), l], "add", l.id)) return;
126
- g(l.id), t.focus?.(l.id);
126
+ m(l.id), t.focus?.(l.id);
127
127
  return;
128
128
  }
129
129
  }
@@ -131,7 +131,7 @@ function pe(e) {
131
131
  follow: (e) => {
132
132
  let n = l();
133
133
  if (!n) return;
134
- let { held: r } = W(n.from, e.x - n.start.x, e.y - n.start.y, n.held);
134
+ let { held: r } = ue(n.from, e.x - n.start.x, e.y - n.start.y, n.held);
135
135
  r && (!n.held || r.i !== n.held.i || r.j !== n.held.j) && t.caught?.(n.id), u({
136
136
  ...n,
137
137
  now: e,
@@ -141,7 +141,7 @@ function pe(e) {
141
141
  drop: () => {
142
142
  let n = l();
143
143
  if (!n) return;
144
- let r = x(), i = C(), a = D(), c = b(), d = c ? {
144
+ let r = x(), i = C(), a = E(), c = b(), d = c ? {
145
145
  x: c.x,
146
146
  y: c.y
147
147
  } : {
@@ -149,13 +149,13 @@ function pe(e) {
149
149
  y: n.now.y - n.start.y
150
150
  }, f = n.before;
151
151
  if (u(void 0), i) {
152
- n.action === "add" && n.restore ? s(n.restore) : y(f, v(n.id, []), "remove", n.id) && g(void 0);
152
+ n.action === "add" && n.restore ? s(n.restore) : y(f, v(n.id, []), "remove", n.id) && m(void 0);
153
153
  return;
154
154
  }
155
- let p = r && (a ? r : te(r, o(), e.area(), e.clear()));
155
+ let p = r && (a ? r : re(r, o(), e.area(), e.clear()));
156
156
  if (p) {
157
157
  if (!y(f, v(n.id, [p]), n.action, n.id)) return;
158
- g(n.id);
158
+ m(n.id);
159
159
  let e = B({
160
160
  i: p.pivot.i - n.from.pivot.i,
161
161
  j: p.pivot.j - n.from.pivot.j
@@ -171,22 +171,22 @@ function pe(e) {
171
171
  return;
172
172
  }
173
173
  s(v(n.id, [n.from]));
174
- let m = t.slid?.(n.id, d) ?? 0;
175
- F = setTimeout(() => P(n.id), m);
174
+ let h = t.slid?.(n.id, d) ?? 0;
175
+ N = setTimeout(() => M(n.id), h);
176
176
  },
177
- key: (e, n) => {
178
- let i = _(e);
179
- if (!i || r().has(e)) return !1;
180
- let a = n.key;
181
- if (a === "r" || a === "R") return l()?.id !== e && (I(e, n.shiftKey ? -1 : 1), t.focus?.(e)), !0;
182
- if (a === "g" || a === "G") return n.shiftKey ? z(e) : L(e), !0;
183
- if (a === "Delete" || a === "Backspace") return V(e), !0;
184
- let s = E(i, a);
177
+ key: (e, r) => {
178
+ let i = h(e);
179
+ if (!i || n().has(e)) return !1;
180
+ let a = r.key;
181
+ if (a === "r" || a === "R") return l()?.id !== e && (P(e, r.shiftKey ? -1 : 1), t.focus?.(e)), !0;
182
+ if (a === "g" || a === "G") return r.shiftKey ? I(e) : F(e), !0;
183
+ if (a === "Delete" || a === "Backspace") return R(e), !0;
184
+ let s = D(i, a);
185
185
  if (!s) return !1;
186
- let c = G(i, s);
187
- if (!T(c)) return P(e), !0;
186
+ let c = U(i, s);
187
+ if (!T(c)) return M(e), !0;
188
188
  if (!y(o(), v(e, [c]), "move", e)) return !0;
189
- g(e);
189
+ m(e);
190
190
  let u = B(s);
191
191
  return t.landed?.(e, {
192
192
  x: -u.x,
@@ -195,110 +195,110 @@ function pe(e) {
195
195
  },
196
196
  carryKey: (e) => {
197
197
  let t = l();
198
- return !t || e.key !== "r" && e.key !== "R" ? !1 : (I(t.id, e.shiftKey ? -1 : 1), !0);
198
+ return !t || e.key !== "r" && e.key !== "R" ? !1 : (P(t.id, e.shiftKey ? -1 : 1), !0);
199
199
  },
200
- turn: I,
201
- glue: L,
202
- breakApart: z,
203
- throwAway: V
200
+ turn: P,
201
+ glue: F,
202
+ breakApart: I,
203
+ throwAway: R
204
204
  };
205
205
  }
206
- function me(e, t) {
206
+ function _e(e, t) {
207
207
  if (typeof window > "u") return;
208
- let n = (n) => e.follow(t(n.clientX, n.clientY)), i = () => e.drop(), a = (t) => {
208
+ let n = (n) => e.follow(t(n.clientX, n.clientY)), r = () => e.drop(), i = (t) => {
209
209
  e.carryKey(t) && t.preventDefault();
210
210
  };
211
- r(() => {
212
- e.carried() && (window.addEventListener("pointermove", n), window.addEventListener("pointerup", i), window.addEventListener("pointercancel", i), window.addEventListener("keydown", a), m(() => {
213
- window.removeEventListener("pointermove", n), window.removeEventListener("pointerup", i), window.removeEventListener("pointercancel", i), window.removeEventListener("keydown", a);
211
+ o(() => {
212
+ e.carried() && (window.addEventListener("pointermove", n), window.addEventListener("pointerup", r), window.addEventListener("pointercancel", r), window.addEventListener("keydown", i), a(() => {
213
+ window.removeEventListener("pointermove", n), window.removeEventListener("pointerup", r), window.removeEventListener("pointercancel", r), window.removeEventListener("keydown", i);
214
214
  }));
215
215
  });
216
216
  }
217
217
  //#endregion
218
218
  //#region src/pieceDrawing.tsx
219
- var he = /*#__PURE__*/ c("<svg><path class=shade></svg>", !1, !0, !1), ge = /*#__PURE__*/ c("<svg><path class=shadow></svg>", !1, !0, !1), q = /*#__PURE__*/ c("<svg><path class=top></svg>", !1, !0, !1), _e = /*#__PURE__*/ c("<svg><g><rect width=1 height=1></svg>", !1, !0, !1), ve = /*#__PURE__*/ c("<svg><g class=part></svg>", !1, !0, !1), J = /*#__PURE__*/ c("<svg><g></svg>", !1, !0, !1), ye = /*#__PURE__*/ c("<svg><line></svg>", !1, !0, !1), be = /*#__PURE__*/ c("<svg><g class=piece role=button tabindex=0><g><g><g></svg>", !1, !0, !1), xe = /*#__PURE__*/ c("<svg><g class=landing></svg>", !1, !0, !1), Y = /*#__PURE__*/ c("<svg><path></svg>", !1, !0, !1), Se = /*#__PURE__*/ c("<svg><g class=tray></svg>", !1, !0, !1), Ce = /*#__PURE__*/ c("<svg><g class=source role=button tabindex=0><g class=tray-cell></g><g class=tray-unit></svg>", !1, !0, !1), { width: X, half: Z } = M;
220
- function we() {
219
+ var ve = /*#__PURE__*/ s("<svg><path class=shade></svg>", !1, !0, !1), ye = /*#__PURE__*/ s("<svg><path class=shadow></svg>", !1, !0, !1), G = /*#__PURE__*/ s("<svg><path class=top></svg>", !1, !0, !1), be = /*#__PURE__*/ s("<svg><g><rect width=1 height=1></svg>", !1, !0, !1), xe = /*#__PURE__*/ s("<svg><g class=part></svg>", !1, !0, !1), K = /*#__PURE__*/ s("<svg><g></svg>", !1, !0, !1), Se = /*#__PURE__*/ s("<svg><line></svg>", !1, !0, !1), Ce = /*#__PURE__*/ s("<svg><g class=piece role=button tabindex=0><g><g><g></svg>", !1, !0, !1), we = /*#__PURE__*/ s("<svg><g class=landing></svg>", !1, !0, !1), q = /*#__PURE__*/ s("<svg><path></svg>", !1, !0, !1), Te = /*#__PURE__*/ s("<svg><g class=tray></svg>", !1, !0, !1), Ee = /*#__PURE__*/ s("<svg><g class=source role=button tabindex=0><g class=tray-cell></g><g class=tray-unit></g><g class=tray-bin></svg>", !1, !0, !1), { width: J, half: Y } = j;
220
+ function X() {
221
221
  return [
222
222
  (() => {
223
- var e = he();
224
- return T(e, "d", `M 0 66 L ${Z} 88 L ${Z} 64 L 0 42 Z`), e;
223
+ var e = ve();
224
+ return T(e, "d", `M 0 66 L ${Y} 88 L ${Y} 64 L 0 42 Z`), e;
225
225
  })(),
226
226
  (() => {
227
- var e = ge();
228
- return T(e, "d", `M ${Z} 88 L ${X} 66 L ${X} 42 L ${Z} 64 Z`), e;
227
+ var e = ye();
228
+ return T(e, "d", `M ${Y} 88 L ${J} 66 L ${J} 42 L ${Y} 64 Z`), e;
229
229
  })(),
230
230
  (() => {
231
- var e = q();
232
- return T(e, "d", P), e;
231
+ var e = G();
232
+ return T(e, "d", N), e;
233
233
  })()
234
234
  ];
235
235
  }
236
- function Te(e) {
237
- let t = z(e.tri).map(U), n = t[2], r = t[1];
236
+ function De(t) {
237
+ let n = R(t.tri).map(H), r = n[2], i = n[1];
238
238
  return [(() => {
239
- var t = _e(), a = t.firstChild;
240
- return i((i) => {
241
- var o = `matrix(${r.x - n.x} ${r.y - n.y} 0 -1 ${n.x} ${n.y})`, s = `side ${e.tri.k === 0 ? "shadow" : "shade"}`;
242
- return o !== i.e && T(t, "transform", i.e = o), s !== i.t && T(a, "class", i.t = s), i;
239
+ var n = be(), a = n.firstChild;
240
+ return e((e) => {
241
+ var o = `matrix(${i.x - r.x} ${i.y - r.y} 0 -1 ${r.x} ${r.y})`, s = `side ${t.tri.k === 0 ? "shadow" : "shade"}`;
242
+ return o !== e.e && T(n, "transform", e.e = o), s !== e.t && T(a, "class", e.t = s), e;
243
243
  }, {
244
244
  e: void 0,
245
245
  t: void 0
246
- }), t;
246
+ }), n;
247
247
  })(), (() => {
248
- var e = q();
249
- return i(() => T(e, "d", p(t))), e;
248
+ var t = G();
249
+ return e(() => T(t, "d", l(n))), t;
250
250
  })()];
251
251
  }
252
- function Ee(e) {
252
+ function Z(t) {
253
253
  return (() => {
254
- var t = ve();
255
- return s(t, (() => {
256
- var t = S(() => e.part.kind === "cell");
257
- return () => t() ? (() => {
258
- var t = J();
259
- return s(t, o(we, {})), i(() => T(t, "transform", `translate(${R(e.part.at).x} ${R(e.part.at).y})`)), t;
260
- })() : o(Te, { get tri() {
261
- return e.part.at;
254
+ var r = xe();
255
+ return E(r, (() => {
256
+ var r = u(() => t.part.kind === "cell");
257
+ return () => r() ? (() => {
258
+ var r = K();
259
+ return E(r, n(X, {})), e(() => T(r, "transform", `translate(${L(t.part.at).x} ${L(t.part.at).y})`)), r;
260
+ })() : n(De, { get tri() {
261
+ return t.part.at;
262
262
  } });
263
- })()), i((n) => {
264
- var r = e.part.tone, i = e.index;
265
- return r !== n.e && T(t, "data-tone", n.e = r), i !== n.t && T(t, "data-part", n.t = i), n;
263
+ })()), e((e) => {
264
+ var n = t.part.tone, i = t.index;
265
+ return n !== e.e && T(r, "data-tone", e.e = n), i !== e.t && T(r, "data-part", e.t = i), e;
266
266
  }, {
267
267
  e: void 0,
268
268
  t: void 0
269
- }), t;
269
+ }), r;
270
270
  })();
271
271
  }
272
- function De(e) {
273
- let t = (e) => Math.max(...N(e).flatMap((e) => z(e).map((e) => U(e).y))), n = (e) => Math.min(...N(e).flatMap((e) => z(e).map((e) => U(e).x)));
272
+ function Oe(e) {
273
+ let t = (e) => Math.max(...M(e).flatMap((e) => R(e).map((e) => H(e).y))), n = (e) => Math.min(...M(e).flatMap((e) => R(e).map((e) => H(e).x)));
274
274
  return e.parts.map((e, t) => ({
275
275
  part: e,
276
276
  index: t
277
277
  })).sort((e, r) => t(e.part) - t(r.part) || n(e.part) - n(r.part));
278
278
  }
279
- function Q(e) {
279
+ function Q(t) {
280
280
  return (() => {
281
- var t = J();
282
- return s(t, o(a, {
281
+ var r = K();
282
+ return E(r, n(w, {
283
283
  get each() {
284
- return e.sides;
284
+ return t.sides;
285
285
  },
286
- children: ([e, t]) => (() => {
287
- var n = ye();
288
- return i((r) => {
289
- var i = e.x, a = e.y, o = t.x, s = t.y;
290
- return i !== r.e && T(n, "x1", r.e = i), a !== r.t && T(n, "y1", r.t = a), o !== r.a && T(n, "x2", r.a = o), s !== r.o && T(n, "y2", r.o = s), r;
286
+ children: ([t, n]) => (() => {
287
+ var r = Se();
288
+ return e((e) => {
289
+ var i = t.x, a = t.y, o = n.x, s = n.y;
290
+ return i !== e.e && T(r, "x1", e.e = i), a !== e.t && T(r, "y1", e.t = a), o !== e.a && T(r, "x2", e.a = o), s !== e.o && T(r, "y2", e.o = s), e;
291
291
  }, {
292
292
  e: void 0,
293
293
  t: void 0,
294
294
  a: void 0,
295
295
  o: void 0
296
- }), n;
296
+ }), r;
297
297
  })()
298
- })), i(() => T(t, "class", e.class)), t;
298
+ })), e(() => T(r, "class", t.class)), r;
299
299
  })();
300
300
  }
301
- function Oe(e, t) {
301
+ function ke(e, t) {
302
302
  let n = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map(), i = !1;
303
303
  return {
304
304
  elements: n,
@@ -340,100 +340,100 @@ function Oe(e, t) {
340
340
  }
341
341
  };
342
342
  }
343
- var ke = (e) => `A piece of ${e.parts.length} ${e.parts.length === 1 ? "part" : "parts"}. Drag it or use the arrow keys to move it; R turns it, G glues it to what it touches, Shift+G breaks it apart, Delete throws it away.`;
344
- function Ae(e) {
345
- let t = e.board, n = () => t.pieceById(e.id);
343
+ var Ae = (e) => `A piece of ${e.parts.length} ${e.parts.length === 1 ? "part" : "parts"}. Drag it or use the arrow keys to move it; R turns it, G glues it to what it touches, Shift+G breaks it apart, Delete throws it away.`;
344
+ function je(r) {
345
+ let i = r.board, a = () => i.pieceById(r.id);
346
346
  return (() => {
347
- var c = be(), l = c.firstChild, u = l.firstChild, d = u.firstChild;
348
- return f(c, "keydown", (n) => e.motion.keyed(() => {
349
- t.key(e.id, n) && n.preventDefault();
350
- })), f(c, "focus", () => t.touch(e.id)), f(c, "dblclick", () => t.turn(e.id, 1)), f(c, "pointerleave", () => e.onPointerLeave?.()), f(c, "pointerenter", () => e.onPointerEnter?.()), f(c, "pointerdown", (n) => {
351
- if (n.button !== 0) return;
352
- n.preventDefault();
353
- let r = n.target.closest("[data-part]"), i = n.altKey && r ? Number(r.getAttribute("data-part")) : void 0;
354
- t.lift(e.id, e.toWorld(n.clientX, n.clientY), i);
355
- }), w((n) => {
356
- e.motion.elements.set(e.id, n), r(() => {
357
- let r = t.carried()?.id === e.id ? t.magnet() : void 0;
358
- n.style.setProperty("--tx", `${r?.x ?? 0}px`), n.style.setProperty("--ty", `${r?.y ?? 0}px`), n.style.setProperty("--pull", `${e.calm() ? 0 : r?.pull ?? 0}`);
347
+ var s = Ce(), c = s.firstChild, l = c.firstChild, u = l.firstChild;
348
+ return C(s, "keydown", (e) => r.motion.keyed(() => {
349
+ i.key(r.id, e) && e.preventDefault();
350
+ })), C(s, "focus", () => i.touch(r.id)), C(s, "dblclick", () => i.turn(r.id, 1)), C(s, "pointerleave", () => r.onPointerLeave?.()), C(s, "pointerenter", () => r.onPointerEnter?.()), C(s, "pointerdown", (e) => {
351
+ if (e.button !== 0) return;
352
+ e.preventDefault();
353
+ let t = e.target.closest("[data-part]"), n = e.altKey && t ? Number(t.getAttribute("data-part")) : void 0;
354
+ i.lift(r.id, r.toWorld(e.clientX, e.clientY), n);
355
+ }), t((e) => {
356
+ r.motion.elements.set(r.id, e), o(() => {
357
+ let t = i.carried()?.id === r.id ? i.magnet() : void 0;
358
+ e.style.setProperty("--tx", `${t?.x ?? 0}px`), e.style.setProperty("--ty", `${t?.y ?? 0}px`), e.style.setProperty("--pull", `${r.calm() ? 0 : t?.pull ?? 0}`);
359
359
  });
360
- }, c), w((t) => {
361
- t.style.transformOrigin = "0 0", t.style.transformBox = "view-box", e.motion.turners.set(e.id, t);
362
- }, u), s(d, o(a, {
360
+ }, s), t((e) => {
361
+ e.style.transformOrigin = "0 0", e.style.transformBox = "view-box", r.motion.turners.set(r.id, e);
362
+ }, l), E(u, n(w, {
363
363
  get each() {
364
- return De(n());
364
+ return Oe(a());
365
365
  },
366
- children: ({ part: e, index: t }) => o(Ee, {
366
+ children: ({ part: e, index: t }) => n(Z, {
367
367
  part: e,
368
368
  index: t
369
369
  })
370
- }), null), s(d, o(Q, {
370
+ }), null), E(u, n(Q, {
371
371
  get sides() {
372
- return k(n());
372
+ return te(a());
373
373
  },
374
374
  class: "seams"
375
- }), null), s(d, o(Q, {
375
+ }), null), E(u, n(Q, {
376
376
  get sides() {
377
- return le(n());
377
+ return fe(a());
378
378
  },
379
379
  class: "outline"
380
- }), null), i((r) => {
381
- var i = t.carried()?.id === e.id, a = t.refused() === e.id, o = ke(n()), s = `translate(${D(n()).x} ${D(n()).y})`, u = `translate(${-D(n()).x} ${-D(n()).y})`;
382
- return i !== r.e && c.classList.toggle("carried", r.e = i), a !== r.t && c.classList.toggle("refused", r.t = a), o !== r.a && T(c, "aria-label", r.a = o), s !== r.o && T(l, "transform", r.o = s), u !== r.i && T(d, "transform", r.i = u), r;
380
+ }), null), e((e) => {
381
+ var t = i.carried()?.id === r.id, n = i.refused() === r.id, o = Ae(a()), l = `translate(${O(a()).x} ${O(a()).y})`, d = `translate(${-O(a()).x} ${-O(a()).y})`;
382
+ return t !== e.e && s.classList.toggle("carried", e.e = t), n !== e.t && s.classList.toggle("refused", e.t = n), o !== e.a && T(s, "aria-label", e.a = o), l !== e.o && T(c, "transform", e.o = l), d !== e.i && T(u, "transform", e.i = d), e;
383
383
  }, {
384
384
  e: void 0,
385
385
  t: void 0,
386
386
  a: void 0,
387
387
  o: void 0,
388
388
  i: void 0
389
- }), c;
389
+ }), s;
390
390
  })();
391
391
  }
392
- function je(e) {
393
- let t = e.board;
394
- return o(C, {
392
+ function Me(i) {
393
+ let a = i.board;
394
+ return n(r, {
395
395
  get when() {
396
- return S(() => !!t.target())() && !t.overTray();
396
+ return u(() => !!a.target())() && !a.overTray();
397
397
  },
398
398
  get children() {
399
- var e = xe();
400
- return w((e) => r(() => e.style.setProperty("--pull", `${t.magnet()?.pull ?? 0}`)), e), s(e, o(a, {
399
+ var r = we();
400
+ return t((e) => o(() => e.style.setProperty("--pull", `${a.magnet()?.pull ?? 0}`)), r), E(r, n(w, {
401
401
  get each() {
402
- return t.target()?.parts ?? [];
402
+ return a.target()?.parts ?? [];
403
403
  },
404
- children: (e, n) => {
405
- let r = () => t.blocked().has(n());
406
- return e.kind === "cell" ? (() => {
407
- var t = Y();
408
- return T(t, "d", P), i((n) => {
409
- var i = !!r(), a = `translate(${R(e.at).x} ${R(e.at).y})`;
410
- return i !== n.e && t.classList.toggle("blocked", n.e = i), a !== n.t && T(t, "transform", n.t = a), n;
404
+ children: (t, n) => {
405
+ let r = () => a.blocked().has(n());
406
+ return t.kind === "cell" ? (() => {
407
+ var n = q();
408
+ return T(n, "d", N), e((e) => {
409
+ var i = !!r(), a = `translate(${L(t.at).x} ${L(t.at).y})`;
410
+ return i !== e.e && n.classList.toggle("blocked", e.e = i), a !== e.t && T(n, "transform", e.t = a), e;
411
411
  }, {
412
412
  e: void 0,
413
413
  t: void 0
414
- }), t;
414
+ }), n;
415
415
  })() : (() => {
416
- var t = Y();
417
- return i((n) => {
418
- var i = !!r(), a = p(z(e.at).map(U));
419
- return i !== n.e && t.classList.toggle("blocked", n.e = i), a !== n.t && T(t, "d", n.t = a), n;
416
+ var n = q();
417
+ return e((e) => {
418
+ var i = !!r(), a = l(R(t.at).map(H));
419
+ return i !== e.e && n.classList.toggle("blocked", e.e = i), a !== e.t && T(n, "d", e.t = a), e;
420
420
  }, {
421
421
  e: void 0,
422
422
  t: void 0
423
- }), t;
423
+ }), n;
424
424
  })();
425
425
  }
426
- })), i(() => e.classList.toggle("held", t.magnet()?.held !== void 0)), e;
426
+ })), e(() => r.classList.toggle("held", a.magnet()?.held !== void 0)), r;
427
427
  }
428
428
  });
429
429
  }
430
- function Me(e) {
431
- return o(C, {
430
+ function Ne(e) {
431
+ return n(r, {
432
432
  get when() {
433
433
  return e.board.glueSides().length > 0;
434
434
  },
435
435
  get children() {
436
- return o(Q, {
436
+ return n(Q, {
437
437
  get sides() {
438
438
  return e.board.glueSides();
439
439
  },
@@ -442,38 +442,52 @@ function Me(e) {
442
442
  }
443
443
  });
444
444
  }
445
- function Ne(e) {
445
+ function Pe(t) {
446
446
  return (() => {
447
- var n = Se();
448
- return s(n, o(t, {
447
+ var r = Te();
448
+ return E(r, n(c, {
449
449
  get each() {
450
- return e.cells;
450
+ return t.cells;
451
451
  },
452
- children: (t, n) => {
453
- let r = () => R(t()), c = n === 0 ? "cell" : "tri", l = () => j(c, r().x + Z, r().y + 44, 4, "");
452
+ children: (r, i) => {
453
+ let a = () => L(r()), o = i === 0 ? "cell" : "tri", s = () => A(o, a().x + Y, a().y + 44, 4, "");
454
454
  return (() => {
455
- var t = Ce(), n = t.firstChild, u = n.nextSibling;
456
- return f(t, "keydown", (t) => {
457
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), e.motion.keyed(() => e.board.placeFromTray(c)));
458
- }), f(t, "pointerdown", (t) => {
459
- t.button === 0 && (t.preventDefault(), e.board.fromTray(c, e.toWorld(t.clientX, t.clientY)));
460
- }), T(t, "aria-label", c === "cell" ? "A new cell" : "A new triangle"), s(n, o(we, {})), T(u, "transform", c === "tri" ? `translate(${-Z / 2} 22)` : void 0), s(u, o(a, {
455
+ var r = Ee(), i = r.firstChild, c = i.nextSibling, l = c.nextSibling;
456
+ return C(r, "keydown", (e) => {
457
+ (e.key === "Enter" || e.key === " ") && (e.preventDefault(), t.motion.keyed(() => t.board.placeFromTray(o)));
458
+ }), C(r, "pointerdown", (e) => {
459
+ e.button === 0 && (e.preventDefault(), t.board.fromTray(o, t.toWorld(e.clientX, e.clientY)));
460
+ }), T(r, "aria-label", o === "cell" ? "A new cell" : "A new triangle"), E(i, n(X, {})), T(c, "transform", o === "tri" ? `translate(${-Y / 2} 22)` : void 0), E(c, n(w, {
461
461
  get each() {
462
- return l().parts;
462
+ return s().parts;
463
463
  },
464
- children: (e) => o(Ee, {
464
+ children: (e) => n(Z, {
465
465
  part: e,
466
466
  index: 0
467
467
  })
468
- })), i(() => T(n, "transform", `translate(${r().x} ${r().y})`)), t;
468
+ })), E(l, n(w, {
469
+ get each() {
470
+ return S("bin");
471
+ },
472
+ children: (t) => (() => {
473
+ var n = q();
474
+ return e(() => T(n, "d", t.d)), n;
475
+ })()
476
+ })), e((e) => {
477
+ var t = `translate(${a().x} ${a().y})`, n = `translate(${a().x + Y - 16} ${a().y + 44 - 16 - 8}) scale(2)`;
478
+ return t !== e.e && T(i, "transform", e.e = t), n !== e.t && T(l, "transform", e.t = n), e;
479
+ }, {
480
+ e: void 0,
481
+ t: void 0
482
+ }), r;
469
483
  })();
470
484
  }
471
- })), i(() => n.classList.toggle("discard", !!e.board.overTray())), n;
485
+ })), e(() => r.classList.toggle("discard", !!t.board.overTray())), r;
472
486
  })();
473
487
  }
474
488
  //#endregion
475
489
  //#region src/elements/board.css?inline
476
- var Pe = ":host{min-height:var(--space-tree-4);display:block;position:relative}.board{width:100%;height:100%}.board .fixed{pointer-events:none}", Fe = ".pieces .piece{--lift:var(--space-tree-2);--lift-n:8;transform:translate(var(--tx), var(--ty));cursor:grab;touch-action:none}.pieces .piece .top{fill:color-mix(in srgb, var(--wood) 28%, var(--sky));stroke:color-mix(in srgb, var(--wood) 55%, var(--sky));stroke-width:var(--tree-rule-width);transform:translateY(calc(-1 * var(--lift)));transition:transform .16s ease-out}.pieces .piece .side{transform:scaleY(var(--lift-n));transform-box:fill-box;transform-origin:0 0;transition:transform .16s ease-out}.pieces .piece .shade{fill:color-mix(in srgb, var(--wood) 70%, var(--sky))}.pieces .piece .shadow{fill:var(--wood)}.pieces .piece:hover{--lift:var(--space-tree-3);--lift-n:12}.pieces .piece.carried{--lift:calc(var(--space-tree-5) * (1 - var(--pull,0) / 2));--lift-n:calc(24 * (1 - var(--pull,0) / 2));cursor:grabbing;transition:none}.pieces .piece:focus-visible{outline:none}.pieces .piece.refused .top{animation:.3s ease-in-out refuse}@keyframes refuse{25%{translate:calc(-1 * var(--space-tree-1)) 0}75%{translate:var(--space-tree-1) 0}}.pieces .seams line,.pieces .glue-sides line{transform:translateY(calc(-1 * var(--lift)))}.pieces .seams line{stroke:color-mix(in srgb, var(--color-tree-ink) 18%, transparent);stroke-width:var(--tree-rule-width);stroke-linecap:round}.pieces .glue-sides{--lift:var(--space-tree-2)}.pieces .glue-sides line{stroke:var(--color-tree-alert);stroke-width:var(--tree-rule-thick-width);stroke-linecap:round;pointer-events:none}.pieces .piece .outline line{visibility:hidden;stroke:var(--color-tree-ink);stroke-width:var(--tree-rule-thick-width);stroke-linecap:round;transform:translateY(calc(-1 * var(--lift)));transition:transform .16s ease-out}.pieces .piece:focus-visible .outline line{visibility:visible}.pieces .tray .tray-cell .top{fill:color-mix(in srgb, var(--color-tree-ink) 5%, var(--sky));stroke:color-mix(in srgb, var(--color-tree-ink) 18%, var(--sky));stroke-width:var(--tree-rule-width);transform:translateY(calc(-1 * var(--space-tree-2)))}.pieces .tray .tray-cell .shade{fill:color-mix(in srgb, var(--color-tree-earth) 16%, var(--sky))}.pieces .tray .tray-cell .shadow{fill:color-mix(in srgb, var(--color-tree-earth) 30%, var(--sky))}.pieces .tray .tray-unit .top{fill:color-mix(in srgb, var(--wood) 28%, var(--sky));stroke:color-mix(in srgb, var(--wood) 55%, var(--sky));stroke-width:var(--tree-rule-width);transform:scale(.55) translateY(calc(-1 * var(--space-tree-3)));transform-box:fill-box;transform-origin:50%}.pieces .tray .tray-unit .shade,.pieces .tray .tray-unit .shadow{display:none}.pieces .tray .source{cursor:grab}.pieces .tray .source:hover .tray-cell .top{fill:color-mix(in srgb, var(--color-tree-ink) 10%, var(--sky))}.pieces .tray .source:focus-visible{outline:none}.pieces .tray .source:focus-visible .tray-cell .top{stroke:var(--color-tree-ink);stroke-width:var(--tree-rule-thick-width)}.pieces .tray.discard .source .tray-cell .top{fill:color-mix(in srgb, var(--color-tree-alert) 18%, var(--sky));stroke:var(--color-tree-alert)}.pieces .landing path{fill:color-mix(in srgb, var(--color-tree-ink) 6%, var(--sky));stroke:color-mix(in srgb, var(--color-tree-ink) 35%, var(--sky));stroke-width:var(--tree-rule-width);stroke-dasharray:4 3}.pieces .landing path:not(.blocked){fill:color-mix(in srgb, var(--color-tree-leaf) calc(var(--pull,0) * 30%), var(--sky));stroke:color-mix(in srgb, var(--color-tree-leaf) calc(var(--pull,0) * 70%), color-mix(in srgb, var(--color-tree-ink) 35%, var(--sky)));stroke-width:calc(var(--tree-rule-width) + var(--pull,0) * var(--space-tree-1) * 2);stroke-linejoin:miter}.pieces .landing.held path:not(.blocked){stroke-dasharray:none}.pieces .landing path.blocked{fill:color-mix(in srgb, var(--color-tree-alert) 10%, var(--sky));stroke:var(--color-tree-alert)}.pieces .piece .part:is([data-tone=\"5\"],[data-tone=\"6\"]) .top{fill:var(--wood)}.pieces .piece .part[data-tone=\"7\"] .top{fill:var(--color-tree-raised)}@media (prefers-reduced-motion:reduce){.pieces .piece,.pieces .piece .top,.pieces .piece .side,.pieces .piece .outline line{transition:none}.pieces .piece.refused .top{animation:none}}", Ie = /*#__PURE__*/ c("<svg class=\"board pieces woods\"part=board role=group>"), Le = /*#__PURE__*/ c("<svg><g class=\"shape fixed\"><path class=seams></svg>", !1, !0, !1), Re = /*#__PURE__*/ c("<svg><path></svg>", !1, !0, !1), ze = "lattice-board", Be = y(`${b}\n${l}\n${Fe}\n${Pe}`), Ve = 8;
490
+ var Fe = ":host{min-height:var(--space-tree-4);display:block;position:relative}.board{width:100%;height:100%}.board .fixed{pointer-events:none}", Ie = ".pieces .piece{--lift:var(--space-tree-2);--lift-n:8;transform:translate(var(--tx), var(--ty));cursor:grab;touch-action:none}.pieces .piece .top{fill:color-mix(in srgb, var(--wood) 28%, var(--sky));stroke:color-mix(in srgb, var(--wood) 55%, var(--sky));stroke-width:var(--tree-rule-width);transform:translateY(calc(-1 * var(--lift)));transition:transform .16s ease-out}.pieces .piece .side{transform:scaleY(var(--lift-n));transform-box:fill-box;transform-origin:0 0;transition:transform .16s ease-out}.pieces .piece .shade{fill:color-mix(in srgb, var(--wood) 70%, var(--sky))}.pieces .piece .shadow{fill:var(--wood)}.pieces .piece:hover{--lift:var(--space-tree-3);--lift-n:12}.pieces .piece.carried{--lift:calc(var(--space-tree-5) * (1 - var(--pull,0) / 2));--lift-n:calc(24 * (1 - var(--pull,0) / 2));cursor:grabbing;transition:none}.pieces .piece:focus-visible{outline:none}.pieces .piece.refused .top{animation:.3s ease-in-out refuse}@keyframes refuse{25%{translate:calc(-1 * var(--space-tree-1)) 0}75%{translate:var(--space-tree-1) 0}}.pieces .seams line,.pieces .glue-sides line{transform:translateY(calc(-1 * var(--lift)))}.pieces .seams line{stroke:color-mix(in srgb, var(--color-tree-ink) 18%, transparent);stroke-width:var(--tree-rule-width);stroke-linecap:round}.pieces .glue-sides{--lift:var(--space-tree-2)}.pieces .glue-sides line{stroke:var(--color-tree-alert);stroke-width:var(--tree-rule-thick-width);stroke-linecap:round;pointer-events:none}.pieces .piece .outline line{visibility:hidden;stroke:var(--color-tree-ink);stroke-width:var(--tree-rule-thick-width);stroke-linecap:round;transform:translateY(calc(-1 * var(--lift)));transition:transform .16s ease-out}.pieces .piece:focus-visible .outline line{visibility:visible}.pieces .tray .tray-cell .top{fill:var(--color-tree-raised);stroke:color-mix(in srgb, var(--color-tree-ink) 30%, var(--sky));stroke-width:var(--tree-rule-width);transform:translateY(calc(-1 * var(--space-tree-2)))}.pieces .tray .tray-cell .shade{fill:color-mix(in srgb, var(--color-tree-earth) 16%, var(--sky))}.pieces .tray .tray-cell .shadow{fill:color-mix(in srgb, var(--color-tree-earth) 30%, var(--sky))}.pieces .tray .tray-unit .top{fill:color-mix(in srgb, var(--wood) 55%, var(--sky));stroke:var(--wood);stroke-width:var(--tree-rule-width);transform:scale(.55) translateY(calc(-1 * var(--space-tree-3)));transform-box:fill-box;transform-origin:50%}.pieces .tray .tray-unit .shade,.pieces .tray .tray-unit .shadow{display:none}.pieces .tray .source{cursor:grab}.pieces .tray .source:hover .tray-cell .top{transform:translateY(calc(-1 * var(--space-tree-3)))}.pieces .tray .source:focus-visible{outline:none}.pieces .tray .source:focus-visible .tray-cell .top{stroke:var(--color-tree-ink);stroke-width:var(--tree-rule-thick-width)}.pieces .tray.discard .source .tray-cell .top{fill:color-mix(in srgb, var(--color-tree-alert) 18%, var(--sky));stroke:var(--color-tree-alert)}.pieces .tray .tray-bin{fill:none;stroke:var(--color-tree-alert);stroke-width:var(--tree-rule-thick-width);stroke-linejoin:miter;display:none}.pieces .tray-bin path{vector-effect:non-scaling-stroke}.pieces .tray.discard .tray-unit{display:none}.pieces .tray.discard .tray-bin{display:inline}.pieces .landing path{fill:color-mix(in srgb, var(--color-tree-ink) 6%, var(--sky));stroke:color-mix(in srgb, var(--color-tree-ink) 35%, var(--sky));stroke-width:var(--tree-rule-width);stroke-dasharray:4 3}.pieces .landing path:not(.blocked){fill:color-mix(in srgb, var(--color-tree-leaf) calc(var(--pull,0) * 30%), var(--sky));stroke:color-mix(in srgb, var(--color-tree-leaf) calc(var(--pull,0) * 70%), color-mix(in srgb, var(--color-tree-ink) 35%, var(--sky)));stroke-width:calc(var(--tree-rule-width) + var(--pull,0) * var(--space-tree-1) * 2);stroke-linejoin:miter}.pieces .landing.held path:not(.blocked){stroke-dasharray:none}.pieces .landing path.blocked{fill:color-mix(in srgb, var(--color-tree-alert) 10%, var(--sky));stroke:var(--color-tree-alert)}.pieces .piece .part:is([data-tone=\"5\"],[data-tone=\"6\"]) .top{fill:var(--wood)}.pieces .piece .part[data-tone=\"7\"] .top{fill:var(--color-tree-raised);stroke:color-mix(in srgb, var(--wood) 75%, var(--sky))}@media (prefers-reduced-motion:reduce){.pieces .piece,.pieces .piece .top,.pieces .piece .side,.pieces .piece .outline line{transition:none}.pieces .piece.refused .top{animation:none}}", Le = /*#__PURE__*/ s("<svg class=\"board pieces woods\"part=board role=group>"), Re = /*#__PURE__*/ s("<svg><g class=\"shape fixed\"><path class=seams></svg>", !1, !0, !1), ze = /*#__PURE__*/ s("<svg><path></svg>", !1, !0, !1), Be = "lattice-board", Ve = h(`${x}\n${d}\n${Ie}\n${Fe}`), He = 8;
477
491
  function $(e, t) {
478
492
  let n = e;
479
493
  if (typeof n == "string") try {
@@ -483,23 +497,23 @@ function $(e, t) {
483
497
  }
484
498
  return Array.isArray(n) ? n.flatMap((e) => {
485
499
  if (typeof e != "object" || !e) return [];
486
- let { id: n, parts: r } = e, i = v(r, 0);
487
- return i.length === 0 ? [] : [F(typeof n == "string" && n !== "" ? n : t(), i)];
500
+ let { id: n, parts: r } = e, i = y(r, 0);
501
+ return i.length === 0 ? [] : [P(typeof n == "string" && n !== "" ? n : t(), i)];
488
502
  }) : [];
489
503
  }
490
- var He = class t extends g {
504
+ var Ue = class s extends f {
491
505
  static observedAttributes = [
492
506
  "pieces",
493
507
  "tray",
494
508
  "scale",
495
509
  "label"
496
510
  ];
497
- inputs = [...t.observedAttributes, "fixed"];
498
- givenSignal = h();
499
- fixedSignal = h();
500
- traySignal = h(!1);
501
- scaleSignal = h(1);
502
- labelSignal = h("");
511
+ inputs = [...s.observedAttributes, "fixed"];
512
+ givenSignal = g();
513
+ fixedSignal = g();
514
+ traySignal = g(!1);
515
+ scaleSignal = g(1);
516
+ labelSignal = g("");
503
517
  live;
504
518
  made = 0;
505
519
  madeId = () => `piece-${++this.made}`;
@@ -519,13 +533,13 @@ var He = class t extends g {
519
533
  return this.traySignal[0]();
520
534
  }
521
535
  set tray(e) {
522
- this.traySignal[1](u(e));
536
+ this.traySignal[1](b(e));
523
537
  }
524
538
  get scale() {
525
539
  return this.scaleSignal[0]();
526
540
  }
527
541
  set scale(e) {
528
- let t = d(e, 1);
542
+ let t = v(e, 1);
529
543
  this.scaleSignal[1](t > 0 ? t : 1);
530
544
  }
531
545
  get label() {
@@ -538,12 +552,12 @@ var He = class t extends g {
538
552
  e === "tray" ? this.tray = n : Reflect.set(this, e, n ?? "");
539
553
  }
540
554
  sheet() {
541
- return Be();
555
+ return Ve();
542
556
  }
543
557
  draw() {
544
- let t = this.getBoundingClientRect(), [c, l] = h({
545
- width: t.width || d(this.style.width, 0),
546
- height: t.height || d(this.style.height, 0)
558
+ let s = this.getBoundingClientRect(), [c, l] = g({
559
+ width: s.width || v(this.style.width, 0),
560
+ height: s.height || v(this.style.height, 0)
547
561
  });
548
562
  if (typeof ResizeObserver < "u") {
549
563
  let e = new ResizeObserver((e) => {
@@ -553,11 +567,11 @@ var He = class t extends g {
553
567
  height: t.height
554
568
  });
555
569
  });
556
- e.observe(this), m(() => e.disconnect());
570
+ e.observe(this), a(() => e.disconnect());
557
571
  }
558
- let u = n(() => I(c().width / this.scale, c().height / this.scale)), f = n(() => {
572
+ let d = _(() => F(c().width / this.scale, c().height / this.scale)), f = _(() => {
559
573
  if (!this.tray) return;
560
- let e = Math.max(0, Math.floor((u().bottom - 88) / 66)), t = Math.ceil(-e / 2);
574
+ let e = Math.max(0, Math.floor((d().bottom - 88) / 66)), t = Math.ceil(-e / 2);
561
575
  return [{
562
576
  q: t,
563
577
  r: e
@@ -565,25 +579,25 @@ var He = class t extends g {
565
579
  q: t + 1,
566
580
  r: e
567
581
  }];
568
- }), p = n(() => $(this.fixedSignal[0](), this.madeId)), g = n(() => new Set(p().map((e) => e.id))), v = (e, t) => {
582
+ }), p = _(() => $(this.fixedSignal[0](), this.madeId)), h = _(() => new Set(p().map((e) => e.id))), y = (e, t) => {
569
583
  let n = this.getBoundingClientRect();
570
584
  return {
571
585
  x: (e - n.left) / this.scale,
572
586
  y: (t - n.top) / this.scale
573
587
  };
574
- }, y = _(), b, x = Oe(y, () => {
588
+ }, b = m(), x, S = ke(b, () => {
575
589
  let e = this.shadowRoot?.activeElement;
576
- return !!e && !!b?.contains(e);
577
- }), E = pe({
590
+ return !!e && !!x?.contains(e);
591
+ }), C = ge({
578
592
  initial: [],
579
- area: u,
593
+ area: d,
580
594
  clear: () => f() ?? [],
581
595
  tray: f,
582
- fixed: g,
583
- calm: y,
596
+ fixed: h,
597
+ calm: b,
584
598
  id: () => {
585
599
  let e = this.madeId();
586
- for (; E.pieceById(e);) e = this.madeId();
600
+ for (; C.pieceById(e);) e = this.madeId();
587
601
  return e;
588
602
  },
589
603
  hooks: {
@@ -593,93 +607,93 @@ var He = class t extends g {
593
607
  id: n
594
608
  }, !0),
595
609
  caught: (e) => this.tell("catch", { id: e }),
596
- landed: x.landed,
597
- slid: x.slid,
598
- turned: x.turned,
599
- focus: x.focus
610
+ landed: S.landed,
611
+ slid: S.slid,
612
+ turned: S.turned,
613
+ focus: S.focus
600
614
  }
601
615
  });
602
- me(E, v), this.live = () => E.pieces().filter((e) => !g().has(e.id)), m(() => {
616
+ _e(C, y), this.live = () => C.pieces().filter((e) => !h().has(e.id)), a(() => {
603
617
  this.live = void 0;
604
- }), r(e([() => this.givenSignal[0](), p], ([e, t]) => {
605
- E.setPieces([...t, ...$(e, this.madeId)]);
606
- })), r(e([u, f], () => {
607
- if (u().right <= 0 || u().bottom <= 0) return;
608
- let e = E.pieces(), t = e.filter((e) => g().has(e.id)), n = e.filter((e) => !g().has(e.id)), r = L(n, u(), f() ?? [], t);
609
- r.every((e, t) => e === n[t]) || (E.setPieces([...t, ...r]), this.tell("change", {
618
+ }), o(i([() => this.givenSignal[0](), p], ([e, t]) => {
619
+ C.setPieces([...t, ...$(e, this.madeId)]);
620
+ })), o(i([d, f], () => {
621
+ if (d().right <= 0 || d().bottom <= 0) return;
622
+ let e = C.pieces(), t = e.filter((e) => h().has(e.id)), n = e.filter((e) => !h().has(e.id)), r = I(n, d(), f() ?? [], t);
623
+ r.every((e, t) => e === n[t]) || (C.setPieces([...t, ...r]), this.tell("change", {
610
624
  pieces: r,
611
625
  action: "move",
612
626
  id: ""
613
627
  }));
614
628
  }));
615
- let D = () => `0 0 ${u().right} ${u().bottom}`, O = this;
629
+ let D = () => `0 0 ${d().right} ${d().bottom}`, O = this;
616
630
  return (() => {
617
- var e = Ie(), t = b;
618
- return typeof t == "function" ? w(t, e) : b = e, s(e, o(a, {
631
+ var i = Le(), a = x;
632
+ return typeof a == "function" ? t(a, i) : x = i, E(i, n(w, {
619
633
  get each() {
620
634
  return p();
621
635
  },
622
- children: (e) => {
623
- let t = H(e, Ve);
636
+ children: (t) => {
637
+ let r = oe(t, He);
624
638
  return (() => {
625
- var e = Le(), n = e.firstChild;
626
- return s(e, o(a, {
639
+ var t = Re(), i = t.firstChild;
640
+ return E(t, n(w, {
627
641
  get each() {
628
- return t.faces;
642
+ return r.faces;
629
643
  },
630
- children: (e) => (() => {
631
- var t = Re();
632
- return i((n) => {
633
- var r = `flat-${e.kind}`, i = e.tone, a = e.d;
634
- return r !== n.e && T(t, "class", n.e = r), i !== n.t && T(t, "data-tone", n.t = i), a !== n.a && T(t, "d", n.a = a), n;
644
+ children: (t) => (() => {
645
+ var n = ze();
646
+ return e((e) => {
647
+ var r = `flat-${t.kind}`, i = t.tone, a = t.d;
648
+ return r !== e.e && T(n, "class", e.e = r), i !== e.t && T(n, "data-tone", e.t = i), a !== e.a && T(n, "d", e.a = a), e;
635
649
  }, {
636
650
  e: void 0,
637
651
  t: void 0,
638
652
  a: void 0
639
- }), t;
653
+ }), n;
640
654
  })()
641
- }), n), i(() => T(n, "d", t.seams)), e;
655
+ }), i), e(() => T(i, "d", r.seams)), t;
642
656
  })();
643
657
  }
644
- }), null), s(e, o(C, {
658
+ }), null), E(i, n(r, {
645
659
  get when() {
646
660
  return f();
647
661
  },
648
- children: (e) => o(Ne, {
649
- board: E,
662
+ children: (e) => n(Pe, {
663
+ board: C,
650
664
  get cells() {
651
665
  return e();
652
666
  },
653
- motion: x,
654
- toWorld: v
667
+ motion: S,
668
+ toWorld: y
655
669
  })
656
- }), null), s(e, o(je, { board: E }), null), s(e, o(a, {
670
+ }), null), E(i, n(Me, { board: C }), null), E(i, n(w, {
657
671
  get each() {
658
- return E.drawn();
672
+ return C.drawn();
659
673
  },
660
- children: (e) => o(C, {
674
+ children: (e) => n(r, {
661
675
  get when() {
662
- return S(() => !!E.pieceById(e))() && !g().has(e);
676
+ return u(() => !!C.pieceById(e))() && !h().has(e);
663
677
  },
664
678
  get children() {
665
- return o(Ae, {
666
- board: E,
679
+ return n(je, {
680
+ board: C,
667
681
  id: e,
668
- motion: x,
669
- calm: y,
670
- toWorld: v
682
+ motion: S,
683
+ calm: b,
684
+ toWorld: y
671
685
  });
672
686
  }
673
687
  })
674
- }), null), s(e, o(Me, { board: E }), null), i((t) => {
675
- var n = D(), r = O.label || "A board of lattice pieces";
676
- return n !== t.e && T(e, "viewBox", t.e = n), r !== t.t && T(e, "aria-label", t.t = r), t;
688
+ }), null), E(i, n(Ne, { board: C }), null), e((e) => {
689
+ var t = D(), n = O.label || "A board of lattice pieces";
690
+ return t !== e.e && T(i, "viewBox", e.e = t), n !== e.t && T(i, "aria-label", e.t = n), e;
677
691
  }, {
678
692
  e: void 0,
679
693
  t: void 0
680
- }), e;
694
+ }), i;
681
695
  })();
682
696
  }
683
- }, Ue = (e) => x(ze, He, e);
697
+ }, We = (e) => p(Be, Ue, e);
684
698
  //#endregion
685
- export { ze as BOARD_TAG, He as LatticeBoard, Ue as defineLatticeBoard };
699
+ export { Be as BOARD_TAG, Ue as LatticeBoard, We as defineLatticeBoard };