@pygmalionjs/pygmalion 0.2.34 → 0.2.36

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,26 +1,26 @@
1
- import { jsxs as $, jsx as v } from "react/jsx-runtime";
2
- import { b as ee, m as Le, i as Xe, g as Ye, e as J, c as Ze, a as et, d as tt, f as nt, h as rt, j as ot, k as st, l as it, n as at, o as ge, p as Re, q as Ne, r as ct, t as lt, u as dt, v as ut, w as ft, x as ht, y as Ae, z as ye, A as ae, B as ce, C as $e, S as mt, D as pt, E as Oe, G as gt, H as Me, I as yt, J as wt, K as bt, L as vt, M as St, O as ke } from "./App-DVnjCYV2.js";
3
- import { P as In, Q as xn, R as Pn, T as En, U as Cn, V as Rn, W as Nn, X as An, Y as $n, Z as On, _ as Mn, $ as kn, a0 as Fn, a1 as Tn, a2 as Dn, a3 as zn, a4 as jn, a5 as _n, a6 as Bn, a7 as Un, a8 as Hn, a9 as qn, aa as Kn, ab as Gn, ac as Jn, ad as Vn, ae as Wn, af as Qn, ag as Ln, ah as Xn, ai as Yn } from "./App-DVnjCYV2.js";
4
- import { createElement as Fe, useMemo as de, useState as re, useRef as ve, useCallback as Z, useEffect as oe } from "react";
5
- function Se(e, t = /* @__PURE__ */ new Set()) {
1
+ import { jsxs as A, jsx as b } from "react/jsx-runtime";
2
+ import { b as ne, m as Ze, i as et, g as tt, e as W, c as nt, a as rt, d as ot, f as st, h as it, j as at, k as ct, l as Se, n as lt, o as dt, p as ut, q as ft, r as mt, t as pt, u as Me, v as gt, w as ht, x as yt, y as Oe, z as be, A as de, B as ue, C as $e, S as wt, D as St, E as De, G as bt, H as ke, I as vt, J as It, K as xt, L as Pt, M as Et, O as Ct, P as Fe } from "./App-BE2sN74X.js";
3
+ import { Q as Rn, R as An, T as Mn, U as On, V as $n, W as Dn, X as kn, Y as Fn, Z as Tn, _ as zn, $ as _n, a0 as jn, a1 as Bn, a2 as Un, a3 as Hn, a4 as qn, a5 as Gn, a6 as Kn, a7 as Vn, a8 as Jn, a9 as Wn, aa as Ln, ab as Qn, ac as Xn, ad as Yn, ae as Zn, af as er, ag as tr, ah as nr, ai as rr, aj as or, ak as sr, al as ir, am as ar, an as cr, ao as lr, ap as dr, aq as ur, ar as fr, as as mr, at as pr, au as gr, av as hr } from "./App-BE2sN74X.js";
4
+ import { createElement as Te, useMemo as ae, useState as se, useRef as xe, useCallback as te, useEffect as ie, useLayoutEffect as ze } from "react";
5
+ function Pe(e, t = /* @__PURE__ */ new Set()) {
6
6
  if (e == null || typeof e == "string" || typeof e == "boolean" || typeof e == "number" && Number.isFinite(e))
7
7
  return e;
8
8
  if (Array.isArray(e))
9
- return e.map((n) => Se(n, t));
9
+ return e.map((r) => Pe(r, t));
10
10
  if (typeof e != "object") return null;
11
11
  if (t.has(e))
12
12
  throw new Error("A storyboard recipe cannot contain circular references.");
13
13
  t.add(e);
14
- const s = {};
15
- for (const n of Object.keys(e).sort()) {
16
- const r = e[n];
17
- r !== void 0 && (s[n] = Se(r, t));
14
+ const o = {};
15
+ for (const r of Object.keys(e).sort()) {
16
+ const n = e[r];
17
+ n !== void 0 && (o[r] = Pe(n, t));
18
18
  }
19
- return t.delete(e), s;
19
+ return t.delete(e), o;
20
20
  }
21
- function It(e) {
21
+ function Nt(e) {
22
22
  return JSON.stringify(
23
- Se({
23
+ Pe({
24
24
  version: 1,
25
25
  route: e.route ?? null,
26
26
  componentName: e.componentName ?? null,
@@ -39,34 +39,34 @@ function It(e) {
39
39
  })
40
40
  );
41
41
  }
42
- function B(e) {
43
- return [...new Set([...e].map((t) => t == null ? void 0 : t.trim()).filter(Boolean))].sort((t, s) => t.localeCompare(s));
42
+ function T(e) {
43
+ return [...new Set([...e].map((t) => t == null ? void 0 : t.trim()).filter(Boolean))].sort((t, o) => t.localeCompare(o));
44
44
  }
45
- function xt(e, t) {
46
- var n;
47
- return ((n = e.id) == null ? void 0 : n.trim()) || `edge:${t + 1}`;
45
+ function Rt(e, t) {
46
+ var r;
47
+ return ((r = e.id) == null ? void 0 : r.trim()) || `edge:${t + 1}`;
48
48
  }
49
- function Pt(e) {
50
- const t = [...e.screens].sort((n, r) => n.id.localeCompare(r.id)), s = t[0].id;
49
+ function At(e) {
50
+ const t = [...e.screens].sort((r, n) => r.id.localeCompare(n.id)), o = t[0].id;
51
51
  return {
52
- id: `story:${s}`,
53
- canonicalScreenId: s,
54
- screenIds: t.map((n) => n.id),
55
- names: B(t.map((n) => n.name)),
52
+ id: `story:${o}`,
53
+ canonicalScreenId: o,
54
+ screenIds: t.map((r) => r.id),
55
+ names: T(t.map((r) => r.name)),
56
56
  recipeKey: e.recipeKey,
57
- routes: B(t.map((n) => n.route)),
58
- scenarioIds: B(
59
- t.flatMap((n) => [
60
- n.scenarioId,
61
- ...n.scenarioIds ?? []
57
+ routes: T(t.map((r) => r.route)),
58
+ scenarioIds: T(
59
+ t.flatMap((r) => [
60
+ r.scenarioId,
61
+ ...r.scenarioIds ?? []
62
62
  ])
63
63
  ),
64
- sourceKeys: B(t.map((n) => n.sourcePath)),
65
- flows: B(t.map((n) => n.flow)),
66
- states: B(t.map((n) => n.state))
64
+ sourceKeys: T(t.map((r) => r.sourcePath)),
65
+ flows: T(t.map((r) => r.flow)),
66
+ states: T(t.map((r) => r.state))
67
67
  };
68
68
  }
69
- function Te(e) {
69
+ function _e(e) {
70
70
  return [
71
71
  e.code,
72
72
  e.edgeId,
@@ -75,210 +75,229 @@ function Te(e) {
75
75
  e.scenarioId
76
76
  ].join(":");
77
77
  }
78
- function Et(e) {
79
- var x, q;
80
- const t = [], s = [], n = /* @__PURE__ */ new Map();
78
+ function Mt(e) {
79
+ var _, J;
80
+ const t = [], o = [], r = /* @__PURE__ */ new Map();
81
81
  for (const i of e.screens) {
82
- const d = i.id.trim();
83
- if (!d || n.has(d)) {
82
+ const a = i.id.trim();
83
+ if (!a || r.has(a)) {
84
84
  t.push({
85
85
  code: "duplicate-screen-id",
86
86
  severity: "error",
87
- message: d ? `Multiple storyboard screens use the id "${d}".` : "A storyboard screen has an empty id.",
88
- screenId: d || void 0
87
+ message: a ? `Multiple storyboard screens use the id "${a}".` : "A storyboard screen has an empty id.",
88
+ screenId: a || void 0
89
89
  });
90
90
  continue;
91
91
  }
92
- const l = d === i.id ? i : { ...i, id: d };
93
- n.set(d, l), s.push(l);
92
+ const l = a === i.id ? i : { ...i, id: a };
93
+ r.set(a, l), o.push(l);
94
94
  }
95
- const r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Set();
96
- for (const i of s) {
97
- let d;
95
+ const n = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Set();
96
+ for (const i of o) {
97
+ let a;
98
98
  try {
99
- if (d = (e.recipeKey ?? It)(i), !d.trim()) throw new Error("Recipe keys cannot be empty.");
100
- } catch (f) {
101
- o.add(i.id), t.push({
99
+ if (a = (e.recipeKey ?? Nt)(i), !a.trim()) throw new Error("Recipe keys cannot be empty.");
100
+ } catch (p) {
101
+ s.add(i.id), t.push({
102
102
  code: "invalid-recipe",
103
103
  severity: "error",
104
- message: f instanceof Error ? f.message : "Storyboard recipe identity could not be created.",
104
+ message: p instanceof Error ? p.message : "Storyboard recipe identity could not be created.",
105
105
  screenId: i.id
106
- }), d = `invalid:${i.id}`;
106
+ }), a = `invalid:${i.id}`;
107
107
  }
108
- const l = r.get(d);
109
- l ? l.screens.push(i) : r.set(d, { recipeKey: d, screens: [i] });
108
+ const l = n.get(a);
109
+ l ? l.screens.push(i) : n.set(a, { recipeKey: a, screens: [i] });
110
110
  }
111
- const a = [...r.values()].map(Pt).sort((i, d) => i.id.localeCompare(d.id)), c = {};
112
- for (const i of a)
113
- for (const d of i.screenIds) c[d] = i.id;
114
- const u = new Map(a.map((i) => [i.id, i])), g = /* @__PURE__ */ new Map();
111
+ const c = [...n.values()].map(At).sort((i, a) => i.id.localeCompare(a.id)), d = {};
112
+ for (const i of c)
113
+ for (const a of i.screenIds) d[a] = i.id;
114
+ const u = new Map(c.map((i) => [i.id, i])), g = (i, a) => T([
115
+ a,
116
+ ...(i ?? []).flatMap((l) => {
117
+ const p = l.trim(), I = d[p] ?? (u.has(p) ? p : null);
118
+ return I ? [I] : [];
119
+ })
120
+ ]), m = /* @__PURE__ */ new Map();
115
121
  for (const i of e.assets ?? []) {
116
- const d = g.get(i.pageId);
117
- d ? d.push(i) : g.set(i.pageId, [i]);
122
+ const a = m.get(i.pageId);
123
+ a ? a.push(i) : m.set(i.pageId, [i]);
118
124
  }
119
- const h = a.map((i) => {
120
- const d = i.screenIds.flatMap(
121
- (l) => g.get(l) ?? []
125
+ const y = c.map((i) => {
126
+ const a = i.screenIds.flatMap(
127
+ (l) => m.get(l) ?? []
122
128
  );
123
129
  return {
124
130
  ...i,
125
- scenarioIds: B([
131
+ scenarioIds: T([
126
132
  ...i.scenarioIds,
127
- ...d.map((l) => l.scenarioId)
133
+ ...a.map((l) => l.scenarioId)
128
134
  ]),
129
- sourceKeys: B([
135
+ sourceKeys: T([
130
136
  ...i.sourceKeys,
131
- ...d.map((l) => l.sourcePath)
137
+ ...a.map((l) => l.sourcePath)
132
138
  ])
133
139
  };
134
- }), w = /* @__PURE__ */ new Map();
135
- for (const i of h)
136
- for (const d of i.routes) {
137
- const l = w.get(d);
138
- l ? l.push(i.id) : w.set(d, [i.id]);
140
+ }), h = /* @__PURE__ */ new Map();
141
+ for (const i of y)
142
+ for (const a of i.routes) {
143
+ const l = h.get(a);
144
+ l ? l.push(i.id) : h.set(a, [i.id]);
139
145
  }
140
- const y = (i, d, l) => {
141
- const f = i.trim(), E = c[f] ?? (u.has(f) ? f : null);
142
- if (E) return E;
143
- const C = B(w.get(f) ?? []);
144
- return C.length === 1 ? C[0] : C.length > 1 ? (t.push({
146
+ const x = (i, a, l) => {
147
+ const p = i.trim(), I = d[p] ?? (u.has(p) ? p : null);
148
+ if (I) return I;
149
+ const N = T(h.get(p) ?? []);
150
+ return N.length === 1 ? N[0] : N.length > 1 ? (t.push({
145
151
  code: l === "source" ? "ambiguous-edge-source" : "ambiguous-edge-target",
146
152
  severity: "error",
147
- message: `Storyboard edge "${d}" references an ambiguous ${l} route.`,
148
- edgeId: d,
149
- screenId: f || void 0
153
+ message: `Storyboard edge "${a}" references an ambiguous ${l} route.`,
154
+ edgeId: a,
155
+ screenId: p || void 0
150
156
  }), null) : (t.push({
151
157
  code: l === "source" ? "unknown-edge-source" : "unknown-edge-target",
152
158
  severity: "error",
153
- message: `Storyboard edge "${d}" references an unknown ${l}.`,
154
- edgeId: d,
155
- screenId: f || void 0
159
+ message: `Storyboard edge "${a}" references an unknown ${l}.`,
160
+ edgeId: a,
161
+ screenId: p || void 0
156
162
  }), null);
157
- }, I = [], b = /* @__PURE__ */ new Map(), A = [
163
+ }, S = [], E = /* @__PURE__ */ new Map(), f = [
158
164
  ["explicit", e.explicitEdges ?? []],
159
165
  ["inferred", e.inferredEdges ?? []]
160
166
  ];
161
- let m = 0;
162
- for (const [i, d] of A)
163
- for (const l of d) {
164
- const f = xt(l, m);
165
- m += 1;
166
- const E = y(l.from, f, "source"), C = y(l.to, f, "target");
167
- if (!E || !C || E === C) continue;
168
- const P = `${E}\0${C}`, p = b.get(P);
169
- if (p) {
170
- if (!p.sourceEdgeIds.includes(f)) {
171
- const O = {
172
- ...p,
173
- sourceEdgeIds: B([
174
- ...p.sourceEdgeIds,
175
- f
176
- ])
177
- };
178
- b.set(P, O);
179
- const F = I.indexOf(p);
180
- F >= 0 && (I[F] = O);
181
- }
167
+ let O = 0;
168
+ for (const [i, a] of f)
169
+ for (const l of a) {
170
+ const p = Rt(l, O);
171
+ O += 1;
172
+ const I = x(l.from, p, "source"), N = x(l.to, p, "target");
173
+ if (!I || !N || I === N) continue;
174
+ const M = g(l.fromScope, I), q = g(l.toScope, N), C = `${I}\0${N}`, w = E.get(C);
175
+ if (w) {
176
+ const z = {
177
+ ...w,
178
+ fromNodeIds: T([
179
+ ...w.fromNodeIds ?? [w.from],
180
+ ...M
181
+ ]),
182
+ toNodeIds: T([
183
+ ...w.toNodeIds ?? [w.to],
184
+ ...q
185
+ ]),
186
+ sourceEdgeIds: T([
187
+ ...w.sourceEdgeIds,
188
+ p
189
+ ])
190
+ };
191
+ E.set(C, z);
192
+ const G = S.indexOf(w);
193
+ G >= 0 && (S[G] = z);
182
194
  continue;
183
195
  }
184
- const N = {
185
- id: f,
186
- from: E,
187
- to: C,
188
- kind: ((x = l.kind) == null ? void 0 : x.trim()) || void 0,
189
- label: ((q = l.label) == null ? void 0 : q.trim()) || void 0,
196
+ const R = {
197
+ id: p,
198
+ from: I,
199
+ to: N,
200
+ fromNodeIds: M,
201
+ toNodeIds: q,
202
+ kind: ((_ = l.kind) == null ? void 0 : _.trim()) || void 0,
203
+ label: ((J = l.label) == null ? void 0 : J.trim()) || void 0,
190
204
  origin: i,
191
- sourceEdgeIds: [f]
205
+ sourceEdgeIds: [p]
192
206
  };
193
- b.set(P, N), I.push(N);
207
+ E.set(C, R), S.push(R);
194
208
  }
195
- I.sort(
196
- (i, d) => `${i.from}:${i.to}:${i.id}`.localeCompare(`${d.from}:${d.to}:${d.id}`)
209
+ S.sort(
210
+ (i, a) => `${i.from}:${i.to}:${i.id}`.localeCompare(`${a.from}:${a.to}:${a.id}`)
197
211
  );
198
- const k = /* @__PURE__ */ new Map(), M = /* @__PURE__ */ new Map();
199
- for (const i of I) {
200
- const d = M.get(i.from);
201
- d ? d.push(i) : M.set(i.from, [i]);
202
- const l = k.get(i.to);
203
- l ? l.push(i) : k.set(i.to, [i]);
212
+ const D = /* @__PURE__ */ new Map(), k = /* @__PURE__ */ new Map();
213
+ for (const i of S) {
214
+ for (const a of i.fromNodeIds ?? [i.from]) {
215
+ const l = k.get(a);
216
+ l ? l.push(i) : k.set(a, [i]);
217
+ }
218
+ for (const a of i.toNodeIds ?? [i.to]) {
219
+ const l = D.get(a);
220
+ l ? l.push(i) : D.set(a, [i]);
221
+ }
204
222
  }
205
- const D = [];
223
+ const F = [];
206
224
  for (const i of e.startScreenIds ?? []) {
207
- const d = i.trim(), l = c[d] ?? (u.has(d) ? d : null);
225
+ const a = i.trim(), l = d[a] ?? (u.has(a) ? a : null);
208
226
  if (!l) {
209
227
  t.push({
210
228
  code: "unknown-start-screen",
211
229
  severity: "error",
212
- message: `Storyboard start references an unknown screen "${d}".`,
213
- screenId: d || void 0
230
+ message: `Storyboard start references an unknown screen "${a}".`,
231
+ screenId: a || void 0
214
232
  });
215
233
  continue;
216
234
  }
217
- D.push(l);
235
+ F.push(l);
218
236
  }
219
- const z = new Set(D);
220
- let j = B(D);
221
- j.length || (j = h.filter((i) => {
222
- var d;
223
- return (((d = k.get(i.id)) == null ? void 0 : d.length) ?? 0) === 0;
224
- }).map((i) => i.id).sort((i, d) => i.localeCompare(d))), !j.length && h.length && (j = [h[0].id]);
225
- const S = /* @__PURE__ */ new Set(), R = [...j];
226
- for (; R.length; ) {
227
- const i = R.shift();
228
- if (!S.has(i)) {
229
- S.add(i);
230
- for (const d of M.get(i) ?? []) R.push(d.to);
237
+ const Y = new Set(F);
238
+ let v = T(F);
239
+ v.length || (v = y.filter((i) => {
240
+ var a;
241
+ return (((a = D.get(i.id)) == null ? void 0 : a.length) ?? 0) === 0;
242
+ }).map((i) => i.id).sort((i, a) => i.localeCompare(a))), !v.length && y.length && (v = [y[0].id]);
243
+ const P = /* @__PURE__ */ new Set(), $ = [...v];
244
+ for (; $.length; ) {
245
+ const i = $.shift();
246
+ if (!P.has(i)) {
247
+ P.add(i);
248
+ for (const a of k.get(i) ?? [])
249
+ $.push(a.to), i === a.from && $.push(...a.toNodeIds ?? [a.to]);
231
250
  }
232
251
  }
233
- const T = h.filter((i) => {
234
- var l, f;
235
- const d = (((l = k.get(i.id)) == null ? void 0 : l.length) ?? 0) === 0 && (((f = M.get(i.id)) == null ? void 0 : f.length) ?? 0) === 0 && !z.has(i.id);
236
- return !S.has(i.id) || d && h.length > 1;
252
+ const j = y.filter((i) => {
253
+ var l, p;
254
+ const a = (((l = D.get(i.id)) == null ? void 0 : l.length) ?? 0) === 0 && (((p = k.get(i.id)) == null ? void 0 : p.length) ?? 0) === 0 && !Y.has(i.id);
255
+ return !P.has(i.id) || a && y.length > 1;
237
256
  });
238
- for (const i of T)
239
- for (const d of i.screenIds)
257
+ for (const i of j)
258
+ for (const a of i.screenIds)
240
259
  t.push({
241
260
  code: "disconnected-screen",
242
261
  severity: "warning",
243
- message: `Storyboard screen "${d}" is not connected to a graph branch.`,
244
- screenId: d,
262
+ message: `Storyboard screen "${a}" is not connected to a graph branch.`,
263
+ screenId: a,
245
264
  nodeId: i.id
246
265
  });
247
- const H = /* @__PURE__ */ new Map();
248
- for (const i of h)
249
- for (const d of i.sourceKeys) {
250
- const l = H.get(d) ?? {
266
+ const L = /* @__PURE__ */ new Map();
267
+ for (const i of y)
268
+ for (const a of i.sourceKeys) {
269
+ const l = L.get(a) ?? {
251
270
  nodeIds: /* @__PURE__ */ new Set(),
252
271
  screenIds: /* @__PURE__ */ new Set()
253
272
  };
254
273
  l.nodeIds.add(i.id);
255
- for (const f of i.screenIds) l.screenIds.add(f);
256
- H.set(d, l);
274
+ for (const p of i.screenIds) l.screenIds.add(p);
275
+ L.set(a, l);
257
276
  }
258
- const te = [...H.entries()].map(([i, d]) => ({
277
+ const re = [...L.entries()].map(([i, a]) => ({
259
278
  sourceKey: i,
260
- nodeIds: [...d.nodeIds].sort((l, f) => l.localeCompare(f)),
261
- screenIds: [...d.screenIds].sort((l, f) => l.localeCompare(f)),
262
- shared: d.nodeIds.size > 1
263
- })).sort((i, d) => i.sourceKey.localeCompare(d.sourceKey)), ne = h.map((i) => {
264
- const d = [...M.get(i.id) ?? []].sort(
265
- (l, f) => l.id.localeCompare(f.id)
279
+ nodeIds: [...a.nodeIds].sort((l, p) => l.localeCompare(p)),
280
+ screenIds: [...a.screenIds].sort((l, p) => l.localeCompare(p)),
281
+ shared: a.nodeIds.size > 1
282
+ })).sort((i, a) => i.sourceKey.localeCompare(a.sourceKey)), oe = y.map((i) => {
283
+ const a = [...k.get(i.id) ?? []].sort(
284
+ (l, p) => l.id.localeCompare(p.id)
266
285
  );
267
286
  return {
268
287
  nodeId: i.id,
269
- edgeIds: d.map((l) => l.id),
270
- targetNodeIds: B(d.map((l) => l.to))
288
+ edgeIds: a.map((l) => l.id),
289
+ targetNodeIds: T(a.map((l) => l.to))
271
290
  };
272
- }).filter((i) => i.targetNodeIds.length > 1).sort((i, d) => i.nodeId.localeCompare(d.nodeId)), Y = new Set(
273
- h.flatMap((i) => i.scenarioIds)
274
- ), Q = new Set(
291
+ }).filter((i) => i.targetNodeIds.length > 1).sort((i, a) => i.nodeId.localeCompare(a.nodeId)), Z = new Set(
292
+ y.flatMap((i) => i.scenarioIds)
293
+ ), K = new Set(
275
294
  (e.nonVisualScenarioIds ?? []).map((i) => i.trim())
276
- ), L = B(
295
+ ), Q = T(
277
296
  (e.scenarios ?? []).map((i) => i.id)
278
- ), V = L.filter(
279
- (i) => !Y.has(i) && !Q.has(i)
297
+ ), U = Q.filter(
298
+ (i) => !Z.has(i) && !K.has(i)
280
299
  );
281
- for (const i of V)
300
+ for (const i of U)
282
301
  t.push({
283
302
  code: "missing-code-scenario",
284
303
  severity: "warning",
@@ -286,210 +305,231 @@ function Et(e) {
286
305
  scenarioId: i
287
306
  });
288
307
  t.sort(
289
- (i, d) => Te(i).localeCompare(Te(d))
308
+ (i, a) => _e(i).localeCompare(_e(a))
290
309
  );
291
- const _ = B(
292
- T.flatMap((i) => i.screenIds)
293
- ), X = {
294
- screens: s.length,
295
- canonicalNodes: h.length,
296
- mergedScreens: Math.max(0, s.length - h.length),
297
- edges: I.length,
298
- connectedNodes: h.length - T.length,
299
- disconnectedScreens: _,
300
- codeScenarios: L.length,
301
- representedScenarios: L.filter(
302
- (i) => Y.has(i)
310
+ const V = T(
311
+ j.flatMap((i) => i.screenIds)
312
+ ), ee = {
313
+ screens: o.length,
314
+ canonicalNodes: y.length,
315
+ mergedScreens: Math.max(0, o.length - y.length),
316
+ edges: S.length,
317
+ connectedNodes: y.length - j.length,
318
+ disconnectedScreens: V,
319
+ codeScenarios: Q.length,
320
+ representedScenarios: Q.filter(
321
+ (i) => Z.has(i)
303
322
  ).length,
304
- missingScenarios: V,
305
- complete: _.length === 0 && V.length === 0 && !t.some((i) => i.severity === "error") && o.size === 0
323
+ missingScenarios: U,
324
+ complete: V.length === 0 && U.length === 0 && !t.some((i) => i.severity === "error") && s.size === 0
306
325
  };
307
326
  return {
308
327
  version: 1,
309
- nodes: h,
310
- edges: I,
328
+ nodes: y,
329
+ edges: S,
311
330
  aliases: Object.fromEntries(
312
- Object.entries(c).sort(([i], [d]) => i.localeCompare(d))
331
+ Object.entries(d).sort(([i], [a]) => i.localeCompare(a))
313
332
  ),
314
- sourceGroups: te,
315
- startNodeIds: j,
316
- branches: ne,
333
+ sourceGroups: re,
334
+ startNodeIds: v,
335
+ branches: oe,
317
336
  warnings: t,
318
- coverage: X
337
+ coverage: ee
319
338
  };
320
339
  }
321
- function Ct(e) {
340
+ function Ot(e) {
322
341
  return e ? JSON.parse(JSON.stringify(e)) : void 0;
323
342
  }
324
- function ue(e) {
325
- if (Array.isArray(e)) return e.map(ue);
343
+ function pe(e) {
344
+ if (Array.isArray(e)) return e.map(pe);
326
345
  if (e && typeof e == "object") {
327
- const t = Object.entries(e).filter(([, s]) => s !== void 0).sort(([s], [n]) => s.localeCompare(n)).map(([s, n]) => [s, ue(n)]).filter(([, s]) => s !== void 0);
346
+ const t = Object.entries(e).filter(([, o]) => o !== void 0).sort(([o], [r]) => o.localeCompare(r)).map(([o, r]) => [o, pe(r)]).filter(([, o]) => o !== void 0);
328
347
  return t.length ? Object.fromEntries(t) : void 0;
329
348
  }
330
349
  return e;
331
350
  }
332
- function De(e) {
333
- return JSON.stringify(ue(e ?? null));
351
+ function je(e) {
352
+ return JSON.stringify(pe(e ?? null));
334
353
  }
335
- function Rt(e) {
354
+ function $t(e) {
336
355
  return !!(e && typeof e == "object" && !Array.isArray(e));
337
356
  }
338
- function G(e) {
357
+ function H(e) {
339
358
  const t = e == null ? void 0 : e.trim();
340
359
  if (!t) return null;
341
- let s = t;
360
+ let o = t;
342
361
  try {
343
- /^[a-z][a-z\d+.-]*:\/\//i.test(t) && (s = new URL(t).pathname);
362
+ /^[a-z][a-z\d+.-]*:\/\//i.test(t) && (o = new URL(t).pathname);
344
363
  } catch {
345
364
  return null;
346
365
  }
347
- return s = s.split(/[?#]/, 1)[0].replace(/\/{2,}/g, "/"), s.startsWith("/") || (s = `/${s}`), s.length > 1 && (s = s.replace(/\/+$/, "")), s || "/";
366
+ return o = o.split(/[?#]/, 1)[0].replace(/\/{2,}/g, "/"), o.startsWith("/") || (o = `/${o}`), o.length > 1 && (o = o.replace(/\/+$/, "")), o || "/";
348
367
  }
349
- function qe(e) {
368
+ function Ve(e) {
350
369
  return `source-route:${encodeURIComponent(e)}`;
351
370
  }
352
- function Pe(e, t) {
353
- const s = e.split("/").filter(Boolean), n = t.split("/").filter(Boolean);
354
- let r = 0;
355
- for (let o = 0; o < s.length; o += 1) {
356
- const a = s[o];
357
- if (a === "*" || a.startsWith("*")) return !0;
358
- const c = n[r];
359
- if (!(a.endsWith("?") && c == null)) {
360
- if (c == null || !a.startsWith(":") && a !== c) return !1;
361
- r += 1;
371
+ function Ne(e, t) {
372
+ const o = e.split("/").filter(Boolean), r = t.split("/").filter(Boolean);
373
+ let n = 0;
374
+ for (let s = 0; s < o.length; s += 1) {
375
+ const c = o[s];
376
+ if (c === "*" || c.startsWith("*")) return !0;
377
+ const d = r[n];
378
+ if (!(c.endsWith("?") && d == null)) {
379
+ if (d == null || !c.startsWith(":") && c !== d) return !1;
380
+ n += 1;
362
381
  }
363
382
  }
364
- return r === n.length;
383
+ return n === r.length;
365
384
  }
366
- function ze(e, t) {
367
- const s = G(e);
368
- if (!s) return [];
369
- const n = t.get(s);
370
- return n && !/[:*]/.test(s) ? [n] : [
371
- ...new Set(
372
- [...t.entries()].filter(([r]) => Pe(s, r)).map(([, r]) => r)
373
- )
374
- ].sort((r, o) => r.localeCompare(o));
385
+ function Be(e, t, o) {
386
+ const r = H(e);
387
+ if (!r) return [];
388
+ const n = t.get(r);
389
+ return n && !/[:*]/.test(r) ? [
390
+ {
391
+ representativeId: n,
392
+ screenIds: o.get(r) ?? [n]
393
+ }
394
+ ] : [...t.entries()].filter(([s]) => Ne(r, s)).map(([s, c]) => ({
395
+ representativeId: c,
396
+ screenIds: o.get(s) ?? [c]
397
+ })).sort((s, c) => s.representativeId.localeCompare(c.representativeId));
375
398
  }
376
- function Nt(e) {
377
- var s;
399
+ function Dt(e) {
400
+ var o;
378
401
  const t = /* @__PURE__ */ new Map();
379
- for (const n of e ?? []) {
380
- const r = G(n.path);
381
- !r || t.has(r) || t.set(r, {
382
- id: qe(r),
383
- name: r,
402
+ for (const r of e ?? []) {
403
+ const n = H(r.path);
404
+ !n || t.has(n) || t.set(n, {
405
+ id: Ve(n),
406
+ name: n,
384
407
  section: "Source routes",
385
- codeName: ((s = n.id) == null ? void 0 : s.trim()) || void 0
408
+ codeName: ((o = r.id) == null ? void 0 : o.trim()) || void 0
386
409
  });
387
410
  }
388
- return [...t.values()].sort((n, r) => n.id.localeCompare(r.id));
389
- }
390
- function At(e, t, s) {
391
- return (e ?? []).flatMap((n, r) => {
392
- var h, w, y;
393
- const o = (h = n.from) == null ? void 0 : h.trim(), a = (w = n.to) == null ? void 0 : w.trim();
394
- if (!o || !a || n.unresolvedTarget) return [];
395
- const c = s.has(o) ? [o] : ze(o, t), u = s.has(a) ? [a] : ze(a, t);
396
- if (!c.length || !u.length) return [];
397
- const g = ((y = n.id) == null ? void 0 : y.trim()) || `discovery-edge:${r + 1}`;
398
- return c.flatMap(
399
- (I, b) => u.map((A, m) => {
400
- var k, M;
411
+ return [...t.values()].sort((r, n) => r.id.localeCompare(n.id));
412
+ }
413
+ function kt(e, t, o, r) {
414
+ return (e ?? []).flatMap((n, s) => {
415
+ var y, h, x;
416
+ const c = (y = n.from) == null ? void 0 : y.trim(), d = (h = n.to) == null ? void 0 : h.trim();
417
+ if (!c || !d || n.unresolvedTarget) return [];
418
+ const u = r.has(c) ? [{ representativeId: c, screenIds: [c] }] : Be(c, t, o), g = r.has(d) ? [{ representativeId: d, screenIds: [d] }] : Be(d, t, o);
419
+ if (!u.length || !g.length) return [];
420
+ const m = ((x = n.id) == null ? void 0 : x.trim()) || `discovery-edge:${s + 1}`;
421
+ return u.flatMap(
422
+ (S, E) => g.map((f, O) => {
423
+ var D, k;
401
424
  return {
402
- id: c.length === 1 && u.length === 1 ? g : `${g}:${b + 1}:${m + 1}`,
403
- from: I,
404
- to: A,
405
- kind: ((k = n.kind) == null ? void 0 : k.trim()) || void 0,
406
- label: ((M = n.label) == null ? void 0 : M.trim()) || void 0
425
+ id: u.length === 1 && g.length === 1 ? m : `${m}:${E + 1}:${O + 1}`,
426
+ from: S.representativeId,
427
+ to: f.representativeId,
428
+ fromScope: S.screenIds,
429
+ toScope: f.screenIds,
430
+ kind: ((D = n.kind) == null ? void 0 : D.trim()) || void 0,
431
+ label: ((k = n.label) == null ? void 0 : k.trim()) || void 0
407
432
  };
408
433
  })
409
434
  );
410
435
  });
411
436
  }
412
- function $t(e, t, s) {
413
- const n = G(e.route);
414
- if (!n) return [];
415
- const r = t.filter(
416
- (c) => {
417
- const u = G(c.route);
418
- return u ? Pe(u, n) : !1;
437
+ function Ft(e, t, o) {
438
+ const r = H(e.route);
439
+ if (!r) return [];
440
+ const n = t.filter(
441
+ (d) => {
442
+ const u = H(d.route);
443
+ return u ? Ne(u, r) : !1;
419
444
  }
420
445
  );
421
- if (!r.length) return [];
422
- const o = De(
423
- Le(s, e.environment)
424
- ), a = r.filter(
425
- (c) => De(c.environment) === o
446
+ if (!n.length) return [];
447
+ const s = je(
448
+ Ze(o, e.environment)
449
+ ), c = n.filter(
450
+ (d) => je(d.environment) === s
426
451
  );
427
452
  return [
428
453
  ...new Set(
429
- a.map((c) => {
454
+ c.map((d) => {
430
455
  var u;
431
- return (u = c.scenarioId) == null ? void 0 : u.trim();
432
- }).filter((c) => !!c)
456
+ return (u = d.scenarioId) == null ? void 0 : u.trim();
457
+ }).filter((d) => !!d)
433
458
  )
434
- ].sort((c, u) => c.localeCompare(u));
459
+ ].sort((d, u) => d.localeCompare(u));
435
460
  }
436
- function Ot(e, t) {
437
- const s = e.some((o) => o.importKind != null), n = t.candidates ?? [], r = Ge(t);
461
+ function Tt(e, t) {
462
+ const o = e.some((s) => s.importKind != null), r = t.candidates ?? [], n = We(t);
438
463
  return e.filter(
439
- (o) => s ? o.importKind === "screens" : !!o.route
440
- ).map((o) => ({
441
- id: o.id,
442
- name: o.name,
443
- section: o.section ?? o.canvas ?? "Screens",
444
- componentName: o.componentName,
445
- gallery: o.gallery,
446
- route: o.route,
447
- path: o.path,
448
- publish: o.publish,
449
- width: o.width,
450
- height: o.height,
451
- frameSizeMode: o.frameSizeMode,
452
- heightMode: o.heightMode,
453
- maxHeight: o.maxHeight,
454
- flow: o.flow,
455
- scenario: o.scenario,
456
- state: o.state,
457
- scenarioId: o.scenarioId,
458
- scenarioIds: $t(o, n, r),
459
- interactions: o.interactions,
460
- environment: o.environment,
461
- preset: o.preset,
462
- assertions: o.assertions,
463
- sourcePath: [...o.sourcePaths ?? []].filter(Boolean).sort((a, c) => a.localeCompare(c))[0]
464
+ (s) => o ? s.importKind === "screens" : !!s.route
465
+ ).map((s) => ({
466
+ id: s.id,
467
+ name: s.name,
468
+ section: s.section ?? s.canvas ?? "Screens",
469
+ componentName: s.componentName,
470
+ gallery: s.gallery,
471
+ route: s.route,
472
+ path: s.path,
473
+ publish: s.publish,
474
+ width: s.width,
475
+ height: s.height,
476
+ frameSizeMode: s.frameSizeMode,
477
+ heightMode: s.heightMode,
478
+ maxHeight: s.maxHeight,
479
+ flow: s.flow,
480
+ scenario: s.scenario,
481
+ state: s.state,
482
+ scenarioId: s.scenarioId,
483
+ scenarioIds: Ft(s, r, n),
484
+ interactions: s.interactions,
485
+ environment: s.environment,
486
+ preset: s.preset,
487
+ assertions: s.assertions,
488
+ sourcePath: [...s.sourcePaths ?? []].filter(Boolean).sort((c, d) => c.localeCompare(d))[0]
464
489
  }));
465
490
  }
466
- function pe(e, t) {
467
- var c, u, g, h;
468
- const s = (((c = e.interactions) == null ? void 0 : c.length) ?? 0) - (((u = t.interactions) == null ? void 0 : u.length) ?? 0);
469
- if (s !== 0) return s;
470
- const n = (g = e.scenarioIds) != null && g.includes("environment:baseline") ? 0 : 1, r = (h = t.scenarioIds) != null && h.includes("environment:baseline") ? 0 : 1;
471
- if (n !== r) return n - r;
472
- const o = !e.environment && !e.preset ? 0 : 1, a = !t.environment && !t.preset ? 0 : 1;
473
- return o !== a ? o - a : e.id.localeCompare(t.id);
491
+ function we(e, t) {
492
+ var d, u, g, m;
493
+ const o = (((d = e.interactions) == null ? void 0 : d.length) ?? 0) - (((u = t.interactions) == null ? void 0 : u.length) ?? 0);
494
+ if (o !== 0) return o;
495
+ const r = (g = e.scenarioIds) != null && g.includes("environment:baseline") ? 0 : 1, n = (m = t.scenarioIds) != null && m.includes("environment:baseline") ? 0 : 1;
496
+ if (r !== n) return r - n;
497
+ const s = !e.environment && !e.preset ? 0 : 1, c = !t.environment && !t.preset ? 0 : 1;
498
+ return s !== c ? s - c : e.id.localeCompare(t.id);
474
499
  }
475
- function Mt(e) {
500
+ function zt(e) {
476
501
  const t = /* @__PURE__ */ new Map();
477
- for (const s of e) {
478
- const n = G(s.route);
479
- if (!n) continue;
480
- const r = t.get(n);
481
- r ? r.push(s) : t.set(n, [s]);
502
+ for (const o of e) {
503
+ const r = H(o.route);
504
+ if (!r) continue;
505
+ const n = t.get(r);
506
+ n ? n.push(o) : t.set(r, [o]);
482
507
  }
483
508
  return new Map(
484
- [...t.entries()].map(([s, n]) => {
485
- const r = [...n].sort(pe);
486
- return [s, r[0].id];
509
+ [...t.entries()].map(([o, r]) => {
510
+ const n = [...r].sort(we);
511
+ return [o, n[0].id];
487
512
  })
488
513
  );
489
514
  }
490
- function kt(e) {
515
+ function _t(e) {
516
+ const t = /* @__PURE__ */ new Map();
517
+ for (const o of e) {
518
+ const r = H(o.route);
519
+ if (!r) continue;
520
+ const n = t.get(r);
521
+ n ? n.push(o.id) : t.set(r, [o.id]);
522
+ }
523
+ return new Map(
524
+ [...t.entries()].map(([o, r]) => [
525
+ o,
526
+ [...new Set(r)].sort((n, s) => n.localeCompare(s))
527
+ ])
528
+ );
529
+ }
530
+ function jt(e) {
491
531
  return e.action === "wait" ? null : JSON.stringify(
492
- ue({
532
+ pe({
493
533
  action: e.action,
494
534
  selector: e.selector,
495
535
  text: e.text,
@@ -503,74 +543,74 @@ function kt(e) {
503
543
  })
504
544
  );
505
545
  }
506
- function Ke(e) {
507
- return (e.interactions ?? []).map(kt).filter((t) => t != null);
546
+ function Je(e) {
547
+ return (e.interactions ?? []).map(jt).filter((t) => t != null);
508
548
  }
509
- function Ft(e, t) {
510
- return e.length < t.length && e.every((s, n) => s === t[n]);
549
+ function Bt(e, t) {
550
+ return e.length < t.length && e.every((o, r) => o === t[r]);
511
551
  }
512
- function Tt(e, t) {
513
- const s = /* @__PURE__ */ new Map();
514
- for (const n of e) {
515
- const r = G(n.route);
516
- if (!r) continue;
517
- const o = `${r}\0${Ke(n).join("")}`, a = s.get(o);
518
- a ? a.push(n) : s.set(o, [n]);
552
+ function Ut(e, t) {
553
+ const o = /* @__PURE__ */ new Map();
554
+ for (const r of e) {
555
+ const n = H(r.route);
556
+ if (!n) continue;
557
+ const s = `${n}\0${Je(r).join("")}`, c = o.get(s);
558
+ c ? c.push(r) : o.set(s, [r]);
519
559
  }
520
- return [...s.values()].flatMap((n) => {
521
- if (n.length < 2) return [];
522
- const r = G(n[0].route), o = t.get(r), a = n.find((c) => c.id === o) ?? [...n].sort(pe)[0];
523
- return n.filter((c) => c.id !== a.id).sort((c, u) => c.id.localeCompare(u.id)).map((c) => ({
524
- id: `discovery-variant:${encodeURIComponent(a.id)}:${encodeURIComponent(c.id)}`,
525
- from: a.id,
526
- to: c.id,
560
+ return [...o.values()].flatMap((r) => {
561
+ if (r.length < 2) return [];
562
+ const n = H(r[0].route), s = t.get(n), c = r.find((d) => d.id === s) ?? [...r].sort(we)[0];
563
+ return r.filter((d) => d.id !== c.id).sort((d, u) => d.id.localeCompare(u.id)).map((d) => ({
564
+ id: `discovery-variant:${encodeURIComponent(c.id)}:${encodeURIComponent(d.id)}`,
565
+ from: c.id,
566
+ to: d.id,
527
567
  kind: "variant"
528
568
  }));
529
569
  });
530
570
  }
531
- function Dt(e, t) {
532
- const s = /* @__PURE__ */ new Map();
533
- for (const n of e) {
534
- const r = G(n.route);
535
- if (!r) continue;
536
- const o = s.get(r);
537
- o ? o.push(n) : s.set(r, [n]);
571
+ function Ht(e, t) {
572
+ const o = /* @__PURE__ */ new Map();
573
+ for (const r of e) {
574
+ const n = H(r.route);
575
+ if (!n) continue;
576
+ const s = o.get(n);
577
+ s ? s.push(r) : o.set(n, [r]);
538
578
  }
539
- return [...s.entries()].flatMap(([n, r]) => {
540
- const o = new Map(
541
- r.map((u) => [u.id, Ke(u)])
542
- ), a = t.get(n), c = r.find(
543
- (u) => u.id === a
579
+ return [...o.entries()].flatMap(([r, n]) => {
580
+ const s = new Map(
581
+ n.map((u) => [u.id, Je(u)])
582
+ ), c = t.get(r), d = n.find(
583
+ (u) => u.id === c
544
584
  );
545
- return r.flatMap((u) => {
546
- const g = o.get(u.id);
585
+ return n.flatMap((u) => {
586
+ const g = s.get(u.id);
547
587
  if (!g.length) return [];
548
- const w = r.filter(
549
- (y) => Ft(
550
- o.get(y.id),
588
+ const y = n.filter(
589
+ (h) => Bt(
590
+ s.get(h.id),
551
591
  g
552
592
  )
553
- ).sort((y, I) => {
554
- const b = o.get(I.id).length - o.get(y.id).length;
555
- if (b !== 0) return b;
556
- const A = y.flow && y.flow === u.flow ? 0 : 1, m = I.flow && I.flow === u.flow ? 0 : 1;
557
- if (A !== m) return A - m;
558
- const k = y.section && y.section === u.section ? 0 : 1, M = I.section && I.section === u.section ? 0 : 1;
559
- if (k !== M) return k - M;
560
- const D = y.id === a ? 0 : 1, z = I.id === a ? 0 : 1;
561
- return D !== z ? D - z : pe(y, I);
593
+ ).sort((h, x) => {
594
+ const S = s.get(x.id).length - s.get(h.id).length;
595
+ if (S !== 0) return S;
596
+ const E = h.flow && h.flow === u.flow ? 0 : 1, f = x.flow && x.flow === u.flow ? 0 : 1;
597
+ if (E !== f) return E - f;
598
+ const O = h.section && h.section === u.section ? 0 : 1, D = x.section && x.section === u.section ? 0 : 1;
599
+ if (O !== D) return O - D;
600
+ const k = h.id === c ? 0 : 1, F = x.id === c ? 0 : 1;
601
+ return k !== F ? k - F : we(h, x);
562
602
  })[0];
563
- return w ? [
603
+ return y ? [
564
604
  {
565
- id: `discovery-recipe:${encodeURIComponent(w.id)}:${encodeURIComponent(u.id)}`,
566
- from: w.id,
605
+ id: `discovery-recipe:${encodeURIComponent(y.id)}:${encodeURIComponent(u.id)}`,
606
+ from: y.id,
567
607
  to: u.id,
568
608
  kind: "recipe-step"
569
609
  }
570
- ] : c && c.id !== u.id && o.get(c.id).join("") !== g.join("") ? [
610
+ ] : d && d.id !== u.id && s.get(d.id).join("") !== g.join("") ? [
571
611
  {
572
- id: `discovery-route-case:${encodeURIComponent(c.id)}:${encodeURIComponent(u.id)}`,
573
- from: c.id,
612
+ id: `discovery-route-case:${encodeURIComponent(d.id)}:${encodeURIComponent(u.id)}`,
613
+ from: d.id,
574
614
  to: u.id,
575
615
  kind: "route-case"
576
616
  }
@@ -578,191 +618,202 @@ function Dt(e, t) {
578
618
  });
579
619
  });
580
620
  }
581
- function zt(e) {
582
- var s;
621
+ function qt(e) {
622
+ var o;
583
623
  const t = /* @__PURE__ */ new Map();
584
- for (const n of e) {
585
- const r = (s = n.flow) == null ? void 0 : s.trim();
586
- if (!r) continue;
587
- const o = t.get(r);
588
- o ? o.push(n) : t.set(r, [n]);
624
+ for (const r of e) {
625
+ const n = (o = r.flow) == null ? void 0 : o.trim();
626
+ if (!n) continue;
627
+ const s = t.get(n);
628
+ s ? s.push(r) : t.set(n, [r]);
589
629
  }
590
- return [...t.values()].flatMap((n) => {
591
- const r = n[0], o = /* @__PURE__ */ new Map();
592
- for (const a of n) {
593
- const c = G(a.route);
594
- if (!c) continue;
595
- const u = o.get(c);
596
- u ? u.push(a) : o.set(c, [a]);
630
+ return [...t.values()].flatMap((r) => {
631
+ const n = r[0], s = /* @__PURE__ */ new Map();
632
+ for (const c of r) {
633
+ const d = H(c.route);
634
+ if (!d) continue;
635
+ const u = s.get(d);
636
+ u ? u.push(c) : s.set(d, [c]);
597
637
  }
598
- return o.size < 2 ? [] : [...o.values()].flatMap((a) => {
599
- const c = [...a].sort(
600
- pe
638
+ return s.size < 2 ? [] : [...s.values()].flatMap((c) => {
639
+ const d = [...c].sort(
640
+ we
601
641
  )[0];
602
- return c.id === r.id ? [] : [
642
+ return d.id === n.id ? [] : [
603
643
  {
604
- id: `discovery-flow-route:${encodeURIComponent(r.id)}:${encodeURIComponent(c.id)}`,
605
- from: r.id,
606
- to: c.id,
644
+ id: `discovery-flow-route:${encodeURIComponent(n.id)}:${encodeURIComponent(d.id)}`,
645
+ from: n.id,
646
+ to: d.id,
607
647
  kind: "flow-route"
608
648
  }
609
649
  ];
610
650
  });
611
651
  });
612
652
  }
613
- function jt(e, t, s) {
614
- const n = new Set(
615
- (t.routes ?? []).map((r) => G(r.path)).filter((r) => !!r)
653
+ function Gt(e, t, o) {
654
+ const r = new Set(
655
+ (t.routes ?? []).map((n) => H(n.path)).filter((n) => !!n)
616
656
  );
617
- return e.map((r) => {
618
- const o = G(r.route);
619
- if (!o || s.get(o) !== r.id)
620
- return r;
621
- const a = [...n].filter(
622
- (c) => Pe(c, o)
657
+ return e.map((n) => {
658
+ const s = H(n.route);
659
+ if (!s || o.get(s) !== n.id)
660
+ return n;
661
+ const c = [...r].filter(
662
+ (d) => Ne(d, s)
623
663
  );
624
- return a.length ? {
625
- ...r,
664
+ return c.length ? {
665
+ ...n,
626
666
  scenarioIds: [
627
667
  .../* @__PURE__ */ new Set([
628
- ...r.scenarioIds ?? [],
629
- ...a.map(qe)
668
+ ...n.scenarioIds ?? [],
669
+ ...c.map(Ve)
630
670
  ])
631
- ].sort((c, u) => c.localeCompare(u))
632
- } : r;
671
+ ].sort((d, u) => d.localeCompare(u))
672
+ } : n;
633
673
  });
634
674
  }
635
- function _t(e, t) {
636
- var g, h, w, y, I;
637
- const s = new Set(e.map((b) => b.id)), n = new Map(
638
- e.map((b, A) => [b.id, A])
639
- ), r = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map(), a = /* @__PURE__ */ new Map();
640
- for (const b of s)
641
- r.set(b, /* @__PURE__ */ new Set()), o.set(b, /* @__PURE__ */ new Set()), a.set(b, /* @__PURE__ */ new Set());
642
- for (const b of t)
643
- !s.has(b.from) || !s.has(b.to) || ((g = r.get(b.to)) == null || g.add(b.from), (h = o.get(b.from)) == null || h.add(b.to), (w = a.get(b.from)) == null || w.add(b.to), (y = a.get(b.to)) == null || y.add(b.from));
644
- const c = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
645
- for (const b of s) {
646
- if (u.has(b)) continue;
647
- const A = [], m = [b];
648
- for (; m.length; ) {
649
- const S = m.shift();
650
- if (!u.has(S)) {
651
- u.add(S), A.push(S);
652
- for (const R of a.get(S) ?? [])
653
- u.has(R) || m.push(R);
675
+ function Kt(e, t) {
676
+ var g, m, y, h, x;
677
+ const o = new Set(e.map((S) => S.id)), r = new Map(
678
+ e.map((S, E) => [S.id, E])
679
+ ), n = /* @__PURE__ */ new Map(), s = /* @__PURE__ */ new Map(), c = /* @__PURE__ */ new Map();
680
+ for (const S of o)
681
+ n.set(S, /* @__PURE__ */ new Set()), s.set(S, /* @__PURE__ */ new Set()), c.set(S, /* @__PURE__ */ new Set());
682
+ for (const S of t) {
683
+ const E = [
684
+ ...(S.fromScope ?? [S.from]).map(
685
+ (f) => [f, S.to]
686
+ ),
687
+ ...(S.toScope ?? [S.to]).map(
688
+ (f) => [S.from, f]
689
+ )
690
+ ];
691
+ for (const [f, O] of E)
692
+ !o.has(f) || !o.has(O) || ((g = n.get(O)) == null || g.add(f), (m = s.get(f)) == null || m.add(O), (y = c.get(f)) == null || y.add(O), (h = c.get(O)) == null || h.add(f));
693
+ }
694
+ const d = /* @__PURE__ */ new Set(), u = /* @__PURE__ */ new Set();
695
+ for (const S of o) {
696
+ if (u.has(S)) continue;
697
+ const E = [], f = [S];
698
+ for (; f.length; ) {
699
+ const v = f.shift();
700
+ if (!u.has(v)) {
701
+ u.add(v), E.push(v);
702
+ for (const P of c.get(v) ?? [])
703
+ u.has(P) || f.push(P);
654
704
  }
655
705
  }
656
- if (A.length === 1 && (((I = a.get(A[0])) == null ? void 0 : I.size) ?? 0) === 0)
706
+ if (E.length === 1 && (((x = c.get(E[0])) == null ? void 0 : x.size) ?? 0) === 0)
657
707
  continue;
658
- const k = A.filter((S) => {
659
- var R;
660
- return (((R = r.get(S)) == null ? void 0 : R.size) ?? 0) === 0;
708
+ const O = E.filter((v) => {
709
+ var P;
710
+ return (((P = n.get(v)) == null ? void 0 : P.size) ?? 0) === 0;
661
711
  }).sort(
662
- (S, R) => (n.get(S) ?? Number.MAX_SAFE_INTEGER) - (n.get(R) ?? Number.MAX_SAFE_INTEGER) || S.localeCompare(R)
663
- ), M = [...A].sort(
664
- (S, R) => (n.get(S) ?? Number.MAX_SAFE_INTEGER) - (n.get(R) ?? Number.MAX_SAFE_INTEGER) || S.localeCompare(R)
712
+ (v, P) => (r.get(v) ?? Number.MAX_SAFE_INTEGER) - (r.get(P) ?? Number.MAX_SAFE_INTEGER) || v.localeCompare(P)
713
+ ), D = [...E].sort(
714
+ (v, P) => (r.get(v) ?? Number.MAX_SAFE_INTEGER) - (r.get(P) ?? Number.MAX_SAFE_INTEGER) || v.localeCompare(P)
665
715
  )[0];
666
- if (!M) continue;
667
- const D = [M], z = /* @__PURE__ */ new Set(), j = (S) => {
668
- const R = [S];
669
- for (; R.length; ) {
670
- const T = R.shift();
671
- if (!z.has(T)) {
672
- z.add(T);
673
- for (const H of o.get(T) ?? [])
674
- z.has(H) || R.push(H);
716
+ if (!D) continue;
717
+ const k = [D], F = /* @__PURE__ */ new Set(), Y = (v) => {
718
+ const P = [v];
719
+ for (; P.length; ) {
720
+ const $ = P.shift();
721
+ if (!F.has($)) {
722
+ F.add($);
723
+ for (const j of s.get($) ?? [])
724
+ F.has(j) || P.push(j);
675
725
  }
676
726
  }
677
727
  };
678
- j(M);
679
- for (const S of k)
680
- z.has(S) || (D.push(S), j(S));
681
- for (const S of D)
682
- c.add(S);
728
+ Y(D);
729
+ for (const v of O)
730
+ F.has(v) || (k.push(v), Y(v));
731
+ for (const v of k)
732
+ d.add(v);
683
733
  }
684
- return [...c].sort(
685
- (b, A) => (n.get(b) ?? Number.MAX_SAFE_INTEGER) - (n.get(A) ?? Number.MAX_SAFE_INTEGER) || b.localeCompare(A)
734
+ return [...d].sort(
735
+ (S, E) => (r.get(S) ?? Number.MAX_SAFE_INTEGER) - (r.get(E) ?? Number.MAX_SAFE_INTEGER) || S.localeCompare(E)
686
736
  );
687
737
  }
688
- function Ge(e) {
689
- var t, s;
690
- return Ct(
691
- (s = (t = e.scenarios) == null ? void 0 : t.find(
692
- (n) => n.id === "environment:baseline"
693
- )) == null ? void 0 : s.environment
738
+ function We(e) {
739
+ var t, o;
740
+ return Ot(
741
+ (o = (t = e.scenarios) == null ? void 0 : t.find(
742
+ (r) => r.id === "environment:baseline"
743
+ )) == null ? void 0 : o.environment
694
744
  );
695
745
  }
696
- function Bt(e) {
697
- const t = Ot(
746
+ function Vt(e) {
747
+ const t = Tt(
698
748
  e.pages,
699
749
  e.manifest
700
- ), s = Mt(t), n = jt(
750
+ ), o = zt(t), r = _t(t), n = Gt(
701
751
  t,
702
752
  e.manifest,
703
- s
704
- ), o = [
705
- ...At(
753
+ o
754
+ ), c = [
755
+ ...kt(
706
756
  e.manifest.edges,
707
- s,
708
- new Set(n.map((a) => a.id))
757
+ o,
758
+ r,
759
+ new Set(n.map((d) => d.id))
709
760
  ),
710
- ...Tt(n, s),
711
- ...Dt(n, s),
712
- ...zt(n)
761
+ ...Ut(n, o),
762
+ ...Ht(n, o),
763
+ ...qt(n)
713
764
  ];
714
- return Et({
765
+ return Mt({
715
766
  screens: n,
716
767
  assets: e.assets,
717
- scenarios: Nt(e.manifest.routes),
718
- inferredEdges: o,
719
- startScreenIds: _t(n, o)
768
+ scenarios: Dt(e.manifest.routes),
769
+ inferredEdges: c,
770
+ startScreenIds: Kt(n, c)
720
771
  });
721
772
  }
722
- async function Je(e) {
723
- const s = await (e.fetcher ?? ((r, o) => fetch(r, o)))(e.endpoint, {
773
+ async function Le(e) {
774
+ const o = await (e.fetcher ?? ((n, s) => fetch(n, s)))(e.endpoint, {
724
775
  headers: { accept: "application/json" },
725
776
  cache: "no-store",
726
777
  signal: e.signal
727
778
  });
728
- if (!s.ok)
729
- throw new Error(`Storyboard discovery failed (${s.status})`);
730
- const n = await s.json();
731
- if (!Rt(n))
779
+ if (!o.ok)
780
+ throw new Error(`Storyboard discovery failed (${o.status})`);
781
+ const r = await o.json();
782
+ if (!$t(r))
732
783
  throw new Error("Storyboard discovery returned an invalid manifest.");
733
784
  return {
734
- manifest: n,
735
- baselineEnvironment: Ge(n),
736
- graph: Bt({
737
- manifest: n,
785
+ manifest: r,
786
+ baselineEnvironment: We(r),
787
+ graph: Vt({
788
+ manifest: r,
738
789
  pages: e.pages,
739
790
  assets: e.assets
740
791
  })
741
792
  };
742
793
  }
743
- async function an(e) {
744
- ee(null);
794
+ async function mn(e) {
795
+ ne(null);
745
796
  try {
746
- const t = await Je(e);
747
- return ee(t.graph), t;
797
+ const t = await Le(e);
798
+ return ne(t.graph), t;
748
799
  } catch (t) {
749
- throw ee(null), t;
800
+ throw ne(null), t;
750
801
  }
751
802
  }
752
- const fe = "var(--pygmalion-catalog-surface, #ffffff)", he = "var(--pygmalion-catalog-canvas, #f5f5f5)", Ie = "var(--pygmalion-catalog-border, #e5e7eb)", me = "var(--pygmalion-catalog-text, #202124)", U = "var(--pygmalion-catalog-muted, #6b7280)", Ut = "var(--pygmalion-catalog-header, #11182f)", Ht = "var(--pygmalion-catalog-accent, #7c6cf2)";
753
- function cn({
803
+ const ge = "var(--pygmalion-catalog-surface, #ffffff)", he = "var(--pygmalion-catalog-canvas, #f5f5f5)", Ee = "var(--pygmalion-catalog-border, #e5e7eb)", ye = "var(--pygmalion-catalog-text, #202124)", B = "var(--pygmalion-catalog-muted, #6b7280)", Jt = "var(--pygmalion-catalog-header, #11182f)", Wt = "var(--pygmalion-catalog-accent, #7c6cf2)";
804
+ function pn({
754
805
  title: e,
755
806
  eyebrow: t,
756
- description: s,
757
- version: n,
758
- meta: r,
759
- children: o,
760
- headerBackground: a = Ut,
761
- headerColor: c = "#ffffff",
762
- bodyBackground: u = fe,
807
+ description: o,
808
+ version: r,
809
+ meta: n,
810
+ children: s,
811
+ headerBackground: c = Jt,
812
+ headerColor: d = "#ffffff",
813
+ bodyBackground: u = ge,
763
814
  bodyGap: g = 40
764
815
  }) {
765
- return /* @__PURE__ */ $(
816
+ return /* @__PURE__ */ A(
766
817
  "section",
767
818
  {
768
819
  "data-pygmalion-catalog-document": "",
@@ -774,12 +825,12 @@ function cn({
774
825
  maxWidth: "none",
775
826
  flexDirection: "column",
776
827
  overflow: "visible",
777
- color: me,
828
+ color: ye,
778
829
  background: u,
779
830
  fontFamily: "Inter, ui-sans-serif, system-ui, sans-serif"
780
831
  },
781
832
  children: [
782
- /* @__PURE__ */ $(
833
+ /* @__PURE__ */ A(
783
834
  "header",
784
835
  {
785
836
  style: {
@@ -789,12 +840,12 @@ function cn({
789
840
  justifyContent: "space-between",
790
841
  gap: 48,
791
842
  padding: "44px 48px 48px",
792
- color: c,
793
- background: a
843
+ color: d,
844
+ background: c
794
845
  },
795
846
  children: [
796
- /* @__PURE__ */ $("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
797
- t ? /* @__PURE__ */ v(
847
+ /* @__PURE__ */ A("div", { style: { display: "flex", flexDirection: "column", gap: 10 }, children: [
848
+ t ? /* @__PURE__ */ b(
798
849
  "div",
799
850
  {
800
851
  style: {
@@ -807,7 +858,7 @@ function cn({
807
858
  children: t
808
859
  }
809
860
  ) : null,
810
- /* @__PURE__ */ v(
861
+ /* @__PURE__ */ b(
811
862
  "h1",
812
863
  {
813
864
  style: {
@@ -821,7 +872,7 @@ function cn({
821
872
  children: e
822
873
  }
823
874
  ),
824
- s ? /* @__PURE__ */ v(
875
+ o ? /* @__PURE__ */ b(
825
876
  "div",
826
877
  {
827
878
  style: {
@@ -830,11 +881,11 @@ function cn({
830
881
  fontSize: 13,
831
882
  lineHeight: 1.55
832
883
  },
833
- children: s
884
+ children: o
834
885
  }
835
886
  ) : null
836
887
  ] }),
837
- n || r ? /* @__PURE__ */ $(
888
+ r || n ? /* @__PURE__ */ A(
838
889
  "div",
839
890
  {
840
891
  style: {
@@ -846,15 +897,15 @@ function cn({
846
897
  whiteSpace: "nowrap"
847
898
  },
848
899
  children: [
849
- n ? /* @__PURE__ */ v("span", { children: n }) : null,
850
- r ? /* @__PURE__ */ v("span", { children: r }) : null
900
+ r ? /* @__PURE__ */ b("span", { children: r }) : null,
901
+ n ? /* @__PURE__ */ b("span", { children: n }) : null
851
902
  ]
852
903
  }
853
904
  ) : null
854
905
  ]
855
906
  }
856
907
  ),
857
- /* @__PURE__ */ v(
908
+ /* @__PURE__ */ b(
858
909
  "div",
859
910
  {
860
911
  "data-pygmalion-catalog-document-body": "",
@@ -867,22 +918,22 @@ function cn({
867
918
  padding: 48,
868
919
  background: u
869
920
  },
870
- children: o
921
+ children: s
871
922
  }
872
923
  )
873
924
  ]
874
925
  }
875
926
  );
876
927
  }
877
- function ln({
928
+ function gn({
878
929
  title: e,
879
930
  itemId: t,
880
- count: s,
881
- description: n,
882
- children: r,
883
- tone: o = "tinted"
931
+ count: o,
932
+ description: r,
933
+ children: n,
934
+ tone: s = "tinted"
884
935
  }) {
885
- return /* @__PURE__ */ $(
936
+ return /* @__PURE__ */ A(
886
937
  "section",
887
938
  {
888
939
  "data-pygmalion-catalog-section": "",
@@ -894,12 +945,12 @@ function ln({
894
945
  flexDirection: "column",
895
946
  alignItems: "flex-start",
896
947
  gap: 18,
897
- padding: o === "tinted" ? 24 : 0,
898
- background: o === "tinted" ? he : "transparent"
948
+ padding: s === "tinted" ? 24 : 0,
949
+ background: s === "tinted" ? he : "transparent"
899
950
  },
900
951
  children: [
901
- /* @__PURE__ */ $("header", { style: { display: "flex", alignItems: "baseline", gap: 8 }, children: [
902
- /* @__PURE__ */ v(
952
+ /* @__PURE__ */ A("header", { style: { display: "flex", alignItems: "baseline", gap: 8 }, children: [
953
+ /* @__PURE__ */ b(
903
954
  "h2",
904
955
  {
905
956
  style: {
@@ -911,25 +962,25 @@ function ln({
911
962
  children: e
912
963
  }
913
964
  ),
914
- typeof s == "number" ? /* @__PURE__ */ v("span", { style: { color: U, fontSize: 11 }, children: s }) : null
965
+ typeof o == "number" ? /* @__PURE__ */ b("span", { style: { color: B, fontSize: 11 }, children: o }) : null
915
966
  ] }),
916
- n ? /* @__PURE__ */ v("div", { style: { marginTop: -10, color: U, fontSize: 11 }, children: n }) : null,
917
- r
967
+ r ? /* @__PURE__ */ b("div", { style: { marginTop: -10, color: B, fontSize: 11 }, children: r }) : null,
968
+ n
918
969
  ]
919
970
  }
920
971
  );
921
972
  }
922
- function dn({
973
+ function hn({
923
974
  rows: e,
924
975
  columns: t,
925
- cornerLabel: s,
926
- renderCell: n,
927
- renderRowLabel: r = (u) => u,
928
- renderColumnLabel: o = (u) => u,
929
- boundary: a = !0,
930
- cellStyle: c
976
+ cornerLabel: o,
977
+ renderCell: r,
978
+ renderRowLabel: n = (u) => u,
979
+ renderColumnLabel: s = (u) => u,
980
+ boundary: c = !0,
981
+ cellStyle: d
931
982
  }) {
932
- return /* @__PURE__ */ v(
983
+ return /* @__PURE__ */ b(
933
984
  "div",
934
985
  {
935
986
  "data-pygmalion-catalog-matrix": "",
@@ -937,11 +988,11 @@ function dn({
937
988
  boxSizing: "border-box",
938
989
  display: "inline-block",
939
990
  width: "max-content",
940
- padding: a ? 16 : 0,
941
- border: a ? `1px dashed ${Ht}` : void 0,
942
- borderRadius: a ? 4 : void 0
991
+ padding: c ? 16 : 0,
992
+ border: c ? `1px dashed ${Wt}` : void 0,
993
+ borderRadius: c ? 4 : void 0
943
994
  },
944
- children: /* @__PURE__ */ $(
995
+ children: /* @__PURE__ */ A(
945
996
  "table",
946
997
  {
947
998
  style: {
@@ -950,62 +1001,62 @@ function dn({
950
1001
  borderSpacing: 0
951
1002
  },
952
1003
  children: [
953
- /* @__PURE__ */ v("thead", { children: /* @__PURE__ */ $("tr", { children: [
954
- /* @__PURE__ */ v(
1004
+ /* @__PURE__ */ b("thead", { children: /* @__PURE__ */ A("tr", { children: [
1005
+ /* @__PURE__ */ b(
955
1006
  "th",
956
1007
  {
957
1008
  style: {
958
1009
  padding: "0 16px 12px 0",
959
- color: U,
1010
+ color: B,
960
1011
  fontSize: 10,
961
1012
  fontWeight: 600,
962
1013
  textAlign: "left",
963
1014
  whiteSpace: "nowrap"
964
1015
  },
965
- children: s
1016
+ children: o
966
1017
  }
967
1018
  ),
968
- t.map((u) => /* @__PURE__ */ v(
1019
+ t.map((u) => /* @__PURE__ */ b(
969
1020
  "th",
970
1021
  {
971
1022
  style: {
972
1023
  padding: "0 16px 12px",
973
- color: U,
1024
+ color: B,
974
1025
  fontSize: 10,
975
1026
  fontWeight: 600,
976
1027
  textAlign: "center",
977
1028
  whiteSpace: "nowrap"
978
1029
  },
979
- children: o(u)
1030
+ children: s(u)
980
1031
  },
981
1032
  u
982
1033
  ))
983
1034
  ] }) }),
984
- /* @__PURE__ */ v("tbody", { children: e.map((u) => /* @__PURE__ */ $("tr", { children: [
985
- /* @__PURE__ */ v(
1035
+ /* @__PURE__ */ b("tbody", { children: e.map((u) => /* @__PURE__ */ A("tr", { children: [
1036
+ /* @__PURE__ */ b(
986
1037
  "th",
987
1038
  {
988
1039
  style: {
989
1040
  padding: "12px 16px 12px 0",
990
- color: U,
1041
+ color: B,
991
1042
  fontSize: 10,
992
1043
  fontWeight: 600,
993
1044
  textAlign: "left",
994
1045
  whiteSpace: "nowrap"
995
1046
  },
996
- children: r(u)
1047
+ children: n(u)
997
1048
  }
998
1049
  ),
999
- t.map((g) => /* @__PURE__ */ v(
1050
+ t.map((g) => /* @__PURE__ */ b(
1000
1051
  "td",
1001
1052
  {
1002
1053
  style: {
1003
1054
  padding: "12px 16px",
1004
1055
  textAlign: "center",
1005
1056
  verticalAlign: "middle",
1006
- ...c
1057
+ ...d
1007
1058
  },
1008
- children: n(u, g)
1059
+ children: r(u, g)
1009
1060
  },
1010
1061
  g
1011
1062
  ))
@@ -1016,14 +1067,14 @@ function dn({
1016
1067
  }
1017
1068
  );
1018
1069
  }
1019
- function qt(e) {
1070
+ function Lt(e) {
1020
1071
  return e.normalize("NFKD").replace(/[\u0300-\u036f]/g, "").replace(/[^\p{L}\p{N}]+/gu, "-").replace(/^-+|-+$/g, "").toLowerCase() || "page";
1021
1072
  }
1022
- function Ve(e, t, s = "PygmalionCatalog") {
1023
- const n = (r) => qt(r).replace(/-/g, "_");
1024
- return `${s}_${n(e)}_${n(t)}`;
1073
+ function Qe(e, t, o = "PygmalionCatalog") {
1074
+ const r = (n) => Lt(n).replace(/-/g, "_");
1075
+ return `${o}_${r(e)}_${r(t)}`;
1025
1076
  }
1026
- function We(e, t) {
1077
+ function Xe(e, t) {
1027
1078
  return {
1028
1079
  id: e.id,
1029
1080
  name: e.name,
@@ -1034,25 +1085,25 @@ function We(e, t) {
1034
1085
  description: e.description
1035
1086
  };
1036
1087
  }
1037
- function Qe(e) {
1088
+ function Ye(e) {
1038
1089
  const t = /* @__PURE__ */ new Set();
1039
- for (const s of e) {
1040
- if (t.has(s.id))
1041
- throw new Error(`Duplicate design catalog item id: ${s.id}`);
1042
- t.add(s.id);
1090
+ for (const o of e) {
1091
+ if (t.has(o.id))
1092
+ throw new Error(`Duplicate design catalog item id: ${o.id}`);
1093
+ t.add(o.id);
1043
1094
  }
1044
1095
  }
1045
- function Kt(e, t, s) {
1046
- return typeof e == "function" ? e(t, s) : e;
1096
+ function Qt(e, t, o) {
1097
+ return typeof e == "function" ? e(t, o) : e;
1047
1098
  }
1048
- function Gt({
1099
+ function Xt({
1049
1100
  page: e,
1050
1101
  items: t,
1051
- renderPreview: s,
1052
- secondaryLabel: n,
1053
- minimumColumnWidth: r
1102
+ renderPreview: o,
1103
+ secondaryLabel: r,
1104
+ minimumColumnWidth: n
1054
1105
  }) {
1055
- return /* @__PURE__ */ $(
1106
+ return /* @__PURE__ */ A(
1056
1107
  "section",
1057
1108
  {
1058
1109
  "data-pygmalion-catalog-page": e.id,
@@ -1062,19 +1113,19 @@ function Gt({
1062
1113
  display: "inline-block",
1063
1114
  width: "max-content",
1064
1115
  padding: 32,
1065
- color: me,
1116
+ color: ye,
1066
1117
  background: he,
1067
1118
  fontFamily: "Inter, ui-sans-serif, system-ui, sans-serif"
1068
1119
  },
1069
1120
  children: [
1070
- /* @__PURE__ */ $("header", { style: { marginBottom: 24 }, children: [
1071
- /* @__PURE__ */ v("h1", { style: { margin: 0, fontSize: 24, lineHeight: 1.35 }, children: e.name }),
1072
- /* @__PURE__ */ $("p", { style: { margin: "6px 0 0", color: U, fontSize: 13 }, children: [
1121
+ /* @__PURE__ */ A("header", { style: { marginBottom: 24 }, children: [
1122
+ /* @__PURE__ */ b("h1", { style: { margin: 0, fontSize: 24, lineHeight: 1.35 }, children: e.name }),
1123
+ /* @__PURE__ */ A("p", { style: { margin: "6px 0 0", color: B, fontSize: 13 }, children: [
1073
1124
  t.length,
1074
1125
  " assets"
1075
1126
  ] })
1076
1127
  ] }),
1077
- /* @__PURE__ */ v(
1128
+ /* @__PURE__ */ b(
1078
1129
  "div",
1079
1130
  {
1080
1131
  style: {
@@ -1082,20 +1133,20 @@ function Gt({
1082
1133
  gridTemplateColumns: "repeat(6, max-content)",
1083
1134
  gap: 16
1084
1135
  },
1085
- children: t.map((o) => /* @__PURE__ */ $(
1136
+ children: t.map((s) => /* @__PURE__ */ A(
1086
1137
  "article",
1087
1138
  {
1088
- "data-pygmalion-catalog-item": o.id,
1139
+ "data-pygmalion-catalog-item": s.id,
1089
1140
  style: {
1090
- minWidth: r,
1091
- width: r,
1141
+ minWidth: n,
1142
+ width: n,
1092
1143
  padding: 16,
1093
- border: `1px solid ${Ie}`,
1144
+ border: `1px solid ${Ee}`,
1094
1145
  borderRadius: 12,
1095
- background: fe
1146
+ background: ge
1096
1147
  },
1097
1148
  children: [
1098
- /* @__PURE__ */ v(
1149
+ /* @__PURE__ */ b(
1099
1150
  "div",
1100
1151
  {
1101
1152
  style: {
@@ -1105,10 +1156,10 @@ function Gt({
1105
1156
  justifyContent: "center",
1106
1157
  overflow: "hidden"
1107
1158
  },
1108
- children: s(o)
1159
+ children: o(s)
1109
1160
  }
1110
1161
  ),
1111
- /* @__PURE__ */ v(
1162
+ /* @__PURE__ */ b(
1112
1163
  "div",
1113
1164
  {
1114
1165
  style: {
@@ -1119,29 +1170,29 @@ function Gt({
1119
1170
  textOverflow: "ellipsis",
1120
1171
  whiteSpace: "nowrap"
1121
1172
  },
1122
- title: o.name,
1123
- children: o.name
1173
+ title: s.name,
1174
+ children: s.name
1124
1175
  }
1125
1176
  ),
1126
- n ? /* @__PURE__ */ v("div", { style: { marginTop: 4, color: U, fontSize: 11, lineHeight: 1.45 }, children: n(o) }) : o.codeName ? /* @__PURE__ */ v(
1177
+ r ? /* @__PURE__ */ b("div", { style: { marginTop: 4, color: B, fontSize: 11, lineHeight: 1.45 }, children: r(s) }) : s.codeName ? /* @__PURE__ */ b(
1127
1178
  "div",
1128
1179
  {
1129
1180
  style: {
1130
1181
  marginTop: 4,
1131
1182
  overflow: "hidden",
1132
- color: U,
1183
+ color: B,
1133
1184
  fontFamily: "ui-monospace, SFMono-Regular, Menlo, monospace",
1134
1185
  fontSize: 11,
1135
1186
  textOverflow: "ellipsis",
1136
1187
  whiteSpace: "nowrap"
1137
1188
  },
1138
- title: o.codeName,
1139
- children: o.codeName
1189
+ title: s.codeName,
1190
+ children: s.codeName
1140
1191
  }
1141
1192
  ) : null
1142
1193
  ]
1143
1194
  },
1144
- o.id
1195
+ s.id
1145
1196
  ))
1146
1197
  }
1147
1198
  )
@@ -1149,86 +1200,86 @@ function Gt({
1149
1200
  }
1150
1201
  );
1151
1202
  }
1152
- function un(e) {
1153
- Qe(e.items);
1203
+ function yn(e) {
1204
+ Ye(e.items);
1154
1205
  const t = /* @__PURE__ */ new Map();
1155
- for (const r of e.items) {
1156
- const o = e.pageFor(r), a = t.get(o.id);
1157
- if (a) {
1158
- if (a.page.name !== o.name || a.page.section !== o.section)
1159
- throw new Error(`Conflicting design catalog page descriptor: ${o.id}`);
1160
- a.items.push(r);
1206
+ for (const n of e.items) {
1207
+ const s = e.pageFor(n), c = t.get(s.id);
1208
+ if (c) {
1209
+ if (c.page.name !== s.name || c.page.section !== s.section)
1210
+ throw new Error(`Conflicting design catalog page descriptor: ${s.id}`);
1211
+ c.items.push(n);
1161
1212
  continue;
1162
1213
  }
1163
- t.set(o.id, {
1164
- page: o,
1165
- items: [r],
1166
- registryName: Ve(
1214
+ t.set(s.id, {
1215
+ page: s,
1216
+ items: [n],
1217
+ registryName: Qe(
1167
1218
  e.kind,
1168
- o.id,
1219
+ s.id,
1169
1220
  e.registryPrefix
1170
1221
  )
1171
1222
  });
1172
1223
  }
1173
- const s = {}, n = [];
1174
- for (const r of t.values()) {
1175
- const o = () => /* @__PURE__ */ v(
1176
- Gt,
1224
+ const o = {}, r = [];
1225
+ for (const n of t.values()) {
1226
+ const s = () => /* @__PURE__ */ b(
1227
+ Xt,
1177
1228
  {
1178
- page: r.page,
1179
- items: r.items,
1229
+ page: n.page,
1230
+ items: n.items,
1180
1231
  renderPreview: e.renderPreview,
1181
1232
  secondaryLabel: e.secondaryLabel,
1182
1233
  minimumColumnWidth: e.minimumColumnWidth ?? 152
1183
1234
  }
1184
1235
  );
1185
- s[r.registryName] = {
1186
- component: o,
1236
+ o[n.registryName] = {
1237
+ component: s,
1187
1238
  children: "none"
1188
1239
  };
1189
- const a = Kt(e.frame, r.page, r.items);
1190
- n.push({
1191
- ...r.page,
1192
- componentName: r.registryName,
1193
- width: (a == null ? void 0 : a.width) ?? 1,
1194
- height: (a == null ? void 0 : a.height) ?? 1,
1195
- frameSizeMode: a ? "fixed" : "content"
1240
+ const c = Qt(e.frame, n.page, n.items);
1241
+ r.push({
1242
+ ...n.page,
1243
+ componentName: n.registryName,
1244
+ width: (c == null ? void 0 : c.width) ?? 1,
1245
+ height: (c == null ? void 0 : c.height) ?? 1,
1246
+ frameSizeMode: c ? "fixed" : "content"
1196
1247
  });
1197
1248
  }
1198
1249
  return {
1199
- registry: s,
1250
+ registry: o,
1200
1251
  collection: {
1201
1252
  expectedCount: e.expectedCount ?? e.items.length,
1202
- assets: e.items.map((r) => We(r, e.pageFor(r).id)),
1203
- pages: n
1253
+ assets: e.items.map((n) => Xe(n, e.pageFor(n).id)),
1254
+ pages: r
1204
1255
  }
1205
1256
  };
1206
1257
  }
1207
- function Jt(e, t = 60) {
1208
- const s = Object.entries((e == null ? void 0 : e.props) ?? {}).filter(([, c]) => c.length > 0).sort(([c, u], [g, h]) => h.length - u.length || c.localeCompare(g)), n = s[0], r = s[1], o = Math.max(1, (n == null ? void 0 : n[1].length) ?? 1), a = r == null ? void 0 : r[1].slice(0, Math.max(1, Math.floor(t / o)));
1258
+ function Yt(e, t = 60) {
1259
+ const o = Object.entries((e == null ? void 0 : e.props) ?? {}).filter(([, d]) => d.length > 0).sort(([d, u], [g, m]) => m.length - u.length || d.localeCompare(g)), r = o[0], n = o[1], s = Math.max(1, (r == null ? void 0 : r[1].length) ?? 1), c = n == null ? void 0 : n[1].slice(0, Math.max(1, Math.floor(t / s)));
1209
1260
  return {
1210
- row: n,
1211
- column: r ? [r[0], a ?? []] : void 0,
1212
- fixed: s.slice(2).map(([c, u]) => [c, u[0]]),
1213
- additional: s.slice(2)
1261
+ row: r,
1262
+ column: n ? [n[0], c ?? []] : void 0,
1263
+ fixed: o.slice(2).map(([d, u]) => [d, u[0]]),
1264
+ additional: o.slice(2)
1214
1265
  };
1215
1266
  }
1216
- function Vt(e, t, s, n) {
1267
+ function Zt(e, t, o, r) {
1217
1268
  return {
1218
1269
  ...e.defaultProps,
1219
1270
  ...Object.fromEntries(t.fixed),
1220
- ...t.row && s ? { [t.row[0]]: s } : {},
1221
- ...t.column && n ? { [t.column[0]]: n } : {}
1271
+ ...t.row && o ? { [t.row[0]]: o } : {},
1272
+ ...t.column && r ? { [t.column[0]]: r } : {}
1222
1273
  };
1223
1274
  }
1224
- function Wt({
1275
+ function en({
1225
1276
  item: e,
1226
1277
  entry: t,
1227
- maxVariantCells: s
1278
+ maxVariantCells: o
1228
1279
  }) {
1229
- var c, u;
1280
+ var d, u;
1230
1281
  if (!t)
1231
- return /* @__PURE__ */ $(
1282
+ return /* @__PURE__ */ A(
1232
1283
  "section",
1233
1284
  {
1234
1285
  "data-pygmalion-catalog-component": e.id,
@@ -1238,17 +1289,17 @@ function Wt({
1238
1289
  display: "inline-block",
1239
1290
  width: "max-content",
1240
1291
  padding: 32,
1241
- color: me,
1292
+ color: ye,
1242
1293
  background: he
1243
1294
  },
1244
1295
  children: [
1245
- /* @__PURE__ */ v("strong", { children: e.name }),
1246
- /* @__PURE__ */ v("p", { style: { color: U }, children: "The component is not registered." })
1296
+ /* @__PURE__ */ b("strong", { children: e.name }),
1297
+ /* @__PURE__ */ b("p", { style: { color: B }, children: "The component is not registered." })
1247
1298
  ]
1248
1299
  }
1249
1300
  );
1250
- const n = Jt(t, s), r = ((c = n.row) == null ? void 0 : c[1]) ?? [void 0], o = ((u = n.column) == null ? void 0 : u[1]) ?? [void 0], a = t.component;
1251
- return /* @__PURE__ */ $(
1301
+ const r = Yt(t, o), n = ((d = r.row) == null ? void 0 : d[1]) ?? [void 0], s = ((u = r.column) == null ? void 0 : u[1]) ?? [void 0], c = t.component;
1302
+ return /* @__PURE__ */ A(
1252
1303
  "section",
1253
1304
  {
1254
1305
  "data-pygmalion-catalog-component": e.id,
@@ -1258,262 +1309,262 @@ function Wt({
1258
1309
  display: "inline-block",
1259
1310
  width: "max-content",
1260
1311
  padding: 32,
1261
- color: me,
1312
+ color: ye,
1262
1313
  background: he,
1263
1314
  fontFamily: "Inter, ui-sans-serif, system-ui, sans-serif"
1264
1315
  },
1265
1316
  children: [
1266
- /* @__PURE__ */ $("header", { style: { marginBottom: 24 }, children: [
1267
- /* @__PURE__ */ v("h1", { style: { margin: 0, fontSize: 24 }, children: e.name }),
1268
- e.sourcePath ? /* @__PURE__ */ v("p", { style: { margin: "6px 0 0", color: U, fontSize: 12 }, children: e.sourcePath }) : null
1317
+ /* @__PURE__ */ A("header", { style: { marginBottom: 24 }, children: [
1318
+ /* @__PURE__ */ b("h1", { style: { margin: 0, fontSize: 24 }, children: e.name }),
1319
+ e.sourcePath ? /* @__PURE__ */ b("p", { style: { margin: "6px 0 0", color: B, fontSize: 12 }, children: e.sourcePath }) : null
1269
1320
  ] }),
1270
- /* @__PURE__ */ v(
1321
+ /* @__PURE__ */ b(
1271
1322
  "div",
1272
1323
  {
1273
1324
  style: {
1274
1325
  display: "inline-grid",
1275
- gridTemplateColumns: `repeat(${o.length}, max-content)`,
1326
+ gridTemplateColumns: `repeat(${s.length}, max-content)`,
1276
1327
  gap: 12
1277
1328
  },
1278
- children: r.flatMap(
1279
- (g) => o.map((h) => {
1280
- const w = Vt(t, n, g, h), y = [
1281
- n.row && g ? `${n.row[0]}=${g}` : "",
1282
- n.column && h ? `${n.column[0]}=${h}` : ""
1329
+ children: n.flatMap(
1330
+ (g) => s.map((m) => {
1331
+ const y = Zt(t, r, g, m), h = [
1332
+ r.row && g ? `${r.row[0]}=${g}` : "",
1333
+ r.column && m ? `${r.column[0]}=${m}` : ""
1283
1334
  ].filter(Boolean).join(" · ");
1284
- return /* @__PURE__ */ $(
1335
+ return /* @__PURE__ */ A(
1285
1336
  "article",
1286
1337
  {
1287
1338
  style: {
1288
1339
  width: "max-content",
1289
1340
  padding: 16,
1290
- border: `1px solid ${Ie}`,
1341
+ border: `1px solid ${Ee}`,
1291
1342
  borderRadius: 10,
1292
- background: fe
1343
+ background: ge
1293
1344
  },
1294
1345
  children: [
1295
- y ? /* @__PURE__ */ v("div", { style: { marginBottom: 12, color: U, fontSize: 11 }, children: y }) : null,
1296
- /* @__PURE__ */ v("div", { style: { display: "flex", minHeight: 44, alignItems: "center" }, children: Fe(
1297
- a,
1298
- w,
1346
+ h ? /* @__PURE__ */ b("div", { style: { marginBottom: 12, color: B, fontSize: 11 }, children: h }) : null,
1347
+ /* @__PURE__ */ b("div", { style: { display: "flex", minHeight: 44, alignItems: "center" }, children: Te(
1348
+ c,
1349
+ y,
1299
1350
  t.children === "text" ? t.defaultChildren ?? e.name : void 0
1300
1351
  ) })
1301
1352
  ]
1302
1353
  },
1303
- `${g ?? "default"}:${h ?? "default"}`
1354
+ `${g ?? "default"}:${m ?? "default"}`
1304
1355
  );
1305
1356
  })
1306
1357
  )
1307
1358
  }
1308
1359
  ),
1309
- n.additional.map(([g, h]) => /* @__PURE__ */ $("section", { style: { marginTop: 20 }, children: [
1310
- /* @__PURE__ */ v("h2", { style: { margin: "0 0 10px", color: U, fontSize: 12 }, children: g }),
1311
- /* @__PURE__ */ v("div", { style: { display: "flex", flexWrap: "wrap", gap: 12 }, children: h.map((w) => /* @__PURE__ */ $(
1360
+ r.additional.map(([g, m]) => /* @__PURE__ */ A("section", { style: { marginTop: 20 }, children: [
1361
+ /* @__PURE__ */ b("h2", { style: { margin: "0 0 10px", color: B, fontSize: 12 }, children: g }),
1362
+ /* @__PURE__ */ b("div", { style: { display: "flex", flexWrap: "wrap", gap: 12 }, children: m.map((y) => /* @__PURE__ */ A(
1312
1363
  "article",
1313
1364
  {
1314
1365
  style: {
1315
1366
  padding: 16,
1316
- border: `1px solid ${Ie}`,
1367
+ border: `1px solid ${Ee}`,
1317
1368
  borderRadius: 10,
1318
- background: fe
1369
+ background: ge
1319
1370
  },
1320
1371
  children: [
1321
- /* @__PURE__ */ v("div", { style: { marginBottom: 12, color: U, fontSize: 11 }, children: w }),
1322
- Fe(
1323
- a,
1324
- { ...t.defaultProps, [g]: w },
1372
+ /* @__PURE__ */ b("div", { style: { marginBottom: 12, color: B, fontSize: 11 }, children: y }),
1373
+ Te(
1374
+ c,
1375
+ { ...t.defaultProps, [g]: y },
1325
1376
  t.children === "text" ? t.defaultChildren ?? e.name : void 0
1326
1377
  )
1327
1378
  ]
1328
1379
  },
1329
- w
1380
+ y
1330
1381
  )) })
1331
1382
  ] }, g))
1332
1383
  ]
1333
1384
  }
1334
1385
  );
1335
1386
  }
1336
- function fn(e) {
1337
- Qe(e.items);
1338
- const t = {}, s = [], n = [], r = e.maxVariantCells ?? 60;
1339
- for (const o of e.items) {
1340
- const a = Ve(
1387
+ function wn(e) {
1388
+ Ye(e.items);
1389
+ const t = {}, o = [], r = [], n = e.maxVariantCells ?? 60;
1390
+ for (const s of e.items) {
1391
+ const c = Qe(
1341
1392
  e.kind,
1342
- o.id,
1393
+ s.id,
1343
1394
  e.registryPrefix
1344
- ), c = e.registry[o.name], u = () => /* @__PURE__ */ v(
1345
- Wt,
1395
+ ), d = e.registry[s.name], u = () => /* @__PURE__ */ b(
1396
+ en,
1346
1397
  {
1347
- item: o,
1348
- entry: c,
1349
- maxVariantCells: r
1398
+ item: s,
1399
+ entry: d,
1400
+ maxVariantCells: n
1350
1401
  }
1351
1402
  );
1352
- t[a] = { component: u, children: "none" }, s.push({
1353
- id: o.id,
1354
- name: o.name,
1355
- section: o.section,
1356
- componentName: a,
1403
+ t[c] = { component: u, children: "none" }, o.push({
1404
+ id: s.id,
1405
+ name: s.name,
1406
+ section: s.section,
1407
+ componentName: c,
1357
1408
  // The seed exists only long enough to mount the intrinsic max-content
1358
1409
  // catalog root. The editor replaces it with actual rendered DOM bounds.
1359
1410
  width: 1,
1360
1411
  height: 1,
1361
1412
  frameSizeMode: "content"
1362
- }), n.push(We(o, o.id));
1413
+ }), r.push(Xe(s, s.id));
1363
1414
  }
1364
1415
  return {
1365
1416
  registry: t,
1366
1417
  collection: {
1367
1418
  expectedCount: e.expectedCount ?? e.items.length,
1368
- assets: n,
1369
- pages: s
1419
+ assets: r,
1420
+ pages: o
1370
1421
  }
1371
1422
  };
1372
1423
  }
1373
- const je = /^[a-f0-9]{64}$/, Qt = /^\/__pygmalion-qa\/artifacts\/[A-Za-z0-9_-]{8,120}\.png$/, Lt = /^p\d+$/;
1374
- function xe(e) {
1375
- return typeof e == "string" && Qt.test(e) ? e : void 0;
1424
+ const Ue = /^[a-f0-9]{64}$/, tn = /^\/__pygmalion-qa\/artifacts\/[A-Za-z0-9_-]{8,120}\.png$/, nn = /^p\d+$/;
1425
+ function Ce(e) {
1426
+ return typeof e == "string" && tn.test(e) ? e : void 0;
1376
1427
  }
1377
- function _e(e, t) {
1378
- const s = new URL(e, t);
1379
- return s.search = "", s.hash = "", s.pathname.endsWith("/") || (s.pathname = `${s.pathname}/`), s.href;
1428
+ function He(e, t) {
1429
+ const o = new URL(e, t);
1430
+ return o.search = "", o.hash = "", o.pathname.endsWith("/") || (o.pathname = `${o.pathname}/`), o.href;
1380
1431
  }
1381
- function we(e) {
1432
+ function ve(e) {
1382
1433
  if (!e || typeof e != "object" || Array.isArray(e)) return null;
1383
1434
  const t = e;
1384
- return typeof t.domStructureHash != "string" || !je.test(t.domStructureHash) || typeof t.screenshotHash != "string" || !je.test(t.screenshotHash) ? null : {
1435
+ return typeof t.domStructureHash != "string" || !Ue.test(t.domStructureHash) || typeof t.screenshotHash != "string" || !Ue.test(t.screenshotHash) ? null : {
1385
1436
  domStructureHash: t.domStructureHash,
1386
1437
  screenshotHash: t.screenshotHash,
1387
- ...xe(t.screenshotUrl) ? { screenshotUrl: xe(t.screenshotUrl) } : {}
1438
+ ...Ce(t.screenshotUrl) ? { screenshotUrl: Ce(t.screenshotUrl) } : {}
1388
1439
  };
1389
1440
  }
1390
- function Be(e) {
1441
+ function qe(e) {
1391
1442
  if (!e || typeof e != "object" || Array.isArray(e)) return null;
1392
1443
  const t = e;
1393
1444
  return !Number.isSafeInteger(t.width) || !Number.isSafeInteger(t.height) || Number(t.width) < 1 || Number(t.height) < 1 || Number(t.width) > 65536 || Number(t.height) > 65536 ? null : { width: Number(t.width), height: Number(t.height) };
1394
1445
  }
1395
- function Xt(e) {
1446
+ function rn(e) {
1396
1447
  if (!e || typeof e != "object" || Array.isArray(e)) return null;
1397
- const t = e, s = Be(t.before), n = Be(t.after);
1398
- if (!s || !n || !Number.isSafeInteger(t.changedPixels) || !Number.isSafeInteger(t.totalPixels) || Number(t.changedPixels) < 0 || Number(t.totalPixels) < 1 || Number(t.changedPixels) > Number(t.totalPixels) || typeof t.threshold != "number" || !Number.isFinite(t.threshold) || t.threshold < 0 || t.threshold > 1)
1448
+ const t = e, o = qe(t.before), r = qe(t.after);
1449
+ if (!o || !r || !Number.isSafeInteger(t.changedPixels) || !Number.isSafeInteger(t.totalPixels) || Number(t.changedPixels) < 0 || Number(t.totalPixels) < 1 || Number(t.changedPixels) > Number(t.totalPixels) || typeof t.threshold != "number" || !Number.isFinite(t.threshold) || t.threshold < 0 || t.threshold > 1)
1399
1450
  return null;
1400
- const r = t.heatmapUrl == null ? null : xe(t.heatmapUrl) ?? null;
1451
+ const n = t.heatmapUrl == null ? null : Ce(t.heatmapUrl) ?? null;
1401
1452
  return {
1402
- before: s,
1403
- after: n,
1404
- dimensionsMatch: s.width === n.width && s.height === n.height,
1453
+ before: o,
1454
+ after: r,
1455
+ dimensionsMatch: o.width === r.width && o.height === r.height,
1405
1456
  changedPixels: Number(t.changedPixels),
1406
1457
  totalPixels: Number(t.totalPixels),
1407
1458
  diffRatio: Number(t.changedPixels) / Number(t.totalPixels),
1408
1459
  threshold: t.threshold,
1409
- heatmapUrl: r
1460
+ heatmapUrl: n
1410
1461
  };
1411
1462
  }
1412
- function Yt(e, t) {
1463
+ function on(e, t) {
1413
1464
  if (!e || typeof e != "object" || Array.isArray(e)) return null;
1414
- const s = e;
1415
- if (typeof s.id != "string" || !s.id) return null;
1416
- const n = we(s), r = we(s.before) ?? n;
1417
- if (!r) return null;
1418
- const o = we(s.after);
1419
- if (t === "changed" && !o) return null;
1420
- const a = o ? Xt(s.pixelDiff) : null;
1465
+ const o = e;
1466
+ if (typeof o.id != "string" || !o.id) return null;
1467
+ const r = ve(o), n = ve(o.before) ?? r;
1468
+ if (!n) return null;
1469
+ const s = ve(o.after);
1470
+ if (t === "changed" && !s) return null;
1471
+ const c = s ? rn(o.pixelDiff) : null;
1421
1472
  return {
1422
- id: s.id,
1423
- before: r,
1424
- ...o ? { after: o } : {},
1425
- ...o ? {
1426
- domChanged: r.domStructureHash !== o.domStructureHash,
1427
- screenshotChanged: r.screenshotHash !== o.screenshotHash
1473
+ id: o.id,
1474
+ before: n,
1475
+ ...s ? { after: s } : {},
1476
+ ...s ? {
1477
+ domChanged: n.domStructureHash !== s.domStructureHash,
1478
+ screenshotChanged: n.screenshotHash !== s.screenshotHash
1428
1479
  } : {},
1429
- ...a ? { pixelDiff: a } : {}
1480
+ ...c ? { pixelDiff: c } : {}
1430
1481
  };
1431
1482
  }
1432
- function Zt(e, t = []) {
1433
- const s = new Set(t), n = s.size > 0, r = /* @__PURE__ */ new Set(), o = [
1434
- ...e.styles.map((a) => a.affectedFrames ?? []),
1435
- ...e.texts.map((a) => a.affectedFrames ?? []),
1436
- ...e.operations.map((a) => a.affectedFrames ?? [])
1483
+ function sn(e, t = []) {
1484
+ const o = new Set(t), r = o.size > 0, n = /* @__PURE__ */ new Set(), s = [
1485
+ ...e.styles.map((c) => c.affectedFrames ?? []),
1486
+ ...e.texts.map((c) => c.affectedFrames ?? []),
1487
+ ...e.operations.map((c) => c.affectedFrames ?? [])
1437
1488
  ];
1438
- for (const a of o)
1439
- for (const c of a) {
1440
- if (n && Lt.test(c.id) && !s.has(c.id))
1489
+ for (const c of s)
1490
+ for (const d of c) {
1491
+ if (r && nn.test(d.id) && !o.has(d.id))
1441
1492
  throw new Error(
1442
- `"Impact Screen"${c.name}"This internal editor ID (${c.id}) is used. A canonical screen ID is required.`
1493
+ `"Impact Screen"${d.name}"This internal editor ID (${d.id}) is used. A canonical screen ID is required.`
1443
1494
  );
1444
- !c.id || n && !s.has(c.id) || r.add(c.id);
1495
+ !d.id || r && !o.has(d.id) || n.add(d.id);
1445
1496
  }
1446
- return [...r].sort();
1497
+ return [...n].sort();
1447
1498
  }
1448
- async function Ue(e, t, s) {
1449
- const n = await e(`${t.replace(/\/$/, "")}/capture`, {
1499
+ async function Ge(e, t, o) {
1500
+ const r = await e(`${t.replace(/\/$/, "")}/capture`, {
1450
1501
  method: "POST",
1451
1502
  headers: { "content-type": "application/json" },
1452
- body: JSON.stringify(s)
1453
- }), r = await n.json();
1454
- if (!n.ok || r.ok === !1)
1503
+ body: JSON.stringify(o)
1504
+ }), n = await r.json();
1505
+ if (!r.ok || n.ok === !1)
1455
1506
  throw new Error(
1456
- typeof r.error == "string" ? r.error : `Pygmalion visual QA capture failed (${n.status})`
1507
+ typeof n.error == "string" ? n.error : `Pygmalion visual QA capture failed (${r.status})`
1457
1508
  );
1458
- if (typeof r.baselineId != "string" || !r.baselineId)
1509
+ if (typeof n.baselineId != "string" || !n.baselineId)
1459
1510
  throw new Error("Pygmalion visual QA response has no baselineId");
1460
- const o = Array.isArray(r.frames) ? r.frames.map((h) => Yt(h, s.phase)).filter((h) => h != null) : [], a = Array.isArray(r.failures) ? r.failures.map((h) => {
1461
- if (!h || typeof h != "object" || Array.isArray(h)) return null;
1462
- const w = h;
1463
- return typeof w.id == "string" && typeof w.error == "string" ? { id: w.id, error: w.error } : null;
1464
- }).filter((h) => h != null) : [], c = new Set(s.frameIds), g = new Set(o.map((h) => h.id)).size === o.length && o.every((h) => c.has(h.id)) && a.every((h) => c.has(h.id));
1511
+ const s = Array.isArray(n.frames) ? n.frames.map((m) => on(m, o.phase)).filter((m) => m != null) : [], c = Array.isArray(n.failures) ? n.failures.map((m) => {
1512
+ if (!m || typeof m != "object" || Array.isArray(m)) return null;
1513
+ const y = m;
1514
+ return typeof y.id == "string" && typeof y.error == "string" ? { id: y.id, error: y.error } : null;
1515
+ }).filter((m) => m != null) : [], d = new Set(o.frameIds), g = new Set(s.map((m) => m.id)).size === s.length && s.every((m) => d.has(m.id)) && c.every((m) => d.has(m.id));
1465
1516
  return {
1466
- phase: s.phase,
1467
- baselineId: r.baselineId,
1468
- complete: r.complete !== !1 && g && a.length === 0 && o.length === s.frameIds.length,
1469
- frames: o,
1470
- failures: a
1517
+ phase: o.phase,
1518
+ baselineId: n.baselineId,
1519
+ complete: n.complete !== !1 && g && c.length === 0 && s.length === o.frameIds.length,
1520
+ frames: s,
1521
+ failures: c
1471
1522
  };
1472
1523
  }
1473
- const be = {
1524
+ const Ie = {
1474
1525
  mirror: "/__pygmalion-dev-control",
1475
1526
  sessions: "/__pygmalion-design-session",
1476
1527
  inspect: "/__pygmalion-inspect"
1477
- }, en = "pygmalion.designSessionId", tn = "/__pygmalion-qa", le = /* @__PURE__ */ new Map();
1478
- function He() {
1528
+ }, an = "pygmalion.designSessionId", cn = "/__pygmalion-qa", me = /* @__PURE__ */ new Map();
1529
+ function Ke() {
1479
1530
  var e;
1480
1531
  return typeof window < "u" && ((e = window.crypto) != null && e.randomUUID) ? window.crypto.randomUUID() : `pygmalion-${Date.now()}-${Math.random().toString(36).slice(2)}`;
1481
1532
  }
1482
- function nn(e, t) {
1533
+ function ln(e, t) {
1483
1534
  if (e) return e;
1484
- const s = le.get(t);
1485
- if (s) return s;
1535
+ const o = me.get(t);
1536
+ if (o) return o;
1486
1537
  try {
1487
- const n = window.localStorage.getItem(t);
1488
- if (n)
1489
- return le.set(t, n), n;
1490
- const r = He();
1491
- return window.localStorage.setItem(t, r), le.set(t, r), r;
1538
+ const r = window.localStorage.getItem(t);
1539
+ if (r)
1540
+ return me.set(t, r), r;
1541
+ const n = Ke();
1542
+ return window.localStorage.setItem(t, n), me.set(t, n), n;
1492
1543
  } catch {
1493
- const n = He();
1494
- return le.set(t, n), n;
1544
+ const r = Ke();
1545
+ return me.set(t, r), r;
1495
1546
  }
1496
1547
  }
1497
- async function W(e) {
1548
+ async function X(e) {
1498
1549
  const t = await e.json();
1499
1550
  if (!e.ok) throw new Error(t.error ?? `Pygmalion request failed (${e.status})`);
1500
1551
  return t;
1501
1552
  }
1502
- function hn(e = {}) {
1503
- var X, x, q, i, d;
1553
+ function Sn(e = {}) {
1554
+ var V, ee, _, J, i;
1504
1555
  const {
1505
1556
  sessionId: t,
1506
- sessionStorageKey: s = en,
1507
- autoStart: n = !0,
1508
- fetcher: r = fetch,
1509
- formatApplyMessage: o
1510
- } = e, a = ((X = e.endpoints) == null ? void 0 : X.mirror) ?? be.mirror, c = ((x = e.endpoints) == null ? void 0 : x.sessions) ?? be.sessions, u = ((q = e.endpoints) == null ? void 0 : q.inspect) ?? be.inspect, g = e.visualQa != null, h = ((i = e.visualQa) == null ? void 0 : i.endpoint) ?? tn, w = JSON.stringify(((d = e.visualQa) == null ? void 0 : d.eligibleFrameIds) ?? []), y = de(
1511
- () => JSON.parse(w),
1512
- [w]
1513
- ), I = de(
1514
- () => nn(t, s),
1515
- [t, s]
1516
- ), [b, A] = re({
1557
+ sessionStorageKey: o = an,
1558
+ autoStart: r = !0,
1559
+ fetcher: n = fetch,
1560
+ formatApplyMessage: s
1561
+ } = e, c = ((V = e.endpoints) == null ? void 0 : V.mirror) ?? Ie.mirror, d = ((ee = e.endpoints) == null ? void 0 : ee.sessions) ?? Ie.sessions, u = ((_ = e.endpoints) == null ? void 0 : _.inspect) ?? Ie.inspect, g = e.visualQa != null, m = ((J = e.visualQa) == null ? void 0 : J.endpoint) ?? cn, y = JSON.stringify(((i = e.visualQa) == null ? void 0 : i.eligibleFrameIds) ?? []), h = ae(
1562
+ () => JSON.parse(y),
1563
+ [y]
1564
+ ), x = ae(
1565
+ () => ln(t, o),
1566
+ [t, o]
1567
+ ), [S, E] = se({
1517
1568
  state: "idle",
1518
1569
  commit: null,
1519
1570
  shortCommit: null,
@@ -1523,300 +1574,300 @@ function hn(e = {}) {
1523
1574
  warning: null,
1524
1575
  error: null,
1525
1576
  appOrigin: null
1526
- }), [m, k] = re(null), [M, D] = re(null), [z, j] = re({
1577
+ }), [f, O] = se(null), [D, k] = se(null), [F, Y] = se({
1527
1578
  refs: [],
1528
1579
  defaultRef: null,
1529
1580
  worktreeRef: null
1530
- }), S = ve(null), R = ve(null), T = Z(
1531
- async (l = !0, f) => {
1532
- if (f != null && S.current && await S.current.catch(() => {
1533
- }), S.current) return S.current;
1534
- const E = (async () => {
1535
- A((C) => ({ ...C, state: "syncing", error: null }));
1581
+ }), v = xe(null), P = xe(null), $ = te(
1582
+ async (a = !0, l) => {
1583
+ if (l != null && v.current && await v.current.catch(() => {
1584
+ }), v.current) return v.current;
1585
+ const p = (async () => {
1586
+ E((I) => ({ ...I, state: "syncing", error: null }));
1536
1587
  try {
1537
- const C = f != null;
1538
- let P = await r(`${a}/${l || C ? "refresh" : "status"}`, {
1539
- method: l || C ? "POST" : "GET",
1540
- ...C ? {
1588
+ const I = l != null;
1589
+ let N = await n(`${c}/${a || I ? "refresh" : "status"}`, {
1590
+ method: a || I ? "POST" : "GET",
1591
+ ...I ? {
1541
1592
  headers: { "content-type": "application/json" },
1542
- body: JSON.stringify({ ref: f })
1593
+ body: JSON.stringify({ ref: l })
1543
1594
  } : {}
1544
- }), p = await W(P);
1545
- const N = Date.now();
1546
- for (; !l && p.state === "syncing" && Date.now() - N < 12e4; )
1547
- await new Promise((K) => window.setTimeout(K, 500)), P = await r(`${a}/status`), p = await W(P);
1548
- if (p.state !== "ready" || !p.appOrigin || !p.commit)
1549
- throw new Error(p.error ?? "Pygmalion could not prepare the source preview");
1550
- const O = await W(
1551
- await r(`${c}/open`, {
1595
+ }), M = await X(N);
1596
+ const q = Date.now();
1597
+ for (; !a && M.state === "syncing" && Date.now() - q < 12e4; )
1598
+ await new Promise((R) => window.setTimeout(R, 500)), N = await n(`${c}/status`), M = await X(N);
1599
+ if (M.state !== "ready" || !M.appOrigin || !M.commit)
1600
+ throw new Error(M.error ?? "Pygmalion could not prepare the source preview");
1601
+ const C = await X(
1602
+ await n(`${d}/open`, {
1552
1603
  method: "POST",
1553
1604
  headers: { "content-type": "application/json" },
1554
- body: JSON.stringify({ sessionId: I, baseDevSha: p.commit })
1605
+ body: JSON.stringify({ sessionId: x, baseDevSha: M.commit })
1555
1606
  })
1556
1607
  );
1557
- if (!O.ok || !O.session)
1558
- throw new Error(O.error ?? "Pygmalion could not open the design session");
1559
- let F = O.session;
1560
- if (F.branchName) {
1561
- const K = await W(
1562
- await r(`${c}/check`, {
1608
+ if (!C.ok || !C.session)
1609
+ throw new Error(C.error ?? "Pygmalion could not open the design session");
1610
+ let w = C.session;
1611
+ if (w.branchName) {
1612
+ const R = await X(
1613
+ await n(`${d}/check`, {
1563
1614
  method: "POST",
1564
1615
  headers: { "content-type": "application/json" },
1565
- body: JSON.stringify({ sessionId: F.id })
1616
+ body: JSON.stringify({ sessionId: w.id })
1566
1617
  })
1567
1618
  );
1568
- if (!K.ok || !K.session)
1569
- throw new Error(K.error ?? "Pygmalion could not check the design session");
1570
- F = K.session;
1619
+ if (!R.ok || !R.session)
1620
+ throw new Error(R.error ?? "Pygmalion could not check the design session");
1621
+ w = R.session;
1571
1622
  }
1572
- A(p), k(F), D(F.appOrigin ?? p.appOrigin);
1573
- } catch (C) {
1574
- A((P) => ({
1575
- ...P,
1623
+ E(M), O(w), k(w.appOrigin ?? M.appOrigin);
1624
+ } catch (I) {
1625
+ E((N) => ({
1626
+ ...N,
1576
1627
  state: "error",
1577
- error: C instanceof Error ? C.message : String(C)
1628
+ error: I instanceof Error ? I.message : String(I)
1578
1629
  }));
1579
1630
  }
1580
1631
  })();
1581
- S.current = E;
1632
+ v.current = p;
1582
1633
  try {
1583
- await E;
1634
+ await p;
1584
1635
  } finally {
1585
- S.current === E && (S.current = null);
1636
+ v.current === p && (v.current = null);
1586
1637
  }
1587
1638
  },
1588
- [r, a, c, I]
1589
- ), H = Z(async () => {
1639
+ [n, c, d, x]
1640
+ ), j = te(async () => {
1590
1641
  try {
1591
- const l = await W(
1592
- await r(`${a}/refs`)
1593
- ), f = {
1594
- refs: l.refs ?? [],
1595
- defaultRef: l.defaultRef ?? null,
1596
- worktreeRef: l.worktreeRef ?? null
1642
+ const a = await X(
1643
+ await n(`${c}/refs`)
1644
+ ), l = {
1645
+ refs: a.refs ?? [],
1646
+ defaultRef: a.defaultRef ?? null,
1647
+ worktreeRef: a.worktreeRef ?? null
1597
1648
  };
1598
- return j(f), f;
1649
+ return Y(l), l;
1599
1650
  } catch {
1600
- return z;
1651
+ return F;
1601
1652
  }
1602
- }, [r, a, z]), te = Z(
1603
- async (l, f) => {
1604
- if (m != null && m.branchName && !(f != null && f.discardEdits))
1653
+ }, [n, c, F]), L = te(
1654
+ async (a, l) => {
1655
+ if (f != null && f.branchName && !(l != null && l.discardEdits))
1605
1656
  throw new Error(
1606
1657
  "This design session has unapplied edits against the current source. Apply or revert them, or pass discardEdits to switch anyway."
1607
1658
  );
1608
- await T(!0, l);
1659
+ await $(!0, a);
1609
1660
  },
1610
- [T, m == null ? void 0 : m.branchName]
1611
- ), ne = Z(
1612
- async (l) => {
1613
- var p;
1614
- if (!m) throw new Error("Pygmalion design session is not ready");
1615
- const f = R.current;
1616
- if (f && (f.sessionId !== m.id || f.baseDevSha !== m.baseDevSha || f.revision !== m.revision || f.fingerprint !== JSON.stringify(l)))
1661
+ [$, f == null ? void 0 : f.branchName]
1662
+ ), re = te(
1663
+ async (a) => {
1664
+ var M;
1665
+ if (!f) throw new Error("Pygmalion design session is not ready");
1666
+ const l = P.current;
1667
+ if (l && (l.sessionId !== f.id || l.baseDevSha !== f.baseDevSha || l.revision !== f.revision || l.fingerprint !== JSON.stringify(a)))
1617
1668
  throw new Error("The code diff you checked is out of date. Please check the diff for the current changes again.");
1618
- const E = await W(
1619
- await r(`${c}/apply-visual`, {
1669
+ const p = await X(
1670
+ await n(`${d}/apply-visual`, {
1620
1671
  method: "POST",
1621
1672
  headers: { "content-type": "application/json" },
1622
1673
  body: JSON.stringify({
1623
- sessionId: m.id,
1624
- baseDevSha: m.baseDevSha,
1625
- expectedRevision: m.revision,
1626
- ...f ? { previewRevision: f.revision } : {},
1627
- changes: l
1674
+ sessionId: f.id,
1675
+ baseDevSha: f.baseDevSha,
1676
+ expectedRevision: f.revision,
1677
+ ...l ? { previewRevision: l.revision } : {},
1678
+ changes: a
1628
1679
  })
1629
1680
  })
1630
1681
  );
1631
- if (!E.ok || !E.session)
1632
- throw new Error(E.error ?? "Pygmalion could not apply the visual changes");
1633
- k(E.session), E.session.appOrigin && D(E.session.appOrigin);
1634
- const C = E.applied ?? l.styles.length + l.texts.length + l.operations.length;
1635
- let P;
1636
- if (f != null && f.qaBaselineId && ((p = f.qaFrameIds) != null && p.length) && E.session.appOrigin)
1682
+ if (!p.ok || !p.session)
1683
+ throw new Error(p.error ?? "Pygmalion could not apply the visual changes");
1684
+ O(p.session), p.session.appOrigin && k(p.session.appOrigin);
1685
+ const I = p.applied ?? a.styles.length + a.texts.length + a.operations.length;
1686
+ let N;
1687
+ if (l != null && l.qaBaselineId && ((M = l.qaFrameIds) != null && M.length) && p.session.appOrigin)
1637
1688
  try {
1638
- P = await Ue(r, h, {
1689
+ N = await Ge(n, m, {
1639
1690
  phase: "changed",
1640
- baselineId: f.qaBaselineId,
1641
- basePath: _e(E.session.appOrigin, window.location.origin),
1642
- frameIds: f.qaFrameIds
1691
+ baselineId: l.qaBaselineId,
1692
+ basePath: He(p.session.appOrigin, window.location.origin),
1693
+ frameIds: l.qaFrameIds
1643
1694
  });
1644
- } catch (N) {
1645
- const O = N instanceof Error ? N.message : String(N);
1646
- P = {
1695
+ } catch (q) {
1696
+ const C = q instanceof Error ? q.message : String(q);
1697
+ N = {
1647
1698
  phase: "changed",
1648
- baselineId: f.qaBaselineId,
1699
+ baselineId: l.qaBaselineId,
1649
1700
  complete: !1,
1650
1701
  frames: [],
1651
- failures: f.qaFrameIds.map((F) => ({ id: F, error: O }))
1702
+ failures: l.qaFrameIds.map((w) => ({ id: w, error: C }))
1652
1703
  };
1653
1704
  }
1654
- return R.current = null, {
1655
- applied: C,
1656
- branch: E.session.branchName ?? void 0,
1657
- integration: E.session.integration.state,
1658
- message: o == null ? void 0 : o(E.session, C),
1659
- ...P ? { qa: P } : {}
1705
+ return P.current = null, {
1706
+ applied: I,
1707
+ branch: p.session.branchName ?? void 0,
1708
+ integration: p.session.integration.state,
1709
+ message: s == null ? void 0 : s(p.session, I),
1710
+ ...N ? { qa: N } : {}
1660
1711
  };
1661
1712
  },
1662
- [r, o, h, m, c]
1663
- ), Y = Z(
1664
- async (l) => {
1665
- var p;
1666
- if (!m) throw new Error("Pygmalion design session is not ready");
1667
- R.current = null;
1668
- const f = await W(
1669
- await r(`${c}/preview-visual`, {
1713
+ [n, s, m, f, d]
1714
+ ), oe = te(
1715
+ async (a) => {
1716
+ var M;
1717
+ if (!f) throw new Error("Pygmalion design session is not ready");
1718
+ P.current = null;
1719
+ const l = await X(
1720
+ await n(`${d}/preview-visual`, {
1670
1721
  method: "POST",
1671
1722
  headers: { "content-type": "application/json" },
1672
1723
  body: JSON.stringify({
1673
- sessionId: m.id,
1674
- baseDevSha: m.baseDevSha,
1675
- expectedRevision: m.revision,
1676
- changes: l
1724
+ sessionId: f.id,
1725
+ baseDevSha: f.baseDevSha,
1726
+ expectedRevision: f.revision,
1727
+ changes: a
1677
1728
  })
1678
1729
  })
1679
1730
  );
1680
- if (!f.ok || !Number.isSafeInteger(f.revision))
1681
- throw new Error(f.error ?? "Pygmalion could not preview the visual changes");
1682
- const E = g ? Zt(l, y) : [];
1683
- let C;
1684
- const P = m.appOrigin ?? b.appOrigin;
1685
- if (E.length > 0) {
1686
- if (!P)
1731
+ if (!l.ok || !Number.isSafeInteger(l.revision))
1732
+ throw new Error(l.error ?? "Pygmalion could not preview the visual changes");
1733
+ const p = g ? sn(a, h) : [];
1734
+ let I;
1735
+ const N = f.appOrigin ?? S.appOrigin;
1736
+ if (p.length > 0) {
1737
+ if (!N)
1687
1738
  throw new Error("Impact screen QA baseline preview not ready");
1688
- if (C = await Ue(r, h, {
1739
+ if (I = await Ge(n, m, {
1689
1740
  phase: "baseline",
1690
- basePath: _e(P, window.location.origin),
1691
- frameIds: E
1692
- }), !C.complete)
1741
+ basePath: He(N, window.location.origin),
1742
+ frameIds: p
1743
+ }), !I.complete)
1693
1744
  throw new Error(
1694
- ((p = C.failures[0]) == null ? void 0 : p.error) ?? `Failed to capture ${E.length - C.frames.length} affected frames`
1745
+ ((M = I.failures[0]) == null ? void 0 : M.error) ?? `Failed to capture ${p.length - I.frames.length} affected frames`
1695
1746
  );
1696
1747
  }
1697
- return R.current = {
1698
- sessionId: m.id,
1699
- baseDevSha: m.baseDevSha,
1700
- revision: f.revision,
1701
- fingerprint: JSON.stringify(l),
1702
- ...C ? { qaBaselineId: C.baselineId, qaFrameIds: E } : {}
1748
+ return P.current = {
1749
+ sessionId: f.id,
1750
+ baseDevSha: f.baseDevSha,
1751
+ revision: l.revision,
1752
+ fingerprint: JSON.stringify(a),
1753
+ ...I ? { qaBaselineId: I.baselineId, qaFrameIds: p } : {}
1703
1754
  }, {
1704
- revision: f.revision,
1705
- files: Array.isArray(f.files) ? f.files : [],
1706
- affectedFiles: Array.isArray(f.affectedFiles) ? f.affectedFiles : [],
1707
- ...C ? { qa: C } : {}
1755
+ revision: l.revision,
1756
+ files: Array.isArray(l.files) ? l.files : [],
1757
+ affectedFiles: Array.isArray(l.affectedFiles) ? l.affectedFiles : [],
1758
+ ...I ? { qa: I } : {}
1708
1759
  };
1709
1760
  },
1710
1761
  [
1711
- r,
1712
- b.appOrigin,
1713
- y,
1762
+ n,
1763
+ S.appOrigin,
1714
1764
  h,
1715
1765
  m,
1716
- c,
1766
+ f,
1767
+ d,
1717
1768
  g
1718
1769
  ]
1719
- ), Q = Z(
1720
- async (l) => {
1721
- if (l.length === 0) return { files: [] };
1722
- const f = await W(
1723
- await r(`${u}/impact`, {
1770
+ ), Z = te(
1771
+ async (a) => {
1772
+ if (a.length === 0) return { files: [] };
1773
+ const l = await X(
1774
+ await n(`${u}/impact`, {
1724
1775
  method: "POST",
1725
1776
  headers: { "content-type": "application/json" },
1726
- body: JSON.stringify({ componentFiles: l })
1777
+ body: JSON.stringify({ componentFiles: a })
1727
1778
  })
1728
1779
  );
1729
- if (f.error || f.ok === !1)
1730
- throw new Error(f.error ?? "Pygmalion could not calculate source impact");
1731
- return { files: Array.isArray(f.files) ? f.files : [] };
1780
+ if (l.error || l.ok === !1)
1781
+ throw new Error(l.error ?? "Pygmalion could not calculate source impact");
1782
+ return { files: Array.isArray(l.files) ? l.files : [] };
1732
1783
  },
1733
- [r, u]
1734
- ), L = Z(async () => {
1735
- if (!(m != null && m.canRevert) || !m.headSha)
1784
+ [n, u]
1785
+ ), K = te(async () => {
1786
+ if (!(f != null && f.canRevert) || !f.headSha)
1736
1787
  throw new Error("There are no reversible changes applied");
1737
- const l = await W(
1738
- await r(`${c}/revert-visual`, {
1788
+ const a = await X(
1789
+ await n(`${d}/revert-visual`, {
1739
1790
  method: "POST",
1740
1791
  headers: { "content-type": "application/json" },
1741
1792
  body: JSON.stringify({
1742
- sessionId: m.id,
1743
- baseDevSha: m.baseDevSha,
1744
- expectedRevision: m.revision,
1745
- expectedHeadSha: m.headSha
1793
+ sessionId: f.id,
1794
+ baseDevSha: f.baseDevSha,
1795
+ expectedRevision: f.revision,
1796
+ expectedHeadSha: f.headSha
1746
1797
  })
1747
1798
  })
1748
1799
  );
1749
- if (!l.ok || l.reverted !== !0 || !l.operation || l.operation.kind !== "visual-revert" || !l.session)
1750
- throw new Error(l.error ?? "Pygmalion could not revert the last visual change");
1751
- return R.current = null, k(l.session), l.session.appOrigin && D(l.session.appOrigin), {
1800
+ if (!a.ok || a.reverted !== !0 || !a.operation || a.operation.kind !== "visual-revert" || !a.session)
1801
+ throw new Error(a.error ?? "Pygmalion could not revert the last visual change");
1802
+ return P.current = null, O(a.session), a.session.appOrigin && k(a.session.appOrigin), {
1752
1803
  reverted: !0,
1753
- operation: l.operation,
1754
- session: l.session
1804
+ operation: a.operation,
1805
+ session: a.session
1755
1806
  };
1756
- }, [r, m, c]);
1757
- oe(() => {
1758
- n && T(!1);
1759
- }, [n, T]), oe(() => {
1760
- n && H();
1761
- }, [n]);
1762
- const V = (m == null ? void 0 : m.appOrigin) ?? b.appOrigin ?? M, _ = (m == null ? void 0 : m.headSha) ?? (m == null ? void 0 : m.baseDevSha) ?? b.commit ?? "pending";
1807
+ }, [n, f, d]);
1808
+ ie(() => {
1809
+ r && $(!1);
1810
+ }, [r, $]), ie(() => {
1811
+ r && j();
1812
+ }, [r]);
1813
+ const Q = (f == null ? void 0 : f.appOrigin) ?? S.appOrigin ?? D, U = (f == null ? void 0 : f.headSha) ?? (f == null ? void 0 : f.baseDevSha) ?? S.commit ?? "pending";
1763
1814
  return {
1764
- mirror: b,
1765
- session: m,
1766
- ready: M != null,
1767
- appOrigin: V,
1768
- previewRevision: `${_}:${(m == null ? void 0 : m.revision) ?? 0}`,
1769
- previewSourceRevision: _,
1770
- refresh: T,
1771
- switchSource: te,
1772
- sourceRefs: z,
1773
- loadSourceRefs: H,
1774
- previewVisual: Y,
1775
- inspectImpact: Q,
1776
- applyVisual: ne,
1777
- revertLastVisual: L
1815
+ mirror: S,
1816
+ session: f,
1817
+ ready: D != null,
1818
+ appOrigin: Q,
1819
+ previewRevision: `${U}:${(f == null ? void 0 : f.revision) ?? 0}`,
1820
+ previewSourceRevision: U,
1821
+ refresh: $,
1822
+ switchSource: L,
1823
+ sourceRefs: F,
1824
+ loadSourceRefs: j,
1825
+ previewVisual: oe,
1826
+ inspectImpact: Z,
1827
+ applyVisual: re,
1828
+ revertLastVisual: K
1778
1829
  };
1779
1830
  }
1780
- function mn({
1831
+ function bn({
1781
1832
  value: e,
1782
1833
  refs: t,
1783
- onChange: s,
1784
- busy: n = !1,
1785
- defaultRef: r = null,
1786
- worktreeRef: o = null,
1787
- label: a = "Source revision",
1788
- children: c,
1834
+ onChange: o,
1835
+ busy: r = !1,
1836
+ defaultRef: n = null,
1837
+ worktreeRef: s = null,
1838
+ label: c = "Source revision",
1839
+ children: d,
1789
1840
  className: u
1790
1841
  }) {
1791
- const g = de(
1842
+ const g = ae(
1792
1843
  () => ({
1793
- local: t.filter((y) => y.kind === "local"),
1794
- remote: t.filter((y) => y.kind === "remote")
1844
+ local: t.filter((h) => h.kind === "local"),
1845
+ remote: t.filter((h) => h.kind === "remote")
1795
1846
  }),
1796
1847
  [t]
1797
- ), h = de(() => {
1798
- const y = new Set(t.map((I) => I.name));
1799
- return r && y.add(r), o && y.add(o), y;
1800
- }, [r, t, o]), w = e ?? r ?? "";
1801
- return /* @__PURE__ */ $(
1848
+ ), m = ae(() => {
1849
+ const h = new Set(t.map((x) => x.name));
1850
+ return n && h.add(n), s && h.add(s), h;
1851
+ }, [n, t, s]), y = e ?? n ?? "";
1852
+ return /* @__PURE__ */ A(
1802
1853
  "span",
1803
1854
  {
1804
1855
  className: u,
1805
1856
  "data-pygmalion-source-ref": "",
1806
- "data-busy": n ? "" : void 0,
1857
+ "data-busy": r ? "" : void 0,
1807
1858
  style: { position: "relative", display: "inline-flex", alignItems: "center" },
1808
1859
  children: [
1809
- c ?? /* @__PURE__ */ v("span", { "data-pygmalion-source-ref-value": "", children: w || a }),
1810
- /* @__PURE__ */ $(
1860
+ d ?? /* @__PURE__ */ b("span", { "data-pygmalion-source-ref-value": "", children: y || c }),
1861
+ /* @__PURE__ */ A(
1811
1862
  "select",
1812
1863
  {
1813
- value: w,
1814
- disabled: n,
1815
- "aria-label": a,
1864
+ value: y,
1865
+ disabled: r,
1866
+ "aria-label": c,
1816
1867
  "data-pygmalion-source-ref-select": "",
1817
- onChange: (y) => {
1818
- const I = y.target.value;
1819
- I && I !== w && s(I);
1868
+ onChange: (h) => {
1869
+ const x = h.target.value;
1870
+ x && x !== y && o(x);
1820
1871
  },
1821
1872
  style: {
1822
1873
  position: "absolute",
@@ -1824,7 +1875,7 @@ function mn({
1824
1875
  width: "100%",
1825
1876
  height: "100%",
1826
1877
  opacity: 0,
1827
- cursor: n ? "default" : "pointer",
1878
+ cursor: r ? "default" : "pointer",
1828
1879
  // The native menu stays reachable; only the painted trigger is the host's.
1829
1880
  appearance: "none",
1830
1881
  border: 0,
@@ -1832,21 +1883,21 @@ function mn({
1832
1883
  margin: 0
1833
1884
  },
1834
1885
  children: [
1835
- w && !h.has(w) ? /* @__PURE__ */ v("option", { value: w, children: w }) : null,
1836
- o ? /* @__PURE__ */ $("option", { value: o, children: [
1837
- o,
1886
+ y && !m.has(y) ? /* @__PURE__ */ b("option", { value: y, children: y }) : null,
1887
+ s ? /* @__PURE__ */ A("option", { value: s, children: [
1888
+ s,
1838
1889
  " · uncommitted work"
1839
1890
  ] }) : null,
1840
- g.local.length > 0 ? /* @__PURE__ */ v("optgroup", { label: "local", children: g.local.map((y) => /* @__PURE__ */ $("option", { value: y.name, children: [
1841
- y.name,
1891
+ g.local.length > 0 ? /* @__PURE__ */ b("optgroup", { label: "local", children: g.local.map((h) => /* @__PURE__ */ A("option", { value: h.name, children: [
1892
+ h.name,
1842
1893
  " · ",
1843
- y.commit
1844
- ] }, y.fullName)) }) : null,
1845
- g.remote.length > 0 ? /* @__PURE__ */ v("optgroup", { label: "remote", children: g.remote.map((y) => /* @__PURE__ */ $("option", { value: y.name, children: [
1846
- y.name,
1894
+ h.commit
1895
+ ] }, h.fullName)) }) : null,
1896
+ g.remote.length > 0 ? /* @__PURE__ */ b("optgroup", { label: "remote", children: g.remote.map((h) => /* @__PURE__ */ A("option", { value: h.name, children: [
1897
+ h.name,
1847
1898
  " · ",
1848
- y.commit
1849
- ] }, y.fullName)) }) : null
1899
+ h.commit
1900
+ ] }, h.fullName)) }) : null
1850
1901
  ]
1851
1902
  }
1852
1903
  )
@@ -1854,264 +1905,286 @@ function mn({
1854
1905
  }
1855
1906
  );
1856
1907
  }
1857
- const pn = {
1858
- editor: J,
1859
- getObserverTree: Ye,
1860
- isObservableProp: Xe
1908
+ const vn = {
1909
+ editor: W,
1910
+ getObserverTree: tt,
1911
+ isObservableProp: et
1861
1912
  };
1862
- function gn(e) {
1863
- J.navigateToPageByName(e);
1913
+ function In(e) {
1914
+ W.navigateToPageByName(e);
1864
1915
  }
1865
- function yn() {
1866
- J.openPreview();
1916
+ function xn() {
1917
+ W.openPreview();
1867
1918
  }
1868
- function wn() {
1869
- const e = Oe.entries.length > 0;
1870
- return e && Oe.discardPending(), J.resetCurrentEdits() || e;
1919
+ function Pn() {
1920
+ const e = De.entries.length > 0;
1921
+ return e && De.discardPending(), W.resetCurrentEdits() || e;
1871
1922
  }
1872
- function bn({
1923
+ function En({
1873
1924
  registry: e,
1874
1925
  tokens: t,
1875
- initialPages: s,
1926
+ initialPages: o,
1927
+ componentConnections: r,
1876
1928
  viewportPresets: n,
1877
- previewEnvironmentControls: r,
1878
- designImport: o,
1879
- onTokensChange: a,
1880
- appOrigin: c,
1881
- previewRevision: u,
1882
- previewCacheNamespace: g,
1883
- previewArtifacts: h,
1884
- previewArtifactEndpoint: w,
1885
- previewConcurrency: y,
1886
- previewOpen: I,
1887
- onPreviewOpenChange: b,
1888
- flowCanvas: A,
1889
- onApply: m,
1890
- onDesignChange: k,
1891
- onInspectApply: M,
1892
- onInspectPreview: D,
1893
- onInspectImpact: z,
1894
- storyboardDiscovery: j = !0,
1895
- storyboardDiscoveryEndpoint: S = mt
1929
+ previewEnvironmentControls: s,
1930
+ designImport: c,
1931
+ onTokensChange: d,
1932
+ appOrigin: u,
1933
+ previewRevision: g,
1934
+ previewCacheNamespace: m,
1935
+ previewArtifacts: y,
1936
+ previewArtifactEndpoint: h,
1937
+ previewConcurrency: x,
1938
+ previewOpen: S,
1939
+ onPreviewOpenChange: E,
1940
+ flowCanvas: f,
1941
+ onApply: O,
1942
+ onDesignChange: D,
1943
+ onInspectApply: k,
1944
+ onInspectPreview: F,
1945
+ onInspectImpact: Y,
1946
+ storyboardDiscovery: v = !0,
1947
+ storyboardDiscoveryEndpoint: P = wt
1896
1948
  }) {
1897
- const [R, T] = re(!j), [H, te] = re();
1898
- o && (o.assertComplete(), Ze(o));
1899
- const ne = e ?? (o == null ? void 0 : o.getRegistry()), Y = t ?? (o == null ? void 0 : o.getTokens()), Q = s ?? (o == null ? void 0 : o.getInitialPages());
1900
- ne && et(ne), Y && tt(Y), n && nt(n), rt(r ?? []), yt(a ?? null), c != null && ot(c), u != null && st(u), it(g);
1901
- const L = H ?? h, V = (Q ?? []).flatMap(
1902
- (x) => x.route && x.importPageId ? [
1903
- {
1904
- canonicalId: x.importPageId,
1905
- route: x.route,
1906
- width: x.width,
1907
- height: x.height,
1908
- environment: x.environment,
1909
- preset: x.preset,
1910
- interactions: x.interactions,
1911
- assertions: x.assertions
1912
- }
1913
- ] : []
1914
- ), _ = ve([]), X = V.map((x) => ({
1915
- id: x.canonicalId,
1916
- fingerprint: at(
1917
- x,
1918
- Re(),
1919
- ge()
1920
- )
1921
- }));
1922
- return _.current = X, L && Q && R && Ne(L, {
1923
- namespace: g ?? "",
1924
- previewRevision: Re(),
1925
- appOrigin: Me(),
1926
- baselineEnvironment: ge(),
1927
- allowStaleIdentity: !!w,
1928
- allowMatchingFrameIdentity: H != null,
1929
- pages: V.map((x, q) => {
1930
- var i;
1931
- return {
1932
- ...x,
1933
- fingerprint: (i = X[q]) == null ? void 0 : i.fingerprint
1934
- };
1935
- })
1936
- }), y != null && ct(y), wt(b ?? null), A != null && lt(A), bt(m ?? null), vt(M ?? null), dt(D ?? null), St(z ?? null), Q && J.initPagesFromComponents(Q), oe(() => {
1937
- ke(k ?? null);
1938
- const x = ut(J);
1949
+ const [$, j] = se(!v), [L, re] = se();
1950
+ c && (c.assertComplete(), nt(c));
1951
+ const oe = e ?? (c == null ? void 0 : c.getRegistry()), Z = t ?? (c == null ? void 0 : c.getTokens()), K = o ?? (c == null ? void 0 : c.getInitialPages());
1952
+ oe && rt(oe), ot(r ?? []), Z && st(Z), n && it(n), It(d ?? null), at(m);
1953
+ const Q = L ?? y, U = ae(
1954
+ () => (K ?? []).flatMap(
1955
+ (i) => i.route && i.importPageId ? [
1956
+ {
1957
+ canonicalId: i.importPageId,
1958
+ route: i.route,
1959
+ width: i.width,
1960
+ height: i.height,
1961
+ environment: i.environment,
1962
+ preset: i.preset,
1963
+ interactions: i.interactions,
1964
+ assertions: i.assertions
1965
+ }
1966
+ ] : []
1967
+ ),
1968
+ [K]
1969
+ ), V = g ?? bt(), ee = u ?? ke(), _ = xe([]), J = ae(
1970
+ () => U.map((i) => ({
1971
+ id: i.canonicalId,
1972
+ fingerprint: ct(
1973
+ i,
1974
+ V,
1975
+ Se()
1976
+ )
1977
+ })),
1978
+ [U, V, $]
1979
+ );
1980
+ return _.current = J, x != null && lt(x), xt(E ?? null), f != null && dt(f), Pt(O ?? null), Et(k ?? null), ut(F ?? null), Ct(Y ?? null), K && W.initPagesFromComponents(K), ze(() => {
1981
+ u != null && ft(u), g != null && mt(g), pt(s ?? []);
1982
+ }, [u, s, g]), ze(() => {
1983
+ !Q || !K || !$ || Me(Q, {
1984
+ namespace: m ?? "",
1985
+ previewRevision: V,
1986
+ appOrigin: ee,
1987
+ baselineEnvironment: Se(),
1988
+ allowStaleIdentity: !!h,
1989
+ allowMatchingFrameIdentity: L != null,
1990
+ pages: U.map((i, a) => {
1991
+ var l;
1992
+ return {
1993
+ ...i,
1994
+ fingerprint: (l = J[a]) == null ? void 0 : l.fingerprint
1995
+ };
1996
+ })
1997
+ });
1998
+ }, [
1999
+ Q,
2000
+ J,
2001
+ U,
2002
+ h,
2003
+ m,
2004
+ L,
2005
+ ee,
2006
+ K,
2007
+ V,
2008
+ $
2009
+ ]), ie(() => {
2010
+ Fe(D ?? null);
2011
+ const i = gt(W);
1939
2012
  return () => {
1940
- x(), ke(null);
2013
+ i(), Fe(null);
1941
2014
  };
1942
- }, [k]), oe(() => {
1943
- if (te(void 0), !R || !w || !(g != null && g.trim()) || !(u != null && u.trim()))
2015
+ }, [D]), ie(() => {
2016
+ if (re(void 0), !$ || !h || !(m != null && m.trim()) || !(g != null && g.trim()))
1944
2017
  return;
1945
- const x = new AbortController(), q = ft({
1946
- endpoint: w,
1947
- captureBaseUrl: c
1948
- }), i = ht(u), d = (P) => {
1949
- Ne(P, {
1950
- namespace: g,
1951
- previewRevision: u,
1952
- appOrigin: Me(),
1953
- baselineEnvironment: ge(),
2018
+ const i = new AbortController(), a = ht({
2019
+ endpoint: h,
2020
+ captureBaseUrl: u
2021
+ }), l = yt(g), p = (C) => {
2022
+ Me(C, {
2023
+ namespace: m,
2024
+ previewRevision: g,
2025
+ appOrigin: ke(),
2026
+ baselineEnvironment: Se(),
1954
2027
  allowStaleIdentity: !0,
1955
2028
  allowMatchingFrameIdentity: !0,
1956
- pages: V.map((p, N) => {
1957
- var O;
2029
+ pages: U.map((w, R) => {
2030
+ var z;
1958
2031
  return {
1959
- ...p,
1960
- fingerprint: (O = X[N]) == null ? void 0 : O.fingerprint
2032
+ ...w,
2033
+ fingerprint: (z = J[R]) == null ? void 0 : z.fingerprint
1961
2034
  };
1962
2035
  })
1963
- }), te(P);
1964
- }, l = (P, p, N) => gt({
1965
- namespace: g,
1966
- sourceRevision: i,
1967
- transport: q,
1968
- signal: N,
1969
- ...P.length ? { frames: P } : {},
1970
- ...p ? {} : { generate: !1 }
1971
- }), f = (P, p) => {
1972
- const N = new Set(p);
1973
- return P.filter((O) => N.has(O.id));
1974
- }, E = (P, p) => P instanceof Error && P.message ? P.message : p, C = new AbortController();
1975
- if (Ae(async (P) => {
1976
- var N, O, F;
1977
- const p = await l(P, !0, C.signal);
1978
- if (p.status === "accepted") {
1979
- d(p.artifact);
1980
- const K = new Set(((N = p.frameResolution) == null ? void 0 : N.exact) ?? []);
1981
- if (P.every((ie) => K.has(ie.id)))
2036
+ }), re(C);
2037
+ }, I = (C, w, R) => vt({
2038
+ namespace: m,
2039
+ sourceRevision: l,
2040
+ transport: a,
2041
+ signal: R,
2042
+ ...C.length ? { frames: C } : {},
2043
+ ...w ? {} : { generate: !1 }
2044
+ }), N = (C, w) => {
2045
+ const R = new Set(w);
2046
+ return C.filter((z) => R.has(z.id));
2047
+ }, M = (C, w) => C instanceof Error && C.message ? C.message : w, q = new AbortController();
2048
+ if (Oe(async (C) => {
2049
+ var R, z, G;
2050
+ const w = await I(C, !0, q.signal);
2051
+ if (w.status === "accepted") {
2052
+ p(w.artifact);
2053
+ const fe = new Set(((R = w.frameResolution) == null ? void 0 : R.exact) ?? []);
2054
+ if (C.every((le) => fe.has(le.id)))
1982
2055
  return { status: "accepted" };
1983
- const se = [
1984
- ...((O = p.frameResolution) == null ? void 0 : O.missing) ?? [],
1985
- ...((F = p.frameResolution) == null ? void 0 : F.stale) ?? []
2056
+ const ce = [
2057
+ ...((z = w.frameResolution) == null ? void 0 : z.missing) ?? [],
2058
+ ...((G = w.frameResolution) == null ? void 0 : G.stale) ?? []
1986
2059
  ];
1987
2060
  return {
1988
2061
  status: "unavailable",
1989
- message: se.length ? `The exact preview endpoint did not return a current capture for ${se.join(", ")}.` : "The exact preview endpoint returned no current capture."
2062
+ message: ce.length ? `The exact preview endpoint did not return a current capture for ${ce.join(", ")}.` : "The exact preview endpoint returned no current capture."
1990
2063
  };
1991
2064
  }
1992
- return p.status === "rejected" ? {
2065
+ return w.status === "rejected" ? {
1993
2066
  status: "rejected",
1994
- message: p.errors.join(" ") || "The preview artifact was rejected."
2067
+ message: w.errors.join(" ") || "The preview artifact was rejected."
1995
2068
  } : {
1996
2069
  status: "unavailable",
1997
- message: E(
1998
- p.error,
2070
+ message: M(
2071
+ w.error,
1999
2072
  "The exact preview endpoint is unavailable."
2000
2073
  )
2001
2074
  };
2002
2075
  }), _.current.length) {
2003
- const P = _.current.filter((p) => {
2004
- const N = ye(
2005
- p.id,
2006
- p.fingerprint
2076
+ const C = _.current.filter((w) => {
2077
+ const R = be(
2078
+ w.id,
2079
+ w.fingerprint
2007
2080
  ).status;
2008
- return N !== "exact" && N !== "generating";
2081
+ return R !== "exact" && R !== "generating";
2009
2082
  });
2010
- ae(P, { status: "checking" }), l(
2083
+ de(C, { status: "checking" }), I(
2011
2084
  _.current,
2012
2085
  !1,
2013
- x.signal
2014
- ).then((p) => {
2015
- var F, K, se;
2016
- if (x.signal.aborted) return;
2017
- const N = (ie) => ie.filter((Ee) => {
2018
- const Ce = ye(
2019
- Ee.id,
2020
- Ee.fingerprint
2086
+ i.signal
2087
+ ).then((w) => {
2088
+ var G, fe, ce;
2089
+ if (i.signal.aborted) return;
2090
+ const R = (le) => le.filter((Re) => {
2091
+ const Ae = be(
2092
+ Re.id,
2093
+ Re.fingerprint
2021
2094
  ).status;
2022
- return Ce !== "generating" && Ce !== "exact";
2095
+ return Ae !== "generating" && Ae !== "exact";
2023
2096
  });
2024
- if (p.status === "accepted") {
2025
- d(p.artifact), ae(
2026
- f(
2097
+ if (w.status === "accepted") {
2098
+ p(w.artifact), de(
2099
+ N(
2027
2100
  _.current,
2028
- ((F = p.frameResolution) == null ? void 0 : F.exact) ?? []
2101
+ ((G = w.frameResolution) == null ? void 0 : G.exact) ?? []
2029
2102
  ),
2030
2103
  { status: "exact" }
2031
2104
  );
2032
- const ie = f(_.current, [
2033
- ...((K = p.frameResolution) == null ? void 0 : K.missing) ?? [],
2034
- ...((se = p.frameResolution) == null ? void 0 : se.stale) ?? []
2105
+ const le = N(_.current, [
2106
+ ...((fe = w.frameResolution) == null ? void 0 : fe.missing) ?? [],
2107
+ ...((ce = w.frameResolution) == null ? void 0 : ce.stale) ?? []
2035
2108
  ]);
2036
- ae(N(ie), {
2109
+ de(R(le), {
2037
2110
  status: "outdated",
2038
2111
  message: "Select this frame to generate the exact preview."
2039
2112
  });
2040
2113
  return;
2041
2114
  }
2042
- const O = p.status === "rejected" ? p.errors.join(" ") || "The preview artifact was rejected." : E(
2043
- p.error,
2115
+ const z = w.status === "rejected" ? w.errors.join(" ") || "The preview artifact was rejected." : M(
2116
+ w.error,
2044
2117
  "The exact preview endpoint is unavailable."
2045
2118
  );
2046
- ae(
2047
- N(_.current),
2119
+ de(
2120
+ R(_.current),
2048
2121
  {
2049
2122
  status: "error",
2050
- reason: p.status === "rejected" ? "rejected" : "unavailable",
2051
- message: O
2123
+ reason: w.status === "rejected" ? "rejected" : "unavailable",
2124
+ message: z
2052
2125
  }
2053
2126
  );
2054
- }).catch((p) => {
2055
- if (x.signal.aborted) return;
2056
- const N = _.current.filter((O) => {
2057
- const F = ye(
2058
- O.id,
2059
- O.fingerprint
2127
+ }).catch((w) => {
2128
+ if (i.signal.aborted) return;
2129
+ const R = _.current.filter((z) => {
2130
+ const G = be(
2131
+ z.id,
2132
+ z.fingerprint
2060
2133
  ).status;
2061
- return F !== "generating" && F !== "exact";
2134
+ return G !== "generating" && G !== "exact";
2062
2135
  });
2063
- ae(N, {
2136
+ de(R, {
2064
2137
  status: "error",
2065
2138
  reason: "unavailable",
2066
- message: E(
2067
- p,
2139
+ message: M(
2140
+ w,
2068
2141
  "The exact preview endpoint is unavailable."
2069
2142
  )
2070
2143
  });
2071
2144
  });
2072
2145
  }
2073
2146
  return () => {
2074
- Ae(null), C.abort(), x.abort();
2147
+ Oe(null), q.abort(), i.abort();
2075
2148
  };
2076
2149
  }, [
2077
- w,
2150
+ h,
2151
+ m,
2078
2152
  g,
2079
2153
  u,
2080
- c,
2081
- R
2082
- ]), oe(() => {
2083
- let x = !0;
2084
- if (!j)
2085
- return ce(void 0), T(!0), () => {
2086
- x = !1;
2154
+ $
2155
+ ]), ie(() => {
2156
+ let i = !0;
2157
+ if (!v)
2158
+ return ue(void 0), j(!0), () => {
2159
+ i = !1;
2087
2160
  };
2088
- const q = new AbortController();
2089
- return T(!1), ce(void 0), ee(null), Je({
2090
- endpoint: S,
2091
- signal: q.signal,
2092
- pages: J.pages.map((i) => ({
2093
- ...i,
2094
- id: i.importPageId ?? i.id,
2095
- importKind: i.importKind
2161
+ const a = new AbortController();
2162
+ return j(!1), ue(void 0), ne(null), Le({
2163
+ endpoint: P,
2164
+ signal: a.signal,
2165
+ pages: W.pages.map((l) => ({
2166
+ ...l,
2167
+ id: l.importPageId ?? l.id,
2168
+ importKind: l.importKind
2096
2169
  })),
2097
- assets: (o == null ? void 0 : o.getAssets("screens")) ?? []
2098
- }).then((i) => {
2099
- x && (ce(i.baselineEnvironment), $e(i.manifest.routes ?? null), ee(i.graph));
2170
+ assets: (c == null ? void 0 : c.getAssets("screens")) ?? []
2171
+ }).then((l) => {
2172
+ i && (ue(l.baselineEnvironment), $e(l.manifest.routes ?? null), ne(l.graph));
2100
2173
  }).catch(() => {
2101
- x && (ce(void 0), $e(null), ee(null));
2174
+ i && (ue(void 0), $e(null), ne(null));
2102
2175
  }).finally(() => {
2103
- x && T(!0);
2176
+ i && j(!0);
2104
2177
  }), () => {
2105
- x = !1, q.abort(), ce(void 0), ee(null);
2178
+ i = !1, a.abort(), ue(void 0), ne(null);
2106
2179
  };
2107
2180
  }, [
2181
+ c,
2108
2182
  o,
2109
- s,
2110
- j,
2111
- S
2112
- ]), oe(() => {
2113
- I == null || I === J.previewOpen || (I ? J.openPreview({ notifyHost: !1 }) : J.closePreview({ notifyHost: !1 }));
2114
- }, [I]), R ? /* @__PURE__ */ v(pt, {}) : /* @__PURE__ */ v(
2183
+ v,
2184
+ P
2185
+ ]), ie(() => {
2186
+ S == null || S === W.previewOpen || (S ? W.openPreview({ notifyHost: !1 }) : W.closePreview({ notifyHost: !1 }));
2187
+ }, [S]), $ ? /* @__PURE__ */ b(St, {}) : /* @__PURE__ */ b(
2115
2188
  "div",
2116
2189
  {
2117
2190
  "data-pygmalion-storyboard-loading": "",
@@ -2130,71 +2203,84 @@ function bn({
2130
2203
  );
2131
2204
  }
2132
2205
  export {
2133
- In as DESIGN_IMPORT_KINDS,
2134
- cn as PygmalionCatalogDocument,
2135
- dn as PygmalionCatalogMatrix,
2136
- ln as PygmalionCatalogSection,
2137
- bn as PygmalionEditor,
2138
- mt as STORYBOARD_ENVIRONMENT_CONTROL,
2139
- xn as STORYBOARD_ENVIRONMENT_QUERY,
2140
- mn as SourceRefControl,
2141
- pn as __debug,
2142
- Pn as applyTokenOverride,
2143
- gt as bootstrapPreviewArtifact,
2144
- En as clearPreviewEnvironmentControlValues,
2145
- Cn as clearPygmalionPreviewCache,
2146
- fn as createDesignComponentCatalog,
2147
- Jt as createDesignComponentVariantMatrix,
2148
- un as createDesignGalleryCatalog,
2149
- Rn as createDesignImportController,
2150
- Nn as createDesignScreenCollection,
2151
- ft as createPreviewArtifactHttpTransport,
2152
- An as createPreviewCacheNamespace,
2153
- $n as createPreviewFrameFingerprint,
2154
- On as createPreviewRecipeFingerprint,
2155
- Mn as createStoryboardCaptureRecipeIdentity,
2156
- Et as createStoryboardGraph,
2157
- Bt as createStoryboardGraphFromDiscovery,
2158
- kn as createStoryboardGraphViewModel,
2159
- Fn as createStoryboardRouteUrl,
2160
- qt as designCatalogKey,
2161
- Ve as designCatalogRegistryName,
2162
- Tn as expandDesignScreenCasesViewports,
2163
- Dn as expandDesignScreenCollectionViewports,
2164
- zn as getPreviewEnvironmentControlValue,
2165
- jn as getPreviewEnvironmentControls,
2166
- _n as getPreviewEnvironmentOverride,
2167
- Bn as getRecommendedPygmalionPreviewConcurrency,
2168
- ge as getStoryboardBaselineEnvironment,
2169
- Ge as getStoryboardDiscoveryBaselineEnvironment,
2170
- Un as getStoryboardGraph,
2171
- Hn as getViewportPresets,
2172
- Je as loadStoryboardDiscovery,
2173
- qn as mergeScreenPresets,
2174
- Le as mergeStoryboardEnvironment,
2175
- an as publishStoryboardDiscovery,
2176
- gn as pygmalionNavigate,
2177
- yn as pygmalionOpenPreview,
2178
- wn as pygmalionResetCurrentEdits,
2179
- Kn as reconstructRoutePreviewArtifactScreenshotV3,
2180
- Gn as reconstructRoutePreviewArtifactSnapshotV3,
2181
- Jn as resetTokenOverrides,
2182
- Vn as resolvePreviewArtifactFrames,
2183
- Ot as resolveStoryboardScreenCases,
2184
- et as setComponentRegistry,
2185
- Wn as setPreviewEnvironmentControlValue,
2186
- rt as setPreviewEnvironmentControls,
2187
- ot as setPygmalionAppOrigin,
2188
- ct as setPygmalionPreviewConcurrency,
2189
- st as setPygmalionPreviewRevision,
2190
- ce as setStoryboardBaselineEnvironment,
2191
- ee as setStoryboardGraph,
2192
- tt as setTokens,
2193
- nt as setViewportPresets,
2194
- It as storyboardScreenRecipeKey,
2195
- Qn as subscribePreviewEnvironmentControls,
2196
- Ln as subscribeStoryboardGraph,
2197
- hn as usePygmalionProject,
2198
- Xn as validatePreviewArtifactBundle,
2199
- Yn as validateRoutePreviewArtifactV3Browser
2206
+ Rn as DEFAULT_DESIGN_COMPILE_LIMITS,
2207
+ An as DESIGN_IMPORT_KINDS,
2208
+ Mn as DESIGN_IR_SCHEMA,
2209
+ On as DESIGN_IR_VERSION,
2210
+ pn as PygmalionCatalogDocument,
2211
+ hn as PygmalionCatalogMatrix,
2212
+ gn as PygmalionCatalogSection,
2213
+ En as PygmalionEditor,
2214
+ wt as STORYBOARD_ENVIRONMENT_CONTROL,
2215
+ $n as STORYBOARD_ENVIRONMENT_QUERY,
2216
+ bn as SourceRefControl,
2217
+ vn as __debug,
2218
+ Dn as applyTokenOverride,
2219
+ vt as bootstrapPreviewArtifact,
2220
+ kn as clearPreviewEnvironmentControlValues,
2221
+ Fn as clearPygmalionPreviewCache,
2222
+ Tn as compileDesignDocument,
2223
+ wn as createDesignComponentCatalog,
2224
+ Yt as createDesignComponentVariantMatrix,
2225
+ yn as createDesignGalleryCatalog,
2226
+ zn as createDesignImportController,
2227
+ _n as createDesignIntermediateDocument,
2228
+ jn as createDesignScreenCollection,
2229
+ ht as createPreviewArtifactHttpTransport,
2230
+ Bn as createPreviewCacheNamespace,
2231
+ Un as createPreviewFrameFingerprint,
2232
+ Hn as createPreviewRecipeFingerprint,
2233
+ qn as createStoryboardCaptureRecipeIdentity,
2234
+ Mt as createStoryboardGraph,
2235
+ Vt as createStoryboardGraphFromDiscovery,
2236
+ Gn as createStoryboardGraphViewModel,
2237
+ Kn as createStoryboardRouteUrl,
2238
+ Lt as designCatalogKey,
2239
+ Qe as designCatalogRegistryName,
2240
+ Vn as enumerateDesignComponentConnectionCases,
2241
+ Jn as expandDesignScreenCasesViewports,
2242
+ Wn as expandDesignScreenCollectionViewports,
2243
+ Ln as getDesignCodegenAdapters,
2244
+ Qn as getDesignComponentConnection,
2245
+ Xn as getDesignComponentConnectionForComponent,
2246
+ Yn as getDesignComponentConnections,
2247
+ Zn as getPreviewEnvironmentControlValue,
2248
+ er as getPreviewEnvironmentControls,
2249
+ tr as getPreviewEnvironmentOverride,
2250
+ nr as getRecommendedPygmalionPreviewConcurrency,
2251
+ Se as getStoryboardBaselineEnvironment,
2252
+ We as getStoryboardDiscoveryBaselineEnvironment,
2253
+ rr as getStoryboardGraph,
2254
+ or as getViewportPresets,
2255
+ Le as loadStoryboardDiscovery,
2256
+ sr as mergeScreenPresets,
2257
+ Ze as mergeStoryboardEnvironment,
2258
+ mn as publishStoryboardDiscovery,
2259
+ In as pygmalionNavigate,
2260
+ xn as pygmalionOpenPreview,
2261
+ Pn as pygmalionResetCurrentEdits,
2262
+ ir as reconstructRoutePreviewArtifactScreenshotV3,
2263
+ ar as reconstructRoutePreviewArtifactSnapshotV3,
2264
+ cr as registerDesignCodegenAdapter,
2265
+ lr as resetTokenOverrides,
2266
+ dr as resolvePreviewArtifactFrames,
2267
+ Tt as resolveStoryboardScreenCases,
2268
+ rt as setComponentRegistry,
2269
+ ot as setDesignComponentConnections,
2270
+ ur as setPreviewEnvironmentControlValue,
2271
+ pt as setPreviewEnvironmentControls,
2272
+ ft as setPygmalionAppOrigin,
2273
+ lt as setPygmalionPreviewConcurrency,
2274
+ mt as setPygmalionPreviewRevision,
2275
+ ue as setStoryboardBaselineEnvironment,
2276
+ ne as setStoryboardGraph,
2277
+ st as setTokens,
2278
+ it as setViewportPresets,
2279
+ Nt as storyboardScreenRecipeKey,
2280
+ fr as subscribePreviewEnvironmentControls,
2281
+ mr as subscribeStoryboardGraph,
2282
+ Sn as usePygmalionProject,
2283
+ pr as validateDesignComponentConnections,
2284
+ gr as validatePreviewArtifactBundle,
2285
+ hr as validateRoutePreviewArtifactV3Browser
2200
2286
  };