uxml-preview 0.3.0 → 0.4.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/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import { loadYoga as Me, PositionType as Z, Direction as le, Edge as P, BoxSizing as Re, FlexDirection as V, Wrap as q, Justify as W, Align as L, Display as Ue, Overflow as De } from "yoga-layout/load";
2
- const xe = {
1
+ import { loadYoga as Re, PositionType as J, Direction as ce, Edge as P, BoxSizing as Me, FlexDirection as V, Wrap as q, Justify as W, Align as L, Display as Ue, Overflow as De } from "yoga-layout/load";
2
+ const ve = {
3
3
  // VisualElement is the base class and carries no class of its own.
4
4
  VisualElement: { hasText: !1, classes: [], parts: [] },
5
5
  Label: { hasText: !0, classes: ["unity-label"], parts: [] },
@@ -37,13 +37,13 @@ const xe = {
37
37
  { name: "unity-content-container", style: { "flex-shrink": "0" } }
38
38
  ]
39
39
  }
40
- }, ce = { hasText: !1, classes: [], parts: [] }, Le = "UXML", ze = /* @__PURE__ */ new Set(["Style"]);
40
+ }, ue = { hasText: !1, classes: [], parts: [] }, Le = "UXML", ze = /* @__PURE__ */ new Set(["Style"]);
41
41
  function _e(e) {
42
42
  return ze.has(e.name.local);
43
43
  }
44
44
  function F(e) {
45
- const n = xe[e.name.local];
46
- return n !== void 0 ? { spec: n, fallback: !1 } : je(e) ? { spec: ce, fallback: !1 } : { spec: ce, fallback: !0 };
45
+ const n = ve[e.name.local];
46
+ return n !== void 0 ? { spec: n, fallback: !1 } : je(e) ? { spec: ue, fallback: !1 } : { spec: ue, fallback: !0 };
47
47
  }
48
48
  function je(e) {
49
49
  return e.name.local === Le;
@@ -52,9 +52,9 @@ function We(e) {
52
52
  return F(e).spec.classes;
53
53
  }
54
54
  function Be() {
55
- return Object.keys(xe);
55
+ return Object.keys(ve);
56
56
  }
57
- const Y = "6000.0.40f1", ve = `:disabled {
57
+ const Y = "6000.0.40f1", ye = `:disabled {
58
58
  opacity: 0.5;
59
59
  }
60
60
 
@@ -84,12 +84,12 @@ const Ve = /* @__PURE__ */ new Set([
84
84
  function He(e) {
85
85
  return e.startsWith("--") || Ve.has(e);
86
86
  }
87
- function ue(e) {
87
+ function de(e) {
88
88
  const n = [];
89
89
  let t = 0, i = -1;
90
90
  for (let l = 0; l < e.length; l++) {
91
- const s = e[l];
92
- s === "(" ? t++ : s === ")" && (t = Math.max(0, t - 1)), t === 0 && /\s/.test(s) ? i >= 0 && (n.push(e.slice(i, l)), i = -1) : i < 0 && (i = l);
91
+ const o = e[l];
92
+ o === "(" ? t++ : o === ")" && (t = Math.max(0, t - 1)), t === 0 && /\s/.test(o) ? i >= 0 && (n.push(e.slice(i, l)), i = -1) : i < 0 && (i = l);
93
93
  }
94
94
  return i >= 0 && n.push(e.slice(i)), n;
95
95
  }
@@ -120,19 +120,19 @@ const Ge = {
120
120
  "border-bottom-left-radius"
121
121
  ]
122
122
  };
123
- function de(e) {
123
+ function fe(e) {
124
124
  return /^-?(\d+\.?\d*|\.\d+)$/.test(e);
125
125
  }
126
126
  function Ye(e) {
127
127
  const [n, t, i] = e;
128
- return n === void 0 ? [] : n === "none" ? [["flex-grow", "0"], ["flex-shrink", "0"], ["flex-basis", "auto"]] : n === "auto" ? [["flex-grow", "1"], ["flex-shrink", "1"], ["flex-basis", "auto"]] : t === void 0 ? de(n) ? [["flex-grow", n], ["flex-shrink", "1"], ["flex-basis", "0"]] : [["flex-grow", "1"], ["flex-shrink", "1"], ["flex-basis", n]] : i === void 0 ? de(t) ? [["flex-grow", n], ["flex-shrink", t], ["flex-basis", "0"]] : [["flex-grow", n], ["flex-shrink", "1"], ["flex-basis", t]] : [["flex-grow", n], ["flex-shrink", t], ["flex-basis", i]];
128
+ return n === void 0 ? [] : n === "none" ? [["flex-grow", "0"], ["flex-shrink", "0"], ["flex-basis", "auto"]] : n === "auto" ? [["flex-grow", "1"], ["flex-shrink", "1"], ["flex-basis", "auto"]] : t === void 0 ? fe(n) ? [["flex-grow", n], ["flex-shrink", "1"], ["flex-basis", "0"]] : [["flex-grow", "1"], ["flex-shrink", "1"], ["flex-basis", n]] : i === void 0 ? fe(t) ? [["flex-grow", n], ["flex-shrink", t], ["flex-basis", "0"]] : [["flex-grow", n], ["flex-shrink", "1"], ["flex-basis", t]] : [["flex-grow", n], ["flex-shrink", t], ["flex-basis", i]];
129
129
  }
130
- function J(e, n) {
131
- if (e === "flex") return Ye(ue(n));
130
+ function Z(e, n) {
131
+ if (e === "flex") return Ye(de(n));
132
132
  const t = Ge[e];
133
133
  if (t === void 0) return [[e, n]];
134
- const i = qe(ue(n));
135
- return i === null ? [[e, n]] : t.map((l, s) => [l, i[s]]);
134
+ const i = qe(de(n));
135
+ return i === null ? [[e, n]] : t.map((l, o) => [l, i[o]]);
136
136
  }
137
137
  const ee = {
138
138
  "align-content": "flex-start",
@@ -184,19 +184,19 @@ function X(e) {
184
184
  const i = Number(t[1]), l = t[2].toLowerCase();
185
185
  return l === "" || l === "px" ? { length: { kind: "px", value: i } } : l === "%" ? { length: { kind: "percent", value: i } } : Xe.includes(l) ? { length: null, problem: `"${l}" is not a USS unit` } : { length: null, problem: `unknown unit "${l}"` };
186
186
  }
187
- function fe(e) {
187
+ function pe(e) {
188
188
  const n = e.trim();
189
189
  return /^-?(\d+\.?\d*|\.\d+)$/.test(n) ? Number(n) : null;
190
190
  }
191
191
  let se = null;
192
- async function Ut() {
193
- se ?? (se = await Me());
192
+ async function Lt() {
193
+ se ?? (se = await Re());
194
194
  }
195
- function Dt() {
195
+ function zt() {
196
196
  return se !== null;
197
197
  }
198
198
  let G = 0;
199
- function Lt() {
199
+ function _t() {
200
200
  return G;
201
201
  }
202
202
  const K = {
@@ -209,14 +209,14 @@ const K = {
209
209
  "space-between": L.SpaceBetween,
210
210
  "space-around": L.SpaceAround,
211
211
  "space-evenly": L.SpaceEvenly
212
- }, Ze = {
212
+ }, Je = {
213
213
  "flex-start": W.FlexStart,
214
214
  center: W.Center,
215
215
  "flex-end": W.FlexEnd,
216
216
  "space-between": W.SpaceBetween,
217
217
  "space-around": W.SpaceAround,
218
218
  "space-evenly": W.SpaceEvenly
219
- }, Je = {
219
+ }, Ze = {
220
220
  column: V.Column,
221
221
  "column-reverse": V.ColumnReverse,
222
222
  row: V.Row,
@@ -235,90 +235,90 @@ function et(e, n, t, i) {
235
235
  const l = se;
236
236
  if (l === null)
237
237
  throw new Error("loadLayoutEngine() must be awaited before rendering");
238
- const s = [], m = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), v = [], u = /* @__PURE__ */ new Map(), r = /* @__PURE__ */ new Map();
239
- let a = 0, d = !1, o = !1;
240
- const f = (p, k) => {
238
+ const o = [], p = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Map(), v = [], d = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map();
239
+ let a = 0, u = !1, r = !1;
240
+ const f = (m, k) => {
241
241
  var T;
242
- return ((T = p.get(k)) == null ? void 0 : T.value) ?? ee[k] ?? "";
242
+ return ((T = m.get(k)) == null ? void 0 : T.value) ?? ee[k] ?? "";
243
243
  };
244
- function w(p, k) {
245
- s.push({ kind: "unsupported-property", message: p, node: k.id });
244
+ function b(m, k) {
245
+ o.push({ kind: "unsupported-property", message: m, node: k.id });
246
246
  }
247
- function c(p, k, T) {
248
- const N = f(p, k);
247
+ function c(m, k, T) {
248
+ const N = f(m, k);
249
249
  if (N === "") return null;
250
- const { length: C, problem: A } = X(N);
251
- return A !== void 0 && w(`${k}: ${A}`, T), C;
250
+ const { length: I, problem: C } = X(N);
251
+ return C !== void 0 && b(`${k}: ${C}`, T), I;
252
252
  }
253
- function S(p) {
254
- if (p !== null)
255
- switch (p.kind) {
253
+ function S(m) {
254
+ if (m !== null)
255
+ switch (m.kind) {
256
256
  case "px":
257
- return p.value;
257
+ return m.value;
258
258
  case "percent":
259
- return `${p.value}%`;
259
+ return `${m.value}%`;
260
260
  case "auto":
261
261
  return "auto";
262
262
  case "none":
263
263
  return;
264
264
  }
265
265
  }
266
- function h(p) {
267
- if (p !== null) {
268
- if (p.kind === "px") return p.value;
269
- if (p.kind === "percent") return `${p.value}%`;
266
+ function h(m) {
267
+ if (m !== null) {
268
+ if (m.kind === "px") return m.value;
269
+ if (m.kind === "percent") return `${m.value}%`;
270
270
  }
271
271
  }
272
- function x(p, k, T) {
273
- p.setBoxSizing(Re.BorderBox), p.setFlexDirection(Je[f(k, "flex-direction")] ?? V.Column), p.setFlexWrap(Ke[f(k, "flex-wrap")] ?? q.NoWrap), p.setJustifyContent(Ze[f(k, "justify-content")] ?? W.FlexStart), p.setAlignItems(K[f(k, "align-items")] ?? L.Stretch), p.setAlignSelf(K[f(k, "align-self")] ?? L.Auto), p.setAlignContent(K[f(k, "align-content")] ?? L.FlexStart), p.setFlexGrow(fe(f(k, "flex-grow")) ?? 0), p.setFlexShrink(fe(f(k, "flex-shrink")) ?? 1), p.setFlexBasis(S(c(k, "flex-basis", T)));
272
+ function w(m, k, T) {
273
+ m.setBoxSizing(Me.BorderBox), m.setFlexDirection(Ze[f(k, "flex-direction")] ?? V.Column), m.setFlexWrap(Ke[f(k, "flex-wrap")] ?? q.NoWrap), m.setJustifyContent(Je[f(k, "justify-content")] ?? W.FlexStart), m.setAlignItems(K[f(k, "align-items")] ?? L.Stretch), m.setAlignSelf(K[f(k, "align-self")] ?? L.Auto), m.setAlignContent(K[f(k, "align-content")] ?? L.FlexStart), m.setFlexGrow(pe(f(k, "flex-grow")) ?? 0), m.setFlexShrink(pe(f(k, "flex-shrink")) ?? 1), m.setFlexBasis(S(c(k, "flex-basis", T)));
274
274
  const N = f(k, "position");
275
- (N === "fixed" || N === "sticky") && w(`position: ${N} is not supported in USS; treated as relative`, T), p.setPositionType(
276
- N === "absolute" ? Z.Absolute : Z.Relative
277
- ), f(k, "display") === "none" && p.setDisplay(Ue.None);
278
- const C = f(k, "overflow");
279
- C === "hidden" ? p.setOverflow(De.Hidden) : (C === "auto" || C === "scroll") && w(`overflow: ${C} needs a ScrollView element in USS`, T), p.setWidth(S(c(k, "width", T))), p.setHeight(S(c(k, "height", T))), p.setMinWidth(h(c(k, "min-width", T))), p.setMinHeight(h(c(k, "min-height", T))), p.setMaxWidth(h(c(k, "max-width", T))), p.setMaxHeight(h(c(k, "max-height", T)));
280
- for (const [A, I] of Qe) {
281
- p.setMargin(I, h(c(k, `margin-${A}`, T))), p.setPadding(I, h(c(k, `padding-${A}`, T)));
282
- const _ = h(c(k, `border-${A}-width`, T));
283
- p.setBorder(I, typeof _ == "number" ? _ : void 0), p.setPosition(I, h(c(k, A, T)));
275
+ (N === "fixed" || N === "sticky") && b(`position: ${N} is not supported in USS; treated as relative`, T), m.setPositionType(
276
+ N === "absolute" ? J.Absolute : J.Relative
277
+ ), f(k, "display") === "none" && m.setDisplay(Ue.None);
278
+ const I = f(k, "overflow");
279
+ I === "hidden" ? m.setOverflow(De.Hidden) : (I === "auto" || I === "scroll") && b(`overflow: ${I} needs a ScrollView element in USS`, T), m.setWidth(S(c(k, "width", T))), m.setHeight(S(c(k, "height", T))), m.setMinWidth(h(c(k, "min-width", T))), m.setMinHeight(h(c(k, "min-height", T))), m.setMaxWidth(h(c(k, "max-width", T))), m.setMaxHeight(h(c(k, "max-height", T)));
280
+ for (const [C, A] of Qe) {
281
+ m.setMargin(A, h(c(k, `margin-${C}`, T))), m.setPadding(A, h(c(k, `padding-${C}`, T)));
282
+ const _ = h(c(k, `border-${C}-width`, T));
283
+ m.setBorder(A, typeof _ == "number" ? _ : void 0), m.setPosition(A, h(c(k, C, T)));
284
284
  }
285
285
  }
286
- function y(p) {
286
+ function y(m) {
287
287
  var k;
288
- return (k = p.attributes.find((T) => T.name === "text")) == null ? void 0 : k.value;
288
+ return (k = m.attributes.find((T) => T.name === "text")) == null ? void 0 : k.value;
289
289
  }
290
- const b = ["text", "label"];
291
- function $(p) {
292
- return b.filter(
293
- (k) => p.attributes.some((T) => T.name === k && T.value.length > 0)
290
+ const x = ["text", "label"];
291
+ function $(m) {
292
+ return x.filter(
293
+ (k) => m.attributes.some((T) => T.name === k && T.value.length > 0)
294
294
  );
295
295
  }
296
- function O(p, k) {
297
- if (_e(p)) return;
298
- const T = n.get(p.id) ?? /* @__PURE__ */ new Map(), N = l.Node.create();
299
- a++, G++, u.set(p, N), v.push(p), x(N, T, p), k !== null && k.insertChild(N, k.getChildCount());
300
- const { spec: C, fallback: A } = F(p), I = y(p), _ = C.hasText && I !== void 0 && I.length > 0;
301
- if (A) {
302
- const M = $(p);
303
- s.push({
296
+ function O(m, k) {
297
+ if (_e(m)) return;
298
+ const T = n.get(m.id) ?? /* @__PURE__ */ new Map(), N = l.Node.create();
299
+ a++, G++, d.set(m, N), v.push(m), w(N, T, m), k !== null && k.insertChild(N, k.getChildCount());
300
+ const { spec: I, fallback: C } = F(m), A = y(m), _ = I.hasText && A !== void 0 && A.length > 0;
301
+ if (C) {
302
+ const R = $(m);
303
+ o.push({
304
304
  kind: "unsupported-control",
305
- message: `<${p.name.local}> has no renderer in this version and is drawn as a plain VisualElement` + (M.length === 0 ? "" : `; its ${M.join(" and ")} attribute${M.length > 1 ? "s are" : " is"} not drawn, because Unity draws that through a child element`),
306
- node: p.id
305
+ message: `<${m.name.local}> has no renderer in this version and is drawn as a plain VisualElement` + (R.length === 0 ? "" : `; its ${R.join(" and ")} attribute${R.length > 1 ? "s are" : " is"} not drawn, because Unity draws that through a child element`),
306
+ node: m.id
307
307
  });
308
308
  }
309
309
  if (_) {
310
- p.children.length > 0 && w(
311
- `<${p.name.local}> has both a text attribute and children; children are not drawn`,
312
- p
310
+ m.children.length > 0 && b(
311
+ `<${m.name.local}> has both a text attribute and children; children are not drawn`,
312
+ m
313
313
  );
314
- const M = c(T, "font-size", p), z = {
315
- fontSize: M !== null && M.kind === "px" ? M.value : 12,
314
+ const R = c(T, "font-size", m), z = {
315
+ fontSize: R !== null && R.kind === "px" ? R.value : 12,
316
316
  fontStyle: f(T, "-unity-font-style") || "normal",
317
317
  whiteSpace: f(T, "white-space") || "normal"
318
318
  };
319
319
  N.setMeasureFunc(
320
320
  (U) => i.measureText(
321
- I,
321
+ A,
322
322
  z,
323
323
  Number.isFinite(U) ? U : 0
324
324
  )
@@ -326,63 +326,63 @@ function et(e, n, t, i) {
326
326
  return;
327
327
  }
328
328
  let j = N;
329
- if (C.parts.length > 0) {
330
- o || (o = !0, s.push({
329
+ if (I.parts.length > 0) {
330
+ r || (r = !0, o.push({
331
331
  kind: "version-dependent",
332
- message: `<${p.name.local}> is drawn with the implicit child elements Unity builds for it, and their geometry was measured on Unity ${Y}. Other versions may differ; see src/controls/theme.ts.`,
333
- node: p.id
332
+ message: `<${m.name.local}> is drawn with the implicit child elements Unity builds for it, and their geometry was measured on Unity ${Y}. Other versions may differ; see src/controls/theme.ts.`,
333
+ node: m.id
334
334
  }));
335
- const M = [], z = [], U = t.get(p.id);
336
- for (const oe of C.parts) {
337
- const ae = (U == null ? void 0 : U.get(oe.name)) ?? /* @__PURE__ */ new Map(), H = l.Node.create();
338
- a++, G++, x(H, ae, p), j.insertChild(H, j.getChildCount()), j = H, z.push(H), M.push({
339
- name: oe.name,
340
- owner: p.id,
335
+ const R = [], z = [], U = t.get(m.id);
336
+ for (const ae of I.parts) {
337
+ const le = (U == null ? void 0 : U.get(ae.name)) ?? /* @__PURE__ */ new Map(), H = l.Node.create();
338
+ a++, G++, w(H, le, m), j.insertChild(H, j.getChildCount()), j = H, z.push(H), R.push({
339
+ name: ae.name,
340
+ owner: m.id,
341
341
  box: { left: 0, top: 0, width: 0, height: 0 },
342
- style: ae
342
+ style: le
343
343
  });
344
344
  }
345
- g.set(p.id, M), r.set(p.id, z);
345
+ g.set(m.id, R), s.set(m.id, z);
346
346
  }
347
- for (const M of p.children) O(M, j);
347
+ for (const R of m.children) O(R, j);
348
348
  }
349
349
  O(e, null);
350
- const E = u.get(e);
351
- E.setWidth(i.size.width), E.setHeight(i.size.height), E.setPositionType(Z.Relative), E.calculateLayout(i.size.width, i.size.height, le.LTR);
352
- const R = /* @__PURE__ */ new Map();
353
- for (let p = 0; p < 3; p++) {
350
+ const E = d.get(e);
351
+ E.setWidth(i.size.width), E.setHeight(i.size.height), E.setPositionType(J.Relative), E.calculateLayout(i.size.width, i.size.height, ce.LTR);
352
+ const M = /* @__PURE__ */ new Map();
353
+ for (let m = 0; m < 3; m++) {
354
354
  let k = !1;
355
355
  for (const [T, N] of g) {
356
- const C = r.get(T);
357
- if (C === void 0) continue;
358
- const A = N.findIndex((U) => U.name === "unity-content-viewport"), I = N.findIndex((U) => U.name === "unity-content-container");
359
- if (A === -1 || I === -1) continue;
360
- const _ = C[A].getComputedLayout(), M = C[I].getComputedLayout().height > _.height + 0.01, z = Pe(M);
361
- (R.get(T) ?? 0) !== z && (R.set(T, z), C[A].setMargin(P.Right, z), k = !0);
356
+ const I = s.get(T);
357
+ if (I === void 0) continue;
358
+ const C = N.findIndex((U) => U.name === "unity-content-viewport"), A = N.findIndex((U) => U.name === "unity-content-container");
359
+ if (C === -1 || A === -1) continue;
360
+ const _ = I[C].getComputedLayout(), R = I[A].getComputedLayout().height > _.height + 0.01, z = Pe(R);
361
+ (M.get(T) ?? 0) !== z && (M.set(T, z), I[C].setMargin(P.Right, z), k = !0);
362
362
  }
363
363
  if (!k) break;
364
- E.calculateLayout(i.size.width, i.size.height, le.LTR);
364
+ E.calculateLayout(i.size.width, i.size.height, ce.LTR);
365
365
  }
366
- function D(p, k, T) {
367
- const N = u.get(p);
366
+ function D(m, k, T) {
367
+ const N = d.get(m);
368
368
  if (N === void 0) return;
369
- const C = N.getComputedLayout();
370
- let A = k + C.left, I = T + C.top;
371
- m.set(p.id, { left: A, top: I, width: C.width, height: C.height });
372
- const _ = g.get(p.id), j = r.get(p.id);
373
- _ !== void 0 && j !== void 0 && _.forEach((M, z) => {
369
+ const I = N.getComputedLayout();
370
+ let C = k + I.left, A = T + I.top;
371
+ p.set(m.id, { left: C, top: A, width: I.width, height: I.height });
372
+ const _ = g.get(m.id), j = s.get(m.id);
373
+ _ !== void 0 && j !== void 0 && _.forEach((R, z) => {
374
374
  const U = j[z].getComputedLayout();
375
- A += U.left, I += U.top, M.box = { left: A, top: I, width: U.width, height: U.height };
375
+ C += U.left, A += U.top, R.box = { left: C, top: A, width: U.width, height: U.height };
376
376
  });
377
- for (const M of p.children) D(M, A, I);
377
+ for (const R of m.children) D(R, C, A);
378
378
  }
379
379
  return D(e, 0, 0), {
380
- boxes: m,
380
+ boxes: p,
381
381
  parts: g,
382
382
  painted: v,
383
- warnings: s,
383
+ warnings: o,
384
384
  dispose() {
385
- d || (d = !0, E.freeRecursive(), G -= a, u.clear(), r.clear());
385
+ u || (u = !0, E.freeRecursive(), G -= a, d.clear(), s.clear());
386
386
  }
387
387
  };
388
388
  }
@@ -394,28 +394,28 @@ function nt(e) {
394
394
  const i = e.createElement("canvas");
395
395
  n = ((t = i.getContext) == null ? void 0 : t.call(i, "2d")) ?? null;
396
396
  }
397
- return (i, l, s) => {
398
- const m = l.fontSize * tt, g = (o) => {
397
+ return (i, l, o) => {
398
+ const p = l.fontSize * tt, g = (r) => {
399
399
  if (n === null)
400
- return o.length * l.fontSize * 0.5;
401
- const f = l.fontStyle.includes("bold") ? "bold" : "normal", w = l.fontStyle.includes("italic") ? "italic" : "normal";
402
- return n.font = `${w} ${f} ${l.fontSize}px sans-serif`, n.measureText(o).width;
400
+ return r.length * l.fontSize * 0.5;
401
+ const f = l.fontStyle.includes("bold") ? "bold" : "normal", b = l.fontStyle.includes("italic") ? "italic" : "normal";
402
+ return n.font = `${b} ${f} ${l.fontSize}px sans-serif`, n.measureText(r).width;
403
403
  };
404
- if (!(l.whiteSpace !== "nowrap" && l.whiteSpace !== "pre") || s <= 0) {
405
- const o = i.split(`
404
+ if (!(l.whiteSpace !== "nowrap" && l.whiteSpace !== "pre") || o <= 0) {
405
+ const r = i.split(`
406
406
  `);
407
- return { width: o.reduce((w, c) => Math.max(w, g(c)), 0), height: o.length * m };
407
+ return { width: r.reduce((b, c) => Math.max(b, g(c)), 0), height: r.length * p };
408
408
  }
409
- const u = i.split(/\s+/).filter((o) => o.length > 0);
410
- let r = 1, a = 0, d = 0;
411
- for (const o of u) {
412
- const f = g(o), w = a === 0 ? 0 : g(" ");
413
- a > 0 && a + w + f > s ? (d = Math.max(d, a), r++, a = f) : a += w + f;
409
+ const d = i.split(/\s+/).filter((r) => r.length > 0);
410
+ let s = 1, a = 0, u = 0;
411
+ for (const r of d) {
412
+ const f = g(r), b = a === 0 ? 0 : g(" ");
413
+ a > 0 && a + b + f > o ? (u = Math.max(u, a), s++, a = f) : a += b + f;
414
414
  }
415
- return d = Math.max(d, a), { width: d, height: r * m };
415
+ return u = Math.max(u, a), { width: u, height: s * p };
416
416
  };
417
417
  }
418
- function ye(e) {
418
+ function re(e) {
419
419
  const n = (t, i) => !Number.isInteger(t) || t < 0 || t > 1114111 || t >= 55296 && t <= 57343 ? i : String.fromCodePoint(t);
420
420
  return e.replace(/&#x([0-9a-f]+);/gi, (t, i) => n(parseInt(i, 16), t)).replace(/&#(\d+);/g, (t, i) => n(Number(i), t)).replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&amp;/g, "&");
421
421
  }
@@ -445,7 +445,7 @@ const it = /* @__PURE__ */ new Set([
445
445
  "background-repeat",
446
446
  "overflow-wrap",
447
447
  "word-break"
448
- ]), pe = ["top", "right", "bottom", "left"], rt = {
448
+ ]), he = ["top", "right", "bottom", "left"], rt = {
449
449
  normal: { weight: "normal", style: "normal" },
450
450
  bold: { weight: "bold", style: "normal" },
451
451
  italic: { weight: "normal", style: "italic" },
@@ -462,22 +462,22 @@ const it = /* @__PURE__ */ new Set([
462
462
  "stretch-to-fill": "100% 100%",
463
463
  "scale-and-crop": "cover",
464
464
  "scale-to-fit": "contain"
465
- }, he = "stretch-to-fill";
465
+ }, me = "stretch-to-fill";
466
466
  function lt(e) {
467
- const n = /^(url|resource)\(\s*(["']?)(.*?)\2\s*\)$/.exec(e.trim());
467
+ const n = /^(url|resource)\(\s*(["']?)(.*?)\2\s*\)$/.exec(re(e).trim());
468
468
  return n === null ? null : { form: n[1], path: n[3] };
469
469
  }
470
- function me(e, n, t = {}) {
471
- var w;
472
- const i = {}, l = [], s = (c) => {
470
+ function ge(e, n, t = {}) {
471
+ var b;
472
+ const i = {}, l = [], o = (c) => {
473
473
  var S;
474
474
  return (S = e.get(c)) == null ? void 0 : S.value;
475
- }, m = (c, S) => {
475
+ }, p = (c, S) => {
476
476
  l.push({ kind: c, message: S, node: n });
477
477
  };
478
478
  i["box-sizing"] = "border-box";
479
479
  for (const [c] of e)
480
- it.has(c) ? m("unsupported-property", `${c} does not exist in USS and is ignored`) : st.has(c) && m(
480
+ it.has(c) ? p("unsupported-property", `${c} does not exist in USS and is ignored`) : st.has(c) && p(
481
481
  "version-dependent",
482
482
  `${c} depends on the Unity version; verify it in your project`
483
483
  );
@@ -495,23 +495,23 @@ function me(e, n, t = {}) {
495
495
  "transform-origin"
496
496
  ];
497
497
  for (const c of g) {
498
- const S = s(c);
498
+ const S = o(c);
499
499
  S !== void 0 && (i[c] = S);
500
500
  }
501
- s("display") === "none" && (i.display = "none"), s("overflow") === "hidden" && (i.overflow = "hidden");
502
- for (const c of pe) {
503
- const S = s(`border-${c}-width`);
501
+ o("display") === "none" && (i.display = "none"), o("overflow") === "hidden" && (i.overflow = "hidden");
502
+ for (const c of he) {
503
+ const S = o(`border-${c}-width`);
504
504
  if (S !== void 0 && S !== "0") {
505
- const { length: y, problem: b } = X(S);
506
- y === null || y.kind !== "px" ? m(
505
+ const { length: y, problem: x } = X(S);
506
+ y === null || y.kind !== "px" ? p(
507
507
  "unsupported-property",
508
- `border-${c}-width: ${b ?? `"${S}" is not a pixel length`}; ignored`
508
+ `border-${c}-width: ${x ?? `"${S}" is not a pixel length`}; ignored`
509
509
  ) : (i[`border-${c}-width`] = `${y.value}px`, i[`border-${c}-style`] = "solid");
510
510
  }
511
- const h = s(`border-${c}-color`);
511
+ const h = o(`border-${c}-color`);
512
512
  h !== void 0 && (i[`border-${c}-color`] = h);
513
- const x = s(`padding-${c}`);
514
- x !== void 0 && x !== "0" && (i[`padding-${c}`] = x);
513
+ const w = o(`padding-${c}`);
514
+ w !== void 0 && w !== "0" && (i[`padding-${c}`] = w);
515
515
  }
516
516
  for (const c of [
517
517
  "top-left",
@@ -519,125 +519,125 @@ function me(e, n, t = {}) {
519
519
  "bottom-right",
520
520
  "bottom-left"
521
521
  ]) {
522
- const S = s(`border-${c}-radius`);
522
+ const S = o(`border-${c}-radius`);
523
523
  S !== void 0 && (i[`border-${c}-radius`] = S);
524
524
  }
525
- const v = s("-unity-font-style");
525
+ const v = o("-unity-font-style");
526
526
  if (v !== void 0) {
527
527
  const c = rt[v];
528
- c === void 0 ? m("unsupported-property", `-unity-font-style: ${v} is not a USS value`) : (i["font-weight"] = c.weight, i["font-style"] = c.style);
529
- }
530
- const u = s("-unity-text-align");
531
- if (u !== void 0) {
532
- const [c, S] = u.split("-"), h = ot[c ?? ""], x = at[S ?? ""];
533
- h === void 0 || x === void 0 ? m("unsupported-property", `-unity-text-align: ${u} is not a USS value`) : (i["align-items"] = h, i["justify-content"] = x);
534
- }
535
- const r = [], a = s("translate");
536
- a !== void 0 && r.push(`translate(${a.replace(/\s+/, ", ")})`);
537
- const d = s("rotate");
538
- d !== void 0 && r.push(`rotate(${d})`);
539
- const o = s("scale");
540
- o !== void 0 && r.push(`scale(${o.replace(/\s+/, ", ")})`), r.length > 0 && (i.transform = r.join(" "));
541
- const f = s("background-image");
528
+ c === void 0 ? p("unsupported-property", `-unity-font-style: ${v} is not a USS value`) : (i["font-weight"] = c.weight, i["font-style"] = c.style);
529
+ }
530
+ const d = o("-unity-text-align");
531
+ if (d !== void 0) {
532
+ const [c, S] = d.split("-"), h = ot[c ?? ""], w = at[S ?? ""];
533
+ h === void 0 || w === void 0 ? p("unsupported-property", `-unity-text-align: ${d} is not a USS value`) : (i["align-items"] = h, i["justify-content"] = w);
534
+ }
535
+ const s = [], a = o("translate");
536
+ a !== void 0 && s.push(`translate(${a.replace(/\s+/, ", ")})`);
537
+ const u = o("rotate");
538
+ u !== void 0 && s.push(`rotate(${u})`);
539
+ const r = o("scale");
540
+ r !== void 0 && s.push(`scale(${r.replace(/\s+/, ", ")})`), s.length > 0 && (i.transform = s.join(" "));
541
+ const f = o("background-image");
542
542
  if (f !== void 0 && f !== "none") {
543
543
  const c = lt(f);
544
544
  if (c === null)
545
- m("asset-unresolved", `background-image: cannot read "${f}" as an asset path`);
545
+ p("asset-unresolved", `background-image: cannot read "${f}" as an asset path`);
546
546
  else {
547
- const { form: S, path: h } = c, x = ((w = t.resolveAsset) == null ? void 0 : w.call(t, h, S)) ?? null;
548
- if (x === null)
549
- i["background-image"] = "repeating-linear-gradient(45deg, rgba(255,0,255,0.35) 0 6px, rgba(0,0,0,0) 6px 12px)", m("asset-unresolved", `background-image: "${h}" was not resolved`);
547
+ const { form: S, path: h } = c, w = ((b = t.resolveAsset) == null ? void 0 : b.call(t, h, S)) ?? null;
548
+ if (w === null)
549
+ i["background-image"] = "repeating-linear-gradient(45deg, rgba(255,0,255,0.35) 0 6px, rgba(0,0,0,0) 6px 12px)", p("asset-unresolved", `background-image: "${h}" was not resolved`);
550
550
  else {
551
- i["background-image"] = `url("${x}")`, i["background-repeat"] = s("background-repeat") ?? "no-repeat", i["background-position"] = s("background-position") ?? "center";
552
- const y = s("background-size"), b = s("-unity-background-scale-mode") ?? he, $ = Q[b];
553
- $ === void 0 && m(
551
+ i["background-image"] = `url("${w}")`, i["background-repeat"] = o("background-repeat") ?? "no-repeat", i["background-position"] = o("background-position") ?? "center";
552
+ const y = o("background-size"), x = o("-unity-background-scale-mode") ?? me, $ = Q[x];
553
+ $ === void 0 && p(
554
554
  "unsupported-property",
555
- `-unity-background-scale-mode: ${b} is not a USS value; expected one of ${Object.keys(Q).join(", ")}`
556
- ), i["background-size"] = y ?? $ ?? Q[he];
555
+ `-unity-background-scale-mode: ${x} is not a USS value; expected one of ${Object.keys(Q).join(", ")}`
556
+ ), i["background-size"] = y ?? $ ?? Q[me];
557
557
  }
558
558
  }
559
559
  }
560
- return s("-unity-background-image-tint-color") !== void 0 && m(
560
+ return o("-unity-background-image-tint-color") !== void 0 && p(
561
561
  "unsupported-property",
562
562
  "-unity-background-image-tint-color has no CSS equivalent and is not drawn"
563
- ), pe.some((c) => s(`-unity-slice-${c}`) !== void 0) && m("unsupported-property", "-unity-slice-* (9-slice) is not drawn in this preview"), s("-unity-font-definition") !== void 0 && m(
563
+ ), he.some((c) => o(`-unity-slice-${c}`) !== void 0) && p("unsupported-property", "-unity-slice-* (9-slice) is not drawn in this preview"), o("-unity-font-definition") !== void 0 && p(
564
564
  "unsupported-property",
565
565
  "-unity-font-definition names a Unity font asset; the browser default is used"
566
566
  ), { declarations: i, warnings: l };
567
567
  }
568
568
  const ct = "data-uxml-node", ut = "data-uxml-part", dt = "data-uxml-part-owner";
569
- function ft(e, n, t, i, l, s) {
570
- const m = [], g = /* @__PURE__ */ new Map();
571
- function v(d) {
572
- const o = i.get(d.id), f = (w) => {
569
+ function ft(e, n, t, i, l, o) {
570
+ const p = [], g = /* @__PURE__ */ new Map();
571
+ function v(u) {
572
+ const r = i.get(u.id), f = (b) => {
573
573
  var h;
574
- const c = ((h = o == null ? void 0 : o.get(w)) == null ? void 0 : h.value) ?? ee[w] ?? "0", { length: S } = X(c);
574
+ const c = ((h = r == null ? void 0 : r.get(b)) == null ? void 0 : h.value) ?? ee[b] ?? "0", { length: S } = X(c);
575
575
  return S !== null && S.kind === "px" ? S.value : 0;
576
576
  };
577
577
  return { left: f("border-left-width"), top: f("border-top-width") };
578
578
  }
579
- function u(d) {
580
- const o = (f) => {
579
+ function d(u) {
580
+ const r = (f) => {
581
581
  var S;
582
- const w = ((S = d.style.get(f)) == null ? void 0 : S.value) ?? ee[f] ?? "0", { length: c } = X(w);
582
+ const b = ((S = u.style.get(f)) == null ? void 0 : S.value) ?? ee[f] ?? "0", { length: c } = X(b);
583
583
  return c !== null && c.kind === "px" ? c.value : 0;
584
584
  };
585
- return { left: o("border-left-width"), top: o("border-top-width") };
585
+ return { left: r("border-left-width"), top: r("border-top-width") };
586
586
  }
587
- function r(d, o, f) {
587
+ function s(u, r, f) {
588
588
  var E;
589
- const w = n.get(d.id);
590
- if (w === void 0) return null;
591
- const c = s.document.createElement("div");
592
- c.setAttribute(ct, String(d.id));
593
- const S = i.get(d.id) ?? /* @__PURE__ */ new Map(), h = me(S, d.id, s);
594
- m.push(...h.warnings);
595
- const x = o === null ? 0 : w.left - o.left - f.left, y = o === null ? 0 : w.top - o.top - f.top, b = {
589
+ const b = n.get(u.id);
590
+ if (b === void 0) return null;
591
+ const c = o.document.createElement("div");
592
+ c.setAttribute(ct, String(u.id));
593
+ const S = i.get(u.id) ?? /* @__PURE__ */ new Map(), h = ge(S, u.id, o);
594
+ p.push(...h.warnings);
595
+ const w = r === null ? 0 : b.left - r.left - f.left, y = r === null ? 0 : b.top - r.top - f.top, x = {
596
596
  position: "absolute",
597
- left: `${x}px`,
597
+ left: `${w}px`,
598
598
  top: `${y}px`,
599
- width: `${w.width}px`,
600
- height: `${w.height}px`,
599
+ width: `${b.width}px`,
600
+ height: `${b.height}px`,
601
601
  margin: "0",
602
602
  ...h.declarations
603
603
  };
604
- for (const [R, D] of Object.entries(b))
605
- c.style.setProperty(R, D);
606
- const { spec: $ } = F(d), O = (E = d.attributes.find((R) => R.name === "text")) == null ? void 0 : E.value;
604
+ for (const [M, D] of Object.entries(x))
605
+ c.style.setProperty(M, D);
606
+ const { spec: $ } = F(u), O = (E = u.attributes.find((M) => M.name === "text")) == null ? void 0 : E.value;
607
607
  if ($.hasText && O !== void 0 && O.length > 0)
608
- c.style.setProperty("display", h.declarations.display ?? "flex"), h.declarations["align-items"] === void 0 && c.style.setProperty("align-items", "flex-start"), h.declarations["justify-content"] === void 0 && c.style.setProperty("justify-content", "flex-start"), c.textContent = ye(O);
608
+ c.style.setProperty("display", h.declarations.display ?? "flex"), h.declarations["align-items"] === void 0 && c.style.setProperty("align-items", "flex-start"), h.declarations["justify-content"] === void 0 && c.style.setProperty("justify-content", "flex-start"), c.textContent = re(O);
609
609
  else {
610
- let R = c, D = w, p = v(d);
611
- for (const k of t.get(d.id) ?? []) {
612
- const T = s.document.createElement("div");
613
- T.setAttribute(ut, k.name), T.setAttribute(dt, String(d.id));
614
- const N = me(k.style, d.id, s);
615
- m.push(...N.warnings);
616
- const C = {
610
+ let M = c, D = b, m = v(u);
611
+ for (const k of t.get(u.id) ?? []) {
612
+ const T = o.document.createElement("div");
613
+ T.setAttribute(ut, k.name), T.setAttribute(dt, String(u.id));
614
+ const N = ge(k.style, u.id, o);
615
+ p.push(...N.warnings);
616
+ const I = {
617
617
  position: "absolute",
618
- left: `${k.box.left - D.left - p.left}px`,
619
- top: `${k.box.top - D.top - p.top}px`,
618
+ left: `${k.box.left - D.left - m.left}px`,
619
+ top: `${k.box.top - D.top - m.top}px`,
620
620
  width: `${k.box.width}px`,
621
621
  height: `${k.box.height}px`,
622
622
  margin: "0",
623
623
  ...N.declarations
624
624
  };
625
- for (const [A, I] of Object.entries(C))
626
- T.style.setProperty(A, I);
627
- R.appendChild(T), R = T, D = k.box, p = u(k);
625
+ for (const [C, A] of Object.entries(I))
626
+ T.style.setProperty(C, A);
627
+ M.appendChild(T), M = T, D = k.box, m = d(k);
628
628
  }
629
- for (const k of d.children) {
630
- const T = r(k, D, p);
631
- T !== null && R.appendChild(T);
629
+ for (const k of u.children) {
630
+ const T = s(k, D, m);
631
+ T !== null && M.appendChild(T);
632
632
  }
633
633
  }
634
- return g.set(d.id, c), c;
634
+ return g.set(u.id, c), c;
635
635
  }
636
636
  l.replaceChildren();
637
- const a = r(e, null, { left: 0, top: 0 });
638
- return a !== null && (a.style.setProperty("position", "relative"), l.appendChild(a)), { warnings: m, elements: g };
637
+ const a = s(e, null, { left: 0, top: 0 });
638
+ return a !== null && (a.style.setProperty("position", "relative"), l.appendChild(a)), { warnings: p, elements: g };
639
639
  }
640
- const ge = /[A-Za-z0-9_-]/;
640
+ const we = /[A-Za-z0-9_-]/;
641
641
  function B(e) {
642
642
  return e === " " || e === " " || e === `
643
643
  ` || e === "\r" || e === "\f";
@@ -645,22 +645,22 @@ function B(e) {
645
645
  function te(e, n, t) {
646
646
  let i = n, l = 0;
647
647
  for (; i < e.length; ) {
648
- const s = e[i];
649
- if (s === '"' || s === "'") {
650
- const m = e.indexOf(s, i + 1);
651
- i = m < 0 ? e.length : m + 1;
648
+ const o = e[i];
649
+ if (o === '"' || o === "'") {
650
+ const p = e.indexOf(o, i + 1);
651
+ i = p < 0 ? e.length : p + 1;
652
652
  continue;
653
653
  }
654
- if (s === "/" && e[i + 1] === "*") {
655
- const m = e.indexOf("*/", i + 2);
656
- i = m < 0 ? e.length : m + 2;
654
+ if (o === "/" && e[i + 1] === "*") {
655
+ const p = e.indexOf("*/", i + 2);
656
+ i = p < 0 ? e.length : p + 2;
657
657
  continue;
658
658
  }
659
- if (s === "(" || s === "[")
659
+ if (o === "(" || o === "[")
660
660
  l++;
661
- else if (s === ")" || s === "]")
661
+ else if (o === ")" || o === "]")
662
662
  l > 0 && l--;
663
- else if (l === 0 && t.includes(s))
663
+ else if (l === 0 && t.includes(o))
664
664
  return i;
665
665
  i++;
666
666
  }
@@ -674,32 +674,32 @@ function ke(e, n, t) {
674
674
  }
675
675
  function Se(e, n, t, i) {
676
676
  const l = [];
677
- let s = n;
678
- for (; s < t; ) {
679
- for (; s < t && (B(e[s]) || e.startsWith("/*", s)); )
680
- if (e.startsWith("/*", s)) {
681
- const r = e.indexOf("*/", s + 2);
682
- s = r < 0 ? t : r + 2;
677
+ let o = n;
678
+ for (; o < t; ) {
679
+ for (; o < t && (B(e[o]) || e.startsWith("/*", o)); )
680
+ if (e.startsWith("/*", o)) {
681
+ const s = e.indexOf("*/", o + 2);
682
+ o = s < 0 ? t : s + 2;
683
683
  } else
684
- s++;
685
- if (s >= t) break;
686
- if (e[s] === ";") {
687
- s++;
684
+ o++;
685
+ if (o >= t) break;
686
+ if (e[o] === ";") {
687
+ o++;
688
688
  continue;
689
689
  }
690
- const m = s, g = te(e, m, ":;}");
690
+ const p = o, g = te(e, p, ":;}");
691
691
  if (g >= t || e[g] !== ":") {
692
- const r = Math.min(g, t);
693
- i == null || i("declaration without a value", m, r), s = r + 1;
692
+ const s = Math.min(g, t);
693
+ i == null || i("declaration without a value", p, s), o = s + 1;
694
694
  continue;
695
695
  }
696
- const v = Math.min(te(e, g + 1, ";}"), t), u = ke(e, g + 1, v);
696
+ const v = Math.min(te(e, g + 1, ";}"), t), d = ke(e, g + 1, v);
697
697
  l.push({
698
- property: e.slice(m, g).trim(),
699
- value: e.slice(u.start, u.end),
700
- span: { start: m, end: u.end },
698
+ property: e.slice(p, g).trim(),
699
+ value: e.slice(d.start, d.end),
700
+ span: { start: p, end: d.end },
701
701
  dirty: !1
702
- }), s = v + 1;
702
+ }), o = v + 1;
703
703
  }
704
704
  return l;
705
705
  }
@@ -707,172 +707,172 @@ function pt(e) {
707
707
  const n = e.span.end - 1 - e.value.length;
708
708
  return n < e.span.start ? null : n;
709
709
  }
710
- function re(e, n = null, t = 0) {
710
+ function oe(e, n = null, t = 0) {
711
711
  const i = [], l = [];
712
- let s = 0;
713
- function m(h, x, y) {
712
+ let o = 0;
713
+ function p(h, w, y) {
714
714
  i.push({
715
715
  kind: "malformed",
716
716
  message: h,
717
- at: { in: "uss", sheet: t, span: { start: x, end: y } }
717
+ at: { in: "uss", sheet: t, span: { start: w, end: y } }
718
718
  });
719
719
  }
720
720
  function g() {
721
721
  for (; ; ) {
722
- for (; B(e[s]); ) s++;
723
- if (e.startsWith("/*", s)) {
724
- const h = e.indexOf("*/", s + 2);
725
- s = h < 0 ? e.length : h + 2;
722
+ for (; B(e[o]); ) o++;
723
+ if (e.startsWith("/*", o)) {
724
+ const h = e.indexOf("*/", o + 2);
725
+ o = h < 0 ? e.length : h + 2;
726
726
  continue;
727
727
  }
728
728
  return;
729
729
  }
730
730
  }
731
- const v = (h, x) => te(e, h, x), u = (h, x) => ke(e, h, x);
732
- function r(h) {
733
- let x = h + 1, y = 1;
734
- for (; x < e.length; ) {
735
- const b = e[x];
736
- if (b === '"' || b === "'") {
737
- const $ = e.indexOf(b, x + 1);
738
- x = $ < 0 ? e.length : $ + 1;
731
+ const v = (h, w) => te(e, h, w), d = (h, w) => ke(e, h, w);
732
+ function s(h) {
733
+ let w = h + 1, y = 1;
734
+ for (; w < e.length; ) {
735
+ const x = e[w];
736
+ if (x === '"' || x === "'") {
737
+ const $ = e.indexOf(x, w + 1);
738
+ w = $ < 0 ? e.length : $ + 1;
739
739
  continue;
740
740
  }
741
- if (b === "/" && e[x + 1] === "*") {
742
- const $ = e.indexOf("*/", x + 2);
743
- x = $ < 0 ? e.length : $ + 2;
741
+ if (x === "/" && e[w + 1] === "*") {
742
+ const $ = e.indexOf("*/", w + 2);
743
+ w = $ < 0 ? e.length : $ + 2;
744
744
  continue;
745
745
  }
746
- if (b === "{") y++;
747
- else if (b === "}" && --y === 0) return x + 1;
748
- x++;
746
+ if (x === "{") y++;
747
+ else if (x === "}" && --y === 0) return w + 1;
748
+ w++;
749
749
  }
750
750
  return e.length;
751
751
  }
752
752
  function a(h) {
753
- let x = h;
754
- for (; x < e.length && ge.test(e[x]); ) x++;
755
- return x;
756
- }
757
- function d(h) {
758
- const x = e[h], y = x === "(" ? ")" : "]";
759
- let b = h + 1, $ = 1;
760
- for (; b < e.length; ) {
761
- const O = e[b];
753
+ let w = h;
754
+ for (; w < e.length && we.test(e[w]); ) w++;
755
+ return w;
756
+ }
757
+ function u(h) {
758
+ const w = e[h], y = w === "(" ? ")" : "]";
759
+ let x = h + 1, $ = 1;
760
+ for (; x < e.length; ) {
761
+ const O = e[x];
762
762
  if (O === '"' || O === "'") {
763
- const E = e.indexOf(O, b + 1);
764
- b = E < 0 ? e.length : E + 1;
763
+ const E = e.indexOf(O, x + 1);
764
+ x = E < 0 ? e.length : E + 1;
765
765
  continue;
766
766
  }
767
- if (O === x) $++;
768
- else if (O === y && --$ === 0) return b + 1;
769
- b++;
767
+ if (O === w) $++;
768
+ else if (O === y && --$ === 0) return x + 1;
769
+ x++;
770
770
  }
771
771
  return e.length;
772
772
  }
773
- function o(h, x) {
773
+ function r(h, w) {
774
774
  const y = [];
775
- let b = h;
776
- for (; b < x; ) {
777
- const $ = e[b];
775
+ let x = h;
776
+ for (; x < w; ) {
777
+ const $ = e[x];
778
778
  if (B($) || $ === ">" || $ === "+" || $ === "~" || $ === ",") break;
779
779
  if ($ === "*")
780
- y.push({ kind: "universal" }), b++;
780
+ y.push({ kind: "universal" }), x++;
781
781
  else if ($ === "." || $ === "#") {
782
- const O = a(b + 1);
782
+ const O = a(x + 1);
783
783
  y.push(
784
- $ === "." ? { kind: "class", name: e.slice(b + 1, O) } : { kind: "name", name: e.slice(b + 1, O) }
785
- ), b = O;
784
+ $ === "." ? { kind: "class", name: e.slice(x + 1, O) } : { kind: "name", name: e.slice(x + 1, O) }
785
+ ), x = O;
786
786
  } else if ($ === "[") {
787
- const O = Math.min(d(b), x);
788
- y.push({ kind: "unknown", text: e.slice(b, O) }), b = O;
787
+ const O = Math.min(u(x), w);
788
+ y.push({ kind: "unknown", text: e.slice(x, O) }), x = O;
789
789
  } else if ($ === ":")
790
- if (e[b + 1] === ":") {
791
- const O = a(b + 2);
792
- y.push({ kind: "unknown", text: e.slice(b, O) }), b = O;
790
+ if (e[x + 1] === ":") {
791
+ const O = a(x + 2);
792
+ y.push({ kind: "unknown", text: e.slice(x, O) }), x = O;
793
793
  } else {
794
- const O = a(b + 1);
794
+ const O = a(x + 1);
795
795
  if (e[O] === "(") {
796
- const E = Math.min(d(O), x);
797
- y.push({ kind: "unknown", text: e.slice(b, E) }), b = E;
796
+ const E = Math.min(u(O), w);
797
+ y.push({ kind: "unknown", text: e.slice(x, E) }), x = E;
798
798
  } else
799
- y.push({ kind: "pseudo", name: e.slice(b + 1, O) }), b = O;
799
+ y.push({ kind: "pseudo", name: e.slice(x + 1, O) }), x = O;
800
800
  }
801
- else if (ge.test($)) {
802
- const O = a(b);
803
- y.push({ kind: "type", name: e.slice(b, O) }), b = O;
801
+ else if (we.test($)) {
802
+ const O = a(x);
803
+ y.push({ kind: "type", name: e.slice(x, O) }), x = O;
804
804
  } else
805
- y.push({ kind: "unknown", text: $ }), b++;
805
+ y.push({ kind: "unknown", text: $ }), x++;
806
806
  }
807
- return { simple: y, next: b };
807
+ return { simple: y, next: x };
808
808
  }
809
- function f(h, x) {
810
- const y = u(h, x), b = [];
809
+ function f(h, w) {
810
+ const y = d(h, w), x = [];
811
811
  let $ = "descendant", O = null, E = y.start;
812
812
  for (; E < y.end; ) {
813
- const R = e[E];
814
- if (B(R)) {
813
+ const M = e[E];
814
+ if (B(M)) {
815
815
  E++;
816
816
  continue;
817
817
  }
818
- if (R === ">") {
818
+ if (M === ">") {
819
819
  $ = "child", E++;
820
820
  continue;
821
821
  }
822
- if (R === "+" || R === "~") {
823
- O = R, E++;
822
+ if (M === "+" || M === "~") {
823
+ O = M, E++;
824
824
  continue;
825
825
  }
826
- const { simple: D, next: p } = o(E, y.end);
827
- if (p === E) {
826
+ const { simple: D, next: m } = r(E, y.end);
827
+ if (m === E) {
828
828
  E++;
829
829
  continue;
830
830
  }
831
- O !== null && (D.unshift({ kind: "unknown", text: O }), O = null), b.push({ combinator: $, simple: D }), $ = "descendant", E = p;
831
+ O !== null && (D.unshift({ kind: "unknown", text: O }), O = null), x.push({ combinator: $, simple: D }), $ = "descendant", E = m;
832
832
  }
833
- return { parts: b, span: y };
833
+ return { parts: x, span: y };
834
834
  }
835
- function w(h, x) {
835
+ function b(h, w) {
836
836
  const y = [];
837
- let b = h;
837
+ let x = h;
838
838
  for (; ; ) {
839
- const $ = Math.min(v(b, ","), x);
840
- if (y.push(f(b, $)), $ >= x) break;
841
- b = $ + 1;
839
+ const $ = Math.min(v(x, ","), w);
840
+ if (y.push(f(x, $)), $ >= w) break;
841
+ x = $ + 1;
842
842
  }
843
843
  return y;
844
844
  }
845
845
  function c() {
846
- const h = s, x = a(s + 1), y = e.slice(s + 1, x), b = v(x, "{;");
847
- if (b < e.length && e[b] === "{") {
848
- const O = r(b);
849
- return s = O, { kind: "unknown", span: { start: h, end: O } };
846
+ const h = o, w = a(o + 1), y = e.slice(o + 1, w), x = v(w, "{;");
847
+ if (x < e.length && e[x] === "{") {
848
+ const O = s(x);
849
+ return o = O, { kind: "unknown", span: { start: h, end: O } };
850
850
  }
851
- const $ = b < e.length ? b + 1 : e.length;
852
- if (s = $, y === "import") {
853
- const O = e.slice(x, $), E = /["']([^"']*)["']/.exec(O);
854
- return E === null ? (m("@import without a quoted path", h, $), { kind: "unknown", span: { start: h, end: $ } }) : { kind: "import", url: E[1], span: { start: h, end: $ } };
851
+ const $ = x < e.length ? x + 1 : e.length;
852
+ if (o = $, y === "import") {
853
+ const O = e.slice(w, $), E = /["']([^"']*)["']/.exec(O);
854
+ return E === null ? (p("@import without a quoted path", h, $), { kind: "unknown", span: { start: h, end: $ } }) : { kind: "import", url: E[1], span: { start: h, end: $ } };
855
855
  }
856
856
  return { kind: "unknown", span: { start: h, end: $ } };
857
857
  }
858
858
  function S() {
859
- const h = s, x = v(h, "{");
860
- if (x >= e.length)
861
- return m("rule without a block", h, e.length), s = e.length, { kind: "unknown", span: { start: h, end: e.length } };
862
- const y = u(h, x), b = r(x);
863
- (b > e.length || e[b - 1] !== "}") && m("unterminated rule block", h, b);
859
+ const h = o, w = v(h, "{");
860
+ if (w >= e.length)
861
+ return p("rule without a block", h, e.length), o = e.length, { kind: "unknown", span: { start: h, end: e.length } };
862
+ const y = d(h, w), x = s(w);
863
+ (x > e.length || e[x - 1] !== "}") && p("unterminated rule block", h, x);
864
864
  const $ = {
865
- selectors: w(y.start, y.end),
866
- declarations: Se(e, x + 1, b - 1, m),
867
- span: { start: y.start, end: b },
865
+ selectors: b(y.start, y.end),
866
+ declarations: Se(e, w + 1, x - 1, p),
867
+ span: { start: y.start, end: x },
868
868
  selectorSpan: y,
869
869
  selectorDirty: !1,
870
870
  declarationsDirty: !1
871
871
  };
872
- return s = b, { kind: "rule", rule: $ };
872
+ return o = x, { kind: "rule", rule: $ };
873
873
  }
874
- for (; g(), !(s >= e.length); )
875
- l.push(e[s] === "@" ? c() : S());
874
+ for (; g(), !(o >= e.length); )
875
+ l.push(e[o] === "@" ? c() : S());
876
876
  return { sheet: { source: e, origin: n, items: l }, warnings: i };
877
877
  }
878
878
  function ht(e, n, t) {
@@ -900,8 +900,8 @@ function ne(e, n, t, i) {
900
900
  const l = i.parentOf(t);
901
901
  if (e[n].combinator === "child")
902
902
  return l !== null && ne(e, n - 1, l, i);
903
- for (let s = l; s !== null; s = i.parentOf(s))
904
- if (ne(e, n - 1, s, i)) return !0;
903
+ for (let o = l; o !== null; o = i.parentOf(o))
904
+ if (ne(e, n - 1, o, i)) return !0;
905
905
  return !1;
906
906
  }
907
907
  function $e(e, n, t) {
@@ -920,8 +920,8 @@ function wt(e) {
920
920
  for (const i of t.parts)
921
921
  for (const l of i.simple) {
922
922
  if (l.kind !== "name" && l.kind !== "class" || !l.name.startsWith("unity-")) continue;
923
- const s = l.kind === "name" ? `#${l.name}` : `.${l.name}`;
924
- n.includes(s) || n.push(s);
923
+ const o = l.kind === "name" ? `#${l.name}` : `.${l.name}`;
924
+ n.includes(o) || n.push(o);
925
925
  }
926
926
  return n;
927
927
  }
@@ -944,8 +944,8 @@ function bt(e) {
944
944
  function xt(e) {
945
945
  let n = 0, t = 0, i = 0;
946
946
  for (const l of e.parts)
947
- for (const s of l.simple)
948
- switch (s.kind) {
947
+ for (const o of l.simple)
948
+ switch (o.kind) {
949
949
  case "name":
950
950
  n++;
951
951
  break;
@@ -962,69 +962,79 @@ function xt(e) {
962
962
  function Oe(e, n) {
963
963
  return e[0] - n[0] || e[1] - n[1] || e[2] - n[2];
964
964
  }
965
- const vt = [Number.MAX_SAFE_INTEGER, 0, 0], yt = re(ve, null, -1).sheet.items.flatMap(
965
+ const vt = [Number.MAX_SAFE_INTEGER, 0, 0], yt = oe(ye, null, -1).sheet.items.flatMap(
966
966
  (e, n) => e.kind === "rule" ? [{ rule: e.rule, sheet: -1, item: n, builtin: !0 }] : []
967
967
  );
968
968
  function kt(e) {
969
- return ve.slice(e.selectorSpan.start, e.selectorSpan.end).trim();
969
+ return ye.slice(e.selectorSpan.start, e.selectorSpan.end).trim();
970
970
  }
971
971
  function St(e, n, t, i) {
972
- const l = (t == null ? void 0 : t.activeStates) ?? /* @__PURE__ */ new Set(), s = Object.entries((t == null ? void 0 : t.states) ?? {}), m = [];
973
- for (const [r, a] of s) {
974
- const d = re(`${r} {}`, null, -1).sheet.items.find((f) => f.kind === "rule"), o = d === void 0 ? r : Te(d.rule.selectors);
975
- if (d === void 0 || o !== null) {
972
+ const l = (t == null ? void 0 : t.activeStates) ?? /* @__PURE__ */ new Set(), o = Object.entries((t == null ? void 0 : t.states) ?? {}), p = [];
973
+ for (const [s, a] of o) {
974
+ const u = oe(`${s} {}`, null, -1).sheet.items.find((f) => f.kind === "rule"), r = u === void 0 ? s : Te(u.rule.selectors);
975
+ if (u === void 0 || r !== null) {
976
976
  i.push({
977
977
  kind: "unsupported-selector",
978
- message: `states key "${r}" is not a usable USS selector; it is ignored`
978
+ message: `states key "${s}" is not a usable USS selector; it is ignored`
979
979
  });
980
980
  continue;
981
981
  }
982
- m.push({ selectors: d.rule.selectors, states: a });
983
- }
984
- const g = /* @__PURE__ */ new Map(), v = (r) => r.attributes.some((a) => a.name === "enabled" && a.value === "false"), u = (r, a) => {
985
- const d = a || v(r), o = new Set(l);
986
- d && o.add("disabled");
987
- for (const f of m)
988
- if (f.selectors.some((w) => $e(w, { kind: "element", node: r }, n)))
989
- for (const w of f.states) o.add(w);
990
- g.set(r, o);
991
- for (const f of r.children) u(f, d);
982
+ p.push({ selectors: u.rule.selectors, states: a });
983
+ }
984
+ const g = /* @__PURE__ */ new Map(), v = (s) => s.attributes.some((a) => a.name === "enabled" && a.value === "false"), d = (s, a) => {
985
+ const u = a || v(s), r = new Set(l);
986
+ u && r.add("disabled");
987
+ for (const f of p)
988
+ if (f.selectors.some((b) => $e(b, { kind: "element", node: s }, n)))
989
+ for (const b of f.states) r.add(b);
990
+ g.set(s, r);
991
+ for (const f of s.children) d(f, u);
992
992
  };
993
- return u(e.root, !1), g;
993
+ return d(e.root, !1), g;
994
994
  }
995
995
  function $t(e) {
996
996
  const n = [], t = /* @__PURE__ */ new Map();
997
- e.sheets.forEach((s, m) => {
998
- s.origin !== null && !t.has(s.origin) && t.set(s.origin, m);
997
+ e.sheets.forEach((p, g) => {
998
+ p.origin !== null && !t.has(p.origin) && t.set(p.origin, g);
999
999
  }), n.push(...yt);
1000
- const i = /* @__PURE__ */ new Set(), l = (s) => {
1001
- if (i.has(s)) return;
1002
- i.add(s);
1003
- const m = e.sheets[s];
1004
- m !== void 0 && m.items.forEach((g, v) => {
1005
- if (g.kind === "rule")
1006
- n.push({ rule: g.rule, sheet: s, item: v });
1007
- else if (g.kind === "import") {
1008
- const u = t.get(g.url);
1009
- u !== void 0 && l(u);
1000
+ const i = /* @__PURE__ */ new Map(), l = (p, g) => {
1001
+ const v = i.get(g) ?? /* @__PURE__ */ new Set();
1002
+ if (v.has(p)) return;
1003
+ v.add(p), i.set(g, v);
1004
+ const d = e.sheets[p];
1005
+ d !== void 0 && d.items.forEach((s, a) => {
1006
+ if (s.kind === "rule")
1007
+ n.push({ rule: s.rule, sheet: p, item: a, scope: g });
1008
+ else if (s.kind === "import") {
1009
+ const u = s.resolvedSheet ?? t.get(s.url);
1010
+ u !== void 0 && l(u, g);
1010
1011
  }
1011
1012
  });
1012
- };
1013
- return l(0), n;
1013
+ }, o = e.styleRoots ?? (e.sheets.length === 0 ? [] : [{ sheet: 0, scope: e.root.id }]);
1014
+ for (const p of o) l(p.sheet, p.scope);
1015
+ return n;
1016
+ }
1017
+ function Tt(e, n, t) {
1018
+ let i = e;
1019
+ for (; i !== null; ) {
1020
+ if (i.kind === "element" && i.node.id === n) return !0;
1021
+ i = t.parentOf(i);
1022
+ }
1023
+ return !1;
1014
1024
  }
1015
- function Tt(e) {
1025
+ function Ot(e) {
1016
1026
  return e.selectors.some(
1017
1027
  (n) => n.parts.some((t) => t.simple.some((i) => i.kind === "pseudo" && i.name === "root"))
1018
1028
  );
1019
1029
  }
1020
1030
  function Ee(e, n) {
1021
- const t = bt(e.root), i = [], l = /* @__PURE__ */ new Set(), s = (o) => {
1022
- var w;
1023
- const f = (w = o.attributes.find((c) => c.name === "class")) == null ? void 0 : w.value;
1031
+ const t = bt(e.root), i = [], l = /* @__PURE__ */ new Set(), o = (r) => {
1032
+ var b;
1033
+ const f = (b = r.attributes.find((c) => c.name === "class")) == null ? void 0 : b.value;
1024
1034
  return f === void 0 ? [] : f.split(/\s+/).filter((c) => c.length > 0);
1025
- }, m = (o, f) => {
1026
- var w;
1027
- return (w = o.attributes.find((c) => c.name === f)) == null ? void 0 : w.value;
1035
+ }, p = (r, f) => {
1036
+ var b;
1037
+ return (b = r.attributes.find((c) => c.name === f)) == null ? void 0 : b.value;
1028
1038
  }, g = {
1029
1039
  /**
1030
1040
  * The rule the measurement forced.
@@ -1036,55 +1046,55 @@ function Ee(e, n) {
1036
1046
  * owner. That is the hierarchy the dumps show, so descendant selectors like
1037
1047
  * `.panel #unity-content-viewport` behave as they do in Unity.
1038
1048
  */
1039
- parentOf: (o) => {
1040
- if (o.kind === "element") {
1041
- const c = t.get(o.node) ?? null;
1049
+ parentOf: (r) => {
1050
+ if (r.kind === "element") {
1051
+ const c = t.get(r.node) ?? null;
1042
1052
  return c === null ? null : { kind: "element", node: c };
1043
1053
  }
1044
- if (o.depth === 0) return { kind: "element", node: o.owner };
1045
- const w = F(o.owner).spec.parts[o.depth - 1];
1046
- return { kind: "part", owner: o.owner, name: w.name, depth: o.depth - 1 };
1054
+ if (r.depth === 0) return { kind: "element", node: r.owner };
1055
+ const b = F(r.owner).spec.parts[r.depth - 1];
1056
+ return { kind: "part", owner: r.owner, name: b.name, depth: r.depth - 1 };
1047
1057
  },
1048
- isRoot: (o) => o.kind === "element" && o.node === e.root,
1058
+ isRoot: (r) => r.kind === "element" && r.node === e.root,
1049
1059
  // Unity's parts are VisualElements, so a `VisualElement` rule reaches them.
1050
1060
  // Not measured — `part-type-selector` is the case that will settle it.
1051
- typeNameOf: (o) => o.kind === "element" ? o.node.name.local : "VisualElement",
1052
- idOf: (o) => o.kind === "element" ? m(o.node, "name") : o.name,
1061
+ typeNameOf: (r) => r.kind === "element" ? r.node.name.local : "VisualElement",
1062
+ idOf: (r) => r.kind === "element" ? p(r.node, "name") : r.name,
1053
1063
  // Implicit classes are as real as written ones for matching: in Unity the
1054
1064
  // element genuinely carries them, which is why `.unity-button` in author USS
1055
1065
  // hits a plain `<ui:Button />`. Parts carry classes too in Unity, but which
1056
1066
  // ones is unmeasured, so none are claimed here.
1057
- classesOf: (o) => o.kind === "element" ? [...s(o.node), ...We(o.node)] : []
1058
- }, v = { ...g, statesOf: () => l }, u = St(e, v, n, i), r = {
1067
+ classesOf: (r) => r.kind === "element" ? [...o(r.node), ...We(r.node)] : []
1068
+ }, v = { ...g, statesOf: () => l }, d = St(e, v, n, i), s = {
1059
1069
  ...g,
1060
1070
  // A part inherits its owner's states: `SetEnabled(false)` disables the whole
1061
1071
  // subtree, and a part is inside it.
1062
- statesOf: (o) => u.get(o.kind === "element" ? o.node : o.owner) ?? l
1072
+ statesOf: (r) => d.get(r.kind === "element" ? r.node : r.owner) ?? l
1063
1073
  }, a = [];
1064
- let d = !1;
1065
- for (const o of $t(e)) {
1066
- if (o.builtin === !0) {
1067
- a.push(o);
1074
+ let u = !1;
1075
+ for (const r of $t(e)) {
1076
+ if (r.builtin === !0) {
1077
+ a.push(r);
1068
1078
  continue;
1069
1079
  }
1070
- const f = Te(o.rule.selectors);
1080
+ const f = Te(r.rule.selectors);
1071
1081
  if (f !== null) {
1072
1082
  i.push({
1073
1083
  kind: "unsupported-selector",
1074
1084
  message: `"${f}" is not supported in USS; the whole rule is ignored`,
1075
- at: { in: "uss", sheet: o.sheet, span: o.rule.selectorSpan }
1085
+ at: { in: "uss", sheet: r.sheet, span: r.rule.selectorSpan }
1076
1086
  });
1077
1087
  continue;
1078
1088
  }
1079
- !d && Tt(o.rule) && (d = !0, i.push({
1089
+ !u && Ot(r.rule) && (u = !0, i.push({
1080
1090
  kind: "version-dependent",
1081
1091
  message: ":root in USS names the element the stylesheet was applied to, not the document root as in CSS. This preview matches it against the <ui:UXML> element; verify against your Unity version.",
1082
- at: { in: "uss", sheet: o.sheet, span: o.rule.selectorSpan }
1083
- })), a.push(o);
1092
+ at: { in: "uss", sheet: r.sheet, span: r.rule.selectorSpan }
1093
+ })), a.push(r);
1084
1094
  }
1085
- return { ctx: r, usable: a, warnings: i };
1095
+ return { ctx: s, usable: a, warnings: i };
1086
1096
  }
1087
- function Ot(e, n) {
1097
+ function Et(e, n) {
1088
1098
  const t = n.attributes.find((l) => l.name === "style");
1089
1099
  if (t === void 0) return [];
1090
1100
  const i = pt(t);
@@ -1092,21 +1102,21 @@ function Ot(e, n) {
1092
1102
  }
1093
1103
  function Ne(e, n, t, i) {
1094
1104
  const l = [];
1095
- let s = 0;
1096
- const m = (g, v, u, r, a) => {
1097
- l.push({ property: g, value: v, origin: u, rank: r, specificity: a, order: s++, winner: !1 });
1105
+ let o = 0;
1106
+ const p = (g, v, d, s, a) => {
1107
+ l.push({ property: g, value: v, origin: d, rank: s, specificity: a, order: o++, winner: !1 });
1098
1108
  };
1099
1109
  if (n.kind === "part") {
1100
1110
  const g = F(n.owner).spec.parts[n.depth];
1101
- for (const [v, u] of Object.entries((g == null ? void 0 : g.style) ?? {}))
1102
- for (const [r, a] of J(v, u))
1103
- m(
1104
- r,
1111
+ for (const [v, d] of Object.entries((g == null ? void 0 : g.style) ?? {}))
1112
+ for (const [s, a] of Z(v, d))
1113
+ p(
1114
+ s,
1105
1115
  a,
1106
1116
  {
1107
1117
  kind: "builtin-theme",
1108
1118
  selector: `#${n.name}`,
1109
- property: r,
1119
+ property: s,
1110
1120
  unityVersion: Y
1111
1121
  },
1112
1122
  0,
@@ -1114,18 +1124,19 @@ function Ne(e, n, t, i) {
1114
1124
  );
1115
1125
  }
1116
1126
  for (const g of t.usable) {
1117
- let v = null, u = [];
1118
- for (const r of g.rule.selectors) {
1119
- if (!$e(r, n, t.ctx)) continue;
1120
- const a = xt(r);
1121
- (v === null || Oe(a, v) > 0) && (v = a, u = gt(r));
1127
+ if (g.scope !== void 0 && !Tt(n, g.scope, t.ctx)) continue;
1128
+ let v = null, d = [];
1129
+ for (const s of g.rule.selectors) {
1130
+ if (!$e(s, n, t.ctx)) continue;
1131
+ const a = xt(s);
1132
+ (v === null || Oe(a, v) > 0) && (v = a, d = gt(s));
1122
1133
  }
1123
- v !== null && (i == null || i.add(g), g.rule.declarations.forEach((r, a) => {
1124
- for (const [d, o] of J(r.property, r.value)) {
1134
+ v !== null && (i == null || i.add(g), g.rule.declarations.forEach((s, a) => {
1135
+ for (const [u, r] of Z(s.property, s.value)) {
1125
1136
  const f = g.builtin === !0 ? {
1126
1137
  kind: "builtin-theme",
1127
1138
  selector: kt(g.rule),
1128
- property: d,
1139
+ property: u,
1129
1140
  unityVersion: Y
1130
1141
  } : {
1131
1142
  kind: "rule",
@@ -1134,22 +1145,22 @@ function Ne(e, n, t, i) {
1134
1145
  declIndex: a,
1135
1146
  // Omitted rather than set to [] when unconditional, so the
1136
1147
  // common case stays the shape it has always been.
1137
- ...u.length > 0 ? { states: u } : {}
1148
+ ...d.length > 0 ? { states: d } : {}
1138
1149
  };
1139
- m(d, o, f, g.builtin === !0 ? 0 : 1, v);
1150
+ p(u, r, f, g.builtin === !0 ? 0 : 1, v);
1140
1151
  }
1141
1152
  }));
1142
1153
  }
1143
1154
  if (n.kind === "element") {
1144
1155
  const g = n.node;
1145
- Ot(e, g).forEach((v, u) => {
1146
- for (const [r, a] of J(v.property, v.value))
1147
- m(r, a, { kind: "inline", node: g.id, declIndex: u }, 1, vt);
1156
+ Et(e, g).forEach((v, d) => {
1157
+ for (const [s, a] of Z(v.property, v.value))
1158
+ p(s, a, { kind: "inline", node: g.id, declIndex: d }, 1, vt);
1148
1159
  });
1149
1160
  }
1150
1161
  return l;
1151
1162
  }
1152
- function Ce(e) {
1163
+ function Ie(e) {
1153
1164
  const n = /* @__PURE__ */ new Map();
1154
1165
  for (const t of e) {
1155
1166
  const i = n.get(t.property);
@@ -1167,93 +1178,93 @@ function Ce(e) {
1167
1178
  for (const t of n.values()) t.winner = !0;
1168
1179
  return n;
1169
1180
  }
1170
- const Et = /var\(\s*(--[^,)\s]+)\s*(?:,([^)]*))?\)/;
1181
+ const Nt = /var\(\s*(--[^,)\s]+)\s*(?:,([^)]*))?\)/;
1171
1182
  function ie(e, n, t = /* @__PURE__ */ new Set()) {
1172
1183
  var l;
1173
1184
  let i = e;
1174
- for (let s = 0; s < 32; s++) {
1175
- const m = Et.exec(i);
1176
- if (m === null) return i;
1177
- const g = m[1], v = (l = m[2]) == null ? void 0 : l.trim();
1185
+ for (let o = 0; o < 32; o++) {
1186
+ const p = Nt.exec(i);
1187
+ if (p === null) return i;
1188
+ const g = p[1], v = (l = p[2]) == null ? void 0 : l.trim();
1178
1189
  if (t.has(g)) return null;
1179
- const u = /* @__PURE__ */ new Set([...t, g]), r = n.get(g), a = r !== void 0 ? ie(r, n, u) : v !== void 0 && v.length > 0 ? ie(v, n, u) : null;
1190
+ const d = /* @__PURE__ */ new Set([...t, g]), s = n.get(g), a = s !== void 0 ? ie(s, n, d) : v !== void 0 && v.length > 0 ? ie(v, n, d) : null;
1180
1191
  if (a === null) return null;
1181
- i = i.slice(0, m.index) + a + i.slice(m.index + m[0].length);
1192
+ i = i.slice(0, p.index) + a + i.slice(p.index + p[0].length);
1182
1193
  }
1183
1194
  return null;
1184
1195
  }
1185
- function Nt(e, n) {
1196
+ function It(e, n) {
1186
1197
  const t = Ee(e, n), i = [...t.warnings], l = /* @__PURE__ */ new Map();
1187
- let s = !1;
1188
- const m = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Set(), v = (r, a, d) => {
1189
- const o = Ne(e, r, t, g);
1190
- !s && o.some((h) => h.origin.kind === "builtin-theme") && (s = !0);
1191
- const f = Ce(o), w = /* @__PURE__ */ new Map();
1192
- for (const [h, x] of a)
1193
- h.startsWith("--") && w.set(h, x.value);
1194
- for (const [h, x] of f)
1195
- h.startsWith("--") && w.set(h, x.value);
1198
+ let o = !1;
1199
+ const p = /* @__PURE__ */ new Map(), g = /* @__PURE__ */ new Set(), v = (s, a, u) => {
1200
+ const r = Ne(e, s, t, g);
1201
+ !o && r.some((h) => h.origin.kind === "builtin-theme") && (o = !0);
1202
+ const f = Ie(r), b = /* @__PURE__ */ new Map();
1203
+ for (const [h, w] of a)
1204
+ h.startsWith("--") && b.set(h, w.value);
1205
+ for (const [h, w] of f)
1206
+ h.startsWith("--") && b.set(h, w.value);
1196
1207
  const c = /* @__PURE__ */ new Map();
1197
- for (const [h, x] of a) c.set(h, x);
1198
- for (const [h, x] of f) {
1199
- const y = ie(x.value, w);
1208
+ for (const [h, w] of a) c.set(h, w);
1209
+ for (const [h, w] of f) {
1210
+ const y = ie(w.value, b);
1200
1211
  if (y === null) {
1201
1212
  i.push({
1202
1213
  kind: "unsupported-property",
1203
1214
  message: `${h}: var() reference could not be resolved; declaration dropped`,
1204
- node: d
1215
+ node: u
1205
1216
  });
1206
1217
  continue;
1207
1218
  }
1208
- c.set(h, { value: y, origin: x.origin });
1219
+ c.set(h, { value: y, origin: w.origin });
1209
1220
  }
1210
1221
  const S = /* @__PURE__ */ new Map();
1211
- for (const [h, x] of c)
1222
+ for (const [h, w] of c)
1212
1223
  He(h) && S.set(h, {
1213
- value: x.value,
1214
- origin: { kind: "inherited", from: d, origin: x.origin }
1224
+ value: w.value,
1225
+ origin: { kind: "inherited", from: u, origin: w.origin }
1215
1226
  });
1216
1227
  return { computed: c, forChildren: S };
1217
- }, u = (r, a) => {
1218
- const d = v({ kind: "element", node: r }, a, r.id);
1219
- l.set(r.id, d.computed);
1220
- let o = d.forChildren;
1221
- const f = F(r).spec.parts;
1228
+ }, d = (s, a) => {
1229
+ const u = v({ kind: "element", node: s }, a, s.id);
1230
+ l.set(s.id, u.computed);
1231
+ let r = u.forChildren;
1232
+ const f = F(s).spec.parts;
1222
1233
  if (f.length > 0) {
1223
- const w = /* @__PURE__ */ new Map();
1234
+ const b = /* @__PURE__ */ new Map();
1224
1235
  f.forEach((c, S) => {
1225
1236
  const h = v(
1226
- { kind: "part", owner: r, name: c.name, depth: S },
1227
- o,
1228
- r.id
1237
+ { kind: "part", owner: s, name: c.name, depth: S },
1238
+ r,
1239
+ s.id
1229
1240
  );
1230
- w.set(c.name, h.computed), o = h.forChildren;
1231
- }), m.set(r.id, w);
1241
+ b.set(c.name, h.computed), r = h.forChildren;
1242
+ }), p.set(s.id, b);
1232
1243
  }
1233
- for (const w of r.children) u(w, o);
1244
+ for (const b of s.children) d(b, r);
1234
1245
  };
1235
- u(e.root, /* @__PURE__ */ new Map()), s && i.push({
1246
+ d(e.root, /* @__PURE__ */ new Map()), o && i.push({
1236
1247
  kind: "version-dependent",
1237
1248
  message: `Unity's control defaults were applied, as measured on ${Y} (Unity ships these as a theme stylesheet). Other versions may use different values; see src/controls/theme.ts.`
1238
1249
  });
1239
- for (const r of t.usable) {
1240
- if (r.builtin === !0 || g.has(r)) continue;
1241
- const a = wt(r.rule.selectors);
1250
+ for (const s of t.usable) {
1251
+ if (s.builtin === !0 || g.has(s)) continue;
1252
+ const a = wt(s.rule.selectors);
1242
1253
  a.length !== 0 && i.push({
1243
1254
  kind: "unsupported-selector",
1244
1255
  message: `${a.join(", ")} matched nothing. Those names belong to the elements a control builds for itself, and only controls with a renderer of their own have them — ${Be().join(", ")}. Anything else is drawn as a plain box and has no parts to style.`,
1245
- at: { in: "uss", sheet: r.sheet, span: r.rule.selectorSpan }
1256
+ at: { in: "uss", sheet: s.sheet, span: s.rule.selectorSpan }
1246
1257
  });
1247
1258
  }
1248
- return { styles: l, partStyles: m, warnings: i };
1259
+ return { styles: l, partStyles: p, warnings: i };
1249
1260
  }
1250
- function zt(e, n, t, i) {
1251
- const l = Ee(e, i), s = Ne(e, { kind: "element", node: n }, l).filter(
1252
- (m) => m.property === t
1261
+ function jt(e, n, t, i) {
1262
+ const l = Ee(e, i), o = Ne(e, { kind: "element", node: n }, l).filter(
1263
+ (p) => p.property === t
1253
1264
  );
1254
- return Ce(s), s;
1265
+ return Ie(o), o;
1255
1266
  }
1256
- const _t = [
1267
+ const Wt = [
1257
1268
  {
1258
1269
  id: "text-metrics",
1259
1270
  kind: "unreproducible",
@@ -1273,10 +1284,10 @@ const _t = [
1273
1284
  detail: "The yoga-layout version this package depends on resolves a main-axis percentage against an indefinite parent differently from the Yoga vendored inside Unity 6000.0.40f1. Not configurable: no available setting reproduces Unity's answer without breaking cases that currently match. Fully deterministic and pinned to a case in docs/accuracy.md — this always reproduces the same way, it just cannot be fixed from inside this repository."
1274
1285
  }
1275
1286
  ];
1276
- function we(e) {
1287
+ function be(e) {
1277
1288
  return e !== void 0 && /[A-Za-z0-9_.:-]/.test(e);
1278
1289
  }
1279
- function be(e) {
1290
+ function xe(e) {
1280
1291
  return e !== void 0 && /[A-Za-z_]/.test(e);
1281
1292
  }
1282
1293
  function Ct(e) {
@@ -1287,14 +1298,14 @@ function At(e) {
1287
1298
  const n = [];
1288
1299
  let t = 0, i = 0;
1289
1300
  const l = () => i++;
1290
- function s(a, d, o) {
1301
+ function o(a, u, r) {
1291
1302
  n.push({
1292
1303
  kind: "malformed",
1293
1304
  message: a,
1294
- at: { in: "uxml", span: { start: d, end: o } }
1305
+ at: { in: "uxml", span: { start: u, end: r } }
1295
1306
  });
1296
1307
  }
1297
- function m() {
1308
+ function p() {
1298
1309
  for (; Ct(e[t]); ) t++;
1299
1310
  }
1300
1311
  function g() {
@@ -1304,23 +1315,23 @@ function At(e) {
1304
1315
  t = e.length;
1305
1316
  return;
1306
1317
  }
1307
- const d = e[a + 1];
1308
- if (d === "!") {
1318
+ const u = e[a + 1];
1319
+ if (u === "!") {
1309
1320
  if (e.startsWith("<!--", a)) {
1310
- const o = e.indexOf("-->", a + 4);
1311
- t = o < 0 ? e.length : o + 3;
1321
+ const r = e.indexOf("-->", a + 4);
1322
+ t = r < 0 ? e.length : r + 3;
1312
1323
  } else if (e.startsWith("<![CDATA[", a)) {
1313
- const o = e.indexOf("]]>", a + 9);
1314
- t = o < 0 ? e.length : o + 3;
1324
+ const r = e.indexOf("]]>", a + 9);
1325
+ t = r < 0 ? e.length : r + 3;
1315
1326
  } else {
1316
- const o = e.indexOf(">", a);
1317
- t = o < 0 ? e.length : o + 1;
1327
+ const r = e.indexOf(">", a);
1328
+ t = r < 0 ? e.length : r + 1;
1318
1329
  }
1319
1330
  continue;
1320
1331
  }
1321
- if (d === "?") {
1322
- const o = e.indexOf("?>", a + 2);
1323
- t = o < 0 ? e.length : o + 2;
1332
+ if (u === "?") {
1333
+ const r = e.indexOf("?>", a + 2);
1334
+ t = r < 0 ? e.length : r + 2;
1324
1335
  continue;
1325
1336
  }
1326
1337
  t = a;
@@ -1329,35 +1340,35 @@ function At(e) {
1329
1340
  }
1330
1341
  function v() {
1331
1342
  const a = t;
1332
- for (; we(e[t]); ) t++;
1333
- const d = e.slice(a, t), o = d.indexOf(":");
1334
- return o < 0 ? { prefix: null, local: d } : { prefix: d.slice(0, o), local: d.slice(o + 1) };
1343
+ for (; be(e[t]); ) t++;
1344
+ const u = e.slice(a, t), r = u.indexOf(":");
1345
+ return r < 0 ? { prefix: null, local: u } : { prefix: u.slice(0, r), local: u.slice(r + 1) };
1335
1346
  }
1336
- function u() {
1347
+ function d() {
1337
1348
  const a = t;
1338
- for (; we(e[t]); ) t++;
1349
+ for (; be(e[t]); ) t++;
1339
1350
  if (t === a) return null;
1340
- const d = e.slice(a, t), o = t;
1341
- if (m(), e[t] !== "=")
1342
- return t = o, s(`attribute "${d}" has no value`, a, o), { name: d, value: "", span: { start: a, end: o } };
1343
- t++, m();
1351
+ const u = e.slice(a, t), r = t;
1352
+ if (p(), e[t] !== "=")
1353
+ return t = r, o(`attribute "${u}" has no value`, a, r), { name: u, value: "", span: { start: a, end: r } };
1354
+ t++, p();
1344
1355
  const f = e[t];
1345
1356
  if (f !== '"' && f !== "'")
1346
- return s(`attribute "${d}" has an unquoted value`, a, t), { name: d, value: "", span: { start: a, end: t } };
1357
+ return o(`attribute "${u}" has an unquoted value`, a, t), { name: u, value: "", span: { start: a, end: t } };
1347
1358
  t++;
1348
- const w = t, c = e.indexOf(f, t);
1349
- return c < 0 ? (s(`attribute "${d}" has an unterminated value`, a, e.length), t = e.length, { name: d, value: e.slice(w), span: { start: a, end: t } }) : (t = c + 1, { name: d, value: e.slice(w, c), span: { start: a, end: t } });
1359
+ const b = t, c = e.indexOf(f, t);
1360
+ return c < 0 ? (o(`attribute "${u}" has an unterminated value`, a, e.length), t = e.length, { name: u, value: e.slice(b), span: { start: a, end: t } }) : (t = c + 1, { name: u, value: e.slice(b, c), span: { start: a, end: t } });
1350
1361
  }
1351
- function r() {
1362
+ function s() {
1352
1363
  const a = t;
1353
1364
  t++;
1354
- const d = v(), o = [];
1365
+ const u = v(), r = [];
1355
1366
  let f = !1;
1356
1367
  for (; ; ) {
1357
- m();
1368
+ p();
1358
1369
  const y = e[t];
1359
1370
  if (y === void 0) {
1360
- s("unterminated open tag", a, e.length);
1371
+ o("unterminated open tag", a, e.length);
1361
1372
  break;
1362
1373
  }
1363
1374
  if (y === ">") {
@@ -1368,55 +1379,55 @@ function At(e) {
1368
1379
  t += 2, f = !0;
1369
1380
  break;
1370
1381
  }
1371
- const b = u();
1372
- if (b === null) {
1382
+ const x = d();
1383
+ if (x === null) {
1373
1384
  t++;
1374
1385
  continue;
1375
1386
  }
1376
- o.push(b);
1387
+ r.push(x);
1377
1388
  }
1378
- const w = { start: a, end: t };
1389
+ const b = { start: a, end: t };
1379
1390
  if (f)
1380
1391
  return {
1381
1392
  id: l(),
1382
- name: d,
1383
- attributes: o,
1393
+ name: u,
1394
+ attributes: r,
1384
1395
  children: [],
1385
- spans: { openTag: w, inner: { start: t, end: t }, closeTag: null },
1396
+ spans: { openTag: b, inner: { start: t, end: t }, closeTag: null },
1386
1397
  tagDirty: !1,
1387
1398
  childrenDirty: !1
1388
1399
  };
1389
1400
  const c = t, S = [];
1390
1401
  for (; ; ) {
1391
1402
  if (g(), t >= e.length) {
1392
- s(`unterminated element <${Ae(d)}>`, a, e.length);
1403
+ o(`unterminated element <${Ce(u)}>`, a, e.length);
1393
1404
  break;
1394
1405
  }
1395
1406
  const y = e[t + 1];
1396
1407
  if (y === "/") break;
1397
- if (!be(y)) {
1408
+ if (!xe(y)) {
1398
1409
  t++;
1399
1410
  continue;
1400
1411
  }
1401
- S.push(r());
1412
+ S.push(s());
1402
1413
  }
1403
1414
  const h = t;
1404
- let x = null;
1415
+ let w = null;
1405
1416
  if (e.startsWith("</", t)) {
1406
- const y = e.indexOf(">", t), b = y < 0 ? e.length : y + 1;
1407
- y < 0 && s("unterminated end tag", t, b), x = { start: t, end: b }, t = b;
1417
+ const y = e.indexOf(">", t), x = y < 0 ? e.length : y + 1;
1418
+ y < 0 && o("unterminated end tag", t, x), w = { start: t, end: x }, t = x;
1408
1419
  }
1409
1420
  return {
1410
1421
  id: l(),
1411
- name: d,
1412
- attributes: o,
1422
+ name: u,
1423
+ attributes: r,
1413
1424
  children: S,
1414
- spans: { openTag: w, inner: { start: c, end: h }, closeTag: x },
1425
+ spans: { openTag: b, inner: { start: c, end: h }, closeTag: w },
1415
1426
  tagDirty: !1,
1416
1427
  childrenDirty: !1
1417
1428
  };
1418
1429
  }
1419
- return g(), t < e.length && be(e[t + 1]) ? { root: r(), warnings: n } : (s("no root element", 0, 0), {
1430
+ return g(), t < e.length && xe(e[t + 1]) ? { root: s(), warnings: n } : (o("no root element", 0, 0), {
1420
1431
  root: {
1421
1432
  id: l(),
1422
1433
  name: { prefix: null, local: "" },
@@ -1429,202 +1440,220 @@ function At(e) {
1429
1440
  warnings: n
1430
1441
  });
1431
1442
  }
1432
- function Ae(e) {
1443
+ function Ce(e) {
1433
1444
  return e.prefix === null ? e.local : `${e.prefix}:${e.local}`;
1434
1445
  }
1435
- function It(e, n) {
1436
- const t = (u) => e.slice(u.start, u.end);
1437
- function i(u) {
1438
- return u.spans.closeTag !== null ? u.spans.closeTag.end : Math.max(u.spans.openTag.end, u.spans.inner.end);
1439
- }
1440
- function l(u) {
1441
- return u.includes('"') ? u.includes("'") ? `"${u.replace(/"/g, "&quot;")}"` : `'${u}'` : `"${u}"`;
1442
- }
1443
- function s(u) {
1444
- const r = u.attributes.map((d) => ` ${d.name}=${l(d.value)}`).join(""), a = Ae(u.name);
1445
- return u.spans.closeTag === null ? `<${a}${r} />` : `<${a}${r}>`;
1446
- }
1447
- function m(u) {
1448
- var o, f;
1449
- const r = t(u.spans.inner), a = ((o = /^[ \t]*\r?\n[ \t]*/.exec(r)) == null ? void 0 : o[0]) ?? "", d = ((f = /\r?\n[ \t]*$/.exec(r)) == null ? void 0 : f[0]) ?? "";
1450
- return { between: a, before: a, after: d };
1451
- }
1452
- function g(u) {
1453
- const { inner: r } = u.spans;
1454
- if (u.children.length === 0) return t(r);
1455
- if (u.childrenDirty) {
1456
- const { between: o, before: f, after: w } = m(u);
1457
- return f + u.children.map(v).join(o) + w;
1446
+ function Rt(e, n) {
1447
+ const t = (d) => e.slice(d.start, d.end);
1448
+ function i(d) {
1449
+ return d.spans.closeTag !== null ? d.spans.closeTag.end : Math.max(d.spans.openTag.end, d.spans.inner.end);
1450
+ }
1451
+ function l(d) {
1452
+ return d.includes('"') ? d.includes("'") ? `"${d.replace(/"/g, "&quot;")}"` : `'${d}'` : `"${d}"`;
1453
+ }
1454
+ function o(d) {
1455
+ const s = d.attributes.map((u) => ` ${u.name}=${l(u.value)}`).join(""), a = Ce(d.name);
1456
+ return d.spans.closeTag === null ? `<${a}${s} />` : `<${a}${s}>`;
1457
+ }
1458
+ function p(d) {
1459
+ var r, f;
1460
+ const s = t(d.spans.inner), a = ((r = /^[ \t]*\r?\n[ \t]*/.exec(s)) == null ? void 0 : r[0]) ?? "", u = ((f = /\r?\n[ \t]*$/.exec(s)) == null ? void 0 : f[0]) ?? "";
1461
+ return { between: a, before: a, after: u };
1462
+ }
1463
+ function g(d) {
1464
+ const { inner: s } = d.spans;
1465
+ if (d.children.length === 0) return t(s);
1466
+ if (d.childrenDirty) {
1467
+ const { between: r, before: f, after: b } = p(d);
1468
+ return f + d.children.map(v).join(r) + b;
1458
1469
  }
1459
- let a = "", d = r.start;
1460
- for (const o of u.children)
1461
- a += e.slice(d, o.spans.openTag.start), a += v(o), d = i(o);
1462
- return a + e.slice(d, r.end);
1470
+ let a = "", u = s.start;
1471
+ for (const r of d.children)
1472
+ a += e.slice(u, r.spans.openTag.start), a += v(r), u = i(r);
1473
+ return a + e.slice(u, s.end);
1463
1474
  }
1464
- function v(u) {
1465
- const r = u.tagDirty ? s(u) : t(u.spans.openTag), a = u.spans.closeTag === null ? "" : t(u.spans.closeTag);
1466
- return r + g(u) + a;
1475
+ function v(d) {
1476
+ const s = d.tagDirty ? o(d) : t(d.spans.openTag), a = d.spans.closeTag === null ? "" : t(d.spans.closeTag);
1477
+ return s + g(d) + a;
1467
1478
  }
1468
1479
  return e.slice(0, n.spans.openTag.start) + v(n) + e.slice(i(n));
1469
1480
  }
1470
1481
  function Mt(e) {
1471
- const n = e.source, t = (r) => n.slice(r.start, r.end);
1472
- function i(r) {
1473
- return r.parts.map((a, d) => {
1474
- const o = d === 0 ? "" : a.combinator === "child" ? " > " : " ", f = a.simple.map((w) => {
1475
- switch (w.kind) {
1482
+ const n = e.source, t = (s) => n.slice(s.start, s.end);
1483
+ function i(s) {
1484
+ return s.parts.map((a, u) => {
1485
+ const r = u === 0 ? "" : a.combinator === "child" ? " > " : " ", f = a.simple.map((b) => {
1486
+ switch (b.kind) {
1476
1487
  case "universal":
1477
1488
  return "*";
1478
1489
  case "type":
1479
- return w.name;
1490
+ return b.name;
1480
1491
  case "class":
1481
- return `.${w.name}`;
1492
+ return `.${b.name}`;
1482
1493
  case "name":
1483
- return `#${w.name}`;
1494
+ return `#${b.name}`;
1484
1495
  case "pseudo":
1485
- return `:${w.name}`;
1496
+ return `:${b.name}`;
1486
1497
  case "unknown":
1487
- return w.text;
1498
+ return b.text;
1488
1499
  }
1489
1500
  }).join("");
1490
- return o + f;
1501
+ return r + f;
1491
1502
  }).join("");
1492
1503
  }
1493
- function l(r) {
1504
+ function l(s) {
1494
1505
  var c, S;
1495
- const a = r.declarations[0];
1506
+ const a = s.declarations[0];
1496
1507
  if (a === void 0) return { between: "", before: "", after: "" };
1497
- const d = n.lastIndexOf(`
1498
- `, a.span.start), o = d < 0 ? "" : n.slice(d, a.span.start), f = n.slice(r.selectorSpan.end, r.span.end), w = ((S = (c = /\r?\n[ \t]*\}$/.exec(f)) == null ? void 0 : c[0]) == null ? void 0 : S.replace(/\}$/, "")) ?? "";
1499
- return { between: `;${o}`, before: o, after: `;${w}` };
1500
- }
1501
- function s(r) {
1502
- const a = r.selectorDirty ? r.selectors.map(i).join(", ") : t(r.selectorSpan);
1503
- if (r.declarations.length === 0)
1504
- return a + n.slice(r.selectorSpan.end, r.span.end);
1505
- const d = n.slice(r.selectorSpan.end, r.declarations[0].span.start);
1506
- if (r.declarationsDirty) {
1507
- const { between: w, before: c, after: S } = l(r), h = d.slice(0, d.indexOf("{") + 1), x = r.declarations.map(m).join(w);
1508
- return `${a}${h}${c}${x}${S}}`;
1508
+ const u = n.lastIndexOf(`
1509
+ `, a.span.start), r = u < 0 ? "" : n.slice(u, a.span.start), f = n.slice(s.selectorSpan.end, s.span.end), b = ((S = (c = /\r?\n[ \t]*\}$/.exec(f)) == null ? void 0 : c[0]) == null ? void 0 : S.replace(/\}$/, "")) ?? "";
1510
+ return { between: `;${r}`, before: r, after: `;${b}` };
1511
+ }
1512
+ function o(s) {
1513
+ const a = s.selectorDirty ? s.selectors.map(i).join(", ") : t(s.selectorSpan);
1514
+ if (s.declarations.length === 0)
1515
+ return a + n.slice(s.selectorSpan.end, s.span.end);
1516
+ const u = n.slice(s.selectorSpan.end, s.declarations[0].span.start);
1517
+ if (s.declarationsDirty) {
1518
+ const { between: b, before: c, after: S } = l(s), h = u.slice(0, u.indexOf("{") + 1), w = s.declarations.map(p).join(b);
1519
+ return `${a}${h}${c}${w}${S}}`;
1509
1520
  }
1510
- let o = a, f = r.selectorSpan.end;
1511
- for (const w of r.declarations)
1512
- o += n.slice(f, w.span.start), o += m(w), f = w.span.end;
1513
- return o + n.slice(f, r.span.end);
1521
+ let r = a, f = s.selectorSpan.end;
1522
+ for (const b of s.declarations)
1523
+ r += n.slice(f, b.span.start), r += p(b), f = b.span.end;
1524
+ return r + n.slice(f, s.span.end);
1514
1525
  }
1515
- function m(r) {
1516
- return r.dirty ? `${r.property}: ${r.value}` : t(r.span);
1526
+ function p(s) {
1527
+ return s.dirty ? `${s.property}: ${s.value}` : t(s.span);
1517
1528
  }
1518
- function g(r) {
1519
- return r.kind === "rule" ? s(r.rule) : t(r.span);
1529
+ function g(s) {
1530
+ return s.kind === "rule" ? o(s.rule) : t(s.span);
1520
1531
  }
1521
- let v = "", u = 0;
1522
- for (const r of e.items) {
1523
- const a = r.kind === "rule" ? r.rule.span : r.span;
1524
- v += n.slice(u, a.start), v += g(r), u = a.end;
1532
+ let v = "", d = 0;
1533
+ for (const s of e.items) {
1534
+ const a = s.kind === "rule" ? s.rule.span : s.span;
1535
+ v += n.slice(d, a.start), v += g(s), d = a.end;
1525
1536
  }
1526
- return v + n.slice(u);
1537
+ return v + n.slice(d);
1527
1538
  }
1528
- function Ie(e, n = []) {
1539
+ function Ae(e, n = []) {
1529
1540
  var t;
1530
- if (e.name.local === "Style") {
1531
- const i = (t = e.attributes.find((l) => l.name === "src")) == null ? void 0 : t.value;
1532
- i !== void 0 && i.length > 0 && n.push(ye(i));
1541
+ for (const i of e.children) {
1542
+ if (i.name.local === "Style") {
1543
+ const l = (t = i.attributes.find((o) => o.name === "src")) == null ? void 0 : t.value;
1544
+ l !== void 0 && l.length > 0 && n.push({ url: re(l), scope: e.id });
1545
+ }
1546
+ Ae(i, n);
1533
1547
  }
1534
- for (const i of e.children) Ie(i, n);
1535
1548
  return n;
1536
1549
  }
1537
- function jt(e, n, t) {
1538
- var g, v;
1539
- const i = At(e), l = [...i.warnings], s = [], m = [];
1540
- for (const u of Ie(i.root)) {
1541
- const r = ((g = t == null ? void 0 : t.resolveImport) == null ? void 0 : g.call(t, u)) ?? null;
1542
- if (r === null) {
1550
+ function Ut(e) {
1551
+ return e.startsWith("project://") || e.startsWith("/");
1552
+ }
1553
+ function Bt(e, n, t) {
1554
+ var v, d;
1555
+ const i = At(e), l = [...i.warnings], o = [], p = [], g = [];
1556
+ for (const { url: s, scope: a } of Ae(i.root)) {
1557
+ const u = ((v = t == null ? void 0 : t.resolveImport) == null ? void 0 : v.call(t, s, null)) ?? null;
1558
+ if (u === null) {
1543
1559
  l.push({
1544
1560
  kind: "import-unresolved",
1545
- message: (t == null ? void 0 : t.resolveImport) === void 0 ? `<Style src="${u}"> was not loaded: pass resolveImport to read it, or pass the stylesheet text directly. Until then this document renders unstyled.` : `<Style src="${u}"> could not be resolved`,
1561
+ message: (t == null ? void 0 : t.resolveImport) === void 0 ? `<Style src="${s}"> was not loaded: pass resolveImport to read it, or pass the stylesheet text directly. Until then this document renders unstyled.` : `<Style src="${s}"> could not be resolved`,
1546
1562
  node: i.root.id
1547
1563
  });
1548
1564
  continue;
1549
1565
  }
1550
- m.push({ text: r, origin: u });
1551
- }
1552
- if (n !== void 0 || m.length > 0) {
1553
- const u = /* @__PURE__ */ new Set(), r = [
1554
- ...m,
1555
- ...n === void 0 ? [] : [{ text: n, origin: null }]
1556
- ];
1557
- for (; r.length > 0; ) {
1558
- const a = r.shift(), d = s.length, o = re(a.text, a.origin, d);
1559
- s.push(o.sheet), l.push(...o.warnings);
1560
- for (const f of o.sheet.items) {
1561
- if (f.kind !== "import" || u.has(f.url)) continue;
1562
- u.add(f.url);
1563
- const w = ((v = t == null ? void 0 : t.resolveImport) == null ? void 0 : v.call(t, f.url)) ?? null;
1564
- if (w === null) {
1566
+ g.push({ text: u, origin: s, scope: a });
1567
+ }
1568
+ if (n !== void 0 || g.length > 0) {
1569
+ const s = /* @__PURE__ */ new Map(), a = [];
1570
+ let u = 0;
1571
+ for (const r of g) {
1572
+ const f = u++;
1573
+ a.push({ text: r.text, origin: r.origin, sheet: f }), p.push({ sheet: f, scope: r.scope });
1574
+ }
1575
+ if (n !== void 0) {
1576
+ const r = u++;
1577
+ a.push({ text: n, origin: null, sheet: r }), p.push({ sheet: r, scope: i.root.id });
1578
+ }
1579
+ for (; a.length > 0; ) {
1580
+ const r = a.shift(), f = r.sheet, b = oe(r.text, r.origin, f);
1581
+ o.push(b.sheet), l.push(...b.warnings);
1582
+ for (const c of b.sheet.items) {
1583
+ if (c.kind !== "import") continue;
1584
+ const S = Ut(c.url) ? c.url : JSON.stringify([c.url, r.origin]);
1585
+ if (s.has(S)) {
1586
+ const y = s.get(S);
1587
+ y != null && (c.resolvedSheet = y);
1588
+ continue;
1589
+ }
1590
+ s.set(S, null);
1591
+ const h = ((d = t == null ? void 0 : t.resolveImport) == null ? void 0 : d.call(t, c.url, r.origin)) ?? null;
1592
+ if (h === null) {
1565
1593
  l.push({
1566
1594
  kind: "import-unresolved",
1567
- message: (t == null ? void 0 : t.resolveImport) === void 0 ? `@import "${f.url}" was not loaded: pass resolveImport to read it` : `@import "${f.url}" could not be resolved`,
1568
- at: { in: "uss", sheet: d, span: f.span }
1595
+ message: (t == null ? void 0 : t.resolveImport) === void 0 ? `@import "${c.url}" was not loaded: pass resolveImport to read it` : `@import "${c.url}" could not be resolved`,
1596
+ at: { in: "uss", sheet: f, span: c.span }
1569
1597
  });
1570
1598
  continue;
1571
1599
  }
1572
- r.push({ text: w, origin: f.url });
1600
+ const w = u++;
1601
+ s.set(S, w), c.resolvedSheet = w, a.push({ text: h, origin: c.url, sheet: w });
1573
1602
  }
1574
1603
  }
1575
1604
  }
1576
- return { source: e, root: i.root, sheets: s, warnings: l };
1605
+ return { source: e, root: i.root, sheets: o, styleRoots: p, warnings: l };
1577
1606
  }
1578
- function Wt(e) {
1607
+ function Ft(e) {
1579
1608
  const n = e.sheets[0];
1580
1609
  return {
1581
- uxml: It(e.source, e.root),
1610
+ uxml: Rt(e.source, e.root),
1582
1611
  // Only the sheet passed to `parse` round-trips. `@import`ed sheets (Phase 3)
1583
1612
  // are separate files and are not this function's to write.
1584
1613
  uss: n === void 0 ? "" : Mt(n)
1585
1614
  };
1586
1615
  }
1587
- function Bt(e, n, t) {
1616
+ function Pt(e, n, t) {
1588
1617
  const i = n.ownerDocument, l = (t == null ? void 0 : t.size) ?? {
1589
1618
  width: n.clientWidth,
1590
1619
  height: n.clientHeight
1591
- }, s = Nt(e, {
1620
+ }, o = It(e, {
1592
1621
  ...(t == null ? void 0 : t.activeStates) === void 0 ? {} : { activeStates: t.activeStates },
1593
1622
  ...(t == null ? void 0 : t.states) === void 0 ? {} : { states: t.states }
1594
- }), m = (t == null ? void 0 : t.measureText) ?? nt(i), g = et(e.root, s.styles, s.partStyles, { size: l, measureText: m });
1623
+ }), p = (t == null ? void 0 : t.measureText) ?? nt(i), g = et(e.root, o.styles, o.partStyles, { size: l, measureText: p });
1595
1624
  let v;
1596
1625
  try {
1597
- v = ft(e.root, g.boxes, g.parts, s.styles, n, {
1626
+ v = ft(e.root, g.boxes, g.parts, o.styles, n, {
1598
1627
  document: i,
1599
1628
  resolveAsset: t == null ? void 0 : t.resolveAsset
1600
1629
  });
1601
- } catch (r) {
1602
- throw g.dispose(), r;
1630
+ } catch (s) {
1631
+ throw g.dispose(), s;
1603
1632
  }
1604
- let u = !1;
1633
+ let d = !1;
1605
1634
  return {
1606
- warnings: [...s.warnings, ...g.warnings, ...v.warnings],
1635
+ warnings: [...o.warnings, ...g.warnings, ...v.warnings],
1607
1636
  elements: v.elements,
1608
1637
  boxes: g.boxes,
1609
1638
  dispose() {
1610
- u || (u = !0, g.dispose(), n.replaceChildren());
1639
+ d || (d = !0, g.dispose(), n.replaceChildren());
1611
1640
  }
1612
1641
  };
1613
1642
  }
1614
1643
  export {
1615
- _t as KNOWN_DIVERGENCES,
1644
+ Wt as KNOWN_DIVERGENCES,
1616
1645
  ct as NODE_ATTRIBUTE,
1617
1646
  ut as PART_ATTRIBUTE,
1618
1647
  dt as PART_OWNER_ATTRIBUTE,
1619
1648
  nt as createDefaultMeasureText,
1620
- zt as explainProperty,
1649
+ jt as explainProperty,
1621
1650
  He as isInherited,
1622
- Dt as isLayoutEngineReady,
1623
- Lt as liveNodeCount,
1624
- Ut as loadLayoutEngine,
1625
- jt as parse,
1626
- Bt as render,
1627
- Nt as resolveStyles,
1628
- Wt as serialize,
1651
+ zt as isLayoutEngineReady,
1652
+ _t as liveNodeCount,
1653
+ Lt as loadLayoutEngine,
1654
+ Bt as parse,
1655
+ Pt as render,
1656
+ It as resolveStyles,
1657
+ Ft as serialize,
1629
1658
  Be as supportedControlNames
1630
1659
  };