@pygmalionjs/pygmalion 0.2.35 → 0.2.37

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