uxml-preview 0.5.1 → 0.6.1

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 it, PositionType as re, Direction as Se, Edge as J, BoxSizing as at, FlexDirection as G, Wrap as K, Justify as B, Align as L, Display as lt, Overflow as ct } from "yoga-layout/load";
2
- const je = {
1
+ import { loadYoga as gt, PositionType as fe, Direction as Re, Edge as se, BoxSizing as yt, FlexDirection as ie, Wrap as re, Justify as G, Align as W, Display as bt, Overflow as vt } from "yoga-layout/load";
2
+ const We = {
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,175 +37,175 @@ const je = {
37
37
  { name: "unity-content-container", style: { "flex-shrink": "0" } }
38
38
  ]
39
39
  }
40
- }, ie = { hasText: !1, classes: [], parts: [] }, ut = "UXML", dt = /* @__PURE__ */ new Set(["Style", "Template", "AttributeOverrides", "Bindings", "Columns"]);
41
- function de(e) {
42
- return dt.has(e.name.local);
40
+ }, pe = { hasText: !1, classes: [], parts: [] }, wt = "UXML", xt = /* @__PURE__ */ new Set(["Style", "Template", "AttributeOverrides", "Bindings", "Columns"]);
41
+ function ve(e) {
42
+ return xt.has(e.name.local);
43
43
  }
44
- function Y(e) {
44
+ function Q(e) {
45
45
  var t;
46
- if (((t = e.derived) == null ? void 0 : t.kind) === "template-container") return { spec: ie, fallback: !1 };
47
- const n = je[e.name.local];
48
- return n !== void 0 ? { spec: n, fallback: !1 } : ft(e) ? { spec: ie, fallback: !1 } : { spec: ie, fallback: !0 };
46
+ if (((t = e.derived) == null ? void 0 : t.kind) === "template-container") return { spec: pe, fallback: !1 };
47
+ const n = We[e.name.local];
48
+ return n !== void 0 ? { spec: n, fallback: !1 } : kt(e) ? { spec: pe, fallback: !1 } : { spec: pe, fallback: !0 };
49
49
  }
50
- function ft(e) {
51
- return e.name.local === ut;
50
+ function kt(e) {
51
+ return e.name.local === wt;
52
52
  }
53
- function pt(e) {
54
- return Y(e).spec.classes;
53
+ function St(e) {
54
+ return Q(e).spec.classes;
55
55
  }
56
- function ht() {
57
- return Object.keys(je);
56
+ function $t() {
57
+ return Object.keys(We);
58
58
  }
59
- function X(e) {
59
+ function ee(e) {
60
60
  const n = (t, s) => !Number.isInteger(t) || t < 0 || t > 1114111 || t >= 55296 && t <= 57343 ? s : String.fromCodePoint(t);
61
61
  return e.replace(/&#x([0-9a-f]+);/gi, (t, s) => n(parseInt(s, 16), t)).replace(/&#(\d+);/g, (t, s) => n(Number(s), t)).replace(/&lt;/g, "<").replace(/&gt;/g, ">").replace(/&quot;/g, '"').replace(/&apos;/g, "'").replace(/&amp;/g, "&");
62
62
  }
63
- function $e(e) {
63
+ function Ae(e) {
64
64
  return e !== void 0 && /[A-Za-z0-9_.:-]/.test(e);
65
65
  }
66
- function Te(e) {
66
+ function je(e) {
67
67
  return e !== void 0 && /[A-Za-z_]/.test(e);
68
68
  }
69
- function mt(e) {
69
+ function Tt(e) {
70
70
  return e === " " || e === " " || e === `
71
71
  ` || e === "\r";
72
72
  }
73
- function ze(e) {
73
+ function He(e) {
74
74
  const n = [];
75
75
  let t = 0, s = 0;
76
- const r = () => s++;
77
- function o(c, u, p) {
76
+ const i = () => s++;
77
+ function o(f, m, a) {
78
78
  n.push({
79
79
  kind: "malformed",
80
- message: c,
81
- at: { in: "uxml", span: { start: u, end: p } }
80
+ message: f,
81
+ at: { in: "uxml", span: { start: m, end: a } }
82
82
  });
83
83
  }
84
- function d() {
85
- for (; mt(e[t]); ) t++;
84
+ function c() {
85
+ for (; Tt(e[t]); ) t++;
86
86
  }
87
- function a() {
87
+ function u() {
88
88
  for (; ; ) {
89
- const c = e.indexOf("<", t);
90
- if (c < 0) {
89
+ const f = e.indexOf("<", t);
90
+ if (f < 0) {
91
91
  t = e.length;
92
92
  return;
93
93
  }
94
- const u = e[c + 1];
95
- if (u === "!") {
96
- if (e.startsWith("<!--", c)) {
97
- const p = e.indexOf("-->", c + 4);
98
- t = p < 0 ? e.length : p + 3;
99
- } else if (e.startsWith("<![CDATA[", c)) {
100
- const p = e.indexOf("]]>", c + 9);
101
- t = p < 0 ? e.length : p + 3;
94
+ const m = e[f + 1];
95
+ if (m === "!") {
96
+ if (e.startsWith("<!--", f)) {
97
+ const a = e.indexOf("-->", f + 4);
98
+ t = a < 0 ? e.length : a + 3;
99
+ } else if (e.startsWith("<![CDATA[", f)) {
100
+ const a = e.indexOf("]]>", f + 9);
101
+ t = a < 0 ? e.length : a + 3;
102
102
  } else {
103
- const p = e.indexOf(">", c);
104
- t = p < 0 ? e.length : p + 1;
103
+ const a = e.indexOf(">", f);
104
+ t = a < 0 ? e.length : a + 1;
105
105
  }
106
106
  continue;
107
107
  }
108
- if (u === "?") {
109
- const p = e.indexOf("?>", c + 2);
110
- t = p < 0 ? e.length : p + 2;
108
+ if (m === "?") {
109
+ const a = e.indexOf("?>", f + 2);
110
+ t = a < 0 ? e.length : a + 2;
111
111
  continue;
112
112
  }
113
- t = c;
113
+ t = f;
114
114
  return;
115
115
  }
116
116
  }
117
- function x() {
118
- const c = t;
119
- for (; $e(e[t]); ) t++;
120
- const u = e.slice(c, t), p = u.indexOf(":");
121
- return p < 0 ? { prefix: null, local: u } : { prefix: u.slice(0, p), local: u.slice(p + 1) };
117
+ function g() {
118
+ const f = t;
119
+ for (; Ae(e[t]); ) t++;
120
+ const m = e.slice(f, t), a = m.indexOf(":");
121
+ return a < 0 ? { prefix: null, local: m } : { prefix: m.slice(0, a), local: m.slice(a + 1) };
122
122
  }
123
123
  function h() {
124
- const c = t;
125
- for (; $e(e[t]); ) t++;
126
- if (t === c) return null;
127
- const u = e.slice(c, t), p = t;
128
- if (d(), e[t] !== "=")
129
- return t = p, o(`attribute "${u}" has no value`, c, p), { name: u, value: "", span: { start: c, end: p } };
130
- t++, d();
131
- const i = e[t];
132
- if (i !== '"' && i !== "'")
133
- return o(`attribute "${u}" has an unquoted value`, c, t), { name: u, value: "", span: { start: c, end: t } };
124
+ const f = t;
125
+ for (; Ae(e[t]); ) t++;
126
+ if (t === f) return null;
127
+ const m = e.slice(f, t), a = t;
128
+ if (c(), e[t] !== "=")
129
+ return t = a, o(`attribute "${m}" has no value`, f, a), { name: m, value: "", span: { start: f, end: a } };
130
+ t++, c();
131
+ const y = e[t];
132
+ if (y !== '"' && y !== "'")
133
+ return o(`attribute "${m}" has an unquoted value`, f, t), { name: m, value: "", span: { start: f, end: t } };
134
134
  t++;
135
- const y = t, k = e.indexOf(i, t);
136
- return k < 0 ? (o(`attribute "${u}" has an unterminated value`, c, e.length), t = e.length, { name: u, value: e.slice(y), span: { start: c, end: t } }) : (t = k + 1, { name: u, value: e.slice(y, k), span: { start: c, end: t } });
135
+ const r = t, w = e.indexOf(y, t);
136
+ return w < 0 ? (o(`attribute "${m}" has an unterminated value`, f, e.length), t = e.length, { name: m, value: e.slice(r), span: { start: f, end: t } }) : (t = w + 1, { name: m, value: e.slice(r, w), span: { start: f, end: t } });
137
137
  }
138
138
  function l() {
139
- const c = t;
139
+ const f = t;
140
140
  t++;
141
- const u = x(), p = [];
142
- let i = !1;
141
+ const m = g(), a = [];
142
+ let y = !1;
143
143
  for (; ; ) {
144
- d();
145
- const w = e[t];
146
- if (w === void 0) {
147
- o("unterminated open tag", c, e.length);
144
+ c();
145
+ const x = e[t];
146
+ if (x === void 0) {
147
+ o("unterminated open tag", f, e.length);
148
148
  break;
149
149
  }
150
- if (w === ">") {
150
+ if (x === ">") {
151
151
  t++;
152
152
  break;
153
153
  }
154
- if (w === "/" && e[t + 1] === ">") {
155
- t += 2, i = !0;
154
+ if (x === "/" && e[t + 1] === ">") {
155
+ t += 2, y = !0;
156
156
  break;
157
157
  }
158
- const g = h();
159
- if (g === null) {
158
+ const v = h();
159
+ if (v === null) {
160
160
  t++;
161
161
  continue;
162
162
  }
163
- p.push(g);
163
+ a.push(v);
164
164
  }
165
- const y = { start: c, end: t };
166
- if (i)
165
+ const r = { start: f, end: t };
166
+ if (y)
167
167
  return {
168
- id: r(),
169
- name: u,
170
- attributes: p,
168
+ id: i(),
169
+ name: m,
170
+ attributes: a,
171
171
  children: [],
172
- spans: { openTag: y, inner: { start: t, end: t }, closeTag: null },
172
+ spans: { openTag: r, inner: { start: t, end: t }, closeTag: null },
173
173
  tagDirty: !1,
174
174
  childrenDirty: !1
175
175
  };
176
- const k = t, f = [];
176
+ const w = t, b = [];
177
177
  for (; ; ) {
178
- if (a(), t >= e.length) {
179
- o(`unterminated element <${Le(u)}>`, c, e.length);
178
+ if (u(), t >= e.length) {
179
+ o(`unterminated element <${Ve(m)}>`, f, e.length);
180
180
  break;
181
181
  }
182
- const w = e[t + 1];
183
- if (w === "/") break;
184
- if (!Te(w)) {
182
+ const x = e[t + 1];
183
+ if (x === "/") break;
184
+ if (!je(x)) {
185
185
  t++;
186
186
  continue;
187
187
  }
188
- f.push(l());
188
+ b.push(l());
189
189
  }
190
- const m = t;
191
- let v = null;
190
+ const p = t;
191
+ let d = null;
192
192
  if (e.startsWith("</", t)) {
193
- const w = e.indexOf(">", t), g = w < 0 ? e.length : w + 1;
194
- w < 0 && o("unterminated end tag", t, g), v = { start: t, end: g }, t = g;
193
+ const x = e.indexOf(">", t), v = x < 0 ? e.length : x + 1;
194
+ x < 0 && o("unterminated end tag", t, v), d = { start: t, end: v }, t = v;
195
195
  }
196
196
  return {
197
- id: r(),
198
- name: u,
199
- attributes: p,
200
- children: f,
201
- spans: { openTag: y, inner: { start: k, end: m }, closeTag: v },
197
+ id: i(),
198
+ name: m,
199
+ attributes: a,
200
+ children: b,
201
+ spans: { openTag: r, inner: { start: w, end: p }, closeTag: d },
202
202
  tagDirty: !1,
203
203
  childrenDirty: !1
204
204
  };
205
205
  }
206
- return a(), t < e.length && Te(e[t + 1]) ? { root: l(), warnings: n } : (o("no root element", 0, 0), {
206
+ return u(), t < e.length && je(e[t + 1]) ? { root: l(), warnings: n } : (o("no root element", 0, 0), {
207
207
  root: {
208
- id: r(),
208
+ id: i(),
209
209
  name: { prefix: null, local: "" },
210
210
  attributes: [],
211
211
  children: [],
@@ -216,57 +216,57 @@ function ze(e) {
216
216
  warnings: n
217
217
  });
218
218
  }
219
- function Le(e) {
219
+ function Ve(e) {
220
220
  return e.prefix === null ? e.local : `${e.prefix}:${e.local}`;
221
221
  }
222
- let Ue;
223
- function gt(e) {
224
- Ue = e;
222
+ let qe;
223
+ function Et(e) {
224
+ qe = e;
225
225
  }
226
- const _e = /* @__PURE__ */ new WeakMap();
227
- function yt(e, n) {
228
- _e.set(e, n);
226
+ const Je = /* @__PURE__ */ new WeakMap();
227
+ function Ot(e, n) {
228
+ Je.set(e, n);
229
229
  }
230
- function Cn(e) {
231
- return ze(e).root.children.filter((t) => t.name.local === "Template").flatMap((t) => {
232
- const s = We(t, "src");
233
- return s === void 0 || s.length === 0 ? [] : [X(s)];
230
+ function Wn(e) {
231
+ return He(e).root.children.filter((t) => t.name.local === "Template").flatMap((t) => {
232
+ const s = Ye(t, "src");
233
+ return s === void 0 || s.length === 0 ? [] : [ee(s)];
234
234
  });
235
235
  }
236
- const Ie = 32;
237
- function We(e, n) {
236
+ const Ne = 32;
237
+ function Ye(e, n) {
238
238
  var t;
239
239
  return (t = e.attributes.find((s) => s.name === n)) == null ? void 0 : t.value;
240
240
  }
241
- function j(e, n) {
242
- const t = We(e, n);
243
- return t === void 0 ? void 0 : X(t);
241
+ function P(e, n) {
242
+ const t = Ye(e, n);
243
+ return t === void 0 ? void 0 : ee(t);
244
244
  }
245
- function Pe(e) {
245
+ function Ke(e) {
246
246
  const n = /* @__PURE__ */ new Map();
247
247
  for (const t of e.root.children) {
248
248
  if (t.name.local !== "Template") continue;
249
- const s = j(t, "name"), r = j(t, "src");
250
- s === void 0 || s.length === 0 || r === void 0 || r.length === 0 || n.set(s, { name: s, src: r, node: t });
249
+ const s = P(t, "name"), i = P(t, "src");
250
+ s === void 0 || s.length === 0 || i === void 0 || i.length === 0 || n.set(s, { name: s, src: i, node: t });
251
251
  }
252
252
  return n;
253
253
  }
254
- function Fe(e, n) {
254
+ function Ge(e, n) {
255
255
  return JSON.stringify([e, n]);
256
256
  }
257
- function bt(e) {
257
+ function It(e) {
258
258
  return /(?:^|\/)Packages\//i.test(e) || /PackageCache/i.test(e);
259
259
  }
260
- function F(e, n, t, s, r, o = {}) {
260
+ function J(e, n, t, s, i, o = {}) {
261
261
  e.push({
262
262
  kind: n,
263
263
  message: t,
264
264
  ...s === void 0 ? {} : { node: s.id },
265
- ...r === void 0 ? {} : { sourceDocument: r },
265
+ ...i === void 0 ? {} : { sourceDocument: i },
266
266
  ...o
267
267
  });
268
268
  }
269
- function se(e, n = 0, t = void 0) {
269
+ function ue(e, n = 0, t = void 0) {
270
270
  return {
271
271
  ...e,
272
272
  span: {
@@ -276,146 +276,146 @@ function se(e, n = 0, t = void 0) {
276
276
  ...t === void 0 ? {} : { sourceDocument: t }
277
277
  };
278
278
  }
279
- function Be(e) {
279
+ function Xe(e) {
280
280
  return { prefix: e.prefix, local: e.local };
281
281
  }
282
- function Ee() {
282
+ function Fe() {
283
283
  return { start: 0, end: 0 };
284
284
  }
285
- function ae(e, n) {
285
+ function he(e, n) {
286
286
  return { start: e.start + n, end: e.end + n };
287
287
  }
288
- function vt(e, n, t, s, r) {
288
+ function Dt(e, n, t, s, i) {
289
289
  return {
290
290
  id: e,
291
291
  name: n,
292
292
  attributes: t,
293
293
  children: s,
294
- spans: { openTag: Ee(), inner: Ee(), closeTag: null },
294
+ spans: { openTag: Fe(), inner: Fe(), closeTag: null },
295
295
  tagDirty: !1,
296
296
  childrenDirty: !1,
297
- ...r === void 0 ? {} : { derived: { kind: "template-container", instance: r } }
297
+ ...i === void 0 ? {} : { derived: { kind: "template-container", instance: i } }
298
298
  };
299
299
  }
300
- function wt(e, n, t) {
301
- const s = e.items.map((r) => r.kind !== "import" || r.resolvedSheet === void 0 ? r.kind === "rule" ? {
302
- ...r,
300
+ function Ct(e, n, t) {
301
+ const s = e.items.map((i) => i.kind !== "import" || i.resolvedSheet === void 0 ? i.kind === "rule" ? {
302
+ ...i,
303
303
  rule: {
304
- ...r.rule,
305
- selectors: r.rule.selectors.map((o) => ({
304
+ ...i.rule,
305
+ selectors: i.rule.selectors.map((o) => ({
306
306
  ...o,
307
- parts: o.parts.map((d) => ({ ...d, simple: [...d.simple] }))
307
+ parts: o.parts.map((c) => ({ ...c, simple: [...c.simple] }))
308
308
  })),
309
- declarations: r.rule.declarations.map((o) => ({ ...o }))
309
+ declarations: i.rule.declarations.map((o) => ({ ...o }))
310
310
  }
311
- } : { ...r } : { ...r, resolvedSheet: r.resolvedSheet + n });
311
+ } : { ...i } : { ...i, resolvedSheet: i.resolvedSheet + n });
312
312
  return { ...e, items: s, sourceDocumentFrom: t };
313
313
  }
314
- function xt(e, n) {
314
+ function Mt(e, n) {
315
315
  const t = n.sheetOffsets.get(e.document);
316
316
  if (t !== void 0) return t;
317
- const s = n.sheets.length, r = e.document.sheets.map((d, a) => s + a), o = e.document.sheets.map(() => e.url);
318
- return e.document.sheets.forEach((d, a) => {
319
- for (const x of d.items)
320
- x.kind === "import" && x.resolvedSheet !== void 0 && (o[x.resolvedSheet] = d.origin ?? e.url);
321
- }), n.sheetOffsets.set(e.document, r), e.document.sheets.forEach(
322
- (d, a) => n.sheets.push(wt(d, s, o[a]))
323
- ), r;
324
- }
325
- function He(e, n) {
317
+ const s = n.sheets.length, i = e.document.sheets.map((c, u) => s + u), o = e.document.sheets.map(() => e.url);
318
+ return e.document.sheets.forEach((c, u) => {
319
+ for (const g of c.items)
320
+ g.kind === "import" && g.resolvedSheet !== void 0 && (o[g.resolvedSheet] = c.origin ?? e.url);
321
+ }), n.sheetOffsets.set(e.document, i), e.document.sheets.forEach(
322
+ (c, u) => n.sheets.push(Ct(c, s, o[u]))
323
+ ), i;
324
+ }
325
+ function Ze(e, n) {
326
326
  const t = n.sourceOffsets.get(e);
327
327
  if (t !== void 0) return t;
328
328
  const s = n.sourceLength + 1;
329
329
  return n.sourceOffsets.set(e, s), n.sources.push(`
330
330
  ${e.source}`), n.sourceLength += e.source.length + 1, s;
331
331
  }
332
- function kt(e, n, t, s, r) {
332
+ function Rt(e, n, t, s, i) {
333
333
  for (const o of e.document.styleRoots ?? []) {
334
- const d = n[o.sheet];
335
- if (d === void 0) continue;
336
- const a = t.nodes.get(o.scope) ?? s.id;
337
- r.styleRoots.push({ sheet: d, scope: a });
334
+ const c = n[o.sheet];
335
+ if (c === void 0) continue;
336
+ const u = t.nodes.get(o.scope) ?? s.id;
337
+ i.styleRoots.push({ sheet: c, scope: u });
338
338
  }
339
339
  }
340
- function St(e) {
340
+ function At(e) {
341
341
  return e.map((n) => {
342
- const t = j(n, "name"), s = j(n, "slot");
342
+ const t = P(n, "name"), s = P(n, "slot");
343
343
  return `<${n.name.local}${t === void 0 ? "" : ` name="${t}"`}${s === void 0 ? "" : ` slot="${s}"`}>`;
344
344
  });
345
345
  }
346
- function Ve(e, n) {
347
- const t = j(e, "slot-name");
346
+ function Qe(e, n) {
347
+ const t = P(e, "slot-name");
348
348
  t !== void 0 && t.length > 0 && n.add(t);
349
- for (const s of e.children) Ve(s, n);
349
+ for (const s of e.children) Qe(s, n);
350
350
  }
351
- function q(e, n, t, s, r) {
351
+ function ne(e, n, t, s, i) {
352
352
  const o = /* @__PURE__ */ new Set();
353
- t !== null && Ve(t.document.root, o), !(o.size === 0 && n.length === 0) && F(
354
- r.warnings,
353
+ t !== null && Qe(t.document.root, o), !(o.size === 0 && n.length === 0) && J(
354
+ i.warnings,
355
355
  "template-slot-unsupported",
356
- `Template slots are unsupported; defined slot names: ${t === null ? "(unavailable)" : o.size === 0 ? "(none)" : [...o].join(", ")}; children not placed: ${n.length === 0 ? "(none)" : St(n).join(", ")}`,
356
+ `Template slots are unsupported; defined slot names: ${t === null ? "(unavailable)" : o.size === 0 ? "(none)" : [...o].join(", ")}; children not placed: ${n.length === 0 ? "(none)" : At(n).join(", ")}`,
357
357
  e,
358
358
  s,
359
359
  { reason: "not-rendered" }
360
360
  );
361
361
  }
362
- function ge(e, n) {
363
- if (!de(e)) {
364
- const t = j(e, "name");
362
+ function Ee(e, n) {
363
+ if (!ve(e)) {
364
+ const t = P(e, "name");
365
365
  t !== void 0 && t.length > 0 && n.set(t, (n.get(t) ?? 0) + 1);
366
366
  }
367
- for (const t of e.children) ge(t, n);
367
+ for (const t of e.children) Ee(t, n);
368
368
  }
369
- function Ye(e, n, t) {
370
- j(e, "name") === n && t.push(e);
371
- for (const s of e.children) Ye(s, n, t);
369
+ function et(e, n, t) {
370
+ P(e, "name") === n && t.push(e);
371
+ for (const s of e.children) et(s, n, t);
372
372
  }
373
- function $t(e, n, t, s, r) {
373
+ function jt(e, n, t, s, i) {
374
374
  if (n.length === 0) return;
375
375
  const o = /* @__PURE__ */ new Map();
376
- ge(e, o);
377
- for (const d of n) {
378
- const a = j(d, "element-name"), x = j(d, "style");
379
- if (x !== void 0 && F(
380
- r.warnings,
376
+ Ee(e, o);
377
+ for (const c of n) {
378
+ const u = P(c, "element-name"), g = P(c, "style");
379
+ if (g !== void 0 && J(
380
+ i.warnings,
381
381
  "override-style-ignored",
382
- `AttributeOverrides style for element-name "${a ?? "(missing)"}" was ignored with value "${x}"`,
383
- d,
382
+ `AttributeOverrides style for element-name "${u ?? "(missing)"}" was ignored with value "${g}"`,
383
+ c,
384
384
  s ?? void 0,
385
385
  {
386
386
  reason: "matches-unity",
387
- ...a === void 0 ? {} : { subject: { kind: "name", name: a } }
387
+ ...u === void 0 ? {} : { subject: { kind: "name", name: u } }
388
388
  }
389
- ), a === void 0 || a.length === 0) continue;
389
+ ), u === void 0 || u.length === 0) continue;
390
390
  const h = [];
391
- if (Ye(e, a, h), h.length === 0) {
391
+ if (et(e, u, h), h.length === 0) {
392
392
  const l = [...o.keys()];
393
- F(
394
- r.warnings,
393
+ J(
394
+ i.warnings,
395
395
  "override-target-missing",
396
- `AttributeOverrides target "${a}" matched no element; available names: ${l.length === 0 ? "(none)" : l.join(", ")}`,
397
- d,
396
+ `AttributeOverrides target "${u}" matched no element; available names: ${l.length === 0 ? "(none)" : l.join(", ")}`,
397
+ c,
398
398
  s ?? void 0,
399
- { reason: "invalid-value", subject: { kind: "name", name: a } }
399
+ { reason: "invalid-value", subject: { kind: "name", name: u } }
400
400
  );
401
401
  continue;
402
402
  }
403
403
  for (const l of h)
404
- for (const c of d.attributes) {
405
- if (c.name === "element-name" || c.name === "style") continue;
406
- const u = l.attributes.find((p) => p.name === c.name);
407
- u === void 0 ? l.attributes.push(se(c, t, s)) : (u.value = c.value, u.sourceDocument = s);
404
+ for (const f of c.attributes) {
405
+ if (f.name === "element-name" || f.name === "style") continue;
406
+ const m = l.attributes.find((a) => a.name === f.name);
407
+ m === void 0 ? l.attributes.push(ue(f, t, s)) : (m.value = f.value, m.sourceDocument = s);
408
408
  }
409
409
  }
410
410
  }
411
- function qe(e) {
412
- return e.name.local === "Template" || e.name.local === "Instance" ? !0 : e.children.some(qe);
411
+ function tt(e) {
412
+ return e.name.local === "Template" || e.name.local === "Instance" ? !0 : e.children.some(tt);
413
413
  }
414
- function Tt(e, n) {
414
+ function Nt(e, n) {
415
415
  let t = 0;
416
- const s = (r) => {
417
- t = Math.max(t, Number(r.id) + 1);
418
- for (const o of r.children) s(o);
416
+ const s = (i) => {
417
+ t = Math.max(t, Number(i.id) + 1);
418
+ for (const o of i.children) s(o);
419
419
  };
420
420
  return s(e.root), {
421
421
  resolver: n,
@@ -432,20 +432,20 @@ function Tt(e, n) {
432
432
  stack: []
433
433
  };
434
434
  }
435
- function It(e, n, t) {
436
- var x;
437
- const s = Fe(e.src, n);
435
+ function Ft(e, n, t) {
436
+ var g;
437
+ const s = Ge(e.src, n);
438
438
  if (t.cache.has(s)) return t.cache.get(s) ?? null;
439
- const r = ((x = t.resolver) == null ? void 0 : x.call(t, e.src, n)) ?? null;
440
- if (r === null)
441
- return t.cache.set(s, null), F(
439
+ const i = ((g = t.resolver) == null ? void 0 : g.call(t, e.src, n)) ?? null;
440
+ if (i === null)
441
+ return t.cache.set(s, null), J(
442
442
  t.warnings,
443
443
  "template-src-unresolved",
444
444
  `Template "${e.name}" src "${e.src}" could not be resolved from ${n === null ? "the entry UXML" : `"${n}"`}; attempted resolveImport("${e.src}", ${n === null ? "null" : `"${n}"`}); internal filesystem search paths: none`,
445
445
  e.node,
446
446
  n ?? void 0,
447
447
  { subject: { kind: "import", url: e.src, from: n } }
448
- ), bt(e.src) && F(
448
+ ), It(e.src) && J(
449
449
  t.warnings,
450
450
  "package-path-not-searched",
451
451
  `Template src "${e.src}" was unresolved; the resolver returned no source and the core does not independently search Unity Packages/Library/PackageCache paths`,
@@ -453,46 +453,51 @@ function It(e, n, t) {
453
453
  n ?? void 0,
454
454
  { reason: "not-rendered", subject: { kind: "import", url: e.src, from: n } }
455
455
  ), null;
456
- const o = Ue;
456
+ const o = qe;
457
457
  if (o === void 0)
458
458
  throw new Error("template parser is not registered; import parse from src/index before expansion");
459
- const d = o(
460
- r,
459
+ const c = o(
460
+ i,
461
461
  t.resolver === void 0 ? void 0 : (h, l) => t.resolver(h, l ?? e.src)
462
- ), a = {
462
+ ), u = {
463
463
  url: e.src,
464
464
  from: n,
465
- document: d,
466
- declarations: Pe(d)
465
+ document: c,
466
+ declarations: Ke(c)
467
467
  };
468
- return t.cache.set(s, a), a;
468
+ return t.cache.set(s, u), u;
469
469
  }
470
- function Et(e, n, t) {
471
- var s, r;
470
+ function Lt(e, n, t) {
471
+ var s, i, o, c;
472
472
  if (!t.reportedWarnings.has(e.document)) {
473
473
  t.reportedWarnings.add(e.document);
474
- for (const o of e.document.warnings)
475
- ((s = o.at) == null ? void 0 : s.in) === "uss" ? t.warnings.push({
476
- ...o,
477
- at: { ...o.at, sheet: n[o.at.sheet] ?? o.at.sheet },
478
- sourceDocument: ((r = e.document.sheets[o.at.sheet]) == null ? void 0 : r.origin) ?? e.url
479
- }) : t.warnings.push({ ...o, sourceDocument: e.url });
480
- }
481
- }
482
- function oe(e, n, t, s, r, o) {
483
- const d = r ? e.id : n.nextId(), a = s === null ? 0 : n.sourceOffsets.get(s.document) ?? 0, x = a === 0 || s === null ? void 0 : s.url, h = {
484
- id: d,
485
- name: Be(e.name),
486
- attributes: e.attributes.map((l) => se(l, a, x)),
474
+ for (const u of e.document.warnings)
475
+ ((s = u.at) == null ? void 0 : s.in) === "uss" ? t.warnings.push({
476
+ ...u,
477
+ at: {
478
+ ...u.at,
479
+ sheet: n[u.at.sheet] ?? u.at.sheet,
480
+ url: ((i = e.document.sheets[u.at.sheet]) == null ? void 0 : i.origin) ?? null,
481
+ from: ((o = t.sheets[n[u.at.sheet] ?? u.at.sheet]) == null ? void 0 : o.sourceDocumentFrom) ?? null
482
+ },
483
+ sourceDocument: ((c = e.document.sheets[u.at.sheet]) == null ? void 0 : c.origin) ?? e.url
484
+ }) : t.warnings.push({ ...u, sourceDocument: e.url });
485
+ }
486
+ }
487
+ function de(e, n, t, s, i, o) {
488
+ const c = i ? e.id : n.nextId(), u = s === null ? 0 : n.sourceOffsets.get(s.document) ?? 0, g = u === 0 || s === null ? void 0 : s.url, h = {
489
+ id: c,
490
+ name: Xe(e.name),
491
+ attributes: e.attributes.map((l) => ue(l, u, g)),
487
492
  children: [],
488
493
  spans: {
489
- openTag: ae(e.spans.openTag, a),
490
- inner: ae(e.spans.inner, a),
491
- closeTag: e.spans.closeTag === null ? null : ae(e.spans.closeTag, a)
494
+ openTag: he(e.spans.openTag, u),
495
+ inner: he(e.spans.inner, u),
496
+ closeTag: e.spans.closeTag === null ? null : he(e.spans.closeTag, u)
492
497
  },
493
498
  tagDirty: e.tagDirty,
494
499
  childrenDirty: e.childrenDirty,
495
- ...a === 0 || s === null ? {} : {
500
+ ...u === 0 || s === null ? {} : {
496
501
  sourceDocument: s.url,
497
502
  sourceDocumentFrom: s.from,
498
503
  sourceNode: e.id
@@ -502,33 +507,33 @@ function oe(e, n, t, s, r, o) {
502
507
  for (const l of e.children)
503
508
  if (!(l.name.local === "Template" || l.name.local === "Style")) {
504
509
  if (l.name.local === "Instance") {
505
- h.children.push(ye(l, n, s, t, o + 1));
510
+ h.children.push(Oe(l, n, s, t, o + 1));
506
511
  continue;
507
512
  }
508
- l.name.local !== "AttributeOverrides" && j(l, "slot") === void 0 && h.children.push(oe(l, n, t, s, r, o));
513
+ l.name.local !== "AttributeOverrides" && P(l, "slot") === void 0 && h.children.push(de(l, n, t, s, i, o));
509
514
  }
510
515
  return h;
511
516
  }
512
- function Ot(e, n, t, s) {
513
- He(e.document, t);
514
- const r = { nodes: /* @__PURE__ */ new Map([[e.document.root.id, n.id]]) };
517
+ function Ut(e, n, t, s) {
518
+ Ze(e.document, t);
519
+ const i = { nodes: /* @__PURE__ */ new Map([[e.document.root.id, n.id]]) };
515
520
  for (const o of e.document.root.children)
516
521
  if (!(o.name.local === "Template" || o.name.local === "Style")) {
517
522
  if (o.name.local === "Instance") {
518
- n.children.push(ye(o, t, e, r, s + 1));
523
+ n.children.push(Oe(o, t, e, i, s + 1));
519
524
  continue;
520
525
  }
521
- o.name.local !== "AttributeOverrides" && j(o, "slot") === void 0 && n.children.push(oe(o, t, r, e, !1, s));
526
+ o.name.local !== "AttributeOverrides" && P(o, "slot") === void 0 && n.children.push(de(o, t, i, e, !1, s));
522
527
  }
523
- return r;
528
+ return i;
524
529
  }
525
- function ye(e, n, t, s, r) {
526
- const o = vt(
530
+ function Oe(e, n, t, s, i) {
531
+ const o = Dt(
527
532
  n.nextId(),
528
533
  { prefix: e.name.prefix, local: "TemplateContainer" },
529
- e.attributes.filter((f) => f.name !== "template").map(
530
- (f) => se(
531
- f,
534
+ e.attributes.filter((b) => b.name !== "template").map(
535
+ (b) => ue(
536
+ b,
532
537
  t === null ? 0 : n.sourceOffsets.get(t.document) ?? 0,
533
538
  t === null || t.url.length === 0 ? null : t.url
534
539
  )
@@ -537,79 +542,79 @@ function ye(e, n, t, s, r) {
537
542
  e.id
538
543
  );
539
544
  t !== null && (o.sourceDocument = t.url.length > 0 ? t.url : null, o.sourceDocumentFrom = t.from), s.nodes.set(e.id, o.id);
540
- const d = j(e, "template"), a = e.children.filter((f) => j(f, "slot") !== void 0), x = t === null || t.url.length === 0 ? void 0 : t.url, h = t == null ? void 0 : t.declarations.get(d ?? "");
545
+ const c = P(e, "template"), u = e.children.filter((b) => P(b, "slot") !== void 0), g = t === null || t.url.length === 0 ? void 0 : t.url, h = t == null ? void 0 : t.declarations.get(c ?? "");
541
546
  if (h === void 0)
542
- return q(e, a, null, x, n), F(
547
+ return ne(e, u, null, g, n), J(
543
548
  n.warnings,
544
549
  "template-not-declared",
545
- `Instance${d === void 0 ? "" : ` template "${d}"`} has no matching Template declaration`,
550
+ `Instance${c === void 0 ? "" : ` template "${c}"`} has no matching Template declaration`,
546
551
  e,
547
- x,
552
+ g,
548
553
  {
549
554
  reason: "invalid-value",
550
- ...d === void 0 ? {} : { subject: { kind: "name", name: d } }
555
+ ...c === void 0 ? {} : { subject: { kind: "name", name: c } }
551
556
  }
552
557
  ), o;
553
- const l = t === null || t.url.length === 0 ? null : t.url, c = {
558
+ const l = t === null || t.url.length === 0 ? null : t.url, f = {
554
559
  key: JSON.stringify([h.name, h.src, l]),
555
560
  label: `${h.name}@${h.src}`
556
- }, u = n.stack.findIndex((f) => f.key === c.key);
557
- if (u >= 0) {
558
- const f = n.cache.get(Fe(h.src, l)) ?? null;
559
- q(e, a, f, x, n);
560
- const m = [...n.stack.slice(u), c].map((v) => v.label).join(" -> ");
561
- return F(
561
+ }, m = n.stack.findIndex((b) => b.key === f.key);
562
+ if (m >= 0) {
563
+ const b = n.cache.get(Ge(h.src, l)) ?? null;
564
+ ne(e, u, b, g, n);
565
+ const p = [...n.stack.slice(m), f].map((d) => d.label).join(" -> ");
566
+ return J(
562
567
  n.warnings,
563
568
  "template-cycle",
564
- `Template cycle detected: ${m}`,
569
+ `Template cycle detected: ${p}`,
565
570
  e,
566
- x,
571
+ g,
567
572
  { reason: "invalid-value" }
568
573
  ), o;
569
574
  }
570
- if (r >= Ie)
571
- return q(e, a, null, x, n), F(
575
+ if (i >= Ne)
576
+ return ne(e, u, null, g, n), J(
572
577
  n.warnings,
573
578
  "template-depth-exceeded",
574
- `Template expansion exceeded the depth limit ${Ie}: ${[
579
+ `Template expansion exceeded the depth limit ${Ne}: ${[
575
580
  ...n.stack,
576
- c
577
- ].map((f) => f.label).join(" -> ")}`,
581
+ f
582
+ ].map((b) => b.label).join(" -> ")}`,
578
583
  e,
579
- x,
584
+ g,
580
585
  { reason: "not-rendered" }
581
586
  ), o;
582
- const p = It(h, l, n);
583
- if (p === null)
584
- return q(e, a, null, x, n), o;
585
- He(p.document, n), n.stack.push(c);
586
- const i = Ot(p, o, n, r);
587
+ const a = Ft(h, l, n);
588
+ if (a === null)
589
+ return ne(e, u, null, g, n), o;
590
+ Ze(a.document, n), n.stack.push(f);
591
+ const y = Ut(a, o, n, i);
587
592
  n.stack.pop();
588
- const y = xt(p, n);
589
- Et(p, y, n), kt(p, y, i, o, n);
590
- const k = e.children.filter((f) => f.name.local === "AttributeOverrides");
591
- q(e, a, p, x, n), $t(
593
+ const r = Mt(a, n);
594
+ Lt(a, r, n), Rt(a, r, y, o, n);
595
+ const w = e.children.filter((b) => b.name.local === "AttributeOverrides");
596
+ ne(e, u, a, g, n), jt(
592
597
  o,
593
- k,
598
+ w,
594
599
  t === null ? 0 : n.sourceOffsets.get(t.document) ?? 0,
595
600
  t === null || t.url.length === 0 ? null : t.url,
596
601
  n
597
602
  );
598
- for (const f of e.children)
599
- f.name.local === "AttributeOverrides" || f.name.local === "Style" || j(f, "slot") !== void 0 || o.children.push(oe(f, n, s, t, !1, r));
603
+ for (const b of e.children)
604
+ b.name.local === "AttributeOverrides" || b.name.local === "Style" || P(b, "slot") !== void 0 || o.children.push(de(b, n, s, t, !1, i));
600
605
  return o;
601
606
  }
602
- function Dt(e) {
603
- if (!qe(e.root)) return { document: e, warnings: [] };
604
- const n = Tt(e, _e.get(e)), t = n.styleRoots.length, s = {
607
+ function zt(e) {
608
+ if (!tt(e.root)) return { document: e, warnings: [] };
609
+ const n = Nt(e, Je.get(e)), t = n.styleRoots.length, s = {
605
610
  url: "",
606
611
  from: null,
607
612
  document: e,
608
- declarations: Pe(e)
609
- }, r = { nodes: /* @__PURE__ */ new Map([[e.root.id, e.root.id]]) }, o = {
613
+ declarations: Ke(e)
614
+ }, i = { nodes: /* @__PURE__ */ new Map([[e.root.id, e.root.id]]) }, o = {
610
615
  id: e.root.id,
611
- name: Be(e.root.name),
612
- attributes: e.root.attributes.map((a) => se(a)),
616
+ name: Xe(e.root.name),
617
+ attributes: e.root.attributes.map((u) => ue(u)),
613
618
  children: [],
614
619
  spans: {
615
620
  openTag: { ...e.root.spans.openTag },
@@ -619,28 +624,28 @@ function Dt(e) {
619
624
  tagDirty: e.root.tagDirty,
620
625
  childrenDirty: e.root.childrenDirty
621
626
  };
622
- for (const a of e.root.children)
623
- if (!(a.name.local === "Template" || a.name.local === "Style")) {
624
- if (a.name.local === "Instance") {
625
- o.children.push(ye(a, n, s, r, 0));
627
+ for (const u of e.root.children)
628
+ if (!(u.name.local === "Template" || u.name.local === "Style")) {
629
+ if (u.name.local === "Instance") {
630
+ o.children.push(Oe(u, n, s, i, 0));
626
631
  continue;
627
632
  }
628
- a.name.local !== "AttributeOverrides" && j(a, "slot") === void 0 && o.children.push(oe(a, n, r, s, !0, 0));
633
+ u.name.local !== "AttributeOverrides" && P(u, "slot") === void 0 && o.children.push(de(u, n, i, s, !0, 0));
629
634
  }
630
- for (let a = 0; a < t; a++) {
631
- const x = n.styleRoots[a], h = r.nodes.get(x.scope);
632
- h !== void 0 && (n.styleRoots[a] = { ...x, scope: h });
633
- }
634
- const d = /* @__PURE__ */ new Map();
635
- ge(o, d);
636
- for (const [a, x] of d)
637
- x > 1 && F(
635
+ for (let u = 0; u < t; u++) {
636
+ const g = n.styleRoots[u], h = i.nodes.get(g.scope);
637
+ h !== void 0 && (n.styleRoots[u] = { ...g, scope: h });
638
+ }
639
+ const c = /* @__PURE__ */ new Map();
640
+ Ee(o, c);
641
+ for (const [u, g] of c)
642
+ g > 1 && J(
638
643
  n.warnings,
639
644
  "duplicate-name-in-tree",
640
- `name "${a}" occurs ${x} times after template expansion`,
645
+ `name "${u}" occurs ${g} times after template expansion`,
641
646
  void 0,
642
647
  void 0,
643
- { reason: "matches-unity", subject: { kind: "name", name: a } }
648
+ { reason: "matches-unity", subject: { kind: "name", name: u } }
644
649
  );
645
650
  return {
646
651
  document: {
@@ -653,7 +658,7 @@ function Dt(e) {
653
658
  warnings: n.warnings
654
659
  };
655
660
  }
656
- const te = "6000.0.40f1", Je = `:disabled {
661
+ const ce = "6000.0.40f1", nt = `:disabled {
657
662
  opacity: 0.5;
658
663
  }
659
664
 
@@ -661,11 +666,13 @@ const te = "6000.0.40f1", Je = `:disabled {
661
666
  margin: 1px 3px;
662
667
  -unity-text-align: middle-center;
663
668
  }
664
- `, Mt = 13;
665
- function Rt(e) {
666
- return e ? Mt : 0;
669
+ `, Pt = 13;
670
+ function _t(e) {
671
+ return e ? Pt : 0;
667
672
  }
668
- const At = {
673
+ const Bt = {
674
+ measuredTextLayout: "Measured layout effect in Unity probes, 2026-10-15/16 (tests/text-cohort/unity and tests/layout/unity); auto-size grew 32x15 to 99x49 on 6000.3.25f1",
675
+ measuredTextPaint: "Measured paint-only effect in Unity probes, 2026-10-15/16 (tests/layout/unity)",
669
676
  yoga: "A flexbox style input of Yoga, which UI Toolkit lays out with (CLAUDE.md rule 1); many are compared in the golden set",
670
677
  box: "Margin, padding and border widths are part of the box Yoga sizes and places",
671
678
  aspectRatio: "Yoga sizes a box from aspect-ratio, which Unity passes through from 6.3",
@@ -686,16 +693,16 @@ const At = {
686
693
  effectInferred: "Post-processes pixels that are already drawn",
687
694
  cursor: "Pointer appearance only; nothing is drawn or laid out",
688
695
  timeInferred: "Changes values over time; a settled frame, which is what this preview draws, is unaffected"
689
- }, Ct = {
696
+ }, Wt = {
690
697
  /** Row count of each table on the date above. A test holds the data to these. */
691
698
  counts: { "6000.0": 95, "6000.3": 99, "6000.6": 102 }
692
- }, Nt = [
699
+ }, Ht = [
693
700
  ["align-content", "6000.0", !1, "layout", "layout", "yoga"],
694
701
  ["align-items", "6000.0", !1, "layout", "layout", "yoga"],
695
702
  ["align-self", "6000.0", !1, "layout", "layout", "yoga"],
696
703
  ["all", "6000.0", !1, "none", "layout", "all"],
697
704
  ["animation-play-state", "6000.6", !1, "none", "none", "timeInferred"],
698
- ["aspect-ratio", "6000.3", !1, "none", "layout", "aspectRatio"],
705
+ ["aspect-ratio", "6000.3", !1, "layout", "layout", "aspectRatio"],
699
706
  ["backdrop-filter", "6000.6", !1, "none", "paint", "effectInferred"],
700
707
  ["background-color", "6000.0", !1, "paint", "paint", "colour"],
701
708
  ["background-image", "6000.0", !1, "paint", "paint", "background"],
@@ -723,7 +730,7 @@ const At = {
723
730
  ["color", "6000.0", !0, "paint", "paint", "colour"],
724
731
  ["cursor", "6000.0", !1, "paint", "none", "cursor"],
725
732
  ["display", "6000.0", !1, "layout", "layout", "yoga"],
726
- ["filter", "6000.3", !1, "none", "paint", "effectInferred"],
733
+ ["filter", "6000.3", !1, "none", "paint", "measuredTextPaint"],
727
734
  ["flex", "6000.0", !1, "layout", "layout", "yoga"],
728
735
  ["flex-basis", "6000.0", !1, "layout", "layout", "yoga"],
729
736
  ["flex-direction", "6000.0", !1, "layout", "layout", "yoga"],
@@ -734,7 +741,7 @@ const At = {
734
741
  ["height", "6000.0", !1, "layout", "layout", "yoga"],
735
742
  ["justify-content", "6000.0", !1, "layout", "layout", "yoga"],
736
743
  ["left", "6000.0", !1, "layout", "layout", "yoga"],
737
- ["letter-spacing", "6000.0", !0, "paint", "layout", "textMeasureInferred"],
744
+ ["letter-spacing", "6000.0", !0, "layout", "layout", "measuredTextLayout"],
738
745
  ["margin", "6000.0", !1, "layout", "layout", "box"],
739
746
  ["margin-bottom", "6000.0", !1, "layout", "layout", "box"],
740
747
  ["margin-left", "6000.0", !1, "layout", "layout", "box"],
@@ -757,8 +764,8 @@ const At = {
757
764
  ["right", "6000.0", !1, "layout", "layout", "yoga"],
758
765
  ["rotate", "6000.0", !1, "paint", "paint", "transform"],
759
766
  ["scale", "6000.0", !1, "paint", "paint", "transform"],
760
- ["text-overflow", "6000.0", !1, "paint", "paint", "ellipsisInferred"],
761
- ["text-shadow", "6000.0", !0, "none", "paint", "textEffectInferred"],
767
+ ["text-overflow", "6000.0", !1, "paint", "paint", "measuredTextPaint"],
768
+ ["text-shadow", "6000.0", !0, "none", "paint", "measuredTextPaint"],
762
769
  ["top", "6000.0", !1, "layout", "layout", "yoga"],
763
770
  ["transform-origin", "6000.0", !1, "paint", "paint", "transform"],
764
771
  ["transition", "6000.0", !1, "none", "none", "timeInferred"],
@@ -770,13 +777,13 @@ const At = {
770
777
  ["-unity-animation-clip", "6000.6", !1, "none", "none", "timeInferred"],
771
778
  ["-unity-background-image-tint-color", "6000.0", !1, "none", "paint", "background"],
772
779
  ["-unity-background-scale-mode", "6000.0", !1, "paint", "paint", "background"],
773
- ["-unity-editor-text-rendering-mode", "6000.0", !0, "none", "paint", "renderingModeInferred"],
780
+ ["-unity-editor-text-rendering-mode", "6000.0", !0, "none", "paint", "measuredTextPaint"],
774
781
  ["-unity-font", "6000.0", !0, "none", "layout", "textMeasureInferred"],
775
- ["-unity-font-definition", "6000.0", !0, "none", "layout", "textMeasureInferred"],
776
- ["-unity-font-style", "6000.0", !0, "layout", "layout", "textMeasureInferred"],
782
+ ["-unity-font-definition", "6000.0", !0, "none", "layout", "measuredTextLayout"],
783
+ ["-unity-font-style", "6000.0", !0, "layout", "layout", "measuredTextLayout"],
777
784
  ["-unity-material", "6000.3", !0, "none", "paint", "effectInferred"],
778
- ["-unity-overflow-clip-box", "6000.0", !1, "none", "paint", "clipBoxInferred"],
779
- ["-unity-paragraph-spacing", "6000.0", !0, "none", "layout", "textMeasureInferred"],
785
+ ["-unity-overflow-clip-box", "6000.0", !1, "none", "paint", "measuredTextPaint"],
786
+ ["-unity-paragraph-spacing", "6000.0", !0, "layout", "layout", "measuredTextLayout"],
780
787
  ["-unity-slice-bottom", "6000.0", !1, "none", "paint", "background"],
781
788
  ["-unity-slice-left", "6000.0", !1, "none", "paint", "background"],
782
789
  ["-unity-slice-right", "6000.0", !1, "none", "paint", "background"],
@@ -784,31 +791,31 @@ const At = {
784
791
  ["-unity-slice-top", "6000.0", !1, "none", "paint", "background"],
785
792
  ["-unity-slice-type", "6000.0", !1, "none", "paint", "background"],
786
793
  ["-unity-text-align", "6000.0", !0, "paint", "paint", "textAlign"],
787
- ["-unity-text-auto-size", "6000.3", !0, "none", "paint", "autoSizeInferred"],
788
- ["-unity-text-generator", "6000.0", !0, "none", "layout", "textMeasureInferred"],
789
- ["-unity-text-outline", "6000.0", !1, "none", "paint", "textEffectInferred"],
790
- ["-unity-text-outline-color", "6000.0", !0, "none", "paint", "textEffectInferred"],
791
- ["-unity-text-outline-width", "6000.0", !0, "none", "paint", "textEffectInferred"],
792
- ["-unity-text-overflow-position", "6000.0", !1, "none", "paint", "ellipsisInferred"],
794
+ ["-unity-text-auto-size", "6000.3", !0, "none", "layout", "measuredTextLayout"],
795
+ ["-unity-text-generator", "6000.0", !0, "layout", "layout", "measuredTextLayout"],
796
+ ["-unity-text-outline", "6000.0", !1, "none", "paint", "measuredTextPaint"],
797
+ ["-unity-text-outline-color", "6000.0", !0, "none", "paint", "measuredTextPaint"],
798
+ ["-unity-text-outline-width", "6000.0", !0, "none", "paint", "measuredTextPaint"],
799
+ ["-unity-text-overflow-position", "6000.0", !1, "none", "paint", "measuredTextPaint"],
793
800
  ["visibility", "6000.0", !0, "paint", "paint", "visibility"],
794
- ["white-space", "6000.0", !0, "layout", "layout", "textMeasureInferred"],
801
+ ["white-space", "6000.0", !0, "layout", "layout", "measuredTextLayout"],
795
802
  ["width", "6000.0", !1, "layout", "layout", "yoga"],
796
- ["word-spacing", "6000.0", !0, "paint", "layout", "textMeasureInferred"]
797
- ], Ge = Nt.map(
798
- ([e, n, t, s, r, o]) => ({
803
+ ["word-spacing", "6000.0", !0, "layout", "layout", "measuredTextLayout"]
804
+ ], st = Ht.map(
805
+ ([e, n, t, s, i, o]) => ({
799
806
  name: e,
800
807
  since: n,
801
808
  inherited: t,
802
809
  handling: s,
803
- unity: r,
804
- basis: At[o],
810
+ unity: i,
811
+ basis: Bt[o],
805
812
  inferred: o.endsWith("Inferred")
806
813
  })
807
- ), jt = new Map(Ge.map((e) => [e.name, e]));
808
- function zt(e) {
809
- return jt.get(e);
814
+ ), Vt = new Map(st.map((e) => [e.name, e]));
815
+ function qt(e) {
816
+ return Vt.get(e);
810
817
  }
811
- const Lt = {
818
+ const Jt = {
812
819
  "font-family": ["-unity-font-definition"],
813
820
  "font-weight": ["-unity-font-style"],
814
821
  "font-style": ["-unity-font-style"],
@@ -820,8 +827,7 @@ const Lt = {
820
827
  inset: ["top", "right", "bottom", "left"],
821
828
  "overflow-x": ["overflow"],
822
829
  "overflow-y": ["overflow"]
823
- }, Ut = {
824
- "aspect-ratio": "not applied to layout by this preview",
830
+ }, Yt = {
825
831
  "-unity-font": "font not loaded by this preview; the browser default is used",
826
832
  "-unity-font-definition": "font not loaded by this preview; the browser default is used",
827
833
  transition: "not animated by this preview",
@@ -831,50 +837,75 @@ const Lt = {
831
837
  "transition-timing-function": "not animated by this preview",
832
838
  "animation-play-state": "not animated by this preview",
833
839
  "-unity-animation-clip": "not animated by this preview"
834
- }, _t = `6.${Object.keys(Ct.counts).sort().at(-1).slice(5)}`;
835
- function Wt(e) {
840
+ }, Kt = `6.${Object.keys(Wt.counts).sort().at(-1).slice(5)}`;
841
+ function Gt(e) {
836
842
  return `Unity 6.${e.slice(5)}+`;
837
843
  }
838
- function Xe(e, n) {
844
+ function it(e, n) {
839
845
  if (e.startsWith("--")) return null;
840
- const t = zt(e);
846
+ const t = qt(e);
841
847
  if (t === void 0) {
842
- const o = Lt[e];
848
+ const c = Jt[e];
843
849
  return {
844
- message: `${e}: not in the USS property reference up to Unity ${_t}; ignored` + (o === void 0 ? "" : `; USS uses ${o.join(", ")}`),
850
+ message: `${e}: not in the USS property reference up to Unity ${Kt}; ignored` + (c === void 0 ? "" : `; USS uses ${c.join(", ")}`),
845
851
  reason: "not-uss",
846
- subject: { kind: "property", property: e, value: n, ...o === void 0 ? {} : { replacements: o } }
852
+ subject: { kind: "property", property: e, value: n, ...c === void 0 ? {} : { replacements: c } }
847
853
  };
848
854
  }
849
- const s = t.unity === "layout", r = t.since === "6000.0" ? "" : ` (${Wt(t.since)})`;
850
- return t.handling === "paint" && s ? {
851
- message: `${e}${r}: drawn, but left out of text measurement by this preview`,
855
+ const s = { kind: "property", property: e, value: n };
856
+ if ((e.includes("color") || e === "text-shadow") && /hsla?\(/i.test(n))
857
+ return {
858
+ reason: "invalid-value",
859
+ message: `${e}: Unity 6000.3 stops styling from this element on at this value; 6000.0 draws it black`,
860
+ subject: { ...s, unityEffect: { kind: "unstyled-from-here", versions: ["6000.3"] } }
861
+ };
862
+ if ((e === "transition-timing-function" || e === "transition") && /cubic-bezier\(/i.test(n))
863
+ return {
864
+ reason: "invalid-value",
865
+ message: `${e}: Unity stops styling from this element on at cubic-bezier()`,
866
+ subject: { ...s, unityEffect: { kind: "unstyled-from-here", versions: ["6000.0", "6000.3"] } }
867
+ };
868
+ if (e === "opacity" && n.trim().endsWith("%"))
869
+ return { reason: "invalid-value", message: "opacity: Unity reads 50% as 50 (fully opaque), this preview draws it half-transparent", subject: s };
870
+ if (n.trim() === "inherit")
871
+ return { reason: "invalid-value", message: `${e}: USS has initial but not inherit; Unity resolved color: inherit to transparent`, subject: s };
872
+ const i = t.unity === "layout", o = t.since === "6000.0" ? "" : ` (${Gt(t.since)})`;
873
+ return t.handling === "paint" && i ? {
874
+ message: `${e}${o}: drawn, but left out of text measurement by this preview`,
852
875
  reason: "not-rendered",
853
- subject: { kind: "property", property: e, value: n, since: t.since, affectsLayout: s, applied: "paint" }
876
+ subject: { kind: "property", property: e, value: n, since: t.since, affectsLayout: i, applied: "paint" }
854
877
  } : t.handling !== "none" ? null : {
855
- message: `${e}${r}: ${Ut[e] ?? "not drawn by this preview"}`,
878
+ message: `${e}${o}: ${Yt[e] ?? "not drawn by this preview"}` + (e === "filter" && /[\w-]+\(/.test(n) ? "; Unity 6000.0 stops styling from this element on" : ""),
856
879
  reason: "not-rendered",
857
- subject: { kind: "property", property: e, value: n, since: t.since, affectsLayout: s }
880
+ subject: {
881
+ kind: "property",
882
+ property: e,
883
+ value: n,
884
+ since: t.since,
885
+ affectsLayout: i,
886
+ // Same probes/dumps, measured 2026-10-15: filter functions poison 6000.0 only.
887
+ ...e === "filter" && /[\w-]+\(/.test(n) ? { unityEffect: { kind: "unstyled-from-here", versions: ["6000.0"] } } : {}
888
+ }
858
889
  };
859
890
  }
860
- const Pt = ["hover", "active", "inactive", "focus", "disabled", "enabled", "checked"], Ft = new Set(Ge.filter((e) => e.inherited).map((e) => e.name));
861
- function Bt(e) {
862
- return e.startsWith("--") || Ft.has(e);
891
+ const we = ["hover", "active", "inactive", "focus", "disabled", "enabled", "checked"], Xt = new Set(st.filter((e) => e.inherited).map((e) => e.name));
892
+ function Zt(e) {
893
+ return e.startsWith("--") || Xt.has(e);
863
894
  }
864
- function Oe(e) {
895
+ function Le(e) {
865
896
  const n = [];
866
897
  let t = 0, s = -1;
867
- for (let r = 0; r < e.length; r++) {
868
- const o = e[r];
869
- o === "(" ? t++ : o === ")" && (t = Math.max(0, t - 1)), t === 0 && /\s/.test(o) ? s >= 0 && (n.push(e.slice(s, r)), s = -1) : s < 0 && (s = r);
898
+ for (let i = 0; i < e.length; i++) {
899
+ const o = e[i];
900
+ o === "(" ? t++ : o === ")" && (t = Math.max(0, t - 1)), t === 0 && /\s/.test(o) ? s >= 0 && (n.push(e.slice(s, i)), s = -1) : s < 0 && (s = i);
870
901
  }
871
902
  return s >= 0 && n.push(e.slice(s)), n;
872
903
  }
873
- function Ht(e) {
874
- const [n, t, s, r] = e;
875
- return n === void 0 ? null : t === void 0 ? [n, n, n, n] : s === void 0 ? [n, t, n, t] : r === void 0 ? [n, t, s, t] : [n, t, s, r];
904
+ function Qt(e) {
905
+ const [n, t, s, i] = e;
906
+ return n === void 0 ? null : t === void 0 ? [n, n, n, n] : s === void 0 ? [n, t, n, t] : i === void 0 ? [n, t, s, t] : [n, t, s, i];
876
907
  }
877
- const Vt = {
908
+ const en = {
878
909
  margin: ["margin-top", "margin-right", "margin-bottom", "margin-left"],
879
910
  padding: ["padding-top", "padding-right", "padding-bottom", "padding-left"],
880
911
  "border-width": [
@@ -897,24 +928,25 @@ const Vt = {
897
928
  "border-bottom-left-radius"
898
929
  ]
899
930
  };
900
- function De(e) {
931
+ function Ue(e) {
901
932
  return /^-?(\d+\.?\d*|\.\d+)$/.test(e);
902
933
  }
903
- function Yt(e) {
934
+ function tn(e) {
904
935
  const [n, t, s] = e;
905
- 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]] : s === 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", s]];
936
+ 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 ? Ue(n) ? [["flex-grow", n], ["flex-shrink", "1"], ["flex-basis", "0"]] : [["flex-grow", "1"], ["flex-shrink", "1"], ["flex-basis", n]] : s === void 0 ? Ue(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", s]];
906
937
  }
907
- function le(e, n) {
908
- if (e === "flex") return Yt(Oe(n));
909
- const t = Vt[e];
938
+ function me(e, n) {
939
+ if (e === "flex") return tn(Le(n));
940
+ const t = en[e];
910
941
  if (t === void 0) return [[e, n]];
911
- const s = Ht(Oe(n));
912
- return s === null ? [[e, n]] : t.map((r, o) => [r, s[o]]);
942
+ const s = Qt(Le(n));
943
+ return s === null ? [[e, n]] : t.map((i, o) => [i, s[o]]);
913
944
  }
914
- const fe = {
945
+ const xe = {
915
946
  "align-content": "flex-start",
916
947
  "align-items": "stretch",
917
948
  "align-self": "auto",
949
+ "aspect-ratio": "auto",
918
950
  "flex-basis": "auto",
919
951
  "flex-direction": "column",
920
952
  "flex-grow": "0",
@@ -947,8 +979,8 @@ const fe = {
947
979
  "padding-right": "0",
948
980
  "padding-top": "0",
949
981
  "font-size": "12px"
950
- }, qt = ["em", "rem", "vh", "vw", "vmin", "vmax", "pt", "cm", "in"];
951
- function ne(e) {
982
+ }, nn = ["em", "rem", "vh", "vw", "vmin", "vmax", "pt", "cm", "in"];
983
+ function V(e) {
952
984
  const n = e.trim();
953
985
  if (n === "") return { length: null, problem: "empty value", reason: "invalid-value" };
954
986
  if (n === "auto") return { length: { kind: "auto" } };
@@ -959,525 +991,642 @@ function ne(e) {
959
991
  const t = /^(-?(?:\d+\.?\d*|\.\d+))([a-z%]*)$/i.exec(n);
960
992
  if (t === null)
961
993
  return { length: null, problem: `cannot read "${n}" as a length`, reason: "invalid-value" };
962
- const s = Number(t[1]), r = t[2].toLowerCase();
963
- return r === "" || r === "px" ? { length: { kind: "px", value: s } } : r === "%" ? { length: { kind: "percent", value: s } } : qt.includes(r) ? { length: null, problem: `unit "${r}" not recognised`, reason: "not-uss" } : { length: null, problem: `unknown unit "${r}"`, reason: "invalid-value" };
994
+ const s = Number(t[1]), i = t[2].toLowerCase();
995
+ return i === "" || i === "px" ? { length: { kind: "px", value: s } } : i === "%" ? { length: { kind: "percent", value: s } } : nn.includes(i) ? { length: null, problem: `unit "${i}" not recognised`, code: "unsupported-unit", reason: "not-uss" } : { length: null, problem: `unknown unit "${i}"`, reason: "invalid-value" };
964
996
  }
965
- function Me(e) {
997
+ function ge(e) {
966
998
  const n = e.trim();
967
999
  return /^-?(\d+\.?\d*|\.\d+)$/.test(n) ? Number(n) : null;
968
1000
  }
969
- let be = null;
970
- async function Nn() {
971
- be ?? (be = await it());
972
- }
973
- function jn() {
974
- return be !== null;
975
- }
976
- let Q = 0;
977
- function zn() {
978
- return Q;
979
- }
980
- const ce = {
981
- auto: L.Auto,
982
- "flex-start": L.FlexStart,
983
- center: L.Center,
984
- "flex-end": L.FlexEnd,
985
- stretch: L.Stretch,
986
- baseline: L.Baseline,
987
- "space-between": L.SpaceBetween,
988
- "space-around": L.SpaceAround,
989
- "space-evenly": L.SpaceEvenly
990
- }, Jt = {
991
- "flex-start": B.FlexStart,
992
- center: B.Center,
993
- "flex-end": B.FlexEnd,
994
- "space-between": B.SpaceBetween,
995
- "space-around": B.SpaceAround,
996
- "space-evenly": B.SpaceEvenly
997
- }, Gt = {
998
- column: G.Column,
999
- "column-reverse": G.ColumnReverse,
1000
- row: G.Row,
1001
- "row-reverse": G.RowReverse
1002
- }, Xt = {
1003
- nowrap: K.NoWrap,
1004
- wrap: K.Wrap,
1005
- "wrap-reverse": K.WrapReverse
1006
- }, Zt = [
1007
- ["left", J.Left],
1008
- ["top", J.Top],
1009
- ["right", J.Right],
1010
- ["bottom", J.Bottom]
1001
+ let Ie = null;
1002
+ async function Hn() {
1003
+ Ie ?? (Ie = await gt());
1004
+ }
1005
+ function Vn() {
1006
+ return Ie !== null;
1007
+ }
1008
+ let ae = 0;
1009
+ function qn() {
1010
+ return ae;
1011
+ }
1012
+ const ye = {
1013
+ auto: W.Auto,
1014
+ "flex-start": W.FlexStart,
1015
+ center: W.Center,
1016
+ "flex-end": W.FlexEnd,
1017
+ stretch: W.Stretch,
1018
+ baseline: W.Baseline,
1019
+ "space-between": W.SpaceBetween,
1020
+ "space-around": W.SpaceAround,
1021
+ "space-evenly": W.SpaceEvenly
1022
+ }, sn = {
1023
+ "flex-start": G.FlexStart,
1024
+ center: G.Center,
1025
+ "flex-end": G.FlexEnd,
1026
+ "space-between": G.SpaceBetween,
1027
+ "space-around": G.SpaceAround,
1028
+ "space-evenly": G.SpaceEvenly
1029
+ }, on = {
1030
+ column: ie.Column,
1031
+ "column-reverse": ie.ColumnReverse,
1032
+ row: ie.Row,
1033
+ "row-reverse": ie.RowReverse
1034
+ }, rn = {
1035
+ nowrap: re.NoWrap,
1036
+ wrap: re.Wrap,
1037
+ "wrap-reverse": re.WrapReverse
1038
+ }, an = [
1039
+ ["left", se.Left],
1040
+ ["top", se.Top],
1041
+ ["right", se.Right],
1042
+ ["bottom", se.Bottom]
1011
1043
  ];
1012
- function Kt(e, n, t, s) {
1013
- const r = be;
1014
- if (r === null)
1044
+ function ln(e, n, t, s) {
1045
+ const i = Ie;
1046
+ if (i === null)
1015
1047
  throw new Error("loadLayoutEngine() must be awaited before rendering");
1016
- const o = [], d = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map(), x = [], h = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map();
1017
- let c = 0, u = !1, p = !1;
1018
- const i = (b, S) => {
1019
- var I;
1020
- return ((I = b.get(S)) == null ? void 0 : I.value) ?? fe[S] ?? "";
1048
+ const o = [], c = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Map(), g = [], h = /* @__PURE__ */ new Map(), l = /* @__PURE__ */ new Map();
1049
+ let f = 0, m = !1, a = !1;
1050
+ const y = (k, $) => {
1051
+ var T;
1052
+ return ((T = k.get($)) == null ? void 0 : T.value) ?? xe[$] ?? "";
1021
1053
  };
1022
- function y(b, S, I, E) {
1023
- var D;
1024
- (E == null ? void 0 : E.origin.kind) !== "inherited" && o.push({
1054
+ function r(k, $, T, I) {
1055
+ var O;
1056
+ (I == null ? void 0 : I.origin.kind) !== "inherited" && o.push({
1025
1057
  kind: "unsupported-property",
1026
- message: b,
1027
- node: S.id,
1028
- ...I,
1029
- ...E === void 0 ? {} : ((D = s.locate) == null ? void 0 : D.call(s, E.origin)) ?? {}
1058
+ message: k,
1059
+ node: $.id,
1060
+ ...T,
1061
+ ...I === void 0 ? {} : ((O = s.locate) == null ? void 0 : O.call(s, I.origin)) ?? {}
1030
1062
  });
1031
1063
  }
1032
- function k(b, S, I) {
1033
- const E = i(b, S);
1034
- if (E === "") return null;
1035
- const { length: D, problem: M, reason: A } = ne(E);
1036
- return M !== void 0 && y(
1037
- `${S}: ${M}`,
1038
- I,
1064
+ function w(k, $, T, I, O, D) {
1065
+ const M = k.get($), R = D && (M == null ? void 0 : M.origin.kind) === "inline";
1066
+ r(
1067
+ `${$}: ${I}${R ? "; Unity drops every inline style in that UXML file" : ""}`,
1068
+ T,
1039
1069
  {
1040
- ...A === void 0 ? {} : { reason: A },
1041
- subject: { kind: "property", property: S, value: E }
1070
+ ...O === void 0 ? {} : { reason: R ? "invalid-value" : O },
1071
+ subject: {
1072
+ kind: "property",
1073
+ property: $,
1074
+ value: y(k, $),
1075
+ ...R ? { unityEffect: { kind: "file-inline-dropped", versions: ["6000.0", "6000.3"] } } : {}
1076
+ }
1042
1077
  },
1043
- b.get(S)
1044
- ), D;
1078
+ M
1079
+ );
1045
1080
  }
1046
- function f(b) {
1047
- if (b !== null)
1048
- switch (b.kind) {
1081
+ function b(k, $, T) {
1082
+ const I = y(k, $);
1083
+ if (I === "") return null;
1084
+ const { length: O, problem: D, reason: M, code: R } = V(I);
1085
+ return D !== void 0 && w(k, $, T, D, M, R === "unsupported-unit"), O;
1086
+ }
1087
+ function p(k) {
1088
+ if (k !== null)
1089
+ switch (k.kind) {
1049
1090
  case "px":
1050
- return b.value;
1091
+ return k.value;
1051
1092
  case "percent":
1052
- return `${b.value}%`;
1093
+ return `${k.value}%`;
1053
1094
  case "auto":
1054
1095
  return "auto";
1055
1096
  case "none":
1056
1097
  return;
1057
1098
  }
1058
1099
  }
1059
- function m(b) {
1060
- if (b !== null) {
1061
- if (b.kind === "px") return b.value;
1062
- if (b.kind === "percent") return `${b.value}%`;
1100
+ function d(k) {
1101
+ if (k !== null) {
1102
+ if (k.kind === "px") return k.value;
1103
+ if (k.kind === "percent") return `${k.value}%`;
1063
1104
  }
1064
1105
  }
1065
- function v(b, S, I) {
1066
- b.setBoxSizing(at.BorderBox), b.setFlexDirection(Gt[i(S, "flex-direction")] ?? G.Column), b.setFlexWrap(Xt[i(S, "flex-wrap")] ?? K.NoWrap), b.setJustifyContent(Jt[i(S, "justify-content")] ?? B.FlexStart), b.setAlignItems(ce[i(S, "align-items")] ?? L.Stretch), b.setAlignSelf(ce[i(S, "align-self")] ?? L.Auto), b.setAlignContent(ce[i(S, "align-content")] ?? L.FlexStart), b.setFlexGrow(Me(i(S, "flex-grow")) ?? 0), b.setFlexShrink(Me(i(S, "flex-shrink")) ?? 1), b.setFlexBasis(f(k(S, "flex-basis", I)));
1067
- const E = i(S, "position");
1068
- (E === "fixed" || E === "sticky") && y(`position: ${E} treated as relative`, I, {
1106
+ function x(k, $, T) {
1107
+ k.setBoxSizing(yt.BorderBox), k.setFlexDirection(on[y($, "flex-direction")] ?? ie.Column), k.setFlexWrap(rn[y($, "flex-wrap")] ?? re.NoWrap), k.setJustifyContent(sn[y($, "justify-content")] ?? G.FlexStart), k.setAlignItems(ye[y($, "align-items")] ?? W.Stretch), k.setAlignSelf(ye[y($, "align-self")] ?? W.Auto), k.setAlignContent(ye[y($, "align-content")] ?? W.FlexStart), k.setFlexGrow(ge(y($, "flex-grow")) ?? 0), k.setFlexShrink(ge(y($, "flex-shrink")) ?? 1), k.setFlexBasis(p(b($, "flex-basis", T)));
1108
+ const I = y($, "position");
1109
+ (I === "fixed" || I === "sticky") && r(`position: ${I} treated as relative`, T, {
1069
1110
  reason: "not-uss",
1070
- subject: { kind: "property", property: "position", value: E }
1071
- }, S.get("position")), b.setPositionType(
1072
- E === "absolute" ? re.Absolute : re.Relative
1111
+ subject: { kind: "property", property: "position", value: I }
1112
+ }, $.get("position")), k.setPositionType(
1113
+ I === "absolute" ? fe.Absolute : fe.Relative
1073
1114
  );
1074
- const D = i(S, "display");
1075
- D === "none" ? b.setDisplay(lt.None) : D !== "flex" && D !== "initial" && y(`display: ${D} laid out as flex`, I, {
1115
+ const O = y($, "display");
1116
+ O === "none" ? k.setDisplay(bt.None) : O !== "flex" && O !== "initial" && r(`display: ${O} laid out as flex`, T, {
1076
1117
  reason: "invalid-value",
1077
- subject: { kind: "property", property: "display", value: D }
1078
- }, S.get("display"));
1079
- const M = i(S, "overflow");
1080
- M === "hidden" ? b.setOverflow(ct.Hidden) : (M === "auto" || M === "scroll") && y(`overflow: ${M} ignored; nothing scrolls`, I, {
1118
+ subject: { kind: "property", property: "display", value: O }
1119
+ }, $.get("display"));
1120
+ const D = y($, "overflow");
1121
+ D === "hidden" ? k.setOverflow(vt.Hidden) : (D === "auto" || D === "scroll") && r(`overflow: ${D} ignored; nothing scrolls`, T, {
1081
1122
  reason: "not-uss",
1082
- subject: { kind: "property", property: "overflow", value: M }
1083
- }, S.get("overflow")), b.setWidth(f(k(S, "width", I))), b.setHeight(f(k(S, "height", I))), b.setMinWidth(m(k(S, "min-width", I))), b.setMinHeight(m(k(S, "min-height", I))), b.setMaxWidth(m(k(S, "max-width", I))), b.setMaxHeight(m(k(S, "max-height", I)));
1084
- for (const [A, U] of Zt) {
1085
- b.setMargin(U, m(k(S, `margin-${A}`, I))), b.setPadding(U, m(k(S, `padding-${A}`, I)));
1086
- const _ = m(k(S, `border-${A}-width`, I));
1087
- b.setBorder(U, typeof _ == "number" ? _ : void 0), b.setPosition(U, m(k(S, A, I)));
1088
- }
1089
- }
1090
- function w(b) {
1091
- var S;
1092
- return (S = b.attributes.find((I) => I.name === "text")) == null ? void 0 : S.value;
1093
- }
1094
- const g = ["text", "label"];
1095
- function $(b) {
1096
- return g.filter(
1097
- (S) => b.attributes.some((I) => I.name === S && I.value.length > 0)
1123
+ subject: { kind: "property", property: "overflow", value: D }
1124
+ }, $.get("overflow")), k.setWidth(p(b($, "width", T))), k.setHeight(p(b($, "height", T)));
1125
+ const M = y($, "aspect-ratio").trim();
1126
+ if (M !== "auto" && M !== "initial") {
1127
+ const R = ge(M);
1128
+ R !== null && Number.isFinite(R) ? k.setAspectRatio(R) : w($, "aspect-ratio", T, `cannot read "${M}" as a number`, "invalid-value", !0);
1129
+ }
1130
+ k.setMinWidth(d(b($, "min-width", T))), k.setMinHeight(d(b($, "min-height", T))), k.setMaxWidth(d(b($, "max-width", T))), k.setMaxHeight(d(b($, "max-height", T)));
1131
+ for (const [R, F] of an) {
1132
+ k.setMargin(F, d(b($, `margin-${R}`, T))), k.setPadding(F, d(b($, `padding-${R}`, T)));
1133
+ const L = d(b($, `border-${R}-width`, T));
1134
+ k.setBorder(F, typeof L == "number" ? L : void 0), k.setPosition(F, d(b($, R, T)));
1135
+ }
1136
+ }
1137
+ function v(k) {
1138
+ var T;
1139
+ const $ = (T = k.attributes.find((I) => I.name === "text")) == null ? void 0 : T.value;
1140
+ return $ === void 0 ? void 0 : ee($);
1141
+ }
1142
+ const S = ["text", "label"];
1143
+ function E(k) {
1144
+ return S.filter(
1145
+ ($) => k.attributes.some((T) => T.name === $ && T.value.length > 0)
1098
1146
  );
1099
1147
  }
1100
- let T = !1;
1101
- function O(b, S) {
1102
- if (de(b)) {
1103
- b.name.local === "Bindings" && !T && (T = !0, o.push({
1148
+ let C = !1;
1149
+ function A(k, $) {
1150
+ var z, Me;
1151
+ if (ve(k)) {
1152
+ k.name.local === "Bindings" && !C && (C = !0, o.push({
1104
1153
  kind: "unsupported-control",
1105
1154
  message: "Data bindings are not evaluated in this preview; bound values show as written",
1106
- node: b.id,
1155
+ node: k.id,
1107
1156
  reason: "not-rendered",
1108
1157
  subject: { kind: "control", type: "Bindings" }
1109
1158
  }));
1110
1159
  return;
1111
1160
  }
1112
- const I = n.get(b.id) ?? /* @__PURE__ */ new Map(), E = r.Node.create();
1113
- c++, Q++, h.set(b, E), x.push(b), v(E, I, b), S !== null && S.insertChild(E, S.getChildCount());
1114
- const { spec: D, fallback: M } = Y(b), A = w(b), U = D.hasText && A !== void 0 && A.length > 0;
1115
- if (M) {
1116
- const C = $(b);
1161
+ const T = n.get(k.id) ?? /* @__PURE__ */ new Map(), I = i.Node.create();
1162
+ f++, ae++, h.set(k, I), g.push(k), x(I, T, k), $ !== null && $.insertChild(I, $.getChildCount());
1163
+ const { spec: O, fallback: D } = Q(k), M = v(k), R = O.hasText && M !== void 0 && M.length > 0;
1164
+ if (D) {
1165
+ const j = E(k);
1117
1166
  o.push({
1118
1167
  kind: "unsupported-control",
1119
- message: `<${b.name.local}> has no renderer in this version and is drawn as a plain VisualElement` + (C.length === 0 ? "" : `; its ${C.join(" and ")} attribute${C.length > 1 ? "s are" : " is"} not drawn`),
1120
- node: b.id,
1168
+ message: `<${k.name.local}> has no renderer in this version and is drawn as a plain VisualElement` + (j.length === 0 ? "" : `; its ${j.join(" and ")} attribute${j.length > 1 ? "s are" : " is"} not drawn`),
1169
+ node: k.id,
1121
1170
  reason: "not-rendered",
1122
- subject: { kind: "control", type: b.name.local }
1171
+ subject: { kind: "control", type: k.name.local }
1123
1172
  });
1124
1173
  }
1125
- if (U) {
1126
- b.children.some((N) => !de(N)) && y(
1127
- `<${b.name.local}> has both a text attribute and children; children are not drawn`,
1128
- b,
1129
- { reason: "not-rendered", subject: { kind: "control", type: b.name.local } }
1174
+ const F = ((z = k.attributes.find((j) => j.name === "enable-rich-text")) == null ? void 0 : z.value) ?? "", L = /<\/?(?:a|align|allcaps|alpha|b|br|color|cspace|font|font-weight|gradient|i|indent|line-height|line-indent|lowercase|margin|mark|mspace|nobr|noparse|pos|s|size|smallcaps|space|sprite|style|sub|sup|u|uppercase|voffset|width|link)(?:[=\s][^<>]*)?>/i;
1175
+ if (R && F.trim().toLowerCase() !== "false" && L.test(M) && o.push({
1176
+ kind: "unsupported-property",
1177
+ reason: "not-rendered",
1178
+ node: k.id,
1179
+ message: 'Unity interprets rich text tags here (enable-rich-text is on by default), while this preview draws them as plain characters, so size and position can differ. Use enable-rich-text="false" only if you want literal tags.',
1180
+ subject: { kind: "property", property: "enable-rich-text", value: F, affectsLayout: !0 }
1181
+ }), R && !T.has("-unity-font-definition") && !T.has("-unity-font")) {
1182
+ const j = /[\u1100-\u11ff\u3130-\u318f\uac00-\ud7af\u3400-\u4dbf\u4e00-\u9fff\u3040-\u30ff]/u.exec(M);
1183
+ if (j !== null) {
1184
+ const _ = j[0].codePointAt(0), B = _ >= 12352 && _ <= 12543 ? "kana" : _ >= 13312 && _ <= 19903 || _ >= 19968 && _ <= 40959 ? "han" : "hangul", H = { hangul: "Hangul", han: "Han (CJK ideographs)", kana: "Kana" }[B];
1185
+ o.push({
1186
+ kind: "unsupported-property",
1187
+ reason: "font-fallback",
1188
+ node: k.id,
1189
+ message: `The editor default font (Inter-Regular SDF) has no glyphs for ${H}; Unity draws it with a fallback font whose height can differ (measured 1–4px taller).` + (B === "hangul" ? "" : " Unity's box width was measured 6–87px narrower than this preview's (10–32px font sizes); this preview's width depends on the device's fallback font."),
1190
+ subject: { kind: "property", property: "-unity-font-definition", value: "", affectsLayout: !0, missingGlyphs: B }
1191
+ });
1192
+ }
1193
+ }
1194
+ if (R) {
1195
+ k.children.some((H) => !ve(H)) && r(
1196
+ `<${k.name.local}> has both a text attribute and children; children are not drawn`,
1197
+ k,
1198
+ { reason: "not-rendered", subject: { kind: "control", type: k.name.local } }
1130
1199
  );
1131
- const C = k(I, "font-size", b), P = {
1132
- fontSize: C !== null && C.kind === "px" ? C.value : 12,
1133
- fontStyle: i(I, "-unity-font-style") || "normal",
1134
- whiteSpace: i(I, "white-space") || "normal"
1135
- };
1136
- E.setMeasureFunc(
1137
- (N) => s.measureText(
1138
- A,
1139
- P,
1140
- Number.isFinite(N) ? N : 0
1200
+ const j = b(T, "font-size", k), _ = {
1201
+ fontSize: j !== null && j.kind === "px" ? j.value : 12,
1202
+ fontStyle: y(T, "-unity-font-style") || "normal",
1203
+ whiteSpace: y(T, "white-space") || "normal",
1204
+ textGenerator: y(T, "-unity-text-generator") === "standard" ? "standard" : "advanced"
1205
+ }, B = (Me = s.fonts) == null ? void 0 : Me.get(T);
1206
+ B !== void 0 && (_.fontFamily = B.family, B.faceInfo !== void 0 && (_.faceInfo = B.faceInfo));
1207
+ for (const [H, oe] of [
1208
+ ["letter-spacing", "letterSpacing"],
1209
+ ["word-spacing", "wordSpacing"],
1210
+ ["-unity-paragraph-spacing", "paragraphSpacing"]
1211
+ ]) {
1212
+ const q = b(T, H, k);
1213
+ (q == null ? void 0 : q.kind) === "px" && (_[oe] = q.value);
1214
+ }
1215
+ I.setMeasureFunc(
1216
+ (H) => s.measureText(
1217
+ M,
1218
+ _,
1219
+ Number.isFinite(H) ? H : 0
1141
1220
  )
1142
1221
  );
1143
1222
  return;
1144
1223
  }
1145
- let _ = E;
1146
- if (D.parts.length > 0) {
1147
- p || (p = !0, o.push({
1224
+ let U = I;
1225
+ if (O.parts.length > 0) {
1226
+ a || (a = !0, o.push({
1148
1227
  kind: "version-dependent",
1149
- message: `<${b.name.local}> drawn with built-in child elements measured on Unity ${te}`,
1150
- node: b.id,
1228
+ message: `<${k.name.local}> drawn with built-in child elements measured on Unity ${ce}`,
1229
+ node: k.id,
1151
1230
  reason: "version-dependent",
1152
- subject: { kind: "control", type: b.name.local }
1231
+ subject: { kind: "control", type: k.name.local }
1153
1232
  }));
1154
- const C = [], P = [], N = t.get(b.id);
1155
- for (const xe of D.parts) {
1156
- const ke = (N == null ? void 0 : N.get(xe.name)) ?? /* @__PURE__ */ new Map(), Z = r.Node.create();
1157
- c++, Q++, v(Z, ke, b), _.insertChild(Z, _.getChildCount()), _ = Z, P.push(Z), C.push({
1158
- name: xe.name,
1159
- owner: b.id,
1233
+ const j = [], _ = [], B = t.get(k.id);
1234
+ for (const H of O.parts) {
1235
+ const oe = (B == null ? void 0 : B.get(H.name)) ?? /* @__PURE__ */ new Map(), q = i.Node.create();
1236
+ f++, ae++, x(q, oe, k), U.insertChild(q, U.getChildCount()), U = q, _.push(q), j.push({
1237
+ name: H.name,
1238
+ owner: k.id,
1160
1239
  box: { left: 0, top: 0, width: 0, height: 0 },
1161
- style: ke
1240
+ style: oe
1162
1241
  });
1163
1242
  }
1164
- a.set(b.id, C), l.set(b.id, P);
1165
- }
1166
- for (const C of b.children) O(C, _);
1167
- }
1168
- O(e, null);
1169
- const R = h.get(e);
1170
- R.setWidth(s.size.width), R.setHeight(s.size.height), R.setPositionType(re.Relative), R.calculateLayout(s.size.width, s.size.height, Se.LTR);
1171
- const z = /* @__PURE__ */ new Map();
1172
- for (let b = 0; b < 3; b++) {
1173
- let S = !1;
1174
- for (const [I, E] of a) {
1175
- const D = l.get(I);
1176
- if (D === void 0) continue;
1177
- const M = E.findIndex((N) => N.name === "unity-content-viewport"), A = E.findIndex((N) => N.name === "unity-content-container");
1178
- if (M === -1 || A === -1) continue;
1179
- const U = D[M].getComputedLayout(), C = D[A].getComputedLayout().height > U.height + 0.01, P = Rt(C);
1180
- (z.get(I) ?? 0) !== P && (z.set(I, P), D[M].setMargin(J.Right, P), S = !0);
1181
- }
1182
- if (!S) break;
1183
- R.calculateLayout(s.size.width, s.size.height, Se.LTR);
1184
- }
1185
- function W(b, S, I) {
1186
- const E = h.get(b);
1187
- if (E === void 0) return;
1188
- const D = E.getComputedLayout();
1189
- let M = S + D.left, A = I + D.top;
1190
- d.set(b.id, { left: M, top: A, width: D.width, height: D.height });
1191
- const U = a.get(b.id), _ = l.get(b.id);
1192
- U !== void 0 && _ !== void 0 && U.forEach((C, P) => {
1193
- const N = _[P].getComputedLayout();
1194
- M += N.left, A += N.top, C.box = { left: M, top: A, width: N.width, height: N.height };
1243
+ u.set(k.id, j), l.set(k.id, _);
1244
+ }
1245
+ for (const j of k.children) A(j, U);
1246
+ }
1247
+ A(e, null);
1248
+ const N = h.get(e);
1249
+ N.setWidth(s.size.width), N.setHeight(s.size.height), N.setPositionType(fe.Relative), N.calculateLayout(s.size.width, s.size.height, Re.LTR);
1250
+ const Y = /* @__PURE__ */ new Map();
1251
+ for (let k = 0; k < 3; k++) {
1252
+ let $ = !1;
1253
+ for (const [T, I] of u) {
1254
+ const O = l.get(T);
1255
+ if (O === void 0) continue;
1256
+ const D = I.findIndex((z) => z.name === "unity-content-viewport"), M = I.findIndex((z) => z.name === "unity-content-container");
1257
+ if (D === -1 || M === -1) continue;
1258
+ const R = O[D].getComputedLayout(), L = O[M].getComputedLayout().height > R.height + 0.01, U = _t(L);
1259
+ (Y.get(T) ?? 0) !== U && (Y.set(T, U), O[D].setMargin(se.Right, U), $ = !0);
1260
+ }
1261
+ if (!$) break;
1262
+ N.calculateLayout(s.size.width, s.size.height, Re.LTR);
1263
+ }
1264
+ function te(k, $, T) {
1265
+ const I = h.get(k);
1266
+ if (I === void 0) return;
1267
+ const O = I.getComputedLayout();
1268
+ let D = $ + O.left, M = T + O.top;
1269
+ c.set(k.id, { left: D, top: M, width: O.width, height: O.height });
1270
+ const R = u.get(k.id), F = l.get(k.id);
1271
+ R !== void 0 && F !== void 0 && R.forEach((L, U) => {
1272
+ const z = F[U].getComputedLayout();
1273
+ D += z.left, M += z.top, L.box = { left: D, top: M, width: z.width, height: z.height };
1195
1274
  });
1196
- for (const C of b.children) W(C, M, A);
1275
+ for (const L of k.children) te(L, D, M);
1197
1276
  }
1198
- return W(e, 0, 0), {
1199
- boxes: d,
1200
- parts: a,
1201
- painted: x,
1277
+ return te(e, 0, 0), {
1278
+ boxes: c,
1279
+ parts: u,
1280
+ painted: g,
1202
1281
  warnings: o,
1203
1282
  dispose() {
1204
- u || (u = !0, R.freeRecursive(), Q -= c, h.clear(), l.clear());
1283
+ m || (m = !0, N.freeRecursive(), ae -= f, h.clear(), l.clear());
1205
1284
  }
1206
1285
  };
1207
1286
  }
1208
- const Qt = 1.2;
1209
- function en(e) {
1287
+ const cn = {
1288
+ pointSize: 90,
1289
+ ascentLine: 87.1875,
1290
+ descentLine: -21.73295,
1291
+ lineHeight: 108.9205
1292
+ };
1293
+ function un(e, n, t, s = 0, i = 0) {
1294
+ return Math.ceil(e * n * (t.ascentLine - t.descentLine) / t.pointSize + s * i * n / 100);
1295
+ }
1296
+ function ot(e) {
1297
+ return e === void 0 ? "sans-serif" : `${JSON.stringify(e)}, sans-serif`;
1298
+ }
1299
+ const dn = /((?![\uFFA0-\uFFDC])[\p{Script=Han}\p{Script=Hiragana}\p{Script=Katakana}\u3000-\u303F\u30FC\u3400-\u4DBF\u4E00-\u9FFF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF\u{20000}-\u{3FFFF}])/u;
1300
+ function fn(e) {
1210
1301
  var t;
1211
1302
  let n = null;
1212
1303
  if (e !== void 0) {
1213
1304
  const s = e.createElement("canvas");
1214
1305
  n = ((t = s.getContext) == null ? void 0 : t.call(s, "2d")) ?? null;
1215
1306
  }
1216
- return (s, r, o) => {
1217
- const d = r.fontSize * Qt, a = (p) => {
1218
- if (n === null)
1219
- return p.length * r.fontSize * 0.5;
1220
- const i = r.fontStyle.includes("bold") ? "bold" : "normal", y = r.fontStyle.includes("italic") ? "italic" : "normal";
1221
- return n.font = `${y} ${i} ${r.fontSize}px sans-serif`, n.measureText(p).width;
1307
+ return (s, i, o) => {
1308
+ const c = i.fontStyle.includes("bold") ? "bold" : "normal", u = i.fontStyle.includes("italic") ? "italic" : "normal", g = (r) => {
1309
+ n !== null && (n.font = `${u} ${c} ${r}px ${ot(i.fontFamily)}`);
1222
1310
  };
1223
- if (!(r.whiteSpace !== "nowrap" && r.whiteSpace !== "pre") || o <= 0) {
1224
- const p = s.split(`
1225
- `);
1226
- return { width: p.reduce((y, k) => Math.max(y, a(k)), 0), height: p.length * d };
1227
- }
1228
- const h = s.split(/\s+/).filter((p) => p.length > 0);
1229
- let l = 1, c = 0, u = 0;
1230
- for (const p of h) {
1231
- const i = a(p), y = c === 0 ? 0 : a(" ");
1232
- c > 0 && c + y + i > o ? (u = Math.max(u, c), l++, c = i) : c += y + i;
1233
- }
1234
- return u = Math.max(u, c), { width: u, height: l * d };
1311
+ let h = i.faceInfo;
1312
+ if (h === void 0 && i.fontFamily !== void 0 && n !== null) {
1313
+ g(90);
1314
+ const r = n.measureText("Mg");
1315
+ Number.isFinite(r.fontBoundingBoxAscent) && Number.isFinite(r.fontBoundingBoxDescent) && (h = { pointSize: 90, ascentLine: r.fontBoundingBoxAscent, descentLine: -r.fontBoundingBoxDescent });
1316
+ }
1317
+ g(i.fontSize);
1318
+ const l = (r) => {
1319
+ const w = [...r].length, b = [...r].filter((x) => x === " ").length, p = Math.max(0, w - 1 - (i.textGenerator === "standard" ? 0 : b));
1320
+ return (n === null ? w * i.fontSize * 0.5 : n.measureText(r).width) + (p * (i.letterSpacing ?? 0) + b * (i.wordSpacing ?? 0)) * i.fontSize / 100;
1321
+ }, f = s.split(`
1322
+ `).map((r) => i.whiteSpace === "pre" || i.whiteSpace === "pre-wrap" ? r : r.replace(/ +/g, " ").trim()), m = i.whiteSpace !== "nowrap" && i.whiteSpace !== "pre" && o > 0;
1323
+ let a = 0, y = 0;
1324
+ for (const r of f) {
1325
+ let w = "";
1326
+ if (a++, !m) {
1327
+ y = Math.max(y, l(r));
1328
+ continue;
1329
+ }
1330
+ const b = r.split(/\s+/).filter((p) => p.length > 0).flatMap((p) => p.split(dn).filter((d) => d.length > 0).map((d, x) => ({ value: d, separator: x === 0 ? " " : "" })));
1331
+ for (const { value: p, separator: d } of b) {
1332
+ const x = w === "" ? p : `${w}${d}${p}`;
1333
+ w !== "" && l(x) > o ? (y = Math.max(y, l(w)), a++, w = p) : w = x;
1334
+ }
1335
+ y = Math.max(y, l(w));
1336
+ }
1337
+ return { width: y, height: un(
1338
+ a,
1339
+ i.fontSize,
1340
+ h ?? cn,
1341
+ f.length - 1,
1342
+ i.paragraphSpacing ?? 0
1343
+ ) };
1235
1344
  };
1236
1345
  }
1237
- const tn = ["top", "right", "bottom", "left"], nn = {
1346
+ const pn = ["top", "right", "bottom", "left"], hn = {
1238
1347
  normal: { weight: "normal", style: "normal" },
1239
1348
  bold: { weight: "bold", style: "normal" },
1240
1349
  italic: { weight: "normal", style: "italic" },
1241
1350
  "bold-and-italic": { weight: "bold", style: "italic" }
1242
- }, sn = {
1351
+ }, mn = {
1243
1352
  upper: "flex-start",
1244
1353
  middle: "center",
1245
1354
  lower: "flex-end"
1246
- }, on = {
1355
+ }, gn = {
1247
1356
  left: "flex-start",
1248
1357
  center: "center",
1249
1358
  right: "flex-end"
1250
- }, ue = {
1359
+ }, be = {
1251
1360
  "stretch-to-fill": "100% 100%",
1252
1361
  "scale-and-crop": "cover",
1253
1362
  "scale-to-fit": "contain"
1254
- }, Re = "stretch-to-fill";
1255
- function rn(e) {
1256
- const n = /^(url|resource)\(\s*(["']?)(.*?)\2\s*\)$/.exec(X(e).trim());
1363
+ }, ze = "stretch-to-fill";
1364
+ function rt(e) {
1365
+ const n = /^(url|resource)\(\s*(["']?)(.*?)\2\s*\)$/.exec(ee(e).trim());
1257
1366
  return n === null ? null : { form: n[1], path: n[3] };
1258
1367
  }
1259
- function Ae(e, n, t = {}) {
1260
- var k;
1261
- const s = {}, r = [], o = (f) => {
1262
- var m;
1263
- return (m = e.get(f)) == null ? void 0 : m.value;
1264
- }, d = (f, m, v = {}) => {
1265
- var $, T, O;
1266
- const w = (($ = v.subject) == null ? void 0 : $.kind) === "property" ? v.subject.property : ((T = v.subject) == null ? void 0 : T.kind) === "asset" ? "background-image" : void 0, g = w === void 0 ? void 0 : e.get(w);
1267
- (g == null ? void 0 : g.origin.kind) !== "inherited" && r.push({
1268
- kind: f,
1269
- message: m,
1368
+ function Pe(e, n, t = {}) {
1369
+ var p;
1370
+ const s = {}, i = [], o = (d) => {
1371
+ var x;
1372
+ return (x = e.get(d)) == null ? void 0 : x.value;
1373
+ }, c = (d, x, v = {}) => {
1374
+ var C, A, N;
1375
+ const S = ((C = v.subject) == null ? void 0 : C.kind) === "property" ? v.subject.property : ((A = v.subject) == null ? void 0 : A.kind) === "asset" ? "background-image" : void 0, E = S === void 0 ? void 0 : e.get(S);
1376
+ (E == null ? void 0 : E.origin.kind) !== "inherited" && i.push({
1377
+ kind: d,
1378
+ message: x,
1270
1379
  node: n,
1271
1380
  ...v,
1272
- ...g === void 0 ? {} : ((O = t.locate) == null ? void 0 : O.call(t, g.origin)) ?? {}
1381
+ ...E === void 0 ? {} : ((N = t.locate) == null ? void 0 : N.call(t, E.origin)) ?? {}
1273
1382
  });
1274
- }, a = (f, m = o(f)) => ({
1275
- subject: { kind: "property", property: f, ...m === void 0 ? {} : { value: m } }
1383
+ }, u = (d, x = o(d)) => ({
1384
+ subject: { kind: "property", property: d, ...x === void 0 ? {} : { value: x } }
1276
1385
  });
1277
1386
  s["box-sizing"] = "border-box";
1278
- const x = [
1387
+ const g = [
1279
1388
  "background-color",
1280
1389
  "color",
1281
1390
  "opacity",
1282
1391
  "visibility",
1283
- "letter-spacing",
1284
- "word-spacing",
1285
1392
  "white-space",
1286
1393
  "text-overflow",
1287
1394
  "cursor",
1288
1395
  "font-size",
1289
1396
  "transform-origin"
1290
1397
  ];
1291
- for (const f of x) {
1292
- const m = o(f);
1293
- m !== void 0 && (s[f] = m);
1398
+ for (const d of g) {
1399
+ const x = o(d);
1400
+ x !== void 0 && (s[d] = x);
1401
+ }
1402
+ const h = V(o("font-size") ?? "12px").length, l = (h == null ? void 0 : h.kind) === "px" ? h.value : 12;
1403
+ for (const d of ["letter-spacing", "word-spacing"]) {
1404
+ const x = V(o(d) ?? "").length;
1405
+ (x == null ? void 0 : x.kind) === "px" && (s[d] = `${x.value * l / 100}px`);
1294
1406
  }
1295
1407
  o("display") === "none" && (s.display = "none"), o("overflow") === "hidden" && (s.overflow = "hidden");
1296
- for (const f of tn) {
1297
- const m = o(`border-${f}-width`);
1298
- if (m !== void 0 && m !== "0") {
1299
- const { length: g, problem: $ } = ne(m);
1300
- g === null || g.kind !== "px" ? d(
1408
+ for (const d of pn) {
1409
+ const x = o(`border-${d}-width`);
1410
+ if (x !== void 0 && x !== "0") {
1411
+ const { length: E, problem: C } = V(x);
1412
+ E === null || E.kind !== "px" ? C === void 0 && c(
1301
1413
  "unsupported-property",
1302
- `border-${f}-width: ${$ ?? `"${m}" is not a pixel length`}; ignored`,
1303
- { reason: "invalid-value", ...a(`border-${f}-width`) }
1304
- ) : (s[`border-${f}-width`] = `${g.value}px`, s[`border-${f}-style`] = "solid");
1414
+ `border-${d}-width: "${x}" is not a pixel length; ignored`,
1415
+ { reason: "invalid-value", ...u(`border-${d}-width`) }
1416
+ ) : (s[`border-${d}-width`] = `${E.value}px`, s[`border-${d}-style`] = "solid");
1305
1417
  }
1306
- const v = o(`border-${f}-color`);
1307
- v !== void 0 && (s[`border-${f}-color`] = v);
1308
- const w = o(`padding-${f}`);
1309
- w !== void 0 && w !== "0" && (s[`padding-${f}`] = w);
1418
+ const v = o(`border-${d}-color`);
1419
+ v !== void 0 && (s[`border-${d}-color`] = v);
1420
+ const S = o(`padding-${d}`);
1421
+ S !== void 0 && S !== "0" && (s[`padding-${d}`] = S);
1310
1422
  }
1311
- for (const f of [
1423
+ for (const d of [
1312
1424
  "top-left",
1313
1425
  "top-right",
1314
1426
  "bottom-right",
1315
1427
  "bottom-left"
1316
1428
  ]) {
1317
- const m = o(`border-${f}-radius`);
1318
- m !== void 0 && (s[`border-${f}-radius`] = m);
1429
+ const x = o(`border-${d}-radius`);
1430
+ x !== void 0 && (s[`border-${d}-radius`] = x);
1319
1431
  }
1320
- const h = o("-unity-font-style");
1321
- if (h !== void 0) {
1322
- const f = nn[h];
1323
- f === void 0 ? d("unsupported-property", `-unity-font-style: "${h}" ignored`, {
1432
+ const f = o("-unity-font-style");
1433
+ if (f !== void 0) {
1434
+ const d = hn[f];
1435
+ d === void 0 ? c("unsupported-property", `-unity-font-style: "${f}" ignored`, {
1324
1436
  reason: "invalid-value",
1325
- ...a("-unity-font-style")
1326
- }) : (s["font-weight"] = f.weight, s["font-style"] = f.style);
1437
+ ...u("-unity-font-style")
1438
+ }) : (s["font-weight"] = d.weight, s["font-style"] = d.style);
1327
1439
  }
1328
- const l = o("-unity-text-align");
1329
- if (l !== void 0) {
1330
- const [f, m] = l.split("-"), v = sn[f ?? ""], w = on[m ?? ""];
1331
- v === void 0 || w === void 0 ? d("unsupported-property", `-unity-text-align: "${l}" ignored`, {
1440
+ const m = o("-unity-text-align");
1441
+ if (m !== void 0) {
1442
+ const [d, x] = m.split("-"), v = mn[d ?? ""], S = gn[x ?? ""];
1443
+ v === void 0 || S === void 0 ? c("unsupported-property", `-unity-text-align: "${m}" ignored`, {
1332
1444
  reason: "invalid-value",
1333
- ...a("-unity-text-align")
1334
- }) : (s["align-items"] = v, s["justify-content"] = w);
1335
- }
1336
- const c = [], u = o("translate");
1337
- u !== void 0 && c.push(`translate(${u.replace(/\s+/, ", ")})`);
1338
- const p = o("rotate");
1339
- p !== void 0 && c.push(`rotate(${p})`);
1340
- const i = o("scale");
1341
- i !== void 0 && c.push(`scale(${i.replace(/\s+/, ", ")})`), c.length > 0 && (s.transform = c.join(" "));
1342
- const y = o("background-image");
1343
- if (y !== void 0 && y !== "none") {
1344
- const f = rn(y);
1345
- if (f === null)
1346
- d("unsupported-property", `background-image: "${y}" is not an asset reference; ignored`, {
1445
+ ...u("-unity-text-align")
1446
+ }) : (s["align-items"] = v, s["justify-content"] = S);
1447
+ }
1448
+ const a = [], y = o("translate");
1449
+ y !== void 0 && a.push(`translate(${y.replace(/\s+/, ", ")})`);
1450
+ const r = o("rotate");
1451
+ r !== void 0 && a.push(`rotate(${r})`);
1452
+ const w = o("scale");
1453
+ w !== void 0 && a.push(`scale(${w.replace(/\s+/, ", ")})`), a.length > 0 && (s.transform = a.join(" "));
1454
+ const b = o("background-image");
1455
+ if (b !== void 0 && b !== "none") {
1456
+ const d = rt(b);
1457
+ if (d === null)
1458
+ c("unsupported-property", `background-image: "${b}" is not an asset reference; Unity shows its warning icon instead`, {
1347
1459
  reason: "not-uss",
1348
- ...a("background-image")
1460
+ ...u("background-image")
1349
1461
  });
1350
1462
  else {
1351
- const { form: m, path: v } = f, w = ((k = t.resolveAsset) == null ? void 0 : k.call(t, v, m)) ?? null;
1352
- if (w === null)
1353
- s["background-image"] = "repeating-linear-gradient(45deg, rgba(255,0,255,0.35) 0 6px, rgba(0,0,0,0) 6px 12px)", d("asset-unresolved", `background-image: "${v}" was not resolved`, {
1354
- subject: { kind: "asset", path: v, form: m }
1463
+ const { form: x, path: v } = d, S = ((p = t.resolveAsset) == null ? void 0 : p.call(t, v, x)) ?? null;
1464
+ if (S === null)
1465
+ s["background-image"] = "repeating-linear-gradient(45deg, rgba(255,0,255,0.35) 0 6px, rgba(0,0,0,0) 6px 12px)", c("asset-unresolved", `background-image: "${v}" was not resolved`, {
1466
+ subject: { kind: "asset", path: v, form: x }
1355
1467
  });
1356
1468
  else {
1357
- s["background-image"] = `url("${w}")`, s["background-repeat"] = o("background-repeat") ?? "no-repeat", s["background-position"] = o("background-position") ?? "center";
1358
- const g = o("background-size"), $ = o("-unity-background-scale-mode") ?? Re, T = ue[$];
1359
- T === void 0 && d(
1469
+ s["background-image"] = `url("${S}")`, s["background-repeat"] = o("background-repeat") ?? "no-repeat", s["background-position"] = o("background-position") ?? "center";
1470
+ const E = o("background-size"), C = o("-unity-background-scale-mode") ?? ze, A = be[C];
1471
+ A === void 0 && c(
1360
1472
  "unsupported-property",
1361
- `-unity-background-scale-mode: "${$}" ignored; expected one of ${Object.keys(ue).join(", ")}`,
1362
- { reason: "invalid-value", ...a("-unity-background-scale-mode", $) }
1363
- ), s["background-size"] = g ?? T ?? ue[Re];
1473
+ `-unity-background-scale-mode: "${C}" ignored; expected one of ${Object.keys(be).join(", ")}`,
1474
+ { reason: "invalid-value", ...u("-unity-background-scale-mode", C) }
1475
+ ), s["background-size"] = E ?? A ?? be[ze];
1364
1476
  }
1365
1477
  }
1366
1478
  }
1367
- return { declarations: s, warnings: r };
1479
+ return { declarations: s, warnings: i };
1368
1480
  }
1369
- const an = "data-uxml-node", ln = "data-uxml-part", cn = "data-uxml-part-owner";
1370
- function un(e, n, t, s, r, o) {
1371
- const d = [], a = /* @__PURE__ */ new Map();
1372
- function x(u) {
1373
- const p = s.get(u.id), i = (y) => {
1374
- var m;
1375
- const k = ((m = p == null ? void 0 : p.get(y)) == null ? void 0 : m.value) ?? fe[y] ?? "0", { length: f } = ne(k);
1376
- return f !== null && f.kind === "px" ? f.value : 0;
1481
+ const yn = "data-uxml-node", bn = "data-uxml-part", vn = "data-uxml-part-owner";
1482
+ function wn(e, n, t, s, i, o) {
1483
+ const c = [], u = /* @__PURE__ */ new Map();
1484
+ function g(a) {
1485
+ const y = s.get(a.id), r = (w) => {
1486
+ var d;
1487
+ const b = ((d = y == null ? void 0 : y.get(w)) == null ? void 0 : d.value) ?? xe[w] ?? "0", { length: p } = V(b);
1488
+ return p !== null && p.kind === "px" ? p.value : 0;
1377
1489
  };
1378
- return { left: i("border-left-width"), top: i("border-top-width") };
1490
+ return { left: r("border-left-width"), top: r("border-top-width") };
1379
1491
  }
1380
- function h(u) {
1381
- const p = (i) => {
1382
- var f;
1383
- const y = ((f = u.style.get(i)) == null ? void 0 : f.value) ?? fe[i] ?? "0", { length: k } = ne(y);
1384
- return k !== null && k.kind === "px" ? k.value : 0;
1492
+ function h(a) {
1493
+ const y = (r) => {
1494
+ var p;
1495
+ const w = ((p = a.style.get(r)) == null ? void 0 : p.value) ?? xe[r] ?? "0", { length: b } = V(w);
1496
+ return b !== null && b.kind === "px" ? b.value : 0;
1385
1497
  };
1386
- return { left: p("border-left-width"), top: p("border-top-width") };
1498
+ return { left: y("border-left-width"), top: y("border-top-width") };
1387
1499
  }
1388
- function l(u, p, i) {
1389
- var O;
1390
- const y = n.get(u.id);
1391
- if (y === void 0) return null;
1392
- const k = o.document.createElement("div");
1393
- k.setAttribute(an, String(u.id));
1394
- const f = s.get(u.id) ?? /* @__PURE__ */ new Map(), m = Ae(f, u.id, o);
1395
- d.push(...m.warnings);
1396
- const v = p === null ? 0 : y.left - p.left - i.left, w = p === null ? 0 : y.top - p.top - i.top, g = {
1500
+ function l(a, y, r) {
1501
+ var x, v;
1502
+ const w = V(((x = r.get("letter-spacing")) == null ? void 0 : x.value) ?? "").length;
1503
+ if ((w == null ? void 0 : w.kind) !== "px" || w.value === 0) {
1504
+ a.textContent = y;
1505
+ return;
1506
+ }
1507
+ const b = ((v = r.get("-unity-text-generator")) == null ? void 0 : v.value) === "standard", p = [...y], d = p.pop();
1508
+ for (const S of p.join("").match(/ +|[^ ]+/g) ?? []) {
1509
+ const E = o.document.createElement("span");
1510
+ E.textContent = S, !b && S[0] === " " && (E.style.letterSpacing = "0px"), a.appendChild(E);
1511
+ }
1512
+ if (d !== void 0) {
1513
+ const S = o.document.createElement("span");
1514
+ S.textContent = d, S.style.letterSpacing = "0px", a.appendChild(S);
1515
+ }
1516
+ }
1517
+ function f(a, y, r) {
1518
+ var A, N, Y, te, k;
1519
+ const w = n.get(a.id);
1520
+ if (w === void 0) return null;
1521
+ const b = o.document.createElement("div");
1522
+ b.setAttribute(yn, String(a.id));
1523
+ const p = s.get(a.id) ?? /* @__PURE__ */ new Map(), d = Pe(p, a.id, o);
1524
+ c.push(...d.warnings);
1525
+ const x = y === null ? 0 : w.left - y.left - r.left, v = y === null ? 0 : w.top - y.top - r.top, S = {
1397
1526
  position: "absolute",
1398
- left: `${v}px`,
1399
- top: `${w}px`,
1400
- width: `${y.width}px`,
1401
- height: `${y.height}px`,
1527
+ left: `${x}px`,
1528
+ top: `${v}px`,
1529
+ width: `${w.width}px`,
1530
+ height: `${w.height}px`,
1402
1531
  margin: "0",
1403
- ...m.declarations
1532
+ ...d.declarations
1404
1533
  };
1405
- for (const [R, z] of Object.entries(g))
1406
- k.style.setProperty(R, z);
1407
- const { spec: $ } = Y(u), T = (O = u.attributes.find((R) => R.name === "text")) == null ? void 0 : O.value;
1408
- if ($.hasText && T !== void 0 && T.length > 0)
1409
- k.style.setProperty("display", m.declarations.display ?? "flex"), m.declarations["align-items"] === void 0 && k.style.setProperty("align-items", "flex-start"), m.declarations["justify-content"] === void 0 && k.style.setProperty("justify-content", "flex-start"), k.textContent = X(T);
1410
- else {
1411
- let R = k, z = y, W = x(u);
1412
- for (const b of t.get(u.id) ?? []) {
1413
- const S = o.document.createElement("div");
1414
- S.setAttribute(ln, b.name), S.setAttribute(cn, String(u.id));
1415
- const I = Ae(b.style, u.id, o);
1416
- d.push(...I.warnings);
1417
- const E = {
1534
+ for (const [$, T] of Object.entries(S))
1535
+ b.style.setProperty($, T);
1536
+ const { spec: E } = Q(a), C = (A = a.attributes.find(($) => $.name === "text")) == null ? void 0 : A.value;
1537
+ if (E.hasText && C !== void 0 && C.length > 0) {
1538
+ b.style.setProperty("display", d.declarations.display ?? "flex"), d.declarations["align-items"] === void 0 && b.style.setProperty("align-items", "flex-start"), d.declarations["justify-content"] === void 0 && b.style.setProperty("justify-content", "flex-start");
1539
+ const $ = (N = o.fonts) == null ? void 0 : N.get(p);
1540
+ $ !== void 0 && (b.style.fontFamily = ot($.family));
1541
+ const T = V(((Y = p.get("-unity-paragraph-spacing")) == null ? void 0 : Y.value) ?? "").length, I = ee(C), O = V(((te = p.get("letter-spacing")) == null ? void 0 : te.value) ?? "").length;
1542
+ if ((T == null ? void 0 : T.kind) === "px" && I.includes(`
1543
+ `)) {
1544
+ const D = V(((k = p.get("font-size")) == null ? void 0 : k.value) ?? "12px").length, M = I.split(`
1545
+ `), R = o.document.createElement("div");
1546
+ R.style.width = "100%", M.forEach((F, L) => {
1547
+ const U = o.document.createElement("div");
1548
+ if (l(U, F, p), U.style.minHeight = "1em", L < M.length - 1 && (U.style.marginBottom = `${T.value * ((D == null ? void 0 : D.kind) === "px" ? D.value : 12) / 100}px`), R.appendChild(U), L < M.length - 1) {
1549
+ const z = o.document.createElement("span");
1550
+ z.textContent = `
1551
+ `, z.style.display = "none", R.appendChild(z);
1552
+ }
1553
+ }), b.appendChild(R);
1554
+ } else if ((O == null ? void 0 : O.kind) === "px" && O.value !== 0) {
1555
+ const D = o.document.createElement("span");
1556
+ D.style.minWidth = "0", l(D, I, p), b.appendChild(D);
1557
+ } else
1558
+ b.textContent = I;
1559
+ } else {
1560
+ let $ = b, T = w, I = g(a);
1561
+ for (const O of t.get(a.id) ?? []) {
1562
+ const D = o.document.createElement("div");
1563
+ D.setAttribute(bn, O.name), D.setAttribute(vn, String(a.id));
1564
+ const M = Pe(O.style, a.id, o);
1565
+ c.push(...M.warnings);
1566
+ const R = {
1418
1567
  position: "absolute",
1419
- left: `${b.box.left - z.left - W.left}px`,
1420
- top: `${b.box.top - z.top - W.top}px`,
1421
- width: `${b.box.width}px`,
1422
- height: `${b.box.height}px`,
1568
+ left: `${O.box.left - T.left - I.left}px`,
1569
+ top: `${O.box.top - T.top - I.top}px`,
1570
+ width: `${O.box.width}px`,
1571
+ height: `${O.box.height}px`,
1423
1572
  margin: "0",
1424
- ...I.declarations
1573
+ ...M.declarations
1425
1574
  };
1426
- for (const [D, M] of Object.entries(E))
1427
- S.style.setProperty(D, M);
1428
- R.appendChild(S), R = S, z = b.box, W = h(b);
1575
+ for (const [F, L] of Object.entries(R))
1576
+ D.style.setProperty(F, L);
1577
+ $.appendChild(D), $ = D, T = O.box, I = h(O);
1429
1578
  }
1430
- for (const b of u.children) {
1431
- const S = l(b, z, W);
1432
- S !== null && R.appendChild(S);
1579
+ for (const O of a.children) {
1580
+ const D = f(O, T, I);
1581
+ D !== null && $.appendChild(D);
1433
1582
  }
1434
1583
  }
1435
- return a.set(u.id, k), k;
1584
+ return u.set(a.id, b), b;
1436
1585
  }
1437
- r.replaceChildren();
1438
- const c = l(e, null, { left: 0, top: 0 });
1439
- return c !== null && (c.style.setProperty("position", "relative"), r.appendChild(c)), { warnings: d, elements: a };
1586
+ i.replaceChildren();
1587
+ const m = f(e, null, { left: 0, top: 0 });
1588
+ return m !== null && (m.style.setProperty("position", "relative"), i.appendChild(m)), { warnings: c, elements: u };
1440
1589
  }
1441
- const Ce = /[A-Za-z0-9_-]/;
1442
- function V(e) {
1590
+ const _e = /[A-Za-z0-9_-]/;
1591
+ function Z(e) {
1443
1592
  return e === " " || e === " " || e === `
1444
1593
  ` || e === "\r" || e === "\f";
1445
1594
  }
1446
- function pe(e, n, t) {
1447
- let s = n, r = 0;
1595
+ function ke(e, n, t) {
1596
+ let s = n, i = 0;
1448
1597
  for (; s < e.length; ) {
1449
1598
  const o = e[s];
1450
1599
  if (o === '"' || o === "'") {
1451
- const d = e.indexOf(o, s + 1);
1452
- s = d < 0 ? e.length : d + 1;
1600
+ const c = e.indexOf(o, s + 1);
1601
+ s = c < 0 ? e.length : c + 1;
1453
1602
  continue;
1454
1603
  }
1455
1604
  if (o === "/" && e[s + 1] === "*") {
1456
- const d = e.indexOf("*/", s + 2);
1457
- s = d < 0 ? e.length : d + 2;
1605
+ const c = e.indexOf("*/", s + 2);
1606
+ s = c < 0 ? e.length : c + 2;
1458
1607
  continue;
1459
1608
  }
1460
1609
  if (o === "(" || o === "[")
1461
- r++;
1610
+ i++;
1462
1611
  else if (o === ")" || o === "]")
1463
- r > 0 && r--;
1464
- else if (r === 0 && t.includes(o))
1612
+ i > 0 && i--;
1613
+ else if (i === 0 && t.includes(o))
1465
1614
  return s;
1466
1615
  s++;
1467
1616
  }
1468
1617
  return e.length;
1469
1618
  }
1470
- function Ze(e, n, t) {
1471
- let s = n, r = t;
1472
- for (; s < r && V(e[s]); ) s++;
1473
- for (; r > s && V(e[r - 1]); ) r--;
1474
- return { start: s, end: r };
1619
+ function at(e, n, t) {
1620
+ let s = n, i = t;
1621
+ for (; s < i && Z(e[s]); ) s++;
1622
+ for (; i > s && Z(e[i - 1]); ) i--;
1623
+ return { start: s, end: i };
1475
1624
  }
1476
- function Ke(e, n, t, s) {
1477
- const r = [];
1625
+ function lt(e, n, t, s) {
1626
+ const i = [];
1478
1627
  let o = n;
1479
1628
  for (; o < t; ) {
1480
- for (; o < t && (V(e[o]) || e.startsWith("/*", o)); )
1629
+ for (; o < t && (Z(e[o]) || e.startsWith("/*", o)); )
1481
1630
  if (e.startsWith("/*", o)) {
1482
1631
  const l = e.indexOf("*/", o + 2);
1483
1632
  o = l < 0 ? t : l + 2;
@@ -1488,195 +1637,195 @@ function Ke(e, n, t, s) {
1488
1637
  o++;
1489
1638
  continue;
1490
1639
  }
1491
- const d = o, a = pe(e, d, ":;}");
1492
- if (a >= t || e[a] !== ":") {
1493
- const l = Math.min(a, t);
1494
- s == null || s("declaration without a value", d, l), o = l + 1;
1640
+ const c = o, u = ke(e, c, ":;}");
1641
+ if (u >= t || e[u] !== ":") {
1642
+ const l = Math.min(u, t);
1643
+ s == null || s("declaration without a value", c, l), o = l + 1;
1495
1644
  continue;
1496
1645
  }
1497
- const x = Math.min(pe(e, a + 1, ";}"), t), h = Ze(e, a + 1, x);
1498
- r.push({
1499
- property: e.slice(d, a).trim(),
1646
+ const g = Math.min(ke(e, u + 1, ";}"), t), h = at(e, u + 1, g);
1647
+ i.push({
1648
+ property: e.slice(c, u).trim(),
1500
1649
  value: e.slice(h.start, h.end),
1501
- span: { start: d, end: h.end },
1650
+ span: { start: c, end: h.end },
1502
1651
  dirty: !1
1503
- }), o = x + 1;
1652
+ }), o = g + 1;
1504
1653
  }
1505
- return r;
1654
+ return i;
1506
1655
  }
1507
- function dn(e) {
1656
+ function xn(e) {
1508
1657
  const n = e.span.end - 1 - e.value.length;
1509
1658
  return n < e.span.start ? null : n;
1510
1659
  }
1511
- function ve(e, n = null, t = 0) {
1512
- const s = [], r = [];
1660
+ function De(e, n = null, t = 0) {
1661
+ const s = [], i = [];
1513
1662
  let o = 0;
1514
- function d(m, v, w) {
1663
+ function c(p, d, x) {
1515
1664
  s.push({
1516
1665
  kind: "malformed",
1517
- message: m,
1518
- at: { in: "uss", sheet: t, span: { start: v, end: w } }
1666
+ message: p,
1667
+ at: { in: "uss", sheet: t, span: { start: d, end: x } }
1519
1668
  });
1520
1669
  }
1521
- function a() {
1670
+ function u() {
1522
1671
  for (; ; ) {
1523
- for (; V(e[o]); ) o++;
1672
+ for (; Z(e[o]); ) o++;
1524
1673
  if (e.startsWith("/*", o)) {
1525
- const m = e.indexOf("*/", o + 2);
1526
- o = m < 0 ? e.length : m + 2;
1674
+ const p = e.indexOf("*/", o + 2);
1675
+ o = p < 0 ? e.length : p + 2;
1527
1676
  continue;
1528
1677
  }
1529
1678
  return;
1530
1679
  }
1531
1680
  }
1532
- const x = (m, v) => pe(e, m, v), h = (m, v) => Ze(e, m, v);
1533
- function l(m) {
1534
- let v = m + 1, w = 1;
1535
- for (; v < e.length; ) {
1536
- const g = e[v];
1537
- if (g === '"' || g === "'") {
1538
- const $ = e.indexOf(g, v + 1);
1539
- v = $ < 0 ? e.length : $ + 1;
1681
+ const g = (p, d) => ke(e, p, d), h = (p, d) => at(e, p, d);
1682
+ function l(p) {
1683
+ let d = p + 1, x = 1;
1684
+ for (; d < e.length; ) {
1685
+ const v = e[d];
1686
+ if (v === '"' || v === "'") {
1687
+ const S = e.indexOf(v, d + 1);
1688
+ d = S < 0 ? e.length : S + 1;
1540
1689
  continue;
1541
1690
  }
1542
- if (g === "/" && e[v + 1] === "*") {
1543
- const $ = e.indexOf("*/", v + 2);
1544
- v = $ < 0 ? e.length : $ + 2;
1691
+ if (v === "/" && e[d + 1] === "*") {
1692
+ const S = e.indexOf("*/", d + 2);
1693
+ d = S < 0 ? e.length : S + 2;
1545
1694
  continue;
1546
1695
  }
1547
- if (g === "{") w++;
1548
- else if (g === "}" && --w === 0) return v + 1;
1549
- v++;
1696
+ if (v === "{") x++;
1697
+ else if (v === "}" && --x === 0) return d + 1;
1698
+ d++;
1550
1699
  }
1551
1700
  return e.length;
1552
1701
  }
1553
- function c(m) {
1554
- let v = m;
1555
- for (; v < e.length && Ce.test(e[v]); ) v++;
1556
- return v;
1557
- }
1558
- function u(m) {
1559
- const v = e[m], w = v === "(" ? ")" : "]";
1560
- let g = m + 1, $ = 1;
1561
- for (; g < e.length; ) {
1562
- const T = e[g];
1563
- if (T === '"' || T === "'") {
1564
- const O = e.indexOf(T, g + 1);
1565
- g = O < 0 ? e.length : O + 1;
1702
+ function f(p) {
1703
+ let d = p;
1704
+ for (; d < e.length && _e.test(e[d]); ) d++;
1705
+ return d;
1706
+ }
1707
+ function m(p) {
1708
+ const d = e[p], x = d === "(" ? ")" : "]";
1709
+ let v = p + 1, S = 1;
1710
+ for (; v < e.length; ) {
1711
+ const E = e[v];
1712
+ if (E === '"' || E === "'") {
1713
+ const C = e.indexOf(E, v + 1);
1714
+ v = C < 0 ? e.length : C + 1;
1566
1715
  continue;
1567
1716
  }
1568
- if (T === v) $++;
1569
- else if (T === w && --$ === 0) return g + 1;
1570
- g++;
1717
+ if (E === d) S++;
1718
+ else if (E === x && --S === 0) return v + 1;
1719
+ v++;
1571
1720
  }
1572
1721
  return e.length;
1573
1722
  }
1574
- function p(m, v) {
1575
- const w = [];
1576
- let g = m;
1577
- for (; g < v; ) {
1578
- const $ = e[g];
1579
- if (V($) || $ === ">" || $ === "+" || $ === "~" || $ === ",") break;
1580
- if ($ === "*")
1581
- w.push({ kind: "universal" }), g++;
1582
- else if ($ === "." || $ === "#") {
1583
- const T = c(g + 1);
1584
- w.push(
1585
- $ === "." ? { kind: "class", name: e.slice(g + 1, T) } : { kind: "name", name: e.slice(g + 1, T) }
1586
- ), g = T;
1587
- } else if ($ === "[") {
1588
- const T = Math.min(u(g), v);
1589
- w.push({ kind: "unknown", text: e.slice(g, T) }), g = T;
1590
- } else if ($ === ":")
1591
- if (e[g + 1] === ":") {
1592
- const T = c(g + 2);
1593
- w.push({ kind: "unknown", text: e.slice(g, T) }), g = T;
1723
+ function a(p, d) {
1724
+ const x = [];
1725
+ let v = p;
1726
+ for (; v < d; ) {
1727
+ const S = e[v];
1728
+ if (Z(S) || S === ">" || S === "+" || S === "~" || S === ",") break;
1729
+ if (S === "*")
1730
+ x.push({ kind: "universal" }), v++;
1731
+ else if (S === "." || S === "#") {
1732
+ const E = f(v + 1);
1733
+ x.push(
1734
+ S === "." ? { kind: "class", name: e.slice(v + 1, E) } : { kind: "name", name: e.slice(v + 1, E) }
1735
+ ), v = E;
1736
+ } else if (S === "[") {
1737
+ const E = Math.min(m(v), d);
1738
+ x.push({ kind: "unknown", text: e.slice(v, E) }), v = E;
1739
+ } else if (S === ":")
1740
+ if (e[v + 1] === ":") {
1741
+ const E = f(v + 2);
1742
+ x.push({ kind: "unknown", text: e.slice(v, E) }), v = E;
1594
1743
  } else {
1595
- const T = c(g + 1);
1596
- if (e[T] === "(") {
1597
- const O = Math.min(u(T), v);
1598
- w.push({ kind: "unknown", text: e.slice(g, O) }), g = O;
1744
+ const E = f(v + 1);
1745
+ if (e[E] === "(") {
1746
+ const C = Math.min(m(E), d);
1747
+ x.push({ kind: "unknown", text: e.slice(v, C) }), v = C;
1599
1748
  } else
1600
- w.push({ kind: "pseudo", name: e.slice(g + 1, T) }), g = T;
1749
+ x.push({ kind: "pseudo", name: e.slice(v + 1, E) }), v = E;
1601
1750
  }
1602
- else if (Ce.test($)) {
1603
- const T = c(g);
1604
- w.push({ kind: "type", name: e.slice(g, T) }), g = T;
1751
+ else if (_e.test(S)) {
1752
+ const E = f(v);
1753
+ x.push({ kind: "type", name: e.slice(v, E) }), v = E;
1605
1754
  } else
1606
- w.push({ kind: "unknown", text: $ }), g++;
1755
+ x.push({ kind: "unknown", text: S }), v++;
1607
1756
  }
1608
- return { simple: w, next: g };
1609
- }
1610
- function i(m, v) {
1611
- const w = h(m, v), g = [];
1612
- let $ = "descendant", T = null, O = w.start;
1613
- for (; O < w.end; ) {
1614
- const R = e[O];
1615
- if (V(R)) {
1616
- O++;
1757
+ return { simple: x, next: v };
1758
+ }
1759
+ function y(p, d) {
1760
+ const x = h(p, d), v = [];
1761
+ let S = "descendant", E = null, C = x.start;
1762
+ for (; C < x.end; ) {
1763
+ const A = e[C];
1764
+ if (Z(A)) {
1765
+ C++;
1617
1766
  continue;
1618
1767
  }
1619
- if (R === ">") {
1620
- $ = "child", O++;
1768
+ if (A === ">") {
1769
+ S = "child", C++;
1621
1770
  continue;
1622
1771
  }
1623
- if (R === "+" || R === "~") {
1624
- T = R, O++;
1772
+ if (A === "+" || A === "~") {
1773
+ E = A, C++;
1625
1774
  continue;
1626
1775
  }
1627
- const { simple: z, next: W } = p(O, w.end);
1628
- if (W === O) {
1629
- O++;
1776
+ const { simple: N, next: Y } = a(C, x.end);
1777
+ if (Y === C) {
1778
+ C++;
1630
1779
  continue;
1631
1780
  }
1632
- T !== null && (z.unshift({ kind: "unknown", text: T }), T = null), g.push({ combinator: $, simple: z }), $ = "descendant", O = W;
1781
+ E !== null && (N.unshift({ kind: "unknown", text: E }), E = null), v.push({ combinator: S, simple: N }), S = "descendant", C = Y;
1633
1782
  }
1634
- return { parts: g, span: w };
1783
+ return { parts: v, span: x };
1635
1784
  }
1636
- function y(m, v) {
1637
- const w = [];
1638
- let g = m;
1785
+ function r(p, d) {
1786
+ const x = [];
1787
+ let v = p;
1639
1788
  for (; ; ) {
1640
- const $ = Math.min(x(g, ","), v);
1641
- if (w.push(i(g, $)), $ >= v) break;
1642
- g = $ + 1;
1643
- }
1644
- return w;
1645
- }
1646
- function k() {
1647
- const m = o, v = c(o + 1), w = e.slice(o + 1, v), g = x(v, "{;");
1648
- if (g < e.length && e[g] === "{") {
1649
- const T = l(g);
1650
- return o = T, { kind: "unknown", span: { start: m, end: T } };
1651
- }
1652
- const $ = g < e.length ? g + 1 : e.length;
1653
- if (o = $, w === "import") {
1654
- const T = e.slice(v, $), O = /["']([^"']*)["']/.exec(T);
1655
- return O === null ? (d("@import without a quoted path", m, $), { kind: "unknown", span: { start: m, end: $ } }) : { kind: "import", url: O[1], span: { start: m, end: $ } };
1656
- }
1657
- return { kind: "unknown", span: { start: m, end: $ } };
1658
- }
1659
- function f() {
1660
- const m = o, v = x(m, "{");
1661
- if (v >= e.length)
1662
- return d("rule without a block", m, e.length), o = e.length, { kind: "unknown", span: { start: m, end: e.length } };
1663
- const w = h(m, v), g = l(v);
1664
- (g > e.length || e[g - 1] !== "}") && d("unterminated rule block", m, g);
1665
- const $ = {
1666
- selectors: y(w.start, w.end),
1667
- declarations: Ke(e, v + 1, g - 1, d),
1668
- span: { start: w.start, end: g },
1669
- selectorSpan: w,
1789
+ const S = Math.min(g(v, ","), d);
1790
+ if (x.push(y(v, S)), S >= d) break;
1791
+ v = S + 1;
1792
+ }
1793
+ return x;
1794
+ }
1795
+ function w() {
1796
+ const p = o, d = f(o + 1), x = e.slice(o + 1, d), v = g(d, "{;");
1797
+ if (v < e.length && e[v] === "{") {
1798
+ const E = l(v);
1799
+ return o = E, { kind: "unknown", span: { start: p, end: E } };
1800
+ }
1801
+ const S = v < e.length ? v + 1 : e.length;
1802
+ if (o = S, x === "import") {
1803
+ const E = e.slice(d, S), C = /["']([^"']*)["']/.exec(E);
1804
+ return C === null ? (c("@import without a quoted path", p, S), { kind: "unknown", span: { start: p, end: S } }) : { kind: "import", url: C[1], span: { start: p, end: S } };
1805
+ }
1806
+ return { kind: "unknown", span: { start: p, end: S } };
1807
+ }
1808
+ function b() {
1809
+ const p = o, d = g(p, "{");
1810
+ if (d >= e.length)
1811
+ return c("rule without a block", p, e.length), o = e.length, { kind: "unknown", span: { start: p, end: e.length } };
1812
+ const x = h(p, d), v = l(d);
1813
+ (v > e.length || e[v - 1] !== "}") && c("unterminated rule block", p, v);
1814
+ const S = {
1815
+ selectors: r(x.start, x.end),
1816
+ declarations: lt(e, d + 1, v - 1, c),
1817
+ span: { start: x.start, end: v },
1818
+ selectorSpan: x,
1670
1819
  selectorDirty: !1,
1671
1820
  declarationsDirty: !1
1672
1821
  };
1673
- return o = g, { kind: "rule", rule: $ };
1822
+ return o = v, { kind: "rule", rule: S };
1674
1823
  }
1675
- for (; a(), !(o >= e.length); )
1676
- r.push(e[o] === "@" ? k() : f());
1677
- return { sheet: { source: e, origin: n, items: r }, warnings: s };
1824
+ for (; u(), !(o >= e.length); )
1825
+ i.push(e[o] === "@" ? w() : b());
1826
+ return { sheet: { source: e, origin: n, items: i }, warnings: s };
1678
1827
  }
1679
- function fn(e, n, t) {
1828
+ function kn(e, n, t) {
1680
1829
  switch (e.kind) {
1681
1830
  case "universal":
1682
1831
  return !0;
@@ -1692,60 +1841,60 @@ function fn(e, n, t) {
1692
1841
  return !1;
1693
1842
  }
1694
1843
  }
1695
- function pn(e, n, t) {
1696
- return e.simple.every((s) => fn(s, n, t));
1844
+ function Sn(e, n, t) {
1845
+ return e.simple.every((s) => kn(s, n, t));
1697
1846
  }
1698
- function he(e, n, t, s) {
1699
- if (!pn(e[n], t, s)) return !1;
1847
+ function Se(e, n, t, s) {
1848
+ if (!Sn(e[n], t, s)) return !1;
1700
1849
  if (n === 0) return !0;
1701
- const r = s.parentOf(t);
1850
+ const i = s.parentOf(t);
1702
1851
  if (e[n].combinator === "child")
1703
- return r !== null && he(e, n - 1, r, s);
1704
- for (let o = r; o !== null; o = s.parentOf(o))
1705
- if (he(e, n - 1, o, s)) return !0;
1852
+ return i !== null && Se(e, n - 1, i, s);
1853
+ for (let o = i; o !== null; o = s.parentOf(o))
1854
+ if (Se(e, n - 1, o, s)) return !0;
1706
1855
  return !1;
1707
1856
  }
1708
- function Qe(e, n, t) {
1709
- return e.parts.length === 0 ? !1 : he(e.parts, e.parts.length - 1, n, t);
1857
+ function $e(e, n, t) {
1858
+ return e.parts.length === 0 ? !1 : Se(e.parts, e.parts.length - 1, n, t);
1710
1859
  }
1711
- function hn(e) {
1860
+ function ct(e) {
1712
1861
  const n = [];
1713
1862
  for (const t of e.parts)
1714
1863
  for (const s of t.simple)
1715
1864
  s.kind === "pseudo" && s.name !== "root" && !n.includes(s.name) && n.push(s.name);
1716
1865
  return n;
1717
1866
  }
1718
- function mn(e) {
1867
+ function $n(e) {
1719
1868
  const n = [];
1720
1869
  for (const t of e)
1721
1870
  for (const s of t.parts)
1722
- for (const r of s.simple) {
1723
- if (r.kind !== "name" && r.kind !== "class" || !r.name.startsWith("unity-")) continue;
1724
- const o = r.kind === "name" ? `#${r.name}` : `.${r.name}`;
1871
+ for (const i of s.simple) {
1872
+ if (i.kind !== "name" && i.kind !== "class" || !i.name.startsWith("unity-")) continue;
1873
+ const o = i.kind === "name" ? `#${i.name}` : `.${i.name}`;
1725
1874
  n.includes(o) || n.push(o);
1726
1875
  }
1727
1876
  return n;
1728
1877
  }
1729
- function et(e) {
1878
+ function ut(e) {
1730
1879
  for (const n of e)
1731
1880
  for (const t of n.parts)
1732
1881
  for (const s of t.simple)
1733
1882
  if (s.kind === "unknown") return s.text;
1734
1883
  return null;
1735
1884
  }
1736
- function gn(e) {
1885
+ function Tn(e) {
1737
1886
  const n = /* @__PURE__ */ new Map([[e, null]]), t = [e];
1738
1887
  for (; t.length > 0; ) {
1739
1888
  const s = t.pop();
1740
- for (const r of s.children)
1741
- n.set(r, s), t.push(r);
1889
+ for (const i of s.children)
1890
+ n.set(i, s), t.push(i);
1742
1891
  }
1743
1892
  return n;
1744
1893
  }
1745
- function yn(e) {
1894
+ function En(e) {
1746
1895
  let n = 0, t = 0, s = 0;
1747
- for (const r of e.parts)
1748
- for (const o of r.simple)
1896
+ for (const i of e.parts)
1897
+ for (const o of i.simple)
1749
1898
  switch (o.kind) {
1750
1899
  case "name":
1751
1900
  n++;
@@ -1760,20 +1909,20 @@ function yn(e) {
1760
1909
  }
1761
1910
  return [n, t, s];
1762
1911
  }
1763
- function tt(e, n) {
1912
+ function dt(e, n) {
1764
1913
  return e[0] - n[0] || e[1] - n[1] || e[2] - n[2];
1765
1914
  }
1766
- const bn = [Number.MAX_SAFE_INTEGER, 0, 0], vn = ve(Je, null, -1).sheet.items.flatMap(
1915
+ const On = [Number.MAX_SAFE_INTEGER, 0, 0], In = De(nt, null, -1).sheet.items.flatMap(
1767
1916
  (e, n) => e.kind === "rule" ? [{ rule: e.rule, sheet: -1, item: n, builtin: !0 }] : []
1768
1917
  );
1769
- function wn(e) {
1770
- return Je.slice(e.selectorSpan.start, e.selectorSpan.end).trim();
1771
- }
1772
- function xn(e, n, t, s) {
1773
- const r = (t == null ? void 0 : t.activeStates) ?? /* @__PURE__ */ new Set(), o = Object.entries((t == null ? void 0 : t.states) ?? {}), d = [];
1774
- for (const [l, c] of o) {
1775
- const u = ve(`${l} {}`, null, -1).sheet.items.find((i) => i.kind === "rule"), p = u === void 0 ? l : et(u.rule.selectors);
1776
- if (u === void 0 || p !== null) {
1918
+ function Dn(e) {
1919
+ return nt.slice(e.selectorSpan.start, e.selectorSpan.end).trim();
1920
+ }
1921
+ function Cn(e, n, t, s) {
1922
+ const i = (t == null ? void 0 : t.activeStates) ?? /* @__PURE__ */ new Set(), o = Object.entries((t == null ? void 0 : t.states) ?? {}), c = [];
1923
+ for (const [l, f] of o) {
1924
+ const m = De(`${l} {}`, null, -1).sheet.items.find((w) => w.kind === "rule"), a = m === void 0 ? l : ut(m.rule.selectors);
1925
+ if (m === void 0 || a !== null) {
1777
1926
  s.push({
1778
1927
  kind: "unsupported-selector",
1779
1928
  message: `states key "${l}" is not a usable USS selector; it is ignored`,
@@ -1782,42 +1931,59 @@ function xn(e, n, t, s) {
1782
1931
  });
1783
1932
  continue;
1784
1933
  }
1785
- d.push({ selectors: u.rule.selectors, states: c });
1786
- }
1787
- const a = /* @__PURE__ */ new Map(), x = (l) => l.attributes.some((c) => c.name === "enabled" && c.value === "false"), h = (l, c) => {
1788
- const u = c || x(l), p = new Set(r);
1789
- u && p.add("disabled");
1790
- for (const i of d)
1791
- if (i.selectors.some((y) => Qe(y, { kind: "element", node: l }, n)))
1792
- for (const y of i.states) p.add(y);
1793
- a.set(l, p);
1794
- for (const i of l.children) h(i, u);
1934
+ const y = m.rule.selectors, r = (w) => y.some((b) => $e(b, { kind: "element", node: w }, n)) || w.children.some(r);
1935
+ if (!r(e.root)) {
1936
+ const w = y.some((b) => ct(b).some((p) => we.includes(p)));
1937
+ s.push({
1938
+ kind: "unsupported-selector",
1939
+ reason: "invalid-value",
1940
+ message: `states key "${l}" matches no element` + (w ? ": keys are matched before any state is applied, so a state in the key never matches" : ""),
1941
+ subject: { kind: "states-key", key: l, problem: w ? "state-in-key" : "matches-nothing" }
1942
+ });
1943
+ }
1944
+ for (const w of new Set(f))
1945
+ we.includes(w) || s.push({
1946
+ kind: "unsupported-selector",
1947
+ reason: "invalid-value",
1948
+ message: `states key "${l}" lists unknown state "${w}"; Unity sets no such state`,
1949
+ subject: { kind: "states-key", key: l, problem: "unknown-state", state: w }
1950
+ });
1951
+ c.push({ selectors: y, states: f });
1952
+ }
1953
+ const u = /* @__PURE__ */ new Map(), g = (l) => l.attributes.some((f) => f.name === "enabled" && f.value === "false"), h = (l, f) => {
1954
+ const m = f || g(l), a = new Set(i);
1955
+ m ? a.add("disabled") : a.add("enabled");
1956
+ for (const y of c)
1957
+ if (y.selectors.some((r) => $e(r, { kind: "element", node: l }, n)))
1958
+ for (const r of y.states) a.add(r);
1959
+ u.set(l, a);
1960
+ for (const y of l.children) h(y, m);
1795
1961
  };
1796
- return h(e.root, !1), a;
1962
+ return h(e.root, !1), u;
1797
1963
  }
1798
- function kn(e) {
1964
+ function Mn(e) {
1799
1965
  const n = [], t = /* @__PURE__ */ new Map();
1800
- e.sheets.forEach((d, a) => {
1801
- d.origin !== null && !t.has(d.origin) && t.set(d.origin, a);
1802
- }), n.push(...vn);
1803
- const s = /* @__PURE__ */ new Map(), r = (d, a) => {
1804
- const x = s.get(a) ?? /* @__PURE__ */ new Set();
1805
- if (x.has(d)) return;
1806
- x.add(d), s.set(a, x);
1807
- const h = e.sheets[d];
1808
- h !== void 0 && h.items.forEach((l, c) => {
1966
+ e.sheets.forEach((c, u) => {
1967
+ c.origin !== null && !t.has(c.origin) && t.set(c.origin, u);
1968
+ }), n.push(...In);
1969
+ const s = /* @__PURE__ */ new Map(), i = (c, u) => {
1970
+ const g = s.get(u) ?? /* @__PURE__ */ new Set();
1971
+ if (g.has(c)) return;
1972
+ g.add(c), s.set(u, g);
1973
+ const h = e.sheets[c];
1974
+ h !== void 0 && h.items.forEach((l, f) => {
1809
1975
  if (l.kind === "rule")
1810
- n.push({ rule: l.rule, sheet: d, item: c, scope: a });
1976
+ n.push({ rule: l.rule, sheet: c, item: f, scope: u });
1811
1977
  else if (l.kind === "import") {
1812
- const u = l.resolvedSheet ?? t.get(l.url);
1813
- u !== void 0 && r(u, a);
1978
+ const m = l.resolvedSheet ?? t.get(l.url);
1979
+ m !== void 0 && i(m, u);
1814
1980
  }
1815
1981
  });
1816
1982
  }, o = e.styleRoots ?? (e.sheets.length === 0 ? [] : [{ sheet: 0, scope: e.root.id }]);
1817
- for (const d of o) r(d.sheet, d.scope);
1983
+ for (const c of o) i(c.sheet, c.scope);
1818
1984
  return n;
1819
1985
  }
1820
- function Sn(e, n, t) {
1986
+ function Rn(e, n, t) {
1821
1987
  let s = e;
1822
1988
  for (; s !== null; ) {
1823
1989
  if (s.kind === "element" && s.node.id === n) return !0;
@@ -1825,30 +1991,34 @@ function Sn(e, n, t) {
1825
1991
  }
1826
1992
  return !1;
1827
1993
  }
1828
- function $n(e) {
1994
+ function An(e) {
1829
1995
  return e.selectors.some(
1830
1996
  (n) => n.parts.some((t) => t.simple.some((s) => s.kind === "pseudo" && s.name === "root"))
1831
1997
  );
1832
1998
  }
1833
- function ee(e, n) {
1999
+ function le(e, n) {
1834
2000
  var s;
1835
2001
  const t = n.rule.selectorSpan;
1836
2002
  return ((s = e.sheets[n.sheet]) == null ? void 0 : s.source.slice(t.start, t.end)) ?? "";
1837
2003
  }
1838
- function H(e, n) {
2004
+ function K(e, n) {
2005
+ const t = e.sheets[n], s = e.sheets.find((i) => i.items.some((o) => o.kind === "import" && o.resolvedSheet === n));
2006
+ return { url: (t == null ? void 0 : t.origin) ?? null, from: (t == null ? void 0 : t.sourceDocumentFrom) ?? (s == null ? void 0 : s.origin) ?? null };
2007
+ }
2008
+ function X(e, n) {
1839
2009
  var s;
1840
2010
  const t = (s = e.sheets[n]) == null ? void 0 : s.origin;
1841
2011
  return typeof t == "string" ? { sourceDocument: t } : {};
1842
2012
  }
1843
- function nt(e, n) {
1844
- const t = gn(e.root), s = [], r = /* @__PURE__ */ new Set(), o = (i) => {
1845
- var k;
1846
- const y = (k = i.attributes.find((f) => f.name === "class")) == null ? void 0 : k.value;
1847
- return y === void 0 ? [] : y.split(/\s+/).filter((f) => f.length > 0);
1848
- }, d = (i, y) => {
1849
- var k;
1850
- return (k = i.attributes.find((f) => f.name === y)) == null ? void 0 : k.value;
1851
- }, a = {
2013
+ function ft(e, n) {
2014
+ const t = Tn(e.root), s = [], i = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set(), c = (r) => {
2015
+ var b;
2016
+ const w = (b = r.attributes.find((p) => p.name === "class")) == null ? void 0 : b.value;
2017
+ return w === void 0 ? [] : w.split(/\s+/).filter((p) => p.length > 0);
2018
+ }, u = (r, w) => {
2019
+ var b;
2020
+ return (b = r.attributes.find((p) => p.name === w)) == null ? void 0 : b.value;
2021
+ }, g = {
1852
2022
  /**
1853
2023
  * The rule the measurement forced.
1854
2024
  *
@@ -1859,220 +2029,228 @@ function nt(e, n) {
1859
2029
  * owner. That is the hierarchy the dumps show, so descendant selectors like
1860
2030
  * `.panel #unity-content-viewport` behave as they do in Unity.
1861
2031
  */
1862
- parentOf: (i) => {
1863
- if (i.kind === "element") {
1864
- const f = t.get(i.node) ?? null;
1865
- return f === null ? null : { kind: "element", node: f };
2032
+ parentOf: (r) => {
2033
+ if (r.kind === "element") {
2034
+ const p = t.get(r.node) ?? null;
2035
+ return p === null ? null : { kind: "element", node: p };
1866
2036
  }
1867
- if (i.depth === 0) return { kind: "element", node: i.owner };
1868
- const k = Y(i.owner).spec.parts[i.depth - 1];
1869
- return { kind: "part", owner: i.owner, name: k.name, depth: i.depth - 1 };
2037
+ if (r.depth === 0) return { kind: "element", node: r.owner };
2038
+ const b = Q(r.owner).spec.parts[r.depth - 1];
2039
+ return { kind: "part", owner: r.owner, name: b.name, depth: r.depth - 1 };
1870
2040
  },
1871
- isRoot: (i) => i.kind === "element" && i.node === e.root,
2041
+ isRoot: (r) => r.kind === "element" && r.node === e.root,
1872
2042
  // Unity's parts are VisualElements, so a `VisualElement` rule reaches them.
1873
2043
  // Not measured — `part-type-selector` is the case that will settle it.
1874
- typeNameOf: (i) => i.kind === "element" ? i.node.name.local : "VisualElement",
1875
- idOf: (i) => i.kind === "element" ? d(i.node, "name") : i.name,
2044
+ typeNameOf: (r) => r.kind === "element" ? r.node.name.local : "VisualElement",
2045
+ idOf: (r) => r.kind === "element" ? u(r.node, "name") : r.name,
1876
2046
  // Implicit classes are as real as written ones for matching: in Unity the
1877
2047
  // element genuinely carries them, which is why `.unity-button` in author USS
1878
2048
  // hits a plain `<ui:Button />`. Parts carry classes too in Unity, but which
1879
2049
  // ones is unmeasured, so none are claimed here.
1880
- classesOf: (i) => i.kind === "element" ? [...o(i.node), ...pt(i.node)] : []
1881
- }, x = { ...a, statesOf: () => r }, h = xn(e, x, n, s), l = {
1882
- ...a,
2050
+ classesOf: (r) => r.kind === "element" ? [...c(r.node), ...St(r.node)] : []
2051
+ }, h = { ...g, statesOf: () => o }, l = Cn(e, h, n, s), f = {
2052
+ ...g,
1883
2053
  // A part inherits its owner's states: `SetEnabled(false)` disables the whole
1884
2054
  // subtree, and a part is inside it.
1885
- statesOf: (i) => h.get(i.kind === "element" ? i.node : i.owner) ?? r
1886
- }, c = [];
1887
- let u = !1;
1888
- for (const i of kn(e)) {
1889
- if (i.builtin === !0) {
1890
- c.push(i);
2055
+ statesOf: (r) => l.get(r.kind === "element" ? r.node : r.owner) ?? o
2056
+ }, m = [];
2057
+ let a = !1;
2058
+ for (const r of Mn(e)) {
2059
+ if (r.builtin === !0) {
2060
+ m.push(r);
1891
2061
  continue;
1892
2062
  }
1893
- const y = et(i.rule.selectors);
1894
- if (y !== null) {
2063
+ const w = ut(r.rule.selectors);
2064
+ if (w !== null) {
1895
2065
  s.push({
1896
2066
  kind: "unsupported-selector",
1897
- message: `"${y}": the whole rule is ignored`,
1898
- at: { in: "uss", sheet: i.sheet, span: i.rule.selectorSpan },
2067
+ message: `"${w}": the whole rule is ignored`,
2068
+ at: { in: "uss", sheet: r.sheet, ...K(e, r.sheet), span: r.rule.selectorSpan },
1899
2069
  reason: "not-uss",
1900
- subject: { kind: "selector", selector: ee(e, i), fragment: y },
1901
- ...H(e, i.sheet)
2070
+ subject: { kind: "selector", selector: le(e, r), fragment: w },
2071
+ ...X(e, r.sheet)
1902
2072
  });
1903
2073
  continue;
1904
2074
  }
1905
- !u && $n(i.rule) && (u = !0, s.push({
2075
+ !a && An(r.rule) && (a = !0, s.push({
1906
2076
  kind: "version-dependent",
1907
2077
  // Not a version difference: USS :root means something else than CSS
1908
2078
  // :root, and this preview does what Unity does. Kept as a warning so
1909
2079
  // an author porting CSS is told; the kind stays for compatibility.
1910
2080
  message: ":root matched the element this stylesheet is attached to — the document root, or the TemplateContainer of a template",
1911
- at: { in: "uss", sheet: i.sheet, span: i.rule.selectorSpan },
2081
+ at: { in: "uss", sheet: r.sheet, ...K(e, r.sheet), span: r.rule.selectorSpan },
1912
2082
  reason: "matches-unity",
1913
- subject: { kind: "selector", selector: ee(e, i), fragment: ":root" },
1914
- ...H(e, i.sheet)
1915
- })), c.push(i);
1916
- }
1917
- const p = /* @__PURE__ */ new Set();
1918
- for (const i of c) {
1919
- if (i.builtin === !0) continue;
1920
- const y = `${i.sheet}:${i.item}`;
1921
- if (p.has(y)) continue;
1922
- p.add(y);
1923
- const k = /* @__PURE__ */ new Set();
1924
- for (const f of i.rule.selectors)
1925
- for (const m of f.parts)
1926
- for (const v of m.simple)
1927
- v.kind !== "pseudo" || v.name === "root" || Pt.includes(v.name) || k.add(v.name);
1928
- for (const f of k)
2083
+ subject: { kind: "selector", selector: le(e, r), fragment: ":root" },
2084
+ ...X(e, r.sheet)
2085
+ })), m.push(r);
2086
+ }
2087
+ const y = /* @__PURE__ */ new Set();
2088
+ for (const r of m) {
2089
+ if (r.builtin === !0) continue;
2090
+ const w = `${r.sheet}:${r.item}`;
2091
+ if (y.has(w)) continue;
2092
+ y.add(w);
2093
+ const b = /* @__PURE__ */ new Set();
2094
+ for (const p of r.rule.selectors)
2095
+ for (const d of p.parts)
2096
+ for (const x of d.simple)
2097
+ x.kind !== "pseudo" || x.name === "root" || we.includes(x.name) || b.add(x.name);
2098
+ for (const p of b)
1929
2099
  s.push({
1930
2100
  kind: "unsupported-selector",
1931
- message: `":${f}": never matches; Unity sets no such state`,
1932
- at: { in: "uss", sheet: i.sheet, span: i.rule.selectorSpan },
1933
- ...H(e, i.sheet),
2101
+ message: `":${p}": never matches; Unity sets no such state`,
2102
+ at: { in: "uss", sheet: r.sheet, ...K(e, r.sheet), span: r.rule.selectorSpan },
2103
+ ...X(e, r.sheet),
1934
2104
  reason: "not-uss",
1935
- subject: { kind: "selector", selector: ee(e, i), fragment: `:${f}` }
2105
+ subject: { kind: "selector", selector: le(e, r), fragment: `:${p}` }
1936
2106
  });
1937
- for (const f of i.rule.declarations) {
1938
- const m = Xe(f.property, f.value);
1939
- m !== null && s.push({
2107
+ for (const p of r.rule.declarations) {
2108
+ const d = it(p.property, p.value);
2109
+ if (d === null) continue;
2110
+ const x = {
1940
2111
  kind: "unsupported-property",
1941
- ...m,
1942
- at: { in: "uss", sheet: i.sheet, span: f.span },
1943
- ...H(e, i.sheet)
1944
- });
2112
+ ...d,
2113
+ at: { in: "uss", sheet: r.sheet, ...K(e, r.sheet), span: p.span },
2114
+ ...X(e, r.sheet)
2115
+ };
2116
+ s.push(x), i.set(x, `${r.sheet}:${r.item}`);
1945
2117
  }
1946
2118
  }
1947
- return e.sheets.forEach((i, y) => {
1948
- var k;
1949
- for (const f of i.items) {
1950
- if (f.kind !== "unknown") continue;
1951
- const m = (k = /^@([A-Za-z][\w-]*)/.exec(i.source.slice(f.span.start, f.span.end))) == null ? void 0 : k[1];
1952
- m === void 0 || m === "import" || s.push({
2119
+ return e.sheets.forEach((r, w) => {
2120
+ var b;
2121
+ for (const p of r.items) {
2122
+ if (p.kind !== "unknown") continue;
2123
+ const d = (b = /^@([A-Za-z][\w-]*)/.exec(r.source.slice(p.span.start, p.span.end))) == null ? void 0 : b[1];
2124
+ d === void 0 || d === "import" || s.push({
1953
2125
  kind: "unsupported-selector",
1954
- message: `@${m}: block ignored`,
1955
- at: { in: "uss", sheet: y, span: f.span },
1956
- ...H(e, y),
2126
+ message: `@${d}: block ignored`,
2127
+ at: { in: "uss", sheet: w, ...K(e, w), span: p.span },
2128
+ ...X(e, w),
1957
2129
  reason: "not-uss",
1958
- subject: { kind: "at-rule", name: m }
2130
+ subject: { kind: "at-rule", name: d }
1959
2131
  });
1960
2132
  }
1961
- }), { ctx: l, usable: c, warnings: s };
2133
+ }), { ctx: f, usable: m, warnings: s, declarationWarnings: i };
1962
2134
  }
1963
- function we(e, n) {
1964
- const t = n.attributes.find((r) => r.name === "style");
2135
+ function Ce(e, n) {
2136
+ const t = n.attributes.find((i) => i.name === "style");
1965
2137
  if (t === void 0) return [];
1966
- const s = dn(t);
1967
- return s === null ? [] : Ke(e.source, s, s + t.value.length);
1968
- }
1969
- function Tn(e) {
1970
- let n = null;
1971
- const t = (s, r) => {
1972
- var o;
1973
- typeof s.sourceDocument != "string" && r.set(((o = s.derived) == null ? void 0 : o.instance) ?? s.id, s);
1974
- for (const d of s.children) t(d, r);
1975
- return r;
2138
+ const s = xn(t);
2139
+ return s === null ? [] : lt(e.source, s, s + t.value.length);
2140
+ }
2141
+ function jn(e, n) {
2142
+ let t = null;
2143
+ const s = (i, o) => {
2144
+ var c;
2145
+ typeof i.sourceDocument != "string" && o.set(((c = i.derived) == null ? void 0 : c.instance) ?? i.id, i);
2146
+ for (const u of i.children) s(u, o);
2147
+ return o;
1976
2148
  };
1977
- return (s) => {
1978
- var r;
1979
- if (s.kind === "rule") {
1980
- const o = (r = e.sheets[s.sheet]) == null ? void 0 : r.items[s.item], d = (o == null ? void 0 : o.kind) === "rule" ? o.rule.declarations[s.declIndex] : void 0;
1981
- return d === void 0 ? {} : { at: { in: "uss", sheet: s.sheet, span: d.span }, ...H(e, s.sheet) };
1982
- }
1983
- if (s.kind === "inline") {
1984
- if (typeof s.sourceDocument == "string") return { sourceDocument: s.sourceDocument };
1985
- n ?? (n = t(e.root, /* @__PURE__ */ new Map()));
1986
- const o = n.get(s.node), d = o === void 0 ? void 0 : we(e, o)[s.declIndex];
1987
- return d === void 0 ? {} : { at: { in: "uxml", span: d.span } };
2149
+ return (i) => {
2150
+ var o;
2151
+ if (i.kind === "rule") {
2152
+ const c = (o = e.sheets[i.sheet]) == null ? void 0 : o.items[i.item], u = (c == null ? void 0 : c.kind) === "rule" ? c.rule.declarations[i.declIndex] : void 0;
2153
+ return u === void 0 ? {} : { nodes: [...n.get(`${i.sheet}:${i.item}`) ?? []], at: { in: "uss", sheet: i.sheet, ...K(e, i.sheet), span: u.span }, ...X(e, i.sheet) };
2154
+ }
2155
+ if (i.kind === "inline") {
2156
+ if (typeof i.sourceDocument == "string") return { sourceDocument: i.sourceDocument };
2157
+ t ?? (t = s(e.root, /* @__PURE__ */ new Map()));
2158
+ const c = t.get(i.node), u = c === void 0 ? void 0 : Ce(e, c)[i.declIndex];
2159
+ return u === void 0 ? {} : { at: { in: "uxml", span: u.span } };
1988
2160
  }
1989
2161
  return {};
1990
2162
  };
1991
2163
  }
1992
- function st(e, n, t, s) {
1993
- const r = [];
1994
- let o = 0;
1995
- const d = (a, x, h, l, c) => {
1996
- r.push({ property: a, value: x, origin: h, rank: l, specificity: c, order: o++, winner: !1 });
2164
+ function pt(e, n, t, s, i) {
2165
+ const o = [];
2166
+ let c = 0;
2167
+ const u = (g, h, l, f, m) => {
2168
+ o.push({ property: g, value: h, origin: l, rank: f, specificity: m, order: c++, winner: !1 });
1997
2169
  };
1998
2170
  if (n.kind === "part") {
1999
- const a = Y(n.owner).spec.parts[n.depth];
2000
- for (const [x, h] of Object.entries((a == null ? void 0 : a.style) ?? {}))
2001
- for (const [l, c] of le(x, h))
2002
- d(
2003
- l,
2004
- c,
2171
+ const g = Q(n.owner).spec.parts[n.depth];
2172
+ for (const [h, l] of Object.entries((g == null ? void 0 : g.style) ?? {}))
2173
+ for (const [f, m] of me(h, l))
2174
+ u(
2175
+ f,
2176
+ m,
2005
2177
  {
2006
2178
  kind: "builtin-theme",
2007
2179
  selector: `#${n.name}`,
2008
- property: l,
2009
- unityVersion: te
2180
+ property: f,
2181
+ unityVersion: ce
2010
2182
  },
2011
2183
  0,
2012
2184
  [0, 0, 0]
2013
2185
  );
2014
2186
  }
2015
- for (const a of t.usable) {
2016
- if (a.scope !== void 0 && !Sn(n, a.scope, t.ctx)) continue;
2017
- const x = a.scope === void 0 ? t.ctx : {
2187
+ for (const g of t.usable) {
2188
+ if (g.scope !== void 0 && !Rn(n, g.scope, t.ctx)) continue;
2189
+ const h = g.scope === void 0 ? t.ctx : {
2018
2190
  ...t.ctx,
2019
2191
  // Unity USS :root names the element this particular stylesheet is
2020
2192
  // attached to. Template sheets are attached to each generated
2021
2193
  // TemplateContainer, not to the entry document root.
2022
- isRoot: (c) => c.kind === "element" && c.node.id === a.scope
2194
+ isRoot: (m) => m.kind === "element" && m.node.id === g.scope
2023
2195
  };
2024
- let h = null, l = [];
2025
- for (const c of a.rule.selectors) {
2026
- if (!Qe(c, n, x)) continue;
2027
- const u = yn(c);
2028
- (h === null || tt(u, h) > 0) && (h = u, l = hn(c));
2029
- }
2030
- h !== null && (s == null || s.add(a), a.rule.declarations.forEach((c, u) => {
2031
- var p, i, y;
2032
- for (const [k, f] of le(c.property, c.value)) {
2033
- const m = a.builtin === !0 ? {
2034
- kind: "builtin-theme",
2035
- selector: wn(a.rule),
2036
- property: k,
2037
- unityVersion: te
2038
- } : {
2039
- kind: "rule",
2040
- sheet: a.sheet,
2041
- item: a.item,
2042
- declIndex: u,
2043
- ...((p = e.sheets[a.sheet]) == null ? void 0 : p.origin) === null || ((i = e.sheets[a.sheet]) == null ? void 0 : i.origin) === void 0 ? {} : { sourceDocument: e.sheets[a.sheet].origin },
2044
- ...((y = e.sheets[a.sheet]) == null ? void 0 : y.sourceDocumentFrom) === void 0 ? {} : { sourceDocumentFrom: e.sheets[a.sheet].sourceDocumentFrom },
2045
- // Omitted rather than set to [] when unconditional, so the
2046
- // common case stays the shape it has always been.
2047
- ...l.length > 0 ? { states: l } : {}
2048
- };
2049
- d(k, f, m, a.builtin === !0 ? 0 : 1, h);
2196
+ let l = null, f = [];
2197
+ for (const m of g.rule.selectors) {
2198
+ if (!$e(m, n, h)) continue;
2199
+ const a = En(m);
2200
+ (l === null || dt(a, l) > 0) && (l = a, f = ct(m));
2201
+ }
2202
+ if (l !== null) {
2203
+ if (s == null || s.add(g), i !== void 0 && n.kind === "element" && g.builtin !== !0) {
2204
+ const m = `${g.sheet}:${g.item}`, a = i.get(m) ?? [];
2205
+ a.includes(n.node.id) || a.push(n.node.id), i.set(m, a);
2050
2206
  }
2051
- }));
2207
+ g.rule.declarations.forEach((m, a) => {
2208
+ var y, r, w;
2209
+ for (const [b, p] of me(m.property, m.value)) {
2210
+ const d = g.builtin === !0 ? {
2211
+ kind: "builtin-theme",
2212
+ selector: Dn(g.rule),
2213
+ property: b,
2214
+ unityVersion: ce
2215
+ } : {
2216
+ kind: "rule",
2217
+ sheet: g.sheet,
2218
+ item: g.item,
2219
+ declIndex: a,
2220
+ ...((y = e.sheets[g.sheet]) == null ? void 0 : y.origin) === null || ((r = e.sheets[g.sheet]) == null ? void 0 : r.origin) === void 0 ? {} : { sourceDocument: e.sheets[g.sheet].origin },
2221
+ ...((w = e.sheets[g.sheet]) == null ? void 0 : w.sourceDocumentFrom) === void 0 ? {} : { sourceDocumentFrom: e.sheets[g.sheet].sourceDocumentFrom },
2222
+ // Omitted rather than set to [] when unconditional, so the
2223
+ // common case stays the shape it has always been.
2224
+ ...f.length > 0 ? { states: f } : {}
2225
+ };
2226
+ u(b, p, d, g.builtin === !0 ? 0 : 1, l);
2227
+ }
2228
+ });
2229
+ }
2052
2230
  }
2053
2231
  if (n.kind === "element") {
2054
- const a = n.node;
2055
- we(e, a).forEach((x, h) => {
2056
- var l;
2057
- for (const [c, u] of le(x.property, x.value))
2058
- d(
2059
- c,
2060
- u,
2232
+ const g = n.node;
2233
+ Ce(e, g).forEach((h, l) => {
2234
+ var f;
2235
+ for (const [m, a] of me(h.property, h.value))
2236
+ u(
2237
+ m,
2238
+ a,
2061
2239
  {
2062
2240
  kind: "inline",
2063
- node: ((l = a.derived) == null ? void 0 : l.instance) ?? a.sourceNode ?? a.id,
2064
- declIndex: h,
2065
- ...typeof a.sourceDocument == "string" ? { sourceDocument: a.sourceDocument } : {},
2066
- ...a.sourceDocumentFrom === void 0 ? {} : { sourceDocumentFrom: a.sourceDocumentFrom }
2241
+ node: ((f = g.derived) == null ? void 0 : f.instance) ?? g.sourceNode ?? g.id,
2242
+ declIndex: l,
2243
+ ...typeof g.sourceDocument == "string" ? { sourceDocument: g.sourceDocument } : {},
2244
+ ...g.sourceDocumentFrom === void 0 ? {} : { sourceDocumentFrom: g.sourceDocumentFrom }
2067
2245
  },
2068
2246
  1,
2069
- bn
2247
+ On
2070
2248
  );
2071
2249
  });
2072
2250
  }
2073
- return r;
2251
+ return o;
2074
2252
  }
2075
- function ot(e) {
2253
+ function ht(e) {
2076
2254
  const n = /* @__PURE__ */ new Map();
2077
2255
  for (const t of e) {
2078
2256
  const s = n.get(t.property);
@@ -2084,122 +2262,124 @@ function ot(e) {
2084
2262
  t.rank > s.rank && n.set(t.property, t);
2085
2263
  continue;
2086
2264
  }
2087
- const r = tt(t.specificity, s.specificity);
2088
- (r > 0 || r === 0 && t.order > s.order) && n.set(t.property, t);
2265
+ const i = dt(t.specificity, s.specificity);
2266
+ (i > 0 || i === 0 && t.order > s.order) && n.set(t.property, t);
2089
2267
  }
2090
2268
  for (const t of n.values()) t.winner = !0;
2091
2269
  return n;
2092
2270
  }
2093
- const In = /var\(\s*(--[^,)\s]+)\s*(?:,([^)]*))?\)/;
2094
- function me(e, n, t = /* @__PURE__ */ new Set()) {
2095
- var r;
2271
+ const Nn = /var\(\s*(--[^,)\s]+)\s*(?:,([^)]*))?\)/;
2272
+ function Te(e, n, t = /* @__PURE__ */ new Set()) {
2273
+ var i;
2096
2274
  let s = e;
2097
2275
  for (let o = 0; o < 32; o++) {
2098
- const d = In.exec(s);
2099
- if (d === null) return s;
2100
- const a = d[1], x = (r = d[2]) == null ? void 0 : r.trim();
2101
- if (t.has(a)) return null;
2102
- const h = /* @__PURE__ */ new Set([...t, a]), l = n.get(a), c = l !== void 0 ? me(l, n, h) : x !== void 0 && x.length > 0 ? me(x, n, h) : null;
2103
- if (c === null) return null;
2104
- s = s.slice(0, d.index) + c + s.slice(d.index + d[0].length);
2276
+ const c = Nn.exec(s);
2277
+ if (c === null) return s;
2278
+ const u = c[1], g = (i = c[2]) == null ? void 0 : i.trim();
2279
+ if (t.has(u)) return null;
2280
+ const h = /* @__PURE__ */ new Set([...t, u]), l = n.get(u), f = l !== void 0 ? Te(l, n, h) : g !== void 0 && g.length > 0 ? Te(g, n, h) : null;
2281
+ if (f === null) return null;
2282
+ s = s.slice(0, c.index) + f + s.slice(c.index + c[0].length);
2105
2283
  }
2106
2284
  return null;
2107
2285
  }
2108
- function En(e, n) {
2109
- const t = nt(e, n), s = [...t.warnings], r = /* @__PURE__ */ new Map();
2286
+ function Fn(e, n) {
2287
+ const t = ft(e, n), s = [...t.warnings], i = /* @__PURE__ */ new Map();
2110
2288
  let o = !1;
2111
- const d = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Set(), x = (u, p, i) => {
2112
- const y = st(e, u, t, a);
2113
- !o && y.some((w) => w.origin.kind === "builtin-theme") && (o = !0);
2114
- const k = ot(y), f = /* @__PURE__ */ new Map();
2115
- for (const [w, g] of p)
2116
- w.startsWith("--") && f.set(w, g.value);
2117
- for (const [w, g] of k)
2118
- w.startsWith("--") && f.set(w, g.value);
2119
- const m = /* @__PURE__ */ new Map();
2120
- for (const [w, g] of p) m.set(w, g);
2121
- for (const [w, g] of k) {
2122
- const $ = me(g.value, f);
2123
- if ($ === null) {
2289
+ const c = /* @__PURE__ */ new Map(), u = /* @__PURE__ */ new Set(), g = /* @__PURE__ */ new Map(), h = (a, y, r) => {
2290
+ const w = pt(e, a, t, u, g);
2291
+ !o && w.some((v) => v.origin.kind === "builtin-theme") && (o = !0);
2292
+ const b = ht(w), p = /* @__PURE__ */ new Map();
2293
+ for (const [v, S] of y)
2294
+ v.startsWith("--") && p.set(v, S.value);
2295
+ for (const [v, S] of b)
2296
+ v.startsWith("--") && p.set(v, S.value);
2297
+ const d = /* @__PURE__ */ new Map();
2298
+ for (const [v, S] of y) d.set(v, S);
2299
+ for (const [v, S] of b) {
2300
+ const E = Te(S.value, p);
2301
+ if (E === null) {
2124
2302
  s.push({
2125
2303
  kind: "unsupported-property",
2126
- message: `${w}: var() reference could not be resolved; declaration dropped`,
2127
- node: i,
2304
+ message: `${v}: var() reference could not be resolved; declaration dropped`,
2305
+ node: r,
2128
2306
  reason: "invalid-value",
2129
- subject: { kind: "property", property: w, value: g.value }
2307
+ subject: { kind: "property", property: v, value: S.value }
2130
2308
  });
2131
2309
  continue;
2132
2310
  }
2133
- m.set(w, { value: $, origin: g.origin });
2311
+ d.set(v, { value: E, origin: S.origin });
2134
2312
  }
2135
- const v = /* @__PURE__ */ new Map();
2136
- for (const [w, g] of m)
2137
- Bt(w) && v.set(w, {
2138
- value: g.value,
2139
- origin: { kind: "inherited", from: i, origin: g.origin }
2313
+ const x = /* @__PURE__ */ new Map();
2314
+ for (const [v, S] of d)
2315
+ Zt(v) && x.set(v, {
2316
+ value: S.value,
2317
+ origin: { kind: "inherited", from: r, origin: S.origin }
2140
2318
  });
2141
- return { computed: m, forChildren: v };
2142
- }, h = /* @__PURE__ */ new Set(), l = (u) => {
2143
- var y;
2144
- const p = ((y = u.derived) == null ? void 0 : y.instance) ?? u.sourceNode ?? u.id, i = typeof u.sourceDocument == "string" ? u.sourceDocument : null;
2145
- we(e, u).forEach((k, f) => {
2146
- const m = Xe(k.property, k.value);
2147
- if (m === null) return;
2148
- const v = `${u.sourceDocument ?? ""}#${p}#${f}`;
2149
- h.has(v) || (h.add(v), s.push({
2319
+ return { computed: d, forChildren: x };
2320
+ }, l = /* @__PURE__ */ new Set(), f = (a) => {
2321
+ var w;
2322
+ const y = ((w = a.derived) == null ? void 0 : w.instance) ?? a.sourceNode ?? a.id, r = typeof a.sourceDocument == "string" ? a.sourceDocument : null;
2323
+ Ce(e, a).forEach((b, p) => {
2324
+ const d = it(b.property, b.value);
2325
+ if (d === null) return;
2326
+ const x = `${a.sourceDocument ?? ""}#${y}#${p}`;
2327
+ l.has(x) || (l.add(x), s.push({
2150
2328
  kind: "unsupported-property",
2151
- ...m,
2152
- node: u.id,
2329
+ ...d,
2330
+ node: a.id,
2153
2331
  // A span is only meaningful in the entry document's own text; a
2154
2332
  // template's declaration names its file instead.
2155
- ...i !== null ? { sourceDocument: i } : { at: { in: "uxml", span: k.span } }
2333
+ ...r !== null ? { sourceDocument: r } : { at: { in: "uxml", span: b.span } }
2156
2334
  }));
2157
2335
  });
2158
- }, c = (u, p) => {
2159
- l(u);
2160
- const i = x({ kind: "element", node: u }, p, u.id);
2161
- r.set(u.id, i.computed);
2162
- let y = i.forChildren;
2163
- const k = Y(u).spec.parts;
2164
- if (k.length > 0) {
2165
- const f = /* @__PURE__ */ new Map();
2166
- k.forEach((m, v) => {
2167
- const w = x(
2168
- { kind: "part", owner: u, name: m.name, depth: v },
2169
- y,
2170
- u.id
2336
+ }, m = (a, y) => {
2337
+ f(a);
2338
+ const r = h({ kind: "element", node: a }, y, a.id);
2339
+ i.set(a.id, r.computed);
2340
+ let w = r.forChildren;
2341
+ const b = Q(a).spec.parts;
2342
+ if (b.length > 0) {
2343
+ const p = /* @__PURE__ */ new Map();
2344
+ b.forEach((d, x) => {
2345
+ const v = h(
2346
+ { kind: "part", owner: a, name: d.name, depth: x },
2347
+ w,
2348
+ a.id
2171
2349
  );
2172
- f.set(m.name, w.computed), y = w.forChildren;
2173
- }), d.set(u.id, f);
2350
+ p.set(d.name, v.computed), w = v.forChildren;
2351
+ }), c.set(a.id, p);
2174
2352
  }
2175
- for (const f of u.children) c(f, y);
2353
+ for (const p of a.children) m(p, w);
2176
2354
  };
2177
- c(e.root, /* @__PURE__ */ new Map()), o && s.push({
2355
+ m(e.root, /* @__PURE__ */ new Map()), o && s.push({
2178
2356
  kind: "version-dependent",
2179
- message: `Built-in control defaults applied, as measured on Unity ${te}`,
2357
+ message: `Built-in control defaults applied, as measured on Unity ${ce}`,
2180
2358
  reason: "version-dependent"
2181
2359
  });
2182
- for (const u of t.usable) {
2183
- if (u.builtin === !0 || a.has(u)) continue;
2184
- const p = mn(u.rule.selectors);
2185
- p.length !== 0 && s.push({
2360
+ for (const a of t.usable) {
2361
+ if (a.builtin === !0 || u.has(a)) continue;
2362
+ const y = $n(a.rule.selectors);
2363
+ y.length !== 0 && s.push({
2186
2364
  kind: "unsupported-selector",
2187
- message: `${p.join(", ")} matched nothing; only ${ht().join(", ")} are drawn with the parts these names refer to`,
2188
- at: { in: "uss", sheet: u.sheet, span: u.rule.selectorSpan },
2365
+ message: `${y.join(", ")} matched nothing; only ${$t().join(", ")} are drawn with the parts these names refer to`,
2366
+ at: { in: "uss", sheet: a.sheet, ...K(e, a.sheet), span: a.rule.selectorSpan },
2189
2367
  reason: "not-rendered",
2190
- subject: { kind: "selector", selector: ee(e, u), fragment: p.join(", ") },
2191
- ...H(e, u.sheet)
2368
+ subject: { kind: "selector", selector: le(e, a), fragment: y.join(", ") },
2369
+ ...X(e, a.sheet)
2192
2370
  });
2193
2371
  }
2194
- return { styles: r, partStyles: d, warnings: s };
2372
+ for (const [a, y] of t.declarationWarnings)
2373
+ a.nodes = g.get(y) ?? [];
2374
+ return { styles: i, partStyles: c, warnings: s, matchedNodes: g };
2195
2375
  }
2196
- function Ln(e, n, t, s) {
2197
- const r = nt(e, s), o = st(e, { kind: "element", node: n }, r).filter(
2198
- (d) => d.property === t
2376
+ function Jn(e, n, t, s) {
2377
+ const i = ft(e, s), o = pt(e, { kind: "element", node: n }, i).filter(
2378
+ (c) => c.property === t
2199
2379
  );
2200
- return ot(o), o;
2380
+ return ht(o), o;
2201
2381
  }
2202
- const Un = [
2382
+ const Yn = [
2203
2383
  {
2204
2384
  id: "text-metrics",
2205
2385
  kind: "unreproducible",
@@ -2219,245 +2399,341 @@ const Un = [
2219
2399
  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."
2220
2400
  }
2221
2401
  ];
2222
- function On(e, n) {
2402
+ function Ln(e, n) {
2223
2403
  const t = (h) => e.slice(h.start, h.end);
2224
2404
  function s(h) {
2225
2405
  return h.spans.closeTag !== null ? h.spans.closeTag.end : Math.max(h.spans.openTag.end, h.spans.inner.end);
2226
2406
  }
2227
- function r(h) {
2407
+ function i(h) {
2228
2408
  return h.includes('"') ? h.includes("'") ? `"${h.replace(/"/g, "&quot;")}"` : `'${h}'` : `"${h}"`;
2229
2409
  }
2230
2410
  function o(h) {
2231
- const l = h.attributes.map((u) => ` ${u.name}=${r(u.value)}`).join(""), c = Le(h.name);
2232
- return h.spans.closeTag === null ? `<${c}${l} />` : `<${c}${l}>`;
2411
+ const l = h.attributes.map((m) => ` ${m.name}=${i(m.value)}`).join(""), f = Ve(h.name);
2412
+ return h.spans.closeTag === null ? `<${f}${l} />` : `<${f}${l}>`;
2233
2413
  }
2234
- function d(h) {
2235
- var p, i;
2236
- const l = t(h.spans.inner), c = ((p = /^[ \t]*\r?\n[ \t]*/.exec(l)) == null ? void 0 : p[0]) ?? "", u = ((i = /\r?\n[ \t]*$/.exec(l)) == null ? void 0 : i[0]) ?? "";
2237
- return { between: c, before: c, after: u };
2414
+ function c(h) {
2415
+ var a, y;
2416
+ const l = t(h.spans.inner), f = ((a = /^[ \t]*\r?\n[ \t]*/.exec(l)) == null ? void 0 : a[0]) ?? "", m = ((y = /\r?\n[ \t]*$/.exec(l)) == null ? void 0 : y[0]) ?? "";
2417
+ return { between: f, before: f, after: m };
2238
2418
  }
2239
- function a(h) {
2419
+ function u(h) {
2240
2420
  const { inner: l } = h.spans;
2241
2421
  if (h.children.length === 0) return t(l);
2242
2422
  if (h.childrenDirty) {
2243
- const { between: p, before: i, after: y } = d(h);
2244
- return i + h.children.map(x).join(p) + y;
2423
+ const { between: a, before: y, after: r } = c(h);
2424
+ return y + h.children.map(g).join(a) + r;
2245
2425
  }
2246
- let c = "", u = l.start;
2247
- for (const p of h.children)
2248
- c += e.slice(u, p.spans.openTag.start), c += x(p), u = s(p);
2249
- return c + e.slice(u, l.end);
2426
+ let f = "", m = l.start;
2427
+ for (const a of h.children)
2428
+ f += e.slice(m, a.spans.openTag.start), f += g(a), m = s(a);
2429
+ return f + e.slice(m, l.end);
2250
2430
  }
2251
- function x(h) {
2252
- const l = h.tagDirty ? o(h) : t(h.spans.openTag), c = h.spans.closeTag === null ? "" : t(h.spans.closeTag);
2253
- return l + a(h) + c;
2431
+ function g(h) {
2432
+ const l = h.tagDirty ? o(h) : t(h.spans.openTag), f = h.spans.closeTag === null ? "" : t(h.spans.closeTag);
2433
+ return l + u(h) + f;
2254
2434
  }
2255
- return e.slice(0, n.spans.openTag.start) + x(n) + e.slice(s(n));
2435
+ return e.slice(0, n.spans.openTag.start) + g(n) + e.slice(s(n));
2256
2436
  }
2257
- function Dn(e) {
2437
+ function Un(e) {
2258
2438
  const n = e.source, t = (l) => n.slice(l.start, l.end);
2259
2439
  function s(l) {
2260
- return l.parts.map((c, u) => {
2261
- const p = u === 0 ? "" : c.combinator === "child" ? " > " : " ", i = c.simple.map((y) => {
2262
- switch (y.kind) {
2440
+ return l.parts.map((f, m) => {
2441
+ const a = m === 0 ? "" : f.combinator === "child" ? " > " : " ", y = f.simple.map((r) => {
2442
+ switch (r.kind) {
2263
2443
  case "universal":
2264
2444
  return "*";
2265
2445
  case "type":
2266
- return y.name;
2446
+ return r.name;
2267
2447
  case "class":
2268
- return `.${y.name}`;
2448
+ return `.${r.name}`;
2269
2449
  case "name":
2270
- return `#${y.name}`;
2450
+ return `#${r.name}`;
2271
2451
  case "pseudo":
2272
- return `:${y.name}`;
2452
+ return `:${r.name}`;
2273
2453
  case "unknown":
2274
- return y.text;
2454
+ return r.text;
2275
2455
  }
2276
2456
  }).join("");
2277
- return p + i;
2457
+ return a + y;
2278
2458
  }).join("");
2279
2459
  }
2280
- function r(l) {
2281
- var k, f;
2282
- const c = l.declarations[0];
2283
- if (c === void 0) return { between: "", before: "", after: "" };
2284
- const u = n.lastIndexOf(`
2285
- `, c.span.start), p = u < 0 ? "" : n.slice(u, c.span.start), i = n.slice(l.selectorSpan.end, l.span.end), y = ((f = (k = /\r?\n[ \t]*\}$/.exec(i)) == null ? void 0 : k[0]) == null ? void 0 : f.replace(/\}$/, "")) ?? "";
2286
- return { between: `;${p}`, before: p, after: `;${y}` };
2460
+ function i(l) {
2461
+ var w, b;
2462
+ const f = l.declarations[0];
2463
+ if (f === void 0) return { between: "", before: "", after: "" };
2464
+ const m = n.lastIndexOf(`
2465
+ `, f.span.start), a = m < 0 ? "" : n.slice(m, f.span.start), y = n.slice(l.selectorSpan.end, l.span.end), r = ((b = (w = /\r?\n[ \t]*\}$/.exec(y)) == null ? void 0 : w[0]) == null ? void 0 : b.replace(/\}$/, "")) ?? "";
2466
+ return { between: `;${a}`, before: a, after: `;${r}` };
2287
2467
  }
2288
2468
  function o(l) {
2289
- const c = l.selectorDirty ? l.selectors.map(s).join(", ") : t(l.selectorSpan);
2469
+ const f = l.selectorDirty ? l.selectors.map(s).join(", ") : t(l.selectorSpan);
2290
2470
  if (l.declarations.length === 0)
2291
- return c + n.slice(l.selectorSpan.end, l.span.end);
2292
- const u = n.slice(l.selectorSpan.end, l.declarations[0].span.start);
2471
+ return f + n.slice(l.selectorSpan.end, l.span.end);
2472
+ const m = n.slice(l.selectorSpan.end, l.declarations[0].span.start);
2293
2473
  if (l.declarationsDirty) {
2294
- const { between: y, before: k, after: f } = r(l), m = u.slice(0, u.indexOf("{") + 1), v = l.declarations.map(d).join(y);
2295
- return `${c}${m}${k}${v}${f}}`;
2474
+ const { between: r, before: w, after: b } = i(l), p = m.slice(0, m.indexOf("{") + 1), d = l.declarations.map(c).join(r);
2475
+ return `${f}${p}${w}${d}${b}}`;
2296
2476
  }
2297
- let p = c, i = l.selectorSpan.end;
2298
- for (const y of l.declarations)
2299
- p += n.slice(i, y.span.start), p += d(y), i = y.span.end;
2300
- return p + n.slice(i, l.span.end);
2477
+ let a = f, y = l.selectorSpan.end;
2478
+ for (const r of l.declarations)
2479
+ a += n.slice(y, r.span.start), a += c(r), y = r.span.end;
2480
+ return a + n.slice(y, l.span.end);
2301
2481
  }
2302
- function d(l) {
2482
+ function c(l) {
2303
2483
  return l.dirty ? `${l.property}: ${l.value}` : t(l.span);
2304
2484
  }
2305
- function a(l) {
2485
+ function u(l) {
2306
2486
  return l.kind === "rule" ? o(l.rule) : t(l.span);
2307
2487
  }
2308
- let x = "", h = 0;
2488
+ let g = "", h = 0;
2309
2489
  for (const l of e.items) {
2310
- const c = l.kind === "rule" ? l.rule.span : l.span;
2311
- x += n.slice(h, c.start), x += a(l), h = c.end;
2312
- }
2313
- return x + n.slice(h);
2490
+ const f = l.kind === "rule" ? l.rule.span : l.span;
2491
+ g += n.slice(h, f.start), g += u(l), h = f.end;
2492
+ }
2493
+ return g + n.slice(h);
2494
+ }
2495
+ function zn(e, n, t, s) {
2496
+ const i = /* @__PURE__ */ new Map();
2497
+ if (s === void 0) return { fonts: i, warnings: [...n] };
2498
+ const o = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map(), u = (h, l, f) => {
2499
+ for (; l.kind === "inherited"; ) l = l.origin;
2500
+ const m = t(l);
2501
+ return JSON.stringify([
2502
+ h,
2503
+ m.sourceDocument,
2504
+ m.at,
2505
+ m.at === void 0 ? l.kind === "inline" ? l.node : f : null
2506
+ ]);
2507
+ };
2508
+ for (const [h, l] of e)
2509
+ for (const f of ["-unity-font", "-unity-font-definition"]) {
2510
+ const m = l.get(f);
2511
+ if (m === void 0) continue;
2512
+ const a = rt(m.value);
2513
+ if (a === null) continue;
2514
+ const y = JSON.stringify([a.path, a.form]);
2515
+ if (!o.has(y)) {
2516
+ const p = s(a.path, a.form);
2517
+ o.set(y, typeof p == "string" ? { family: p } : p);
2518
+ }
2519
+ const r = o.get(y);
2520
+ let w = m.origin;
2521
+ for (; w.kind === "inherited"; ) w = w.origin;
2522
+ const b = u(f, w, h);
2523
+ c.has(b) || c.set(b, r === null ? {
2524
+ kind: "asset-unresolved",
2525
+ message: `${f}: "${a.path}" was not resolved`,
2526
+ node: w.kind === "inline" ? w.node : h,
2527
+ subject: { kind: "asset", ...a, role: "font" },
2528
+ ...t(w)
2529
+ } : null), f === "-unity-font-definition" && i.delete(l), r !== null && i.set(l, r);
2530
+ }
2531
+ const g = n.filter((h) => {
2532
+ var f;
2533
+ if (h.reason !== "not-rendered" || ((f = h.subject) == null ? void 0 : f.kind) !== "property") return !0;
2534
+ const l = JSON.stringify([
2535
+ h.subject.property,
2536
+ h.sourceDocument,
2537
+ h.at,
2538
+ h.at === void 0 ? h.node : null
2539
+ ]);
2540
+ return !c.has(l);
2541
+ });
2542
+ return { fonts: i, warnings: [...g, ...[...c.values()].filter((h) => h !== null)] };
2543
+ }
2544
+ function Kn(e) {
2545
+ const n = /* @__PURE__ */ new Map(), t = /* @__PURE__ */ new Map(), s = (c) => {
2546
+ n.set(c.id, c);
2547
+ for (const u of c.children)
2548
+ t.set(u.id, c.id), s(u);
2549
+ };
2550
+ e.document !== void 0 && s(e.document.root);
2551
+ const i = /* @__PURE__ */ new Map(), o = (c) => {
2552
+ var h, l, f, m;
2553
+ const u = i.get(c);
2554
+ if (u !== void 0) return u;
2555
+ let g;
2556
+ for (let a = c; a !== void 0; a = t.get(a)) {
2557
+ const y = (l = (h = e.styles) == null ? void 0 : h.get(a)) == null ? void 0 : l.get("display");
2558
+ if ((y == null ? void 0 : y.value) === "none") {
2559
+ g = { kind: "hidden", by: a, origin: y.origin };
2560
+ break;
2561
+ }
2562
+ }
2563
+ if (g === void 0) {
2564
+ const a = e.boxes.get(c);
2565
+ if (a.width === 0 || a.height === 0) {
2566
+ const y = (f = e.styles) == null ? void 0 : f.get(c), r = ["width", "height"].some((b) => {
2567
+ var p;
2568
+ return /^-?0+(\.0+)?(px|%)?$/.test(((p = y == null ? void 0 : y.get(b)) == null ? void 0 : p.value) ?? "");
2569
+ }), w = ((m = n.get(c)) == null ? void 0 : m.children.filter((b) => e.boxes.has(b.id))) ?? [];
2570
+ g = !r && w.length > 0 && w.every((b) => {
2571
+ const p = o(b.id).kind;
2572
+ return p === "hidden" || p === "emptied";
2573
+ }) ? { kind: "emptied" } : { kind: "collapsed", explicitZero: r };
2574
+ } else g = { kind: "shown" };
2575
+ }
2576
+ return i.set(c, g), g;
2577
+ };
2578
+ for (const c of e.boxes.keys()) o(c);
2579
+ return i;
2314
2580
  }
2315
- gt(
2316
- (e, n) => n === void 0 ? Ne(e) : Ne(e, void 0, { resolveImport: n })
2581
+ Et(
2582
+ (e, n) => n === void 0 ? Be(e) : Be(e, void 0, { resolveImport: n })
2317
2583
  );
2318
- function rt(e, n = []) {
2584
+ function mt(e, n = []) {
2319
2585
  var t;
2320
2586
  for (const s of e.children) {
2321
2587
  if (s.name.local === "Style") {
2322
- const r = (t = s.attributes.find((o) => o.name === "src")) == null ? void 0 : t.value;
2323
- r !== void 0 && r.length > 0 && n.push({ url: X(r), scope: e.id });
2588
+ const i = (t = s.attributes.find((o) => o.name === "src")) == null ? void 0 : t.value;
2589
+ i !== void 0 && i.length > 0 && n.push({ url: ee(i), scope: e.id });
2324
2590
  }
2325
- rt(s, n);
2591
+ mt(s, n);
2326
2592
  }
2327
2593
  return n;
2328
2594
  }
2329
- function Mn(e) {
2595
+ function Pn(e) {
2330
2596
  return e.startsWith("project://") || e.startsWith("/");
2331
2597
  }
2332
- function Ne(e, n, t) {
2333
- var h, l;
2334
- const s = ze(e), r = [...s.warnings], o = [], d = [], a = [];
2335
- for (const { url: c, scope: u } of rt(s.root)) {
2336
- const p = ((h = t == null ? void 0 : t.resolveImport) == null ? void 0 : h.call(t, c, null)) ?? null;
2337
- if (p === null) {
2338
- r.push({
2598
+ function Be(e, n, t) {
2599
+ var h, l, f;
2600
+ const s = He(e), i = [...s.warnings], o = [], c = [], u = [];
2601
+ for (const { url: m, scope: a } of mt(s.root)) {
2602
+ const y = ((h = t == null ? void 0 : t.resolveImport) == null ? void 0 : h.call(t, m, null)) ?? null;
2603
+ if (y === null) {
2604
+ i.push({
2339
2605
  kind: "import-unresolved",
2340
- message: (t == null ? void 0 : t.resolveImport) === void 0 ? `<Style src="${c}"> was not loaded: pass resolveImport to read it, or pass the stylesheet text directly. Until then this document renders unstyled.` : `<Style src="${c}"> could not be resolved`,
2606
+ message: (t == null ? void 0 : t.resolveImport) === void 0 ? `<Style src="${m}"> was not loaded: pass resolveImport to read it, or pass the stylesheet text directly. Until then this document renders unstyled.` : `<Style src="${m}"> could not be resolved`,
2341
2607
  node: s.root.id,
2342
- subject: { kind: "import", url: c, from: null }
2608
+ subject: { kind: "import", url: m, from: null }
2343
2609
  });
2344
2610
  continue;
2345
2611
  }
2346
- a.push({ text: p, origin: c, scope: u });
2347
- }
2348
- if (n !== void 0 || a.length > 0) {
2349
- const c = /* @__PURE__ */ new Map(), u = [];
2350
- let p = 0;
2351
- for (const i of a) {
2352
- const y = p++;
2353
- u.push({ text: i.text, origin: i.origin, sheet: y }), d.push({ sheet: y, scope: i.scope });
2612
+ u.push({ text: y, origin: m, scope: a });
2613
+ }
2614
+ if (n !== void 0 || u.length > 0) {
2615
+ const m = /* @__PURE__ */ new Map(), a = [];
2616
+ let y = 0;
2617
+ for (const r of u) {
2618
+ const w = y++;
2619
+ a.push({ text: r.text, origin: r.origin, sheet: w }), c.push({ sheet: w, scope: r.scope });
2354
2620
  }
2355
2621
  if (n !== void 0) {
2356
- const i = p++;
2357
- u.push({ text: n, origin: null, sheet: i }), d.push({ sheet: i, scope: s.root.id });
2358
- }
2359
- for (; u.length > 0; ) {
2360
- const i = u.shift(), y = i.sheet, k = ve(i.text, i.origin, y);
2361
- o.push(k.sheet), r.push(...k.warnings);
2362
- for (const f of k.sheet.items) {
2363
- if (f.kind !== "import") continue;
2364
- const m = Mn(f.url) ? f.url : JSON.stringify([f.url, i.origin]);
2365
- if (c.has(m)) {
2366
- const g = c.get(m);
2367
- g != null && (f.resolvedSheet = g);
2622
+ const r = y++;
2623
+ a.push({ text: n, origin: null, sheet: r }), c.push({ sheet: r, scope: s.root.id });
2624
+ }
2625
+ for (; a.length > 0; ) {
2626
+ const r = a.shift(), w = r.sheet, b = De(r.text, r.origin, w);
2627
+ o.push(b.sheet), i.push(...b.warnings);
2628
+ for (const p of b.sheet.items) {
2629
+ if (p.kind !== "import") continue;
2630
+ const d = Pn(p.url) ? p.url : JSON.stringify([p.url, r.origin]);
2631
+ if (m.has(d)) {
2632
+ const S = m.get(d);
2633
+ S != null && (p.resolvedSheet = S);
2368
2634
  continue;
2369
2635
  }
2370
- c.set(m, null);
2371
- const v = ((l = t == null ? void 0 : t.resolveImport) == null ? void 0 : l.call(t, f.url, i.origin)) ?? null;
2372
- if (v === null) {
2373
- r.push({
2636
+ m.set(d, null);
2637
+ const x = ((l = t == null ? void 0 : t.resolveImport) == null ? void 0 : l.call(t, p.url, r.origin)) ?? null;
2638
+ if (x === null) {
2639
+ i.push({
2374
2640
  kind: "import-unresolved",
2375
- 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`,
2376
- at: { in: "uss", sheet: y, span: f.span },
2377
- subject: { kind: "import", url: f.url, from: i.origin }
2641
+ message: (t == null ? void 0 : t.resolveImport) === void 0 ? `@import "${p.url}" was not loaded: pass resolveImport to read it` : `@import "${p.url}" could not be resolved`,
2642
+ at: { in: "uss", sheet: w, span: p.span },
2643
+ subject: { kind: "import", url: p.url, from: r.origin }
2378
2644
  });
2379
2645
  continue;
2380
2646
  }
2381
- const w = p++;
2382
- c.set(m, w), f.resolvedSheet = w, u.push({ text: v, origin: f.url, sheet: w });
2647
+ const v = y++;
2648
+ m.set(d, v), p.resolvedSheet = v, a.push({ text: x, origin: p.url, sheet: v });
2383
2649
  }
2384
2650
  }
2385
2651
  }
2386
- const x = { source: e, root: s.root, sheets: o, styleRoots: d, warnings: r };
2387
- return yt(x, t == null ? void 0 : t.resolveImport), x;
2652
+ const g = { source: e, root: s.root, sheets: o, styleRoots: c, warnings: i };
2653
+ for (const m of i)
2654
+ ((f = m.at) == null ? void 0 : f.in) === "uss" && Object.assign(m.at, K(g, m.at.sheet));
2655
+ return Ot(g, t == null ? void 0 : t.resolveImport), g;
2388
2656
  }
2389
- function _n(e) {
2657
+ function Gn(e) {
2390
2658
  const n = e.sheets[0];
2391
2659
  return {
2392
- uxml: On(e.source, e.root),
2660
+ uxml: Ln(e.source, e.root),
2393
2661
  // Only the sheet passed to `parse` round-trips. `@import`ed sheets (Phase 3)
2394
2662
  // are separate files and are not this function's to write.
2395
- uss: n === void 0 ? "" : Dn(n)
2663
+ uss: n === void 0 ? "" : Un(n)
2396
2664
  };
2397
2665
  }
2398
- function Rn(e) {
2399
- const n = /* @__PURE__ */ new Set();
2400
- return e.filter((t) => {
2401
- if (t.at === void 0) return !0;
2402
- const s = JSON.stringify([t.kind, t.message, t.sourceDocument ?? null, t.at]);
2403
- return n.has(s) ? !1 : (n.add(s), !0);
2404
- });
2666
+ function _n(e) {
2667
+ const n = /* @__PURE__ */ new Map(), t = [];
2668
+ for (const s of e) {
2669
+ const i = { ...s }, o = i.at === void 0 ? void 0 : JSON.stringify([i.kind, i.message, i.sourceDocument ?? null, i.at]);
2670
+ (o === void 0 ? void 0 : n.get(o)) === void 0 && (o !== void 0 && n.set(o, i), t.push(i));
2671
+ }
2672
+ return t;
2405
2673
  }
2406
- function Wn(e, n, t) {
2407
- const s = n.ownerDocument, r = (t == null ? void 0 : t.size) ?? {
2674
+ function Xn(e, n, t) {
2675
+ const s = n.ownerDocument, i = (t == null ? void 0 : t.size) ?? {
2408
2676
  width: n.clientWidth,
2409
2677
  height: n.clientHeight
2410
- }, o = Dt(e), d = o.document, a = En(d, {
2678
+ }, o = zt(e), c = o.document, u = Fn(c, {
2411
2679
  ...(t == null ? void 0 : t.activeStates) === void 0 ? {} : { activeStates: t.activeStates },
2412
2680
  ...(t == null ? void 0 : t.states) === void 0 ? {} : { states: t.states }
2413
- }), x = (t == null ? void 0 : t.measureText) ?? en(s), h = Tn(d), l = Kt(d.root, a.styles, a.partStyles, {
2414
- size: r,
2415
- measureText: x,
2681
+ }), g = (t == null ? void 0 : t.measureText) ?? fn(s), h = jn(c, u.matchedNodes), l = zn(u.styles, u.warnings, h, t == null ? void 0 : t.resolveFont), f = ln(c.root, u.styles, u.partStyles, {
2682
+ size: i,
2683
+ measureText: g,
2684
+ fonts: l.fonts,
2416
2685
  locate: h
2417
2686
  });
2418
- let c;
2687
+ let m;
2419
2688
  try {
2420
- c = un(d.root, l.boxes, l.parts, a.styles, n, {
2689
+ m = wn(c.root, f.boxes, f.parts, u.styles, n, {
2421
2690
  document: s,
2691
+ fonts: l.fonts,
2422
2692
  resolveAsset: t == null ? void 0 : t.resolveAsset,
2423
2693
  locate: h
2424
2694
  });
2425
- } catch (p) {
2426
- throw l.dispose(), p;
2695
+ } catch (y) {
2696
+ throw f.dispose(), y;
2427
2697
  }
2428
- let u = !1;
2698
+ let a = !1;
2429
2699
  return {
2430
- warnings: Rn([
2700
+ warnings: _n([
2431
2701
  ...o.warnings,
2432
- ...a.warnings,
2433
2702
  ...l.warnings,
2434
- ...c.warnings
2703
+ ...f.warnings,
2704
+ ...m.warnings
2435
2705
  ]),
2436
- elements: c.elements,
2437
- boxes: l.boxes,
2706
+ elements: m.elements,
2707
+ boxes: f.boxes,
2708
+ document: c,
2709
+ styles: u.styles,
2710
+ partStyles: u.partStyles,
2438
2711
  dispose() {
2439
- u || (u = !0, l.dispose(), n.replaceChildren());
2712
+ a || (a = !0, f.dispose(), n.replaceChildren());
2440
2713
  }
2441
2714
  };
2442
2715
  }
2443
2716
  export {
2444
- Un as KNOWN_DIVERGENCES,
2445
- an as NODE_ATTRIBUTE,
2446
- ln as PART_ATTRIBUTE,
2447
- cn as PART_OWNER_ATTRIBUTE,
2448
- Ie as TEMPLATE_DEPTH_LIMIT,
2449
- Pt as USS_STATES,
2450
- Cn as collectDependencies,
2451
- en as createDefaultMeasureText,
2452
- Dt as expandTemplates,
2453
- Ln as explainProperty,
2454
- Bt as isInherited,
2455
- jn as isLayoutEngineReady,
2456
- zn as liveNodeCount,
2457
- Nn as loadLayoutEngine,
2458
- Ne as parse,
2459
- Wn as render,
2460
- En as resolveStyles,
2461
- _n as serialize,
2462
- ht as supportedControlNames
2717
+ cn as EDITOR_DEFAULT_FACE_INFO,
2718
+ Yn as KNOWN_DIVERGENCES,
2719
+ yn as NODE_ATTRIBUTE,
2720
+ bn as PART_ATTRIBUTE,
2721
+ vn as PART_OWNER_ATTRIBUTE,
2722
+ Ne as TEMPLATE_DEPTH_LIMIT,
2723
+ we as USS_STATES,
2724
+ Kn as classifyVisibility,
2725
+ Wn as collectDependencies,
2726
+ fn as createDefaultMeasureText,
2727
+ zt as expandTemplates,
2728
+ Jn as explainProperty,
2729
+ Zt as isInherited,
2730
+ Vn as isLayoutEngineReady,
2731
+ qn as liveNodeCount,
2732
+ Hn as loadLayoutEngine,
2733
+ Be as parse,
2734
+ Xn as render,
2735
+ Fn as resolveStyles,
2736
+ Gn as serialize,
2737
+ $t as supportedControlNames,
2738
+ un as textHeight
2463
2739
  };