@takazudo/zdtp 0.2.3 → 0.3.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.
@@ -0,0 +1,730 @@
1
+ import { g as d, r as w, d as ne, b as oe, f as re, j as se, i as ie, k as O, h as ae, l as ce, m as fe } from "./panel-config-BOyB8Egg.js";
2
+ class h extends Error {
3
+ constructor(t) {
4
+ super(t), this.name = "TierResolverError", Object.setPrototypeOf(this, h.prototype);
5
+ }
6
+ }
7
+ function D(e, t) {
8
+ return e.tiers.find((n) => n.id === t);
9
+ }
10
+ function S(e, t) {
11
+ return e.items.find((n) => n.id === t);
12
+ }
13
+ function E(e, t, n, r) {
14
+ const o = D(e, t);
15
+ if (!o)
16
+ throw new h(
17
+ `Tier "${t}" not found in tab "${e.id}". Available tiers: ${e.tiers.map((c) => c.id).join(", ")}.`
18
+ );
19
+ const s = S(o, n);
20
+ if (!s)
21
+ throw new h(
22
+ `Item "${n}" not found in tier "${t}" of tab "${e.id}".`
23
+ );
24
+ const a = r[t]?.[n];
25
+ if (o.referencesTier !== void 0) {
26
+ const c = o.referencesTier, l = D(e, c);
27
+ if (!l)
28
+ throw new h(
29
+ `Tier "${t}" declares referencesTier "${c}" but that tier does not exist in tab "${e.id}".`
30
+ );
31
+ const p = S(l, a ?? n);
32
+ if (!p) {
33
+ const u = S(l, s.default) ?? S(l, n) ?? l.items[0];
34
+ if (!u)
35
+ throw new h(
36
+ `Referenced tier "${c}" has no items; cannot resolve fallback for item "${n}" in tier "${t}" of tab "${e.id}".`
37
+ );
38
+ return { kind: "ref", targetCssVar: u.cssVar };
39
+ }
40
+ return { kind: "ref", targetCssVar: p.cssVar };
41
+ }
42
+ return a !== void 0 ? s.pill && a === s.pill.value ? { kind: "literal", value: s.pill.value } : { kind: "literal", value: a } : s.pill ? { kind: "literal", value: s.pill.customDefault } : { kind: "literal", value: s.default };
43
+ }
44
+ function j(e) {
45
+ return e.kind === "literal" ? e.value : `var(${e.targetCssVar})`;
46
+ }
47
+ function Y(e = d()) {
48
+ return ie(e);
49
+ }
50
+ function U(e = d()) {
51
+ return oe(e);
52
+ }
53
+ function _(e = d()) {
54
+ return ne(e);
55
+ }
56
+ function Ce(e = d()) {
57
+ return re(e);
58
+ }
59
+ function Z(e = d()) {
60
+ return ae(e);
61
+ }
62
+ function X(e = d()) {
63
+ return ce(e);
64
+ }
65
+ function q(e = d()) {
66
+ return fe(e);
67
+ }
68
+ const le = { top: 60, left: 20 };
69
+ function ue() {
70
+ if (typeof window > "u") return le;
71
+ const e = Math.min(1200, 0.8 * window.innerWidth), t = Math.min(800, 0.8 * window.innerHeight), n = Math.max(0, Math.round((window.innerHeight - t) / 2)), r = Math.max(0, Math.round((window.innerWidth - e) / 2));
72
+ return { top: n, left: r };
73
+ }
74
+ function Ae(e) {
75
+ try {
76
+ const t = localStorage.getItem(Z(e));
77
+ if (t) {
78
+ const n = JSON.parse(t);
79
+ if (typeof n.top == "number" && typeof n.left == "number")
80
+ return n;
81
+ }
82
+ } catch {
83
+ }
84
+ return ue();
85
+ }
86
+ function _e(e, t) {
87
+ try {
88
+ localStorage.setItem(Z(t), JSON.stringify(e));
89
+ } catch {
90
+ }
91
+ }
92
+ const I = 60, F = 320, R = 240, z = 1600, H = 1200, pe = { width: 1024 * 0.8, height: 768 * 0.8 };
93
+ function de() {
94
+ return typeof window > "u" ? pe : {
95
+ width: Math.min(1200, 0.8 * window.innerWidth),
96
+ height: Math.min(800, 0.8 * window.innerHeight)
97
+ };
98
+ }
99
+ const B = 32;
100
+ function me(e, t) {
101
+ const n = typeof window < "u" ? window.innerWidth : z, r = typeof window < "u" ? window.innerHeight : H, o = Math.max(F, Math.min(z, n - B)), s = Math.max(R, Math.min(H, r - B));
102
+ return {
103
+ width: Math.max(F, Math.min(e, o)),
104
+ height: Math.max(R, Math.min(t, s))
105
+ };
106
+ }
107
+ function Pe(e) {
108
+ try {
109
+ const t = localStorage.getItem(X(e));
110
+ if (t) {
111
+ const n = JSON.parse(t);
112
+ if (typeof n.width == "number" && typeof n.height == "number" && Number.isFinite(n.width) && Number.isFinite(n.height))
113
+ return me(n.width, n.height);
114
+ }
115
+ } catch {
116
+ }
117
+ return de();
118
+ }
119
+ function De(e, t) {
120
+ try {
121
+ localStorage.setItem(X(t), JSON.stringify(e));
122
+ } catch {
123
+ }
124
+ }
125
+ const ye = 1;
126
+ function Ee(e) {
127
+ return e === 0 ? "12rem" : e === 2 ? "100%" : "18rem";
128
+ }
129
+ function je(e) {
130
+ try {
131
+ const t = localStorage.getItem(q(e));
132
+ if (t === "0" || t === "1" || t === "2")
133
+ return Number(t);
134
+ } catch {
135
+ }
136
+ return ye;
137
+ }
138
+ function Fe(e, t) {
139
+ try {
140
+ localStorage.setItem(q(t), String(e));
141
+ } catch {
142
+ }
143
+ }
144
+ function Re(e, t, n, r) {
145
+ const o = -(n - I), s = window.innerWidth - I, i = -30, a = window.innerHeight - I, c = Math.max(a, i), l = Math.max(s, o);
146
+ return {
147
+ top: Math.max(i, Math.min(e, c)),
148
+ left: Math.max(o, Math.min(t, l))
149
+ };
150
+ }
151
+ async function ze(e) {
152
+ }
153
+ function M() {
154
+ return {};
155
+ }
156
+ const ge = {
157
+ id: "stub",
158
+ label: "STUB",
159
+ paletteSize: 0,
160
+ baseRoles: {},
161
+ paletteCssVarTemplate: "--zudo-stub-p{n}",
162
+ semanticDefaults: {},
163
+ semanticCssNames: {},
164
+ baseDefaults: {},
165
+ defaultShikiTheme: "dracula",
166
+ colorSchemes: {},
167
+ panelSettings: { colorScheme: "", colorMode: !1 }
168
+ };
169
+ function y(e = d()) {
170
+ return se(e.tabs) ?? ge;
171
+ }
172
+ function P(e) {
173
+ const t = Math.max(1, e.paletteSize);
174
+ return {
175
+ palette: Array.from({ length: t }, (r, o) => {
176
+ if (t === 1) return "#808080";
177
+ const i = Math.round(o / (t - 1) * 255).toString(16).padStart(2, "0");
178
+ return `#${i}${i}${i}`;
179
+ }),
180
+ background: e.baseDefaults.background ?? 0,
181
+ foreground: e.baseDefaults.foreground ?? 0,
182
+ cursor: e.baseDefaults.cursor ?? 0,
183
+ selectionBg: e.baseDefaults.selectionBg ?? 0,
184
+ selectionFg: e.baseDefaults.selectionFg ?? 0,
185
+ semanticMappings: { ...e.semanticDefaults },
186
+ shikiTheme: e.defaultShikiTheme
187
+ };
188
+ }
189
+ function He(e) {
190
+ const t = w(e);
191
+ return t ? P(t) : void 0;
192
+ }
193
+ function he() {
194
+ try {
195
+ const e = document.createElement("canvas").getContext("2d");
196
+ return e ? (e.fillStyle = "#ffffff", e.fillStyle === "#ffffff") : !1;
197
+ } catch {
198
+ return !1;
199
+ }
200
+ }
201
+ const be = he();
202
+ function Se(e) {
203
+ const t = e.match(/^rgba?\(\s*(\d+)\s*,\s*(\d+)\s*,\s*(\d+)(?:\s*,\s*([\d.]+))?/);
204
+ if (!t) return null;
205
+ const n = parseInt(t[1], 10), r = parseInt(t[2], 10), o = parseInt(t[3], 10), s = `#${(1 << 24 | n << 16 | r << 8 | o).toString(16).slice(1)}`;
206
+ if (t[4] !== void 0) {
207
+ const i = parseFloat(t[4]);
208
+ if (i < 1) {
209
+ const a = Math.round(i * 255).toString(16).padStart(2, "0");
210
+ return `${s}${a}`;
211
+ }
212
+ }
213
+ return s;
214
+ }
215
+ function ve(e, t, n, r) {
216
+ const o = (i) => i.toString(16).padStart(2, "0"), s = `#${o(e)}${o(t)}${o(n)}`;
217
+ return r < 255 ? `${s}${o(r)}` : s;
218
+ }
219
+ let m = null;
220
+ function N(e) {
221
+ if (!e || e === "initial" || e === "inherit") return "#000000";
222
+ const t = e.trim();
223
+ if (/^#[0-9a-fA-F]{6}$/.test(t) || /^#[0-9a-fA-F]{8}$/.test(t)) return t;
224
+ if (/^#[0-9a-fA-F]{3}$/.test(t))
225
+ return `#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}`;
226
+ if (/^#[0-9a-fA-F]{4}$/.test(t))
227
+ return `#${t[1]}${t[1]}${t[2]}${t[2]}${t[3]}${t[3]}${t[4]}${t[4]}`;
228
+ const n = Se(t);
229
+ if (n) return n;
230
+ if (!be) return "#000000";
231
+ try {
232
+ if (m || (m = document.createElement("canvas").getContext("2d")), !m) return "#000000";
233
+ m.fillStyle = "#000000", m.fillStyle = t, m.clearRect(0, 0, 1, 1), m.fillRect(0, 0, 1, 1);
234
+ const [r, o, s, i] = m.getImageData(0, 0, 1, 1).data;
235
+ return ve(r, o, s, i);
236
+ } catch {
237
+ return "#000000";
238
+ }
239
+ }
240
+ function k(e, t) {
241
+ document.documentElement.style.setProperty(e, t);
242
+ }
243
+ function g(e, t, n) {
244
+ if (e === void 0) return n;
245
+ if (typeof e == "number") return e;
246
+ const r = N(e), o = t.map((f) => N(f)), s = t.indexOf(e);
247
+ if (s >= 0) return s;
248
+ const i = o.indexOf(r);
249
+ if (i >= 0) return i;
250
+ const a = K(r);
251
+ let c = n, l = 1 / 0;
252
+ for (let f = 0; f < o.length; f++) {
253
+ const p = K(o[f]), u = (a.r - p.r) ** 2 + (a.g - p.g) ** 2 + (a.b - p.b) ** 2;
254
+ u < l && (l = u, c = f);
255
+ }
256
+ return c;
257
+ }
258
+ function K(e) {
259
+ const t = e.replace("#", "");
260
+ return {
261
+ r: parseInt(t.substring(0, 2), 16) || 0,
262
+ g: parseInt(t.substring(2, 4), 16) || 0,
263
+ b: parseInt(t.substring(4, 6), 16) || 0,
264
+ aa: t.length >= 8 ? parseInt(t.substring(6, 8), 16) || 0 : 255
265
+ };
266
+ }
267
+ function ke(e = y(), t) {
268
+ const n = e.panelSettings;
269
+ if (n.colorMode) {
270
+ const r = document.documentElement.getAttribute("data-theme");
271
+ if (r === "light") return n.colorMode.lightScheme;
272
+ if (r === "dark") return n.colorMode.darkScheme;
273
+ }
274
+ return n.colorScheme;
275
+ }
276
+ function Oe(e = y()) {
277
+ const t = e.colorSchemes;
278
+ if (Object.keys(t).length === 0)
279
+ return P(e);
280
+ const n = ke(e), r = t[n] ?? Object.values(t)[0];
281
+ return we(r, e);
282
+ }
283
+ function we(e, t = y()) {
284
+ const n = e.palette.map((o) => N(o)), r = {};
285
+ for (const [o, s] of Object.entries(t.semanticDefaults)) {
286
+ const i = e.semantic?.[o];
287
+ i === void 0 ? r[o] = s : typeof i == "number" ? r[o] = i : r[o] = g(i, e.palette, s);
288
+ }
289
+ return {
290
+ palette: n,
291
+ background: g(
292
+ e.background,
293
+ e.palette,
294
+ t.baseDefaults.background ?? 0
295
+ ),
296
+ foreground: g(
297
+ e.foreground,
298
+ e.palette,
299
+ t.baseDefaults.foreground ?? 0
300
+ ),
301
+ cursor: g(e.cursor, e.palette, t.baseDefaults.cursor ?? 0),
302
+ selectionBg: g(
303
+ e.selectionBg,
304
+ e.palette,
305
+ t.baseDefaults.selectionBg ?? 0
306
+ ),
307
+ selectionFg: g(
308
+ e.selectionFg,
309
+ e.palette,
310
+ t.baseDefaults.selectionFg ?? 0
311
+ ),
312
+ semanticMappings: r,
313
+ shikiTheme: String(e.shikiTheme ?? t.defaultShikiTheme)
314
+ };
315
+ }
316
+ function L(e, t, n, r) {
317
+ const o = t.length;
318
+ return e === "bg" ? t[b(n, o)] ?? "#000000" : e === "fg" ? t[b(r, o)] ?? "#ffffff" : t[b(e, o)] ?? "#000000";
319
+ }
320
+ function b(e, t) {
321
+ return e >= 0 && e < t ? e : 0;
322
+ }
323
+ function J(e, t = y(), n) {
324
+ const r = e.palette.length;
325
+ if (n) {
326
+ const o = [];
327
+ for (let s = 0; s < r; s++)
328
+ o.push([O(t, s), e.palette[s]]);
329
+ for (const [s, i] of Object.entries(t.baseRoles)) {
330
+ if (typeof i != "string" || i.length === 0) continue;
331
+ const a = e[s];
332
+ typeof a == "number" && o.push([i, e.palette[b(a, r)]]);
333
+ }
334
+ for (const [s, i] of Object.entries(t.semanticCssNames)) {
335
+ const a = e.semanticMappings[s] ?? t.semanticDefaults[s];
336
+ o.push([i, L(a, e.palette, e.background, e.foreground)]);
337
+ }
338
+ try {
339
+ n.apply(o);
340
+ } catch (s) {
341
+ console.warn("[design-token-panel] applySink.apply threw; falling back silently.", s);
342
+ }
343
+ return;
344
+ }
345
+ for (let o = 0; o < r; o++)
346
+ k(O(t, o), e.palette[o]);
347
+ for (const [o, s] of Object.entries(t.baseRoles)) {
348
+ if (typeof s != "string" || s.length === 0) continue;
349
+ const i = e[o];
350
+ typeof i == "number" && k(s, e.palette[b(i, r)]);
351
+ }
352
+ for (const [o, s] of Object.entries(t.semanticCssNames)) {
353
+ const i = e.semanticMappings[o] ?? t.semanticDefaults[o];
354
+ k(s, L(i, e.palette, e.background, e.foreground));
355
+ }
356
+ }
357
+ function Be(e, t) {
358
+ const n = t ?? d(), r = n.applySink;
359
+ J(e.color, y(n), r), v(n.tabs, "spacing", e.spacing, r), v(n.tabs, "font", e.typography, r), v(n.tabs, "size", e.size, r);
360
+ const o = w(n);
361
+ if (o && e.secondary && J(e.secondary, o, r), e.tabs)
362
+ for (const [s, i] of Object.entries(e.tabs)) {
363
+ const a = {};
364
+ for (const c of Object.values(i))
365
+ for (const [l, f] of Object.entries(c))
366
+ a[l] = f;
367
+ v(n.tabs, s, a, r);
368
+ }
369
+ }
370
+ function v(e, t, n, r) {
371
+ const o = e.find((a) => a.id === t);
372
+ if (!o) return;
373
+ const s = {};
374
+ for (const a of o.tiers) {
375
+ const c = {};
376
+ for (const l of a.items) {
377
+ const f = n[l.id];
378
+ typeof f == "string" && f.length > 0 && (c[l.id] = f);
379
+ }
380
+ s[a.id] = c;
381
+ }
382
+ if (r) {
383
+ const a = [], c = [];
384
+ for (const l of o.tiers)
385
+ for (const f of l.items)
386
+ if (!f.readonly)
387
+ try {
388
+ const p = E(o, l.id, f.id, s), u = j(p);
389
+ typeof n[f.id] == "string" && n[f.id].length > 0 || l.referencesTier !== void 0 ? a.push([f.cssVar, u]) : c.push(f.cssVar);
390
+ } catch {
391
+ c.push(f.cssVar);
392
+ }
393
+ if (a.length > 0)
394
+ try {
395
+ r.apply(a);
396
+ } catch (l) {
397
+ console.warn("[design-token-panel] applySink.apply threw; falling back silently.", l);
398
+ }
399
+ if (c.length > 0)
400
+ try {
401
+ r.clear(c);
402
+ } catch (l) {
403
+ console.warn("[design-token-panel] applySink.clear threw; falling back silently.", l);
404
+ }
405
+ return;
406
+ }
407
+ const i = document.documentElement;
408
+ for (const a of o.tiers)
409
+ for (const c of a.items)
410
+ if (!c.readonly)
411
+ try {
412
+ const l = E(o, a.id, c.id, s), f = j(l);
413
+ typeof n[c.id] == "string" && n[c.id].length > 0 || a.referencesTier !== void 0 ? k(c.cssVar, f) : i.style.removeProperty(c.cssVar);
414
+ } catch {
415
+ i.style.removeProperty(c.cssVar);
416
+ }
417
+ }
418
+ function Q(e) {
419
+ const t = e ?? d(), n = y(t), r = w(t);
420
+ return r ? [n, r] : [n];
421
+ }
422
+ function ee(e) {
423
+ const t = [];
424
+ for (let n = 0; n < e.paletteSize; n++)
425
+ t.push(O(e, n));
426
+ for (const n of Object.values(e.baseRoles))
427
+ typeof n == "string" && n.length > 0 && t.push(n);
428
+ for (const n of Object.values(e.semanticCssNames))
429
+ t.push(n);
430
+ return t;
431
+ }
432
+ function Te(e) {
433
+ const t = [];
434
+ for (const n of e.tabs)
435
+ if (!(n.id === "color" || n.id === "color-secondary"))
436
+ for (const r of n.tiers)
437
+ for (const o of r.items)
438
+ o.readonly || t.push(o.cssVar);
439
+ return t;
440
+ }
441
+ function xe(e, t, n) {
442
+ const r = e ?? Q(n), o = n?.applySink;
443
+ return Ie(r, o);
444
+ }
445
+ function Ie(e, t) {
446
+ if (t) {
447
+ const r = [];
448
+ for (const o of e)
449
+ r.push(...ee(o));
450
+ if (r.length > 0)
451
+ try {
452
+ t.clear(r);
453
+ } catch (o) {
454
+ console.warn("[design-token-panel] applySink.clear threw; falling back silently.", o);
455
+ }
456
+ return;
457
+ }
458
+ const n = document.documentElement;
459
+ for (const r of e) {
460
+ for (let o = 0; o < r.paletteSize; o++)
461
+ n.style.removeProperty(O(r, o));
462
+ for (const o of Object.values(r.baseRoles))
463
+ n.style.removeProperty(o);
464
+ for (const o of Object.values(r.semanticCssNames))
465
+ n.style.removeProperty(o);
466
+ }
467
+ }
468
+ function Ke(e, t) {
469
+ const n = t ?? d(), r = n.applySink, o = Q(n);
470
+ if (r) {
471
+ const i = [];
472
+ for (const a of o)
473
+ i.push(...ee(a));
474
+ if (i.push(...Te(n)), i.length > 0)
475
+ try {
476
+ r.clear(i);
477
+ } catch (a) {
478
+ console.warn("[design-token-panel] applySink.clear threw; falling back silently.", a);
479
+ }
480
+ return;
481
+ }
482
+ xe(o);
483
+ const s = document.documentElement;
484
+ for (const i of n.tabs)
485
+ if (!(i.id === "color" || i.id === "color-secondary"))
486
+ for (const a of i.tiers)
487
+ for (const c of a.items)
488
+ c.readonly || s.style.removeProperty(c.cssVar);
489
+ }
490
+ function C(e, t) {
491
+ if (!e || typeof e != "object") return !1;
492
+ const n = e;
493
+ return Array.isArray(n.palette) && n.palette.length === t && typeof n.background == "number" && typeof n.foreground == "number" && typeof n.cursor == "number" && typeof n.selectionBg == "number" && typeof n.selectionFg == "number" && typeof n.semanticMappings == "object" && n.semanticMappings !== null;
494
+ }
495
+ function A(e, t) {
496
+ const n = Array.isArray(e.palette) ? e.palette : null;
497
+ let r;
498
+ return n && n.length === t.palette.length && n.every((o) => typeof o == "string") ? r = n : (n && n.some((o) => typeof o != "string") && console.error(
499
+ "[design-token-panel] Persisted palette contained non-string elements; falling back to defaults."
500
+ ), r = t.palette), {
501
+ palette: r,
502
+ background: typeof e.background == "number" ? e.background : t.background,
503
+ foreground: typeof e.foreground == "number" ? e.foreground : t.foreground,
504
+ cursor: typeof e.cursor == "number" ? e.cursor : t.cursor,
505
+ selectionBg: typeof e.selectionBg == "number" ? e.selectionBg : t.selectionBg,
506
+ selectionFg: typeof e.selectionFg == "number" ? e.selectionFg : t.selectionFg,
507
+ semanticMappings: e.semanticMappings && typeof e.semanticMappings == "object" ? { ...t.semanticMappings, ...e.semanticMappings } : t.semanticMappings,
508
+ shikiTheme: typeof e.shikiTheme == "string" && e.shikiTheme.length > 0 ? e.shikiTheme : t.shikiTheme
509
+ };
510
+ }
511
+ const Le = {
512
+ "text-caption": "text-xs",
513
+ "text-small": "text-sm",
514
+ "text-body": "text-base",
515
+ "text-subheading": "text-lg",
516
+ "text-heading": "text-3xl",
517
+ "text-display": "text-5xl",
518
+ // Dropped — no main-site equivalent. `null` signals "discard".
519
+ "text-micro": null
520
+ };
521
+ function W(e) {
522
+ if (!e || typeof e != "object") return {};
523
+ const t = {};
524
+ for (const [n, r] of Object.entries(e))
525
+ typeof r == "string" && (t[n] = r);
526
+ return t;
527
+ }
528
+ function Me(e, t = {}) {
529
+ if (!e || typeof e != "object") return {};
530
+ const n = {};
531
+ for (const [r, o] of Object.entries(e))
532
+ if (typeof o == "string")
533
+ if (Object.hasOwn(t, r)) {
534
+ const s = t[r];
535
+ if (s === null) continue;
536
+ Object.hasOwn(n, s) || (n[s] = o);
537
+ } else
538
+ n[r] = o;
539
+ return n;
540
+ }
541
+ function $e(e) {
542
+ if (!e || typeof e != "object") return;
543
+ const t = e;
544
+ if (typeof t.top == "number" && typeof t.left == "number" && Number.isFinite(t.top) && Number.isFinite(t.left))
545
+ return { top: t.top, left: t.left };
546
+ }
547
+ function Ve(e) {
548
+ if (!e || typeof e != "object" || Array.isArray(e)) return {};
549
+ const t = {};
550
+ for (const [n, r] of Object.entries(e)) {
551
+ if (!r || typeof r != "object" || Array.isArray(r)) continue;
552
+ const o = {};
553
+ for (const [s, i] of Object.entries(r)) {
554
+ if (!i || typeof i != "object" || Array.isArray(i)) continue;
555
+ const a = {};
556
+ for (const [c, l] of Object.entries(i))
557
+ typeof l == "string" && (a[c] = l);
558
+ o[s] = a;
559
+ }
560
+ t[n] = o;
561
+ }
562
+ return t;
563
+ }
564
+ function G(e, t, n, r = d()) {
565
+ if (!e.color || !C(e.color, t.paletteSize)) return null;
566
+ const o = n ?? te(t), s = e.typography !== void 0 ? e.typography : e.font, i = r.legacyIdRenameMap ?? {}, a = {
567
+ color: A(e.color, o),
568
+ // New sections added after v1 migration — tolerate their absence so
569
+ // older v2 payloads (Color-only) still load cleanly.
570
+ spacing: W(e.spacing),
571
+ // Typography slice: apply the host-configured rename map (if any)
572
+ // so payloads persisted under the host's "old" ids survive a
573
+ // host-driven id rename without losing the user's tweaks.
574
+ typography: Me(s, i),
575
+ size: W(e.size),
576
+ panelPosition: $e(e.panelPosition)
577
+ }, c = w(r);
578
+ c && e.secondary && C(e.secondary, c.paletteSize) && (a.secondary = A(
579
+ e.secondary,
580
+ P(c)
581
+ ));
582
+ const l = Ve(e.tabs);
583
+ return Object.keys(l).length > 0 && (a.tabs = l), a;
584
+ }
585
+ function Je(e = localStorage, t, n = y(), r = d()) {
586
+ const o = Y(r), s = U(r), i = _(r), a = $(e, i);
587
+ if (a !== null) {
588
+ const f = V(a);
589
+ if (f && typeof f == "object") {
590
+ const p = f, u = G(p, n, t, r);
591
+ if (u !== null) {
592
+ const T = p.typography !== void 0 ? p.typography : p.font;
593
+ if (JSON.stringify(T ?? {}) !== JSON.stringify(u.typography) || p.typography === void 0)
594
+ try {
595
+ e.setItem(i, JSON.stringify(u));
596
+ } catch {
597
+ }
598
+ return u;
599
+ }
600
+ }
601
+ console.warn(`[tweak] Malformed ${i}, attempting v2 migration`);
602
+ }
603
+ const c = $(e, s);
604
+ if (c !== null) {
605
+ const f = V(c);
606
+ if (f && typeof f == "object") {
607
+ const u = G(f, n, t, r);
608
+ if (u !== null) {
609
+ try {
610
+ e.setItem(i, JSON.stringify(u)), e.removeItem(s);
611
+ } catch {
612
+ }
613
+ return u;
614
+ }
615
+ }
616
+ console.warn(`[tweak] Malformed ${s}, attempting v1 migration`);
617
+ }
618
+ const l = $(e, o);
619
+ if (l !== null) {
620
+ const f = V(l);
621
+ if (f && typeof f == "object" && C(f, n.paletteSize)) {
622
+ const p = t ?? te(n), u = f;
623
+ u.shikiTheme || (u.shikiTheme = p.shikiTheme);
624
+ const x = {
625
+ color: A(u, p),
626
+ spacing: M(),
627
+ typography: M(),
628
+ size: M()
629
+ };
630
+ try {
631
+ e.setItem(i, JSON.stringify(x)), e.removeItem(o);
632
+ } catch {
633
+ }
634
+ return x;
635
+ }
636
+ console.warn(`[tweak] Malformed ${o}; discarding and using fresh defaults`);
637
+ try {
638
+ e.removeItem(o);
639
+ } catch {
640
+ }
641
+ }
642
+ return null;
643
+ }
644
+ function We(e, t = localStorage, n = d()) {
645
+ try {
646
+ t.setItem(_(n), JSON.stringify(e));
647
+ } catch {
648
+ }
649
+ }
650
+ function Ge(e = localStorage, t = d()) {
651
+ try {
652
+ e.removeItem(_(t));
653
+ } catch {
654
+ }
655
+ try {
656
+ e.removeItem(U(t));
657
+ } catch {
658
+ }
659
+ try {
660
+ e.removeItem(Y(t));
661
+ } catch {
662
+ }
663
+ }
664
+ function $(e, t) {
665
+ try {
666
+ return e.getItem(t);
667
+ } catch {
668
+ return null;
669
+ }
670
+ }
671
+ function V(e) {
672
+ try {
673
+ return JSON.parse(e);
674
+ } catch {
675
+ return null;
676
+ }
677
+ }
678
+ function te(e) {
679
+ try {
680
+ return Oe(e);
681
+ } catch {
682
+ return {
683
+ palette: Array.from(
684
+ { length: e.paletteSize },
685
+ (n, r) => r === 0 ? "#000000" : r === e.paletteSize - 1 ? "#ffffff" : "#808080"
686
+ ),
687
+ background: e.baseDefaults.background ?? 0,
688
+ foreground: e.baseDefaults.foreground ?? 0,
689
+ cursor: e.baseDefaults.cursor ?? 0,
690
+ selectionBg: e.baseDefaults.selectionBg ?? 0,
691
+ selectionFg: e.baseDefaults.selectionFg ?? 0,
692
+ semanticMappings: { ...e.semanticDefaults },
693
+ shikiTheme: e.defaultShikiTheme
694
+ };
695
+ }
696
+ }
697
+ export {
698
+ Re as A,
699
+ me as B,
700
+ M as C,
701
+ le as D,
702
+ _ as E,
703
+ Le as Z,
704
+ U as a,
705
+ y as b,
706
+ ze as c,
707
+ Be as d,
708
+ j as e,
709
+ We as f,
710
+ Y as g,
711
+ de as h,
712
+ we as i,
713
+ ye as j,
714
+ Ce as k,
715
+ Je as l,
716
+ Ae as m,
717
+ Pe as n,
718
+ je as o,
719
+ Fe as p,
720
+ Ge as q,
721
+ E as r,
722
+ b as s,
723
+ Ke as t,
724
+ He as u,
725
+ Ee as v,
726
+ Oe as w,
727
+ xe as x,
728
+ _e as y,
729
+ De as z
730
+ };