@popcorn245/cornfield-components 0.50.0 → 0.51.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,847 +0,0 @@
1
- import { t as e } from "./rolldown-runtime-CGnMp29N.js";
2
- import { at as t, dt as n, ft as r, i, mt as a, n as o, ot as s, pt as c, r as l, rt as u, s as d, st as f, u as p, w as m } from "./_corn-default-tokens-BpIL6q5N.js";
3
- // ../explorer/engine/layers.js
4
- var h = (e) => e.match && e.match.type ? [].concat(e.match.type) : [], g = {
5
- flow: "#fb923c",
6
- runs: "#5eead4"
7
- }, _ = (e) => {
8
- let t = h(e)[0];
9
- return t && f[t] ? f[t].color : g[e.key];
10
- }, v = /* @__PURE__ */ new Set([
11
- "stack",
12
- "machine",
13
- "container",
14
- "device",
15
- "house",
16
- "persona"
17
- ]), y = t.map((e) => ({
18
- ...e,
19
- color: _(e)
20
- })), b = "cornfield:layers", x = /^[a-z][a-z0-9-]{0,40}$/, S = (e) => e.slot("layers", () => ({
21
- changes: {},
22
- storeKey: b
23
- }));
24
- function ee(e, t) {
25
- S(e).storeKey = t;
26
- }
27
- var C = "\\d{1,3}(?:\\.\\d+)?%?";
28
- RegExp(`^(?:#(?:[0-9a-f]{3,4}|[0-9a-f]{6}|[0-9a-f]{8})|rgba?\\(\\s*${C}(?:\\s*,\\s*|\\s+)${C}(?:\\s*,\\s*|\\s+)${C}(?:\\s*[,/]\\s*(?:\\d*\\.)?\\d+%?)?\\s*\\))$`, "i");
29
- function w(e) {
30
- let t = S(e).storeKey;
31
- if (!t) return {};
32
- try {
33
- let n = JSON.parse(e.store.get(t) || "{}");
34
- return !n || typeof n != "object" || Array.isArray(n) ? {} : Object.fromEntries(Object.entries(n).filter(([e, t]) => x.test(e) && typeof t == "boolean"));
35
- } catch {
36
- return {};
37
- }
38
- }
39
- function te(e, t) {
40
- let { state: n } = e, r = s(t);
41
- n.projectLayers = r.add, n.layerOrder = r.order;
42
- let i = {};
43
- for (let e of y) i[e.key] = !v.has(e.key);
44
- for (let e of r.add) i[e.key] = !0;
45
- for (let e of r.off) i[e] = !1;
46
- n.layerDefaults = i;
47
- let a = S(e);
48
- a.changes = w(e);
49
- for (let [e, t] of Object.entries(i)) n.activeLayers[e] = t;
50
- for (let [e, t] of Object.entries(a.changes)) n.activeLayers[e] = t;
51
- T(e);
52
- }
53
- function ne(e) {
54
- let { state: t } = e, n = /* @__PURE__ */ new Set(), r = [];
55
- t.nodes.forEach((e) => {
56
- if (typeof e.kind != "string" || !e.kind) return;
57
- let t = `${e.type}\u0000${e.kind}`;
58
- n.has(t) || (n.add(t), r.push([e.type, e.kind]));
59
- }), m(e).setSubjects({
60
- kinds: r,
61
- layers: t.projectLayers.map((e) => e.key)
62
- });
63
- }
64
- function re(e) {
65
- let t = e.slot("layers-draw", () => ({ drawing: !1 }));
66
- t.drawing = !0;
67
- try {
68
- ne(e);
69
- } finally {
70
- t.drawing = !1;
71
- }
72
- e.emit("layers:redraw");
73
- }
74
- function T(e) {
75
- e.touchScene(), e.emit("layers"), re(e), e.map && (e.map.render(), e.map.ensureFlowLoop());
76
- }
77
- // ../explorer/engine/connection.js
78
- function E(e, t, n) {
79
- return e.base && ie(e, t) ? {
80
- credentials: "include",
81
- ...n
82
- } : n;
83
- }
84
- function ie(e, t) {
85
- if (!e.base) return !1;
86
- try {
87
- return new URL(e.url(String(t)), e.base).origin === new URL(e.base).origin;
88
- } catch {
89
- return !1;
90
- }
91
- }
92
- // ../explorer/engine/source.js
93
- var D = "/cornfield/config.json", O = "/topology.json", ae = "/cornfield/theme.css", oe = "/auth/start";
94
- Object.freeze([
95
- "loading",
96
- "ready",
97
- "sign-in",
98
- "not-allowed",
99
- "offline",
100
- "server",
101
- "address",
102
- "version"
103
- ]);
104
- var se = /[\u0000- \u007f\\]/;
105
- function ce(e) {
106
- if (typeof e != "string" || !e.trim()) return {
107
- ok: !1,
108
- problem: "is empty"
109
- };
110
- let t = e.trim();
111
- if (se.test(t)) return {
112
- ok: !1,
113
- problem: "has a space, a control character or a backslash"
114
- };
115
- let n;
116
- try {
117
- n = new URL(t);
118
- } catch {
119
- return {
120
- ok: !1,
121
- problem: "is not an address (an http or https address, as the server is opened in a browser)"
122
- };
123
- }
124
- return n.protocol !== "https:" && n.protocol !== "http:" ? {
125
- ok: !1,
126
- problem: "is not http or https"
127
- } : /^https?:\/\/[^/?#]/i.test(t) ? n.username || n.password ? {
128
- ok: !1,
129
- problem: "has a user name or password"
130
- } : t.includes("?") || t.includes("#") ? {
131
- ok: !1,
132
- problem: "has a query or a fragment"
133
- } : {
134
- ok: !0,
135
- base: n.origin + n.pathname.replace(/\/+$/, ""),
136
- origin: n.origin
137
- } : {
138
- ok: !1,
139
- problem: "has no host"
140
- };
141
- }
142
- var k = (e) => {
143
- let t = /^\s*v?(\d{1,9})\.(\d{1,9})\.(\d{1,9})(?:[-+][0-9A-Za-z.-]{1,64})?\s*$/.exec(String(e ?? ""));
144
- return t ? [
145
- Number(t[1]),
146
- Number(t[2]),
147
- Number(t[3])
148
- ] : null;
149
- };
150
- function le(e, t) {
151
- let n = k(e), r = k(t);
152
- return !n || !r ? "unknown" : n[0] === r[0] ? n[1] === r[1] ? n[2] === r[2] ? "same" : "patch" : "minor" : "major";
153
- }
154
- function ue(e, t) {
155
- let n = "";
156
- if (typeof t == "string" && /^https?:\/\//i.test(t)) try {
157
- let e = new URL(t);
158
- e.username = "", e.password = "", n = `?returnTo=${encodeURIComponent(e.href)}`;
159
- } catch {
160
- n = "";
161
- }
162
- return `${e}${oe}${n}`;
163
- }
164
- var A = class extends Error {
165
- constructor(e, t, { status: n = 0, cause: r } = {}) {
166
- super(t), this.name = "SourceError", this.kind = e, this.status = n, r !== void 0 && (this.cause = r);
167
- }
168
- };
169
- function j(e, t, n, r) {
170
- let i = { ...E(e, t, n) };
171
- return r && (i.signal = r), Object.keys(i).length ? i : void 0;
172
- }
173
- async function M(e, t, n, r, i = t) {
174
- let a;
175
- try {
176
- let i = j(e, t, n, r);
177
- a = i ? await e.fetch(t, i) : await e.fetch(t);
178
- } catch (e) {
179
- throw new A("network", e && e.message ? e.message : String(e), { cause: e });
180
- }
181
- if (a.status === 401 || a.status === 403) throw new A("auth", `GET ${i} answered ${a.status} ${a.statusText}`.trim(), { status: a.status });
182
- if (!a.ok) throw new A("server", `GET ${i} answered ${a.status} ${a.statusText}`.trim(), { status: a.status });
183
- return a;
184
- }
185
- async function N(e, { signal: t } = {}) {
186
- let n = await M(e, D, { cache: "no-store" }, t), r;
187
- try {
188
- r = await n.json();
189
- } catch (e) {
190
- throw new A("server", `${D} is not JSON`, {
191
- status: n.status,
192
- cause: e
193
- });
194
- }
195
- if (!r || typeof r != "object" || Array.isArray(r)) throw new A("server", `${D} is not a config`, { status: n.status });
196
- return r;
197
- }
198
- async function P(e, t = O, { signal: n } = {}) {
199
- let r = await M(e, t + (t.includes("?") ? "&v=" : "?v=") + Date.now(), void 0, n, t), i;
200
- try {
201
- i = await r.json();
202
- } catch (e) {
203
- throw new A("server", `${t} is not JSON`, {
204
- status: r.status,
205
- cause: e
206
- });
207
- }
208
- if (!i || !Array.isArray(i.nodes) || i.nodes.length === 0) throw new A("server", `${t} has no nodes`, { status: r.status });
209
- return i;
210
- }
211
- function F(e, t) {
212
- t && typeof t == "object" && (n(e, t.strings), m(e).applyTheme(t.theme), te(e, t.layers));
213
- }
214
- function I(e, { version: t = "", pageUrl: r = () => "", onConfig: i = () => {} } = {}) {
215
- let a = !1, o = null, s = null, c = 0, l = {
216
- topology: null,
217
- config: null,
218
- strings: null
219
- }, u = {
220
- topology: null,
221
- config: null,
222
- state: () => o,
223
- notice: null,
224
- say(t) {
225
- a || (t.state === "version" ? u.notice = t : o = t, e.emit("source", t));
226
- },
227
- provide({ topology: e, config: t, strings: n } = {}) {
228
- a || (n !== void 0 && (l.strings = n, d(u.config)), t !== void 0 && (l.config = t, t ? f(t) : u.fetchedConfig && f(u.fetchedConfig)), e !== void 0 && (l.topology = e, u.topology = e || u.fetchedTopology || null, u.topology && u.say({ state: "ready" })));
229
- },
230
- fetchedConfig: null,
231
- fetchedTopology: null,
232
- async load() {
233
- if (a || !e.base) return;
234
- if (l.config && l.topology) {
235
- u.topology = l.topology, u.say({ state: "ready" });
236
- return;
237
- }
238
- s && s.abort(), s = new AbortController();
239
- let { signal: t } = s, n = ++c, r = () => !a && n === c && !t.aborted;
240
- u.say({ state: "loading" });
241
- try {
242
- if (!l.config) {
243
- let n = await N(e, { signal: t });
244
- if (!r()) return;
245
- u.fetchedConfig = n, f(n);
246
- }
247
- if (l.topology) u.topology = l.topology;
248
- else {
249
- let n = await P(e, O, { signal: t });
250
- if (!r()) return;
251
- u.fetchedTopology = n, u.topology = n;
252
- }
253
- u.say({ state: "ready" });
254
- } catch (e) {
255
- if (!r()) return;
256
- let n = await p(e, t);
257
- r() && u.say(n);
258
- }
259
- }
260
- };
261
- function d(t) {
262
- n(e, l.strings || t && t.strings);
263
- }
264
- function f(n) {
265
- u.config = n, F(e, n), l.strings && d(n);
266
- let r = le(t, n.version);
267
- t && (r === "minor" || r === "major") && u.say({
268
- state: "version",
269
- server: String(n.version).trim(),
270
- package: t,
271
- drift: r
272
- }), i(n);
273
- }
274
- async function p(t, n) {
275
- if (!(t instanceof A)) return {
276
- state: "server",
277
- status: 0,
278
- message: t && t.message ? t.message : String(t)
279
- };
280
- if (t.kind === "auth") return {
281
- state: "sign-in",
282
- status: t.status,
283
- signIn: ue(e.base, r())
284
- };
285
- if (t.kind === "server") return {
286
- state: "server",
287
- status: t.status,
288
- message: t.message
289
- };
290
- if (e.win && e.win.navigator && e.win.navigator.onLine === !1) return { state: "offline" };
291
- try {
292
- await e.fetch(ae, {
293
- method: "HEAD",
294
- mode: "no-cors",
295
- credentials: "omit",
296
- signal: n
297
- });
298
- } catch {
299
- return { state: "offline" };
300
- }
301
- return {
302
- state: "not-allowed",
303
- origin: L(r())
304
- };
305
- }
306
- return R(e).source = u, e.own(() => {
307
- a = !0, s && s.abort(), R(e).source = null;
308
- }), u;
309
- }
310
- function L(e) {
311
- try {
312
- return /^https?:/i.test(e) ? new URL(e).origin : "";
313
- } catch {
314
- return "";
315
- }
316
- }
317
- var R = (e) => e.slot("source", () => ({ source: null })), z = (e) => R(e).source, B = 524288, V = 4096, H = /^--corn-[a-z0-9]+(?:-[a-z0-9]+)*$/, U = /^[a-z0-9][a-z0-9-]{0,31}$/, de = "/cornfield/theme.css", fe = (e) => `/cornfield/theme/${e}.css`, pe = (e) => String(e).replace(/\s+/g, ""), me = (e) => {
318
- let t = /^:where\((.*)\)$/.exec(e);
319
- return t ? t[1] : e;
320
- };
321
- function he(e) {
322
- let t = [], n = 0, r = 0, i = String(e);
323
- for (let e = 0; e <= i.length; e++) {
324
- let a = i[e];
325
- a === "(" || a === "[" ? n++ : a === ")" || a === "]" ? n-- : (a === "," && !n || e === i.length) && (t.push(me(pe(i.slice(r, e)))), r = e + 1);
326
- }
327
- return t.filter(Boolean);
328
- }
329
- function ge(e, t, n = null) {
330
- let r = e.startsWith(":root") ? ":root" : e.startsWith("html") ? "html" : null;
331
- if (!r) return null;
332
- let i = e.slice(r.length), a = n ? `[data-theme-name="${n}"]` : null;
333
- if (a) {
334
- if (i.includes(a)) i = i.replace(a, "");
335
- else return null;
336
- } else if (/\[data-theme-name=/.test(i)) return null;
337
- return i === "" ? t || "base" : i === "[data-theme=\"light\"]" ? "light" : i === "[data-theme=\"dark\"]" ? "dark" : i === ":not([data-theme=\"dark\"])" && t === "light" ? "light" : i === ":not([data-theme=\"light\"])" && t === "dark" ? "dark" : null;
338
- }
339
- var _e = /^data:image\/(?:png|gif|webp|avif|svg\+xml)[;,]/i, W = /(?<![\w-])(?:url|src|image|(?:-webkit-)?image-set)\(/i, ve = /(?<![\w-])(url|src)\(\s*(?:"([^"]*)"|'([^']*)'|([^)\s"']*))\s*\)/gi, G = /"([^"]*)"|'([^']*)'/g;
340
- function K(e) {
341
- return String(e).replace(/\\([0-9a-f]{1,6})\s?|\\([^\n])/gi, (e, t, n) => {
342
- if (t) {
343
- let e = parseInt(t, 16);
344
- return e > 0 && e <= 1114111 ? String.fromCodePoint(e) : "�";
345
- }
346
- return n;
347
- });
348
- }
349
- function q(e, t) {
350
- if (_e.test(e)) return e;
351
- try {
352
- let n = new URL(t), r = e.startsWith("/") && !e.startsWith("//") ? new URL(n.pathname.replace(/\/+$/, "") + e, n) : new URL(e, `${t}/`);
353
- return r.protocol !== "https:" && r.protocol !== "http:" || r.origin !== n.origin ? null : r.href;
354
- } catch {
355
- return null;
356
- }
357
- }
358
- function J(e, t) {
359
- let n = String(e), r = K(n);
360
- if (!W.test(r)) return n;
361
- if (r !== n && W.test(r.replace(G, "\"\"")) || !t) return null;
362
- let i = !0, a = n.replace(ve, (e, n, r, a, o) => {
363
- let s = q(r ?? a ?? o ?? "", t);
364
- return s === null ? (i = !1, "") : `${n.toLowerCase()}("${s.replace(/["\\\n]/g, (e) => encodeURIComponent(e))}")`;
365
- }), o = (a.replace(/(?<![\w-])(?:url|src)\("[^"]*"\)/gi, "").match(new RegExp(W.source, "gi")) || []).filter((e) => !/image-set\($/i.test(e));
366
- return !i || o.length || /(?:-webkit-)?image-set\(/i.test(a) && (a = a.replace(/((?:-webkit-)?image-set\()([^]*)$/i, (e, n, r) => n + r.replace(G, (e, n, r) => {
367
- let a = q(n ?? r ?? "", t);
368
- return a === null ? (i = !1, "\"\"") : `"${a.replace(/["\\\n]/g, (e) => encodeURIComponent(e))}"`;
369
- })), !i) ? null : a;
370
- }
371
- function ye(e, t) {
372
- let n = J(e, t);
373
- return n !== null && n === e;
374
- }
375
- function Y(e, { name: t = null, base: n = "" } = {}) {
376
- let r = {
377
- base: /* @__PURE__ */ new Map(),
378
- light: /* @__PURE__ */ new Map(),
379
- dark: /* @__PURE__ */ new Map()
380
- }, i = (e, i) => {
381
- let a = he(e.selectorText).map((e) => ge(e, i, t)).find(Boolean);
382
- if (!a) return;
383
- let o = e.style;
384
- for (let e = 0; e < o.length; e++) {
385
- let t = o[e];
386
- if (!H.test(t)) continue;
387
- let i = o.getPropertyValue(t).trim();
388
- !i || i.length > V || (n || W.test(K(i))) && (i = n ? J(i, n) : null, i === null) || r[a].set(t, i);
389
- }
390
- };
391
- for (let t of Array.from(e.cssRules || [])) if (t.selectorText !== void 0) i(t, null);
392
- else if (t.media && t.cssRules) {
393
- let e = /^\(\s*prefers-color-scheme\s*:\s*(light|dark)\s*\)$/.exec(t.media.mediaText.trim());
394
- if (e) for (let n of Array.from(t.cssRules)) n.selectorText !== void 0 && i(n, e[1]);
395
- }
396
- return r;
397
- }
398
- function be(e, t) {
399
- let n = /* @__PURE__ */ new Map();
400
- for (let r of e) {
401
- for (let [e, t] of r.base) n.set(e, t);
402
- for (let [e, i] of r[t]) n.set(e, i);
403
- }
404
- return n;
405
- }
406
- function xe(e) {
407
- let t = {
408
- base: /* @__PURE__ */ new Map(),
409
- light: /* @__PURE__ */ new Map(),
410
- dark: /* @__PURE__ */ new Map()
411
- };
412
- for (let n of Object.keys(t)) for (let [r, i] of e[n]) /var\(/.test(i) && t[n].set(r, i);
413
- return t;
414
- }
415
- async function Se(e, t, n = "the answer") {
416
- let r = () => /* @__PURE__ */ Error(`${n} is larger than ${t} characters`), i = Number(e.headers && e.headers.get ? e.headers.get("content-length") : NaN);
417
- if (Number.isFinite(i) && i > t * 4) throw r();
418
- if (!e.body || typeof e.body.getReader != "function") {
419
- let n = await e.text();
420
- if (n.length > t) throw r();
421
- return n;
422
- }
423
- let a = e.body.getReader(), o = new TextDecoder(), s = "";
424
- for (;;) {
425
- let { done: e, value: n } = await a.read();
426
- if (e) break;
427
- if (s += o.decode(n, { stream: !0 }), s.length > t) throw a.cancel().catch(() => {}), r();
428
- }
429
- if (s += o.decode(), s.length > t) throw r();
430
- return s;
431
- }
432
- function Ce(e, { defaults: t = "" } = {}) {
433
- let n = e.win, r = !1, i = null, a = null, o = /* @__PURE__ */ new Set(), s = null, c = [], l = [], u = null, d = "dark", f = "none", p = () => {
434
- !a && n && typeof n.CSSStyleSheet == "function" && "replaceSync" in n.CSSStyleSheet.prototype && (a = new n.CSSStyleSheet());
435
- }, m = () => {
436
- if (u || !t) return u;
437
- try {
438
- let e = new n.CSSStyleSheet();
439
- e.replaceSync(t), u = xe(Y(e));
440
- } catch {
441
- u = null;
442
- }
443
- return u;
444
- }, h = () => {
445
- if (!s) return;
446
- for (let e of c) s.style.removeProperty(e);
447
- if (c = [], !l.length) return;
448
- let e = [], t = m();
449
- t && e.push(t), e.push(...l);
450
- let n = be(e, d);
451
- for (let [e, t] of n) s.style.setProperty(e, t), c.push(e);
452
- }, g = (t, n = {}) => {
453
- f = t, e.emit("theme", {
454
- state: t,
455
- ...n
456
- });
457
- }, _ = async (t, n) => {
458
- let r = await e.fetch(t, {
459
- credentials: "omit",
460
- signal: n
461
- });
462
- if (!r.ok) throw Error(`GET ${t} answered ${r.status}`);
463
- return Se(r, B, t);
464
- }, v = {
465
- state: () => f,
466
- sheet: () => a,
467
- async load(t) {
468
- if (r || !e.base) return;
469
- i && i.abort(), i = new AbortController();
470
- let { signal: o } = i;
471
- g("loading");
472
- try {
473
- let i = t && t.theme && typeof t.theme.default == "string" && U.test(t.theme.default) ? t.theme.default : null, [s, c] = await Promise.all([_(de, o).catch((e) => {
474
- if (o.aborted) throw e;
475
- return null;
476
- }), i ? _(fe(i), o).catch((e) => {
477
- if (o.aborted) throw e;
478
- return null;
479
- }) : Promise.resolve(null)]);
480
- if (r || o.aborted) return;
481
- if (s === null && c === null) {
482
- g("failed");
483
- return;
484
- }
485
- if (p(), !a) {
486
- g("failed", { reason: "constructable stylesheets are not available" });
487
- return;
488
- }
489
- a.replaceSync([s, c].filter((e) => e !== null).join("\n")), X(a, e.base), l = [];
490
- let u = (t, r) => {
491
- let i = new n.CSSStyleSheet();
492
- return i.replaceSync(t), Y(i, {
493
- name: r,
494
- base: e.base
495
- });
496
- };
497
- s !== null && l.push(u(s, null)), c !== null && l.push(u(c, i)), h(), g("ready");
498
- } catch (e) {
499
- if (r || o.aborted) return;
500
- g("failed", { reason: e && e.message ? e.message : String(e) });
501
- }
502
- },
503
- adopt(t) {
504
- if (!t || !("adoptedStyleSheets" in t)) return () => {};
505
- o.add(t);
506
- let n = () => {
507
- a && !t.adoptedStyleSheets.includes(a) && (t.adoptedStyleSheets = [...t.adoptedStyleSheets, a]);
508
- };
509
- n();
510
- let r = e.on("theme", n);
511
- return () => {
512
- r(), o.delete(t), a && t.adoptedStyleSheets.includes(a) && (t.adoptedStyleSheets = t.adoptedStyleSheets.filter((e) => e !== a));
513
- };
514
- },
515
- tokensOn(e) {
516
- v.release(), s = e, h();
517
- },
518
- setMode(e) {
519
- let t = e === "light" ? "light" : "dark";
520
- t !== d && (d = t, h());
521
- },
522
- release() {
523
- if (s) for (let e of c) s.style.removeProperty(e);
524
- c = [], s = null;
525
- },
526
- unload() {
527
- i && i.abort();
528
- for (let e of o) a && e.adoptedStyleSheets.includes(a) && (e.adoptedStyleSheets = e.adoptedStyleSheets.filter((e) => e !== a));
529
- a && a.replaceSync(""), a = null, l = [], h(), g("none");
530
- },
531
- destroy() {
532
- r = !0, i && i.abort(), v.release();
533
- for (let e of [...o]) a && e.adoptedStyleSheets.includes(a) && (e.adoptedStyleSheets = e.adoptedStyleSheets.filter((e) => e !== a));
534
- o.clear(), a = null, l = [];
535
- }
536
- };
537
- return v;
538
- }
539
- function X(e, t) {
540
- let n = (e) => {
541
- let r = e.cssRules;
542
- for (let i = r.length - 1; i >= 0; i--) {
543
- let a = r[i];
544
- if (a.cssRules && n(a), a.style) {
545
- let e = a.style;
546
- for (let n of Array.from({ length: e.length }, (t, n) => e[n])) {
547
- let r = e.getPropertyValue(n);
548
- if (!W.test(K(r))) continue;
549
- let i = J(r, t);
550
- i === null ? e.removeProperty(n) : i !== r && e.setProperty(n, i, e.getPropertyPriority(n));
551
- }
552
- }
553
- let o = a.cssText;
554
- o && W.test(K(o)) && !ye(o, t) && (typeof a.keyText == "string" && typeof e.deleteRule == "function" && e.findRule ? e.deleteRule(a.keyText) : e.deleteRule(i));
555
- }
556
- };
557
- n(e);
558
- }
559
- // ../explorer/pieces/status.js
560
- var we = Object.freeze({
561
- loading: "running",
562
- "sign-in": "waiting",
563
- "not-allowed": "failure",
564
- offline: "stopped",
565
- server: "failure",
566
- address: "failure",
567
- "second-map": "failure"
568
- });
569
- function Z(e, t) {
570
- switch (t.state) {
571
- case "loading": return {
572
- title: r(e, "sourceLoading"),
573
- text: ""
574
- };
575
- case "sign-in": return t.status === 403 ? {
576
- title: r(e, "sourceNotMaintainer"),
577
- text: r(e, "sourceNotMaintainerText"),
578
- link: t.signIn
579
- } : {
580
- title: r(e, "sourceSignedOut"),
581
- text: r(e, "sourceSignInText"),
582
- link: t.signIn
583
- };
584
- case "not-allowed": return {
585
- title: r(e, "sourceNotListed"),
586
- text: r(e, "sourceNotListedHint"),
587
- origin: t.origin,
588
- retry: !0
589
- };
590
- case "offline": return {
591
- title: r(e, "sourceOffline"),
592
- text: r(e, "sourceOfflineText"),
593
- retry: !0
594
- };
595
- case "server": return {
596
- title: r(e, "errorTitle"),
597
- text: t.message || "",
598
- retry: !0
599
- };
600
- case "address": return {
601
- title: r(e, "sourceBadAddress"),
602
- text: t.problem || ""
603
- };
604
- case "second-map": return {
605
- title: r(e, "sourceSecondMap"),
606
- text: ""
607
- };
608
- default: return null;
609
- }
610
- }
611
- var Te = (e) => typeof e == "string" && /^https?:\/\/[^\s\\]+$/i.test(e) ? e : "";
612
- function Ee(e, t) {
613
- let n = Z(e, t);
614
- if (!n) return "";
615
- let i = n.link ? Te(n.link) : "", a = [`<p data-corn="source-title">${c(n.title)}</p>`];
616
- return n.text && a.push(`<p data-corn="source-text">${c(n.text)}</p>`), n.origin && a.push(`<p data-corn="source-text"><code data-corn="source-origin">${c(n.origin)}</code></p>`), i && a.push(`<a data-corn="source-sign-in" data-corn-kind="primary" href="${c(i)}" target="_top" rel="noopener">${c(r(e, "sourceSignIn"))}</a>`), n.retry && a.push(`<button type="button" data-corn="source-retry" data-corn-kind="secondary">${c(r(e, "retry"))}</button>`), a.join("");
617
- }
618
- function De(e, t) {
619
- let n = Z(e, t);
620
- return n ? [
621
- n.title,
622
- n.text,
623
- n.origin
624
- ].filter(Boolean).join(". ") : "";
625
- }
626
- function Oe(e, t, { onRetry: n = () => {}, focusMap: i = () => {}, follow: a = !0 } = {}) {
627
- let o = t.doc, s = () => {
628
- let t = e.getRootNode();
629
- return t && t.activeElement || null;
630
- }, c = (e) => {
631
- let t = o.createElement("template");
632
- return t.innerHTML = p(e), t.content.firstElementChild;
633
- }, l = c("<div data-corn=\"source-status\" hidden></div>"), u = c("<p data-corn=\"source-notice\" hidden></p>"), d = c("<p data-corn=\"source-announcer\" class=\"hx-sr-only\" role=\"status\" aria-live=\"polite\" aria-atomic=\"true\"></p>");
634
- e.append(l, u, d);
635
- let f = null, m = !1, h = (e) => {
636
- if (m || !e) return;
637
- let n = Z(t, e), r = l.contains(s());
638
- if (!n) {
639
- l.hidden = !0, l.textContent = "", f = e.state, r && i();
640
- return;
641
- }
642
- l.innerHTML = p(Ee(t, e)), l.setAttribute("data-corn-state", we[e.state]), l.hidden = !1;
643
- let a = f !== e.state || e.state === "server";
644
- f = e.state, a && (d.textContent = De(t, e)), r && (l.setAttribute("tabindex", "-1"), l.focus());
645
- }, g = (e) => {
646
- m || (e ? (u.textContent = `${r(t, "sourceVersion")} (${e.package} / ${e.server})`, u.hidden = !1, d.textContent = `${d.textContent ? `${d.textContent}. ` : ""}${u.textContent}`) : (u.hidden = !0, u.textContent = ""));
647
- }, _ = t.listen(l, "click", (e) => {
648
- let t = e.target && e.target.closest ? e.target.closest("[data-corn=\"source-retry\"]") : null;
649
- t && l.contains(t) && (e.preventDefault(), n());
650
- }), v = a ? t.on("source", (e) => {
651
- e.state === "version" ? g(e) : h(e);
652
- }) : () => {}, y = a ? z(t) : null;
653
- if (y) {
654
- let e = y.state();
655
- e && e.state !== "ready" && h(e), y.notice && g(y.notice);
656
- }
657
- return {
658
- refuse(e = "second-map") {
659
- h({ state: e });
660
- },
661
- destroy() {
662
- m || (m = !0, v(), _(), l.remove(), u.remove(), d.remove());
663
- }
664
- };
665
- }
666
- // ../explorer/pieces/scope.js
667
- var ke = /* @__PURE__ */ e({ mountScope: () => $ }), Q = [
668
- "light",
669
- "dark",
670
- "auto"
671
- ];
672
- function $(e, t = {}) {
673
- let n = {
674
- src: t.src,
675
- theme: t.theme,
676
- useTheme: !!t.useTheme,
677
- topology: t.topology,
678
- config: t.config,
679
- strings: t.strings
680
- }, r = t.pageUrl || (() => ""), s = /* @__PURE__ */ new Set(), c = null, f = null, p = null, m = !1, h = !1, g = (e) => {
681
- if (h || !c || !e.detail || typeof e.detail.claim != "function") return;
682
- e.stopPropagation();
683
- let t = {
684
- el: e.detail.el,
685
- inst: c,
686
- scope: w,
687
- release: () => s.delete(t)
688
- };
689
- s.add(t), e.detail.claim(t);
690
- };
691
- e.addEventListener(l, g);
692
- function _() {
693
- let t = new Set(Ae(e));
694
- for (let e of [...s]) s.delete(e), e.el && t.add(e.el);
695
- for (let e of t) e.isConnected !== !1 && e.dispatchEvent(new Event(o));
696
- }
697
- function v() {
698
- let e = Q.includes(n.theme) ? n.theme : "auto";
699
- if (e === "light" || e === "dark") return e;
700
- let t = c.doc && c.doc.documentElement, r = t ? t.getAttribute("data-theme") : null;
701
- if (r === "light" || r === "dark") return r;
702
- let i = c.win && c.win.matchMedia ? c.win.matchMedia("(prefers-color-scheme: light)") : null;
703
- return u("system", !!(i && i.matches));
704
- }
705
- function y() {
706
- p && p.setMode(v()), c && c.emit("scope:theme");
707
- }
708
- function b() {
709
- let s = n.src === void 0 || n.src === null || n.src === "" ? null : ce(n.src);
710
- c = a({
711
- root: e,
712
- base: s && s.ok ? s.base : ""
713
- }), ee(c, null);
714
- let l = i(c);
715
- l.host = e, l.theme = Q.includes(n.theme) ? n.theme : "auto";
716
- let u = Ce(c, { defaults: t.tokens || "" });
717
- p = u, l.serverTheme = u, u.tokensOn(e), c.own(() => u.destroy()), f = I(c, {
718
- version: t.version || "",
719
- pageUrl: r,
720
- onConfig: (e) => {
721
- n.useTheme && u.load(e);
722
- }
723
- }), l.source = f, l.mountStatus = Oe, m = !1, c.on("source", x), c.on("theme", S);
724
- let d = [];
725
- c.on("piece:refused", (e) => {
726
- e.host && !d.includes(e.host) && d.push(e.host), t.onError && t.onError({
727
- kind: e.reason,
728
- message: e.message
729
- });
730
- });
731
- let g = c;
732
- c.on("attach:released", () => {
733
- Promise.resolve().then(() => {
734
- if (!(h || c !== g)) for (; d.length;) {
735
- let e = d.shift();
736
- if (e.isConnected) {
737
- e.dispatchEvent(new Event(o));
738
- return;
739
- }
740
- }
741
- });
742
- });
743
- let _ = c.win && c.win.MutationObserver && c.doc && c.doc.documentElement ? new c.win.MutationObserver(y) : null;
744
- _ && (_.observe(c.doc.documentElement, {
745
- attributes: !0,
746
- attributeFilter: ["data-theme"]
747
- }), c.own(() => _.disconnect()));
748
- let b = c.win && c.win.matchMedia ? c.win.matchMedia("(prefers-color-scheme: light)") : null;
749
- b && b.addEventListener && (b.addEventListener("change", y), c.own(() => b.removeEventListener("change", y))), p.setMode(v()), s && !s.ok && f.say({
750
- state: "address",
751
- problem: s.problem
752
- }), f.provide({
753
- topology: n.topology || void 0,
754
- config: n.config || void 0,
755
- strings: n.strings || void 0
756
- }), s && s.ok && f.load();
757
- }
758
- function x(e) {
759
- if (!h) switch (e.state) {
760
- case "ready":
761
- m || (m = !0, t.onReady && t.onReady());
762
- break;
763
- case "sign-in":
764
- t.onAuth && t.onAuth({
765
- status: e.status,
766
- signIn: e.signIn
767
- });
768
- break;
769
- case "not-allowed":
770
- t.onError && t.onError({
771
- kind: "not-listed",
772
- message: e.origin
773
- });
774
- break;
775
- case "offline":
776
- t.onError && t.onError({ kind: "offline" });
777
- break;
778
- case "server":
779
- t.onError && t.onError({
780
- kind: "server",
781
- message: e.message
782
- });
783
- break;
784
- case "address":
785
- t.onError && t.onError({
786
- kind: "address",
787
- message: e.problem
788
- });
789
- break;
790
- case "version": t.onError && t.onError({
791
- kind: "version",
792
- message: `${e.package} / ${e.server}`
793
- });
794
- }
795
- }
796
- function S(e) {
797
- !h && e.state === "failed" && t.onError && t.onError({
798
- kind: "theme",
799
- message: e.reason
800
- });
801
- }
802
- function C() {
803
- _(), c && c.destroy(), c = null, f = null, p = null;
804
- }
805
- let w = {
806
- update(e = {}) {
807
- if (h) return;
808
- let t = !1;
809
- if ("src" in e && e.src !== n.src && (n.src = e.src, t = !0), "theme" in e && e.theme !== n.theme && (n.theme = e.theme, i(c).theme = Q.includes(n.theme) ? n.theme : "auto", y()), "useTheme" in e && !!e.useTheme !== n.useTheme && (n.useTheme = !!e.useTheme, n.useTheme ? f.config && p.load(f.config) : p.unload()), t) {
810
- let e = c;
811
- p.destroy(), b(), _(), e.destroy();
812
- return;
813
- }
814
- let r = {};
815
- for (let t of [
816
- "topology",
817
- "config",
818
- "strings"
819
- ]) t in e && e[t] !== n[t] && (n[t] = e[t], r[t] = e[t] === void 0 ? null : e[t]);
820
- Object.keys(r).length && f.provide(r);
821
- },
822
- destroy() {
823
- h || (e.removeEventListener(l, g), C(), h = !0, s.clear());
824
- },
825
- get instance() {
826
- return c;
827
- },
828
- get source() {
829
- return f;
830
- }
831
- };
832
- return t.tokens && d(e.getRootNode(), t.tokens), b(), _(), w;
833
- }
834
- function Ae(e) {
835
- let t = [], n = (e) => {
836
- for (let r of e.children || []) {
837
- let e = r.localName || "";
838
- if (e.startsWith("corn-")) {
839
- if (e === "corn-scope") continue;
840
- t.push(r);
841
- }
842
- r.shadowRoot && n(r.shadowRoot), n(r);
843
- }
844
- };
845
- return n(e), t;
846
- }
847
- export { ke as n, $ as t };