@popcorn245/cornfield-components 0.49.0 → 0.50.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -78,7 +78,6 @@ function e() {
78
78
  scenario: null,
79
79
  forgeLit: null,
80
80
  runsMap: null,
81
- threadIndex: null,
82
81
  sceneVersion: 0
83
82
  };
84
83
  }
@@ -96,7 +95,7 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
96
95
  }, y = () => s ? s.nodeType === 9 ? s.documentElement : s.nodeType === 11 ? s.host : s : null, b = o || e(), x = b.selectedNode || null, S = b.selectedEdge || null, C = {
97
96
  node: x,
98
97
  edge: S
99
- }, w = [], T = !1, E = (e, t) => (e.node ? e.node.id : null) !== (t.node ? t.node.id : null) || e.edge !== t.edge, D = (e) => {
98
+ }, w = [], T = !1, ee = (e, t) => (e.node ? e.node.id : null) !== (t.node ? t.node.id : null) || e.edge !== t.edge, E = (e) => {
100
99
  if (w.push(e), !T) {
101
100
  T = !0;
102
101
  try {
@@ -105,7 +104,7 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
105
104
  node: x,
106
105
  edge: S
107
106
  };
108
- if (p || !E(C, t)) continue;
107
+ if (p || !ee(C, t)) continue;
109
108
  let n = C;
110
109
  C = t, O.emit("selection", {
111
110
  ...t,
@@ -117,17 +116,17 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
117
116
  T = !1;
118
117
  }
119
118
  }
120
- }, ee = (e, t, n, r) => {
119
+ }, D = (e, t, n, r) => {
121
120
  let i = {
122
121
  node: x,
123
122
  edge: S
124
123
  };
125
124
  x = e || null, S = t || null;
126
- let a = E(i, {
125
+ let a = ee(i, {
127
126
  node: x,
128
127
  edge: S
129
128
  }), o = !1, s = () => {
130
- o || (o = !0, a && D(n));
129
+ o || (o = !0, a && E(n));
131
130
  };
132
131
  return r || s(), {
133
132
  changed: a,
@@ -140,14 +139,14 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
140
139
  configurable: !0,
141
140
  get: () => x,
142
141
  set: (e) => {
143
- ee(e, S, "state", !1);
142
+ D(e, S, "state", !1);
144
143
  }
145
144
  }), Object.defineProperty(b, "selectedEdge", {
146
145
  enumerable: !0,
147
146
  configurable: !0,
148
147
  get: () => S,
149
148
  set: (e) => {
150
- ee(x, e, "state", !1);
149
+ D(x, e, "state", !1);
151
150
  }
152
151
  });
153
152
  let O = {
@@ -179,7 +178,7 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
179
178
  if (n !== void 0) return n;
180
179
  }
181
180
  },
182
- setSelection: (e, t = null, { source: n = "api", quiet: r = !1 } = {}) => ee(e, t, n, r),
181
+ setSelection: (e, t = null, { source: n = "api", quiet: r = !1 } = {}) => D(e, t, n, r),
183
182
  el: (e) => s ? s.querySelector(`[id="${String(e).replace(/["\\]/g, "\\$&")}"]`) : null,
184
183
  attach(e) {
185
184
  if (g) throw Error("This instance already has a map");
@@ -189,7 +188,12 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
189
188
  };
190
189
  return d.push(t), t;
191
190
  },
192
- active: () => !s || !c ? null : s.nodeType === 1 ? c.activeElement && s.contains(c.activeElement) ? c.activeElement : null : s.activeElement || null,
191
+ active: () => {
192
+ if (!s || !c) return null;
193
+ if (s.nodeType !== 1) return s.activeElement || null;
194
+ let e = typeof s.getRootNode == "function" ? s.getRootNode() : c, t = e && e.activeElement !== void 0 ? e.activeElement : c.activeElement;
195
+ return t && s.contains(t) ? t : null;
196
+ },
193
197
  tokenReader() {
194
198
  let e = y();
195
199
  if (!e || !l || !l.getComputedStyle) return null;
@@ -213,6 +217,9 @@ function n({ root: n = null, base: r = "", fetch: i, strings: a = {}, state: o }
213
217
  },
214
218
  onWindowFocus: (e) => l ? O.listen(l, "focus", () => e()) : () => {},
215
219
  onPageHide: (e) => l ? O.listen(l, "pagehide", () => e()) : () => {},
220
+ onResize: (e) => l ? O.listen(l, "resize", () => e()) : () => {},
221
+ onPageShow: (e) => l ? O.listen(l, "pageshow", () => e()) : () => {},
222
+ onPageFocus: (e) => c ? O.listen(c, "focusin", (t) => e(t)) : () => {},
216
223
  onHide(e) {
217
224
  return c ? O.listen(c, "visibilitychange", () => {
218
225
  O.hidden() && e();
@@ -648,8 +655,68 @@ function S(e, t) {
648
655
  near: r
649
656
  };
650
657
  }
658
+ var C = (e) => !e.kind && !e.dashed;
659
+ function w(e, t, { gap: n = 74 } = {}) {
660
+ let r = new Map(e.map((e) => [e.id, e])), i = e.filter((e) => _(e) !== "added"), a = e.filter((e) => _(e) === "added");
661
+ if (!a.length) return;
662
+ let o = new Set(i.map((e) => e.id)), s = (e) => {
663
+ let n = t.find((t) => C(t) && t.to === e.id && r.has(t.from));
664
+ if (n) return n.from;
665
+ let i = t.find((t) => t.from === e.id && r.has(t.to) || t.to === e.id && r.has(t.from));
666
+ return i ? i.from === e.id ? i.to : i.from : null;
667
+ }, c = (e, t) => i.every((r) => Math.hypot(r.x - e, r.y - t) >= n), l = (e, t, r) => {
668
+ let i = t === 0 && r === 0 ? -Math.PI / 2 : Math.atan2(r, t) || -Math.PI / 2, a = null;
669
+ for (let o = 96; o <= 576; o += 40) {
670
+ let s = Math.max(8, Math.round(2 * Math.PI * o / n));
671
+ for (let n = 0; n < s; n++) {
672
+ let l = Math.ceil(n / 2) * (n % 2 ? 1 : -1) * (2 * Math.PI / s), u = t + Math.cos(i + l) * o, d = r + Math.sin(i + l) * o;
673
+ if (a ||= {
674
+ x: u,
675
+ y: d
676
+ }, c(u, d)) {
677
+ e.x = u, e.y = d;
678
+ return;
679
+ }
680
+ }
681
+ }
682
+ e.x = a.x, e.y = a.y;
683
+ }, u = a.slice();
684
+ for (let e = 0; e <= a.length && u.length; e++) {
685
+ let e = [];
686
+ for (let t of u) {
687
+ let n = r.get(s(t));
688
+ n && o.has(n.id) ? (l(t, n.x, n.y), i.push(t), o.add(t.id)) : e.push(t);
689
+ }
690
+ if (e.length === u.length) break;
691
+ u = e;
692
+ }
693
+ for (let e of u) l(e, 0, 0), i.push(e);
694
+ }
695
+ var T = 50;
696
+ function ee(e, t) {
697
+ let n = new Map(t.tiers.map((e) => [e.key, e]));
698
+ if (e.tiers.some((e) => e.nodes.length && !n.get(e.key)?.nodes.length)) return !1;
699
+ let r = new Map(t.tiers.filter((e) => e.nodes.length).map((e, n) => [e.key, t.headers[n]])), i = new Map(t.tiers.flatMap((e) => e.nodes).map((e) => [e.id, e]));
700
+ e.headers = t.headers.map((e) => ({ ...e }));
701
+ let a = t.top;
702
+ for (let t of e.tiers) {
703
+ if (!t.nodes.length) continue;
704
+ let e = t.nodes.filter((e) => i.has(e.id)), n = t.nodes.filter((e) => !i.has(e.id));
705
+ for (let t of e) {
706
+ let e = i.get(t.id);
707
+ t.x = e.x, t.y = e.y, t.r = e.r;
708
+ }
709
+ if (!n.length) continue;
710
+ let o = r.get(t.key).rows, s = Math.max(...e.map((e) => e.x)), c = (e) => (e - (o - 1) / 2) * T, l = new Set(e.filter((e) => e.x === s).map((e) => Math.round(e.y))), u = 0;
711
+ for (let e of n) {
712
+ for (; l.has(Math.round(c(u)));) u++;
713
+ e.x = s, e.y = c(u), l.add(Math.round(e.y)), a = Math.min(a, -(e.y + 40));
714
+ }
715
+ }
716
+ return e.top = a, !0;
717
+ }
651
718
  // ../core/schema.js
652
- var C = {
719
+ var E = {
653
720
  root: {
654
721
  color: "#f59e0b",
655
722
  r: 28
@@ -734,7 +801,7 @@ var C = {
734
801
  color: "#f7ed81",
735
802
  r: 16
736
803
  }
737
- }, w = Object.freeze({
804
+ }, D = Object.freeze({
738
805
  root: "circle",
739
806
  app: "circle",
740
807
  page: "circle",
@@ -756,21 +823,21 @@ var C = {
756
823
  floor: "square",
757
824
  room: "square",
758
825
  persona: "diamond"
759
- }), T = Object.freeze([
826
+ }), O = Object.freeze([
760
827
  "circle",
761
828
  "rounded-square",
762
829
  "hexagon",
763
830
  "square",
764
831
  "diamond"
765
- ]), E = (e) => typeof e == "string" && Object.hasOwn(w, e) ? w[e] : "circle", D = ["reads", "writes"], ee = [
832
+ ]), te = (e) => typeof e == "string" && Object.hasOwn(D, e) ? D[e] : "circle", ne = ["reads", "writes"], re = [
766
833
  "calls",
767
834
  "triggers",
768
835
  "delivers"
769
- ], O = ["runs-on"];
836
+ ], ie = ["runs-on"];
770
837
  [
771
- ...D,
772
- ...ee,
773
- ...O
838
+ ...ne,
839
+ ...re,
840
+ ...ie
774
841
  ];
775
842
  // ../explorer/cloud-model.js
776
843
  var k = {
@@ -792,45 +859,45 @@ var k = {
792
859
  ticks: 2,
793
860
  color: "#a78bfa"
794
861
  }
795
- }, A = (e) => e && Object.hasOwn(k, e.when) ? e.when : "run", te = (e) => e && e.kind === "calls" ? k[A(e)].ticks : 0, ne = (e) => e && e.kind === "web" ? "web" : "cloud", j = Object.keys(k), re = Object.fromEntries(j.map((e, t) => [e, t])), ie = /* @__PURE__ */ new Set([
862
+ }, ae = (e) => e && Object.hasOwn(k, e.when) ? e.when : "run", oe = (e) => e && e.kind === "calls" ? k[ae(e)].ticks : 0, se = (e) => e && e.kind === "web" ? "web" : "cloud", A = Object.keys(k), ce = Object.fromEntries(A.map((e, t) => [e, t])), le = /* @__PURE__ */ new Set([
796
863
  "persona",
797
864
  "room",
798
865
  "floor"
799
- ]), ae = [
866
+ ]), ue = [
800
867
  "external",
801
868
  "machine",
802
869
  "container",
803
870
  "service",
804
871
  "page",
805
872
  "app"
806
- ], oe = (e) => {
807
- let t = ae.indexOf(e);
808
- return t < 0 ? ae.length : t;
809
- }, se = {
873
+ ], de = (e) => {
874
+ let t = ue.indexOf(e);
875
+ return t < 0 ? ue.length : t;
876
+ }, fe = {
810
877
  color: "#050608",
811
878
  halo: "child"
812
- }, ce = {
879
+ }, pe = {
813
880
  alpha: .92,
814
881
  glow: 10,
815
882
  edgeAlpha: .9,
816
883
  edgeWidth: 2.2
817
- }, le = (e, t) => `${e}->${t}`;
818
- function ue(e, t, n) {
884
+ }, me = (e, t) => `${e}->${t}`;
885
+ function he(e, t, n) {
819
886
  let r = new Map(t.map((e) => [e.id, e])), i = [...new Set(Array.isArray(e) ? e : [])].filter((e) => r.has(e)), a = new Set(i), o = /* @__PURE__ */ new Map(), s = (e, t) => {
820
887
  o.has(e) || o.set(e, []), o.get(e).push(t);
821
888
  }, c = /* @__PURE__ */ new Map();
822
889
  for (let e of n) if (e && e.from && e.to) {
823
890
  if (e.kind === "calls") s(e.to, {
824
891
  from: e.from,
825
- rank: re[A(e)],
892
+ rank: ce[ae(e)],
826
893
  browser: e.side === "browser",
827
- key: le(e.from, e.to)
894
+ key: me(e.from, e.to)
828
895
  });
829
896
  else if (e.kind === "triggers" && (r.get(e.from) || {}).type === "page" && (r.get(e.to) || {}).type === "service") s(e.to, {
830
897
  from: e.from,
831
898
  rank: 0,
832
899
  browser: !1,
833
- key: le(e.from, e.to)
900
+ key: me(e.from, e.to)
834
901
  });
835
902
  else if (e.kind === "runs-on" && Array.isArray(e.mappings)) for (let t of e.mappings) {
836
903
  if (!t || !t.service) continue;
@@ -848,7 +915,7 @@ function ue(e, t, n) {
848
915
  key: null
849
916
  }));
850
917
  return i.length ? [...t, ...i] : t;
851
- }, u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = j.map(() => []);
918
+ }, u = /* @__PURE__ */ new Map(), d = /* @__PURE__ */ new Map(), f = A.map(() => []);
852
919
  i.forEach((e) => f[0].push({
853
920
  id: e,
854
921
  rank: 0,
@@ -858,13 +925,13 @@ function ue(e, t, n) {
858
925
  let { id: n, rank: i, browser: o } = f[e][t], s = u.get(n);
859
926
  if (!(s && (s.rank < i || s.rank === i && s.browser !== o))) for (let e of l(n)) {
860
927
  let t = r.get(e.from);
861
- if (!t || a.has(e.from) || ie.has(t.type)) continue;
928
+ if (!t || a.has(e.from) || le.has(t.type)) continue;
862
929
  let n = Math.max(i, e.rank), s = o || e.browser;
863
- e.key && (!d.has(e.key) || re[d.get(e.key)] > n) && d.set(e.key, j[n]);
930
+ e.key && (!d.has(e.key) || ce[d.get(e.key)] > n) && d.set(e.key, A[n]);
864
931
  let c = u.get(e.from);
865
932
  c && (c.rank < n || c.rank === n && (!c.browser || s)) || (u.set(e.from, {
866
933
  rank: n,
867
- when: j[n],
934
+ when: A[n],
868
935
  browser: s
869
936
  }), f[n].push({
870
937
  id: e.from,
@@ -881,8 +948,8 @@ function ue(e, t, n) {
881
948
  down: i,
882
949
  hits: p,
883
950
  edges: d,
884
- groups: j.map((e) => {
885
- let t = [...p].filter(([, t]) => t.when === e).map(([e]) => e).sort((e, t) => oe(r.get(e).type) - oe(r.get(t).type) || m(e).localeCompare(m(t))), { title: n, color: i } = k[e];
951
+ groups: A.map((e) => {
952
+ let t = [...p].filter(([, t]) => t.when === e).map(([e]) => e).sort((e, t) => de(r.get(e).type) - de(r.get(t).type) || m(e).localeCompare(m(t))), { title: n, color: i } = k[e];
886
953
  return {
887
954
  when: e,
888
955
  title: n,
@@ -892,25 +959,25 @@ function ue(e, t, n) {
892
959
  }).filter((e) => e.ids.length)
893
960
  };
894
961
  }
895
- var M = null;
896
- function de(e, t, n) {
962
+ var j = null;
963
+ function ge(e, t, n) {
897
964
  let r = e && Array.isArray(e.down) ? e.down : [];
898
965
  if (!r.length) return null;
899
966
  let i = r.join("\0");
900
- return M && M.key === i && M.nodes === t && M.edges === n || (M = {
967
+ return j && j.key === i && j.nodes === t && j.edges === n || (j = {
901
968
  key: i,
902
969
  nodes: t,
903
970
  edges: n,
904
- radius: ue(r, t, n)
905
- }), M.radius;
971
+ radius: he(r, t, n)
972
+ }), j.radius;
906
973
  }
907
- function fe(e, t) {
974
+ function _e(e, t) {
908
975
  if (!t) return;
909
976
  let n = new Set(t.down);
910
977
  for (let r of e.nodes) {
911
978
  if (n.has(r.id)) {
912
979
  Object.assign(r, {
913
- color: se.color,
980
+ color: fe.color,
914
981
  alpha: 1,
915
982
  labelAlpha: 1,
916
983
  labelColor: "#f8fafc",
@@ -918,12 +985,12 @@ function fe(e, t) {
918
985
  labelStrike: !0,
919
986
  connected: !0,
920
987
  glow: 0
921
- }), r.halo === "none" && (r.halo = se.halo);
988
+ }), r.halo === "none" && (r.halo = fe.halo);
922
989
  continue;
923
990
  }
924
991
  let e = t.hits.get(r.id);
925
992
  if (!e) continue;
926
- let i = Math.max(r.alpha, ce.alpha);
993
+ let i = Math.max(r.alpha, pe.alpha);
927
994
  Object.assign(r, {
928
995
  color: k[e.when].color,
929
996
  alpha: i,
@@ -931,101 +998,101 @@ function fe(e, t) {
931
998
  labelColor: "#f8fafc",
932
999
  labelKeep: !0,
933
1000
  connected: !0,
934
- glow: Math.max(r.glow || 0, ce.glow)
1001
+ glow: Math.max(r.glow || 0, pe.glow)
935
1002
  });
936
1003
  }
937
1004
  for (let n of e.edges) {
938
- let e = t.edges.get(le(n.from, n.to));
1005
+ let e = t.edges.get(me(n.from, n.to));
939
1006
  if (!e) continue;
940
1007
  let r = k[e].color;
941
- n.color = r, n.glow && (n.glowColor = r), n.alpha = Math.max(n.alpha, ce.edgeAlpha), n.width = Math.max(n.width, ce.edgeWidth), n.packet &&= {
1008
+ n.color = r, n.glow && (n.glowColor = r), n.alpha = Math.max(n.alpha, pe.edgeAlpha), n.width = Math.max(n.width, pe.edgeWidth), n.packet &&= {
942
1009
  ...n.packet,
943
1010
  glowColor: r
944
1011
  };
945
1012
  }
946
1013
  }
947
1014
  // ../explorer/house-model.js
948
- var pe = /* @__PURE__ */ new Set([
1015
+ var ve = /* @__PURE__ */ new Set([
949
1016
  "container",
950
1017
  "stack",
951
1018
  "machine"
952
1019
  ]);
953
- function me(e, t) {
1020
+ function ye(e, t) {
954
1021
  return !!(e.house && e.house.shown && e.house.shown.has(t.id));
955
1022
  }
956
- var N = null;
957
- function he(e) {
1023
+ var M = null;
1024
+ function be(e) {
958
1025
  let t = e.house && e.house.cloudLines;
959
- return !t || !t.length ? e.edges : (N && N.edges === e.edges && N.lines === t || (N = {
1026
+ return !t || !t.length ? e.edges : (M && M.edges === e.edges && M.lines === t || (M = {
960
1027
  edges: e.edges,
961
1028
  lines: t,
962
1029
  all: [...e.edges, ...t]
963
- }), N.all);
1030
+ }), M.all);
964
1031
  }
965
- function ge(e, t, n) {
966
- return e.kind === "runs-on" || e.kind === "delivers" ? "flow" : e.kind === "calls" && n && n.type === "external" ? e.rolled || !(t && pe.has(t.type)) ? "flow" : null : !e.kind && !e.dashed && t && t.type === "persona" && n && n.type === "device" || !e.kind && e.dashed && t && (t.type === "container" || t.type === "external") && n && n.type === "device" ? "link" : null;
1032
+ function xe(e, t, n) {
1033
+ return e.kind === "runs-on" || e.kind === "delivers" ? "flow" : e.kind === "calls" && n && n.type === "external" ? e.rolled || !(t && ve.has(t.type)) ? "flow" : null : !e.kind && !e.dashed && t && t.type === "persona" && n && n.type === "device" || !e.kind && e.dashed && t && (t.type === "container" || t.type === "external") && n && n.type === "device" ? "link" : null;
967
1034
  }
968
- var _e = [
1035
+ var Se = [
969
1036
  "persona",
970
1037
  "machine",
971
1038
  "stack",
972
1039
  "floor",
973
1040
  "external"
974
1041
  ];
975
- function ve(e, t) {
1042
+ function Ce(e, t) {
976
1043
  let n = t.house;
977
1044
  e.decor.rings = [], e.decor.lanes = n && n.lanes ? n.lanes : [];
978
- for (let t of e.nodes) t.type === "room" ? (t.label = "", t.labelKeep = !1) : _e.includes(t.type) && (t.labelKeep = !0);
979
- return n && n.cloudIds && n.cloudIds.size && Ce(e, t), e;
1045
+ for (let t of e.nodes) t.type === "room" ? (t.label = "", t.labelKeep = !1) : Se.includes(t.type) && (t.labelKeep = !0);
1046
+ return n && n.cloudIds && n.cloudIds.size && Oe(e, t), e;
980
1047
  }
981
- var ye = {
1048
+ var we = {
982
1049
  run: .9,
983
1050
  deploy: .25,
984
1051
  renew: .9
985
- }, be = {
1052
+ }, Te = {
986
1053
  alpha: .9,
987
1054
  width: 2.2
988
- }, xe = Object.keys(k), Se = (e) => xe.find((t) => k[t].ticks === (e.ticks || 0)) || "run";
989
- function Ce(e, t) {
990
- let n = t.house, r = t.scenario ? de(t.scenario, t.nodes, t.edges) : null, i = !t.scenario && !!t.selectedNode, a = new Map((n.cloudLines || []).map((e) => [`${e.from}->${e.to}|${e.when}`, e])), o = r ? new Set(r.down) : null;
1055
+ }, Ee = Object.keys(k), De = (e) => Ee.find((t) => k[t].ticks === (e.ticks || 0)) || "run";
1056
+ function Oe(e, t) {
1057
+ let n = t.house, r = t.scenario ? ge(t.scenario, t.nodes, t.edges) : null, i = !t.scenario && !!t.selectedNode, a = new Map((n.cloudLines || []).map((e) => [`${e.from}->${e.to}|${e.when}`, e])), o = r ? new Set(r.down) : null;
991
1058
  e.edges = e.edges.filter((e) => {
992
1059
  if (e.kind !== "calls" || !n.cloudIds.has(e.to)) return !0;
993
- let t = Se(e);
1060
+ let t = De(e);
994
1061
  if (r) {
995
1062
  let i = a.get(`${e.from}->${e.to}|${t}`), s = o.has(e.to) ? "run" : r.hits.has(e.to) ? r.hits.get(e.to).when : null;
996
1063
  if (i && s) {
997
- let n = xe[Math.max(xe.indexOf(s), xe.indexOf(t))];
1064
+ let n = Ee[Math.max(Ee.indexOf(s), Ee.indexOf(t))];
998
1065
  return Object.assign(e, {
999
1066
  color: k[n].color,
1000
- alpha: Math.max(e.alpha, be.alpha),
1001
- width: Math.max(e.width, be.width)
1067
+ alpha: Math.max(e.alpha, Te.alpha),
1068
+ width: Math.max(e.width, Te.width)
1002
1069
  }), e.glow && (e.glowColor = e.color), !0;
1003
1070
  }
1004
1071
  return !n.phone || r.edges.has(`${e.from}->${e.to}`);
1005
1072
  }
1006
- return i ? !n.phone || e.alpha >= .5 : !n.phone && (e.alpha = ye[t], !0);
1073
+ return i ? !n.phone || e.alpha >= .5 : !n.phone && (e.alpha = we[t], !0);
1007
1074
  });
1008
1075
  }
1009
1076
  // ../explorer/check-model.js
1010
- var we = {
1077
+ var ke = {
1011
1078
  allowed: "#4ade80",
1012
1079
  refused: "#ff2d55",
1013
1080
  mismatch: "#fbbf24"
1014
- }, Te = 18, Ee = 4.5;
1015
- function De(e, t) {
1081
+ }, Ae = 18, je = 4.5;
1082
+ function Me(e, t) {
1016
1083
  return e.from !== t.from || e.to !== t.to ? !1 : t.kind ? e.kind === t.kind && (!t.flow || e.key.split("|")[2] === t.flow) : e.kind === "ownership" || e.kind === "usage";
1017
1084
  }
1018
- function Oe(e, t) {
1085
+ function Ne(e, t) {
1019
1086
  let n = t && t.verdict;
1020
1087
  if (!n || t.done) return;
1021
- let r = n.mismatch ? we.mismatch : we[n.state];
1088
+ let r = n.mismatch ? ke.mismatch : ke[n.state];
1022
1089
  if (!r) return;
1023
1090
  let { node: i, edge: a } = t.current;
1024
1091
  if (i !== void 0) {
1025
1092
  let t = e.nodes.find((e) => e.id === i);
1026
- t && (t.color = r, t.glow = Math.max(t.glow || 0, Te));
1093
+ t && (t.color = r, t.glow = Math.max(t.glow || 0, Ae));
1027
1094
  } else a && e.edges.forEach((e) => {
1028
- De(e, a) && (e.color = r, e.glowColor = r, e.glow = Math.max(e.glow || 0, Te), e.width = Math.max(e.width || 0, Ee), e.packet &&= n.state === "refused" && !n.mismatch ? {
1095
+ Me(e, a) && (e.color = r, e.glowColor = r, e.glow = Math.max(e.glow || 0, Ae), e.width = Math.max(e.width || 0, je), e.packet &&= n.state === "refused" && !n.mismatch ? {
1029
1096
  ...e.packet,
1030
1097
  color: r,
1031
1098
  glowColor: r,
@@ -1038,26 +1105,26 @@ function Oe(e, t) {
1038
1105
  });
1039
1106
  }
1040
1107
  // ../core/layers.js
1041
- var ke = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, Ae = Object.freeze([
1108
+ var Pe = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, Fe = Object.freeze([
1042
1109
  "key",
1043
1110
  "label",
1044
1111
  "desc",
1045
1112
  "match"
1046
- ]), P = Object.freeze([
1113
+ ]), N = Object.freeze([
1047
1114
  "type",
1048
1115
  "kind",
1049
1116
  "parent",
1050
1117
  "field"
1051
- ]), je = Object.freeze([
1118
+ ]), Ie = Object.freeze([
1052
1119
  "add",
1053
1120
  "off",
1054
1121
  "order"
1055
- ]), Me = /^[A-Za-z][A-Za-z0-9_]*$/, Ne = Object.freeze([
1122
+ ]), Le = /^[A-Za-z][A-Za-z0-9_]*$/, Re = Object.freeze([
1056
1123
  "root",
1057
1124
  "external",
1058
1125
  "floor",
1059
1126
  "room"
1060
- ]), Pe = Object.freeze([
1127
+ ]), ze = Object.freeze([
1061
1128
  {
1062
1129
  key: "app",
1063
1130
  label: "Apps",
@@ -1201,91 +1268,91 @@ var ke = /^[a-z][a-z0-9]*(-[a-z0-9]+)*$/, Ae = Object.freeze([
1201
1268
  match: { type: "persona" },
1202
1269
  live: !0
1203
1270
  }
1204
- ]), Fe = Object.freeze(Pe.map((e) => e.key)), Ie = new Set(Fe), Le = Object.keys(C), F = (e) => typeof e == "object" && !!e && !Array.isArray(e), Re = /* @__PURE__ */ RegExp("[\\u0000-\\u001f\\u007f-\\u009f\\u2028\\u2029]"), I = (e) => typeof e == "string" ? `"${e.length > 40 ? `${e.slice(0, 40)}…` : e}"` : typeof e == "number" || typeof e == "boolean" ? String(e) : Array.isArray(e) ? "a list" : e === null ? "null" : typeof e, ze = (e) => typeof e == "string" && e.length > 0 && e.length <= 80 && !Re.test(e) || typeof e == "number" && Number.isFinite(e) || typeof e == "boolean", Be = /^[a-z0-9]+(-[a-z0-9]+)*$/, Ve = new Set(Le), He = (e, t) => Ve.has(e) && typeof t == "string" && t.length <= 32 && Be.test(t) ? `--corn-map-kind-${e}-${t}` : null, Ue = (e) => typeof e == "string" && e.length <= 32 && ke.test(e) ? `--corn-map-group-${e}` : null, We = ({ type: e, kind: t, layer: n, group: r }) => [
1205
- He(e, t),
1206
- n ? Ue(n) : null,
1271
+ ]), Be = Object.freeze(ze.map((e) => e.key)), Ve = new Set(Be), He = Object.keys(E), P = (e) => typeof e == "object" && !!e && !Array.isArray(e), Ue = /* @__PURE__ */ RegExp("[\\u0000-\\u001f\\u007f-\\u009f\\u2028\\u2029]"), F = (e) => typeof e == "string" ? `"${e.length > 40 ? `${e.slice(0, 40)}…` : e}"` : typeof e == "number" || typeof e == "boolean" ? String(e) : Array.isArray(e) ? "a list" : e === null ? "null" : typeof e, We = (e) => typeof e == "string" && e.length > 0 && e.length <= 80 && !Ue.test(e) || typeof e == "number" && Number.isFinite(e) || typeof e == "boolean", Ge = /^[a-z0-9]+(-[a-z0-9]+)*$/, Ke = new Set(He), qe = (e, t) => Ke.has(e) && typeof t == "string" && t.length <= 32 && Ge.test(t) ? `--corn-map-kind-${e}-${t}` : null, Je = (e) => typeof e == "string" && e.length <= 32 && Pe.test(e) ? `--corn-map-group-${e}` : null, Ye = ({ type: e, kind: t, layer: n, group: r }) => [
1272
+ qe(e, t),
1273
+ n ? Je(n) : null,
1207
1274
  `--corn-map-node-${e}`,
1208
1275
  `--corn-map-group-${r || e}`
1209
1276
  ].filter(Boolean);
1210
- function Ge(e) {
1277
+ function Xe(e) {
1211
1278
  if (typeof e != "string") return null;
1212
- if (Ve.has(e)) return { type: e };
1279
+ if (Ke.has(e)) return { type: e };
1213
1280
  let t = e.indexOf(":");
1214
1281
  if (t < 0) return null;
1215
1282
  let n = e.slice(0, t), r = e.slice(t + 1);
1216
- return n === "layer" ? ke.test(r) && r.length <= 32 ? { layer: r } : null : Ve.has(n) && Be.test(r) && r.length <= 32 ? {
1283
+ return n === "layer" ? Pe.test(r) && r.length <= 32 ? { layer: r } : null : Ke.has(n) && Ge.test(r) && r.length <= 32 ? {
1217
1284
  type: n,
1218
1285
  kind: r
1219
1286
  } : null;
1220
1287
  }
1221
- function Ke(e, t, n) {
1288
+ function Ze(e, t, n) {
1222
1289
  let r = [];
1223
- return typeof t == "string" && Be.test(t) && t.length <= 32 && r.push(`${e}:${t}`), n && r.push(`layer:${n}`), r.push(e), r;
1290
+ return typeof t == "string" && Ge.test(t) && t.length <= 32 && r.push(`${e}:${t}`), n && r.push(`layer:${n}`), r.push(e), r;
1224
1291
  }
1225
- var qe = /* @__PURE__ */ new WeakMap();
1226
- function Je(e) {
1227
- let t = qe.get(e);
1292
+ var Qe = /* @__PURE__ */ new WeakMap();
1293
+ function $e(e) {
1294
+ let t = Qe.get(e);
1228
1295
  if (t && t.length === e.length) return t.map;
1229
1296
  let n = /* @__PURE__ */ new Map();
1230
1297
  for (let t of e) t && !t.dashed && !t.kind && t.from && t.to && t.from !== t.to && !n.has(t.to) && n.set(t.to, t.from);
1231
- return qe.set(e, {
1298
+ return Qe.set(e, {
1232
1299
  length: e.length,
1233
1300
  map: n
1234
1301
  }), n;
1235
1302
  }
1236
- var Ye = (e, t) => Array.isArray(e) ? e.includes(t) : e === t;
1237
- function Xe(e, t, n) {
1238
- if (!F(e)) return !1;
1303
+ var I = (e, t) => Array.isArray(e) ? e.includes(t) : e === t;
1304
+ function et(e, t, n) {
1305
+ if (!P(e)) return !1;
1239
1306
  let r = !1;
1240
- if (e.type !== void 0 && (r = !0, !Ye(e.type, t.type)) || e.kind !== void 0 && (r = !0, !Ye(e.kind, t.kind)) || e.parent !== void 0 && (r = !0, !n || !Ye(e.parent, n(t)))) return !1;
1307
+ if (e.type !== void 0 && (r = !0, !I(e.type, t.type)) || e.kind !== void 0 && (r = !0, !I(e.kind, t.kind)) || e.parent !== void 0 && (r = !0, !n || !I(e.parent, n(t)))) return !1;
1241
1308
  if (e.field !== void 0) {
1242
1309
  r = !0;
1243
1310
  for (let n of Object.keys(e.field)) {
1244
1311
  if (!Object.hasOwn(t, n)) return !1;
1245
1312
  let r = t[n], i = e.field[n];
1246
- if (!(Array.isArray(r) ? r.some((e) => Ye(i, e)) : Ye(i, r))) return !1;
1313
+ if (!(Array.isArray(r) ? r.some((e) => I(i, e)) : I(i, r))) return !1;
1247
1314
  }
1248
1315
  }
1249
1316
  return r;
1250
1317
  }
1251
- var Ze = [...Pe.filter((e) => e.match)].sort((e, t) => Number("kind" in t.match) - Number("kind" in e.match));
1252
- function Qe(e) {
1318
+ var tt = [...ze.filter((e) => e.match)].sort((e, t) => Number("kind" in t.match) - Number("kind" in e.match));
1319
+ function nt(e) {
1253
1320
  if (e.type === "root") return null;
1254
1321
  if (e.type === "external") return e.kind === "web" ? "web" : "cloud";
1255
- for (let t of Ze) if (Xe(t.match, e)) return t.key;
1322
+ for (let t of tt) if (et(t.match, e)) return t.key;
1256
1323
  return e.type;
1257
1324
  }
1258
- function $e(e, t, n) {
1325
+ function rt(e, t, n) {
1259
1326
  if (!e || !e.length || t.type === "root") return null;
1260
- for (let r of e) if (Xe(r.match, t, n)) return r.key;
1327
+ for (let r of e) if (et(r.match, t, n)) return r.key;
1261
1328
  return null;
1262
1329
  }
1263
- var et = (e, t, n) => $e(e, t, n) || Qe(t), tt = `${Le.slice(0, 5).join(", ")}, …`, nt = (e) => {
1264
- let t = (Array.isArray(e) ? e : []).map((e) => F(e) && typeof e.key == "string" ? e.key : null).filter((e) => e && ke.test(e));
1265
- return `${Fe.slice(0, 3).join(", ")}, …${t.length ? `, ${t[t.length - 1]}` : ""}`;
1330
+ var it = (e, t, n) => rt(e, t, n) || nt(t), at = `${He.slice(0, 5).join(", ")}, …`, ot = (e) => {
1331
+ let t = (Array.isArray(e) ? e : []).map((e) => P(e) && typeof e.key == "string" ? e.key : null).filter((e) => e && Pe.test(e));
1332
+ return `${Be.slice(0, 3).join(", ")}, …${t.length ? `, ${t[t.length - 1]}` : ""}`;
1266
1333
  };
1267
- function rt(e, t, n, r) {
1334
+ function st(e, t, n, r) {
1268
1335
  return Array.isArray(n) ? (n.length ? n.length > 20 && r.push(`${e}.${t} has ${n.length} values: at most 20.`) : r.push(`${e}.${t} is an empty list: give at least one value, or leave the key out.`), n.length <= 20 ? n : []) : [n];
1269
1336
  }
1270
- function it(e, t, n) {
1271
- if (!F(t)) n.push(`${e}.match is { type, kind, parent, field }: say at least one of them.`);
1337
+ function ct(e, t, n) {
1338
+ if (!P(t)) n.push(`${e}.match is { type, kind, parent, field }: say at least one of them.`);
1272
1339
  else {
1273
- for (let r of Object.keys(t)) P.includes(r) || n.push(`${e}.match has unknown key "${r}": known: ${P.join(", ")}. A match is data: no pattern, no function.`);
1274
- if (!Object.keys(t).some((e) => P.includes(e))) Object.keys(t).length || n.push(`${e}.match is empty: say at least one of ${P.join(", ")}.`);
1340
+ for (let r of Object.keys(t)) N.includes(r) || n.push(`${e}.match has unknown key "${r}": known: ${N.join(", ")}. A match is data: no pattern, no function.`);
1341
+ if (!Object.keys(t).some((e) => N.includes(e))) Object.keys(t).length || n.push(`${e}.match is empty: say at least one of ${N.join(", ")}.`);
1275
1342
  else {
1276
- if ("type" in t) for (let r of rt(`${e}.match`, "type", t.type, n)) typeof r == "string" && Le.includes(r) || n.push(`${e}.match.type ${I(r)} is not a node type (${tt}).`);
1277
- if ("kind" in t) for (let r of rt(`${e}.match`, "kind", t.kind, n)) (typeof r != "string" || !r || r.length > 80 || Re.test(r)) && n.push(`${e}.match.kind ${I(r)}: a kind is text, one line, at most 80 characters.`);
1278
- if ("parent" in t) for (let r of rt(`${e}.match`, "parent", t.parent, n)) (typeof r != "string" || !r || r.length > 200 || Re.test(r)) && n.push(`${e}.match.parent ${I(r)}: a parent is a node id (text), like "pkg-core".`);
1343
+ if ("type" in t) for (let r of st(`${e}.match`, "type", t.type, n)) typeof r == "string" && He.includes(r) || n.push(`${e}.match.type ${F(r)} is not a node type (${at}).`);
1344
+ if ("kind" in t) for (let r of st(`${e}.match`, "kind", t.kind, n)) (typeof r != "string" || !r || r.length > 80 || Ue.test(r)) && n.push(`${e}.match.kind ${F(r)}: a kind is text, one line, at most 80 characters.`);
1345
+ if ("parent" in t) for (let r of st(`${e}.match`, "parent", t.parent, n)) (typeof r != "string" || !r || r.length > 200 || Ue.test(r)) && n.push(`${e}.match.parent ${F(r)}: a parent is a node id (text), like "pkg-core".`);
1279
1346
  if ("field" in t) {
1280
1347
  let r = t.field;
1281
- if (!F(r)) {
1348
+ if (!P(r)) {
1282
1349
  n.push(`${e}.match.field is { name: value }: a node field and the value (or list of values) it must have.`);
1283
1350
  return;
1284
1351
  }
1285
1352
  let i = Object.keys(r);
1286
1353
  i.length || n.push(`${e}.match.field is empty: name a field, like { audience: 'household' }.`), i.length > 4 && n.push(`${e}.match.field names ${i.length} fields: at most 4.`);
1287
1354
  for (let t of i.slice(0, 20)) {
1288
- if (!Me.test(t) || t.length > 40) {
1355
+ if (!Le.test(t) || t.length > 40) {
1289
1356
  n.push(`${e}.match.field "${t.slice(0, 40)}": a field name is letters, digits and "_", starting with a letter.`);
1290
1357
  continue;
1291
1358
  }
@@ -1298,17 +1365,17 @@ function it(e, t, n) {
1298
1365
  continue;
1299
1366
  }
1300
1367
  let i = Array.isArray(r[t]) ? r[t] : [r[t]];
1301
- Array.isArray(r[t]) && (!i.length || i.length > 20) ? n.push(`${e}.match.field.${t} is a list of ${i.length}: one to 20 values.`) : i.every(ze) || n.push(`${e}.match.field.${t}: a value is text, a number, true or false, or a list of them.`);
1368
+ Array.isArray(r[t]) && (!i.length || i.length > 20) ? n.push(`${e}.match.field.${t} is a list of ${i.length}: one to 20 values.`) : i.every(We) || n.push(`${e}.match.field.${t}: a value is text, a number, true or false, or a list of them.`);
1302
1369
  }
1303
1370
  }
1304
1371
  }
1305
1372
  }
1306
1373
  }
1307
- function at(e) {
1374
+ function lt(e) {
1308
1375
  if (e === void 0) return [];
1309
- if (!F(e)) return ["\"layers\" is an object: { add: [{ key, label, match }], off: [keys], order: [keys] }."];
1376
+ if (!P(e)) return ["\"layers\" is an object: { add: [{ key, label, match }], off: [keys], order: [keys] }."];
1310
1377
  let t = [];
1311
- for (let n of Object.keys(e)) je.includes(n) || t.push(`layers has unknown key "${n}": known: ${je.join(", ")}.`);
1378
+ for (let n of Object.keys(e)) Ie.includes(n) || t.push(`layers has unknown key "${n}": known: ${Ie.join(", ")}.`);
1312
1379
  let n = e.add;
1313
1380
  n !== void 0 && !Array.isArray(n) && t.push("layers.add is a list of project layers: [{ key, label, desc?, match }].");
1314
1381
  let r = Array.isArray(n) ? n : [];
@@ -1316,24 +1383,24 @@ function at(e) {
1316
1383
  let i = /* @__PURE__ */ new Map();
1317
1384
  r.slice(0, 100).forEach((e, n) => {
1318
1385
  let r = `layers.add[${n}]`;
1319
- if (!F(e)) {
1386
+ if (!P(e)) {
1320
1387
  t.push(`${r} is { key, label, desc?, match }.`);
1321
1388
  return;
1322
1389
  }
1323
1390
  for (let n of Object.keys(e)) {
1324
- if (Ae.includes(n)) continue;
1391
+ if (Fe.includes(n)) continue;
1325
1392
  let e = /^colou?r$|^icon$|^fill$/i.test(n) ? " Colours and icons are the theme's." : n === "on" || n === "hide" ? " Whether a layer starts off is layers.off." : "";
1326
- t.push(`${r} has unknown key "${n}": known: ${Ae.join(", ")}.${e}`);
1393
+ t.push(`${r} has unknown key "${n}": known: ${Fe.join(", ")}.${e}`);
1327
1394
  }
1328
1395
  let a = e.key;
1329
- typeof a == "string" ? Ie.has(a) ? t.push(`${r}.key ${I(a)} is a starting layer: pick another key.`) : Ne.includes(a) ? t.push(`${r}.key ${I(a)} is reserved (a node type): pick another key.`) : !ke.test(a) || a.length > 32 ? t.push(`${r}.key ${I(a)}: lower-case words joined by "-", like "edge-stack"${a.length > 32 ? ", at most 32 characters" : ""}.`) : i.has(a) ? t.push(`${r}.key ${I(a)} is also layers.add[${i.get(a)}].key: a key is used once.`) : i.set(a, n) : t.push(`${r}.key is required: lower-case words joined by "-", like "edge-stack".`);
1396
+ typeof a == "string" ? Ve.has(a) ? t.push(`${r}.key ${F(a)} is a starting layer: pick another key.`) : Re.includes(a) ? t.push(`${r}.key ${F(a)} is reserved (a node type): pick another key.`) : !Pe.test(a) || a.length > 32 ? t.push(`${r}.key ${F(a)}: lower-case words joined by "-", like "edge-stack"${a.length > 32 ? ", at most 32 characters" : ""}.`) : i.has(a) ? t.push(`${r}.key ${F(a)} is also layers.add[${i.get(a)}].key: a key is used once.`) : i.set(a, n) : t.push(`${r}.key is required: lower-case words joined by "-", like "edge-stack".`);
1330
1397
  let o = (n, i, a) => {
1331
1398
  let o = e[n];
1332
- o === void 0 ? a && t.push(`${r}.${n} is required: plain text, one line, at most ${i} characters.`) : typeof o != "string" || !o.trim() ? t.push(`${r}.${n} ${I(o)}: plain text, one line, at most ${i} characters.`) : Re.test(o) ? t.push(`${r}.${n}: one line of plain text (no line break or control character).`) : [...o].length > i && t.push(`${r}.${n} is ${[...o].length} characters: at most ${i}.`);
1399
+ o === void 0 ? a && t.push(`${r}.${n} is required: plain text, one line, at most ${i} characters.`) : typeof o != "string" || !o.trim() ? t.push(`${r}.${n} ${F(o)}: plain text, one line, at most ${i} characters.`) : Ue.test(o) ? t.push(`${r}.${n}: one line of plain text (no line break or control character).`) : [...o].length > i && t.push(`${r}.${n} is ${[...o].length} characters: at most ${i}.`);
1333
1400
  };
1334
- o("label", 40, !0), o("desc", 120, !1), e.match === void 0 ? t.push(`${r}.match is required: say at least one of ${P.join(", ")}.`) : it(r, e.match, t);
1401
+ o("label", 40, !0), o("desc", 120, !1), e.match === void 0 ? t.push(`${r}.match is required: say at least one of ${N.join(", ")}.`) : ct(r, e.match, t);
1335
1402
  });
1336
- let a = /* @__PURE__ */ new Set([...Fe, ...r.map((e) => F(e) && typeof e.key == "string" ? e.key : null).filter(Boolean)]);
1403
+ let a = /* @__PURE__ */ new Set([...Be, ...r.map((e) => P(e) && typeof e.key == "string" ? e.key : null).filter(Boolean)]);
1337
1404
  for (let r of ["off", "order"]) {
1338
1405
  let i = e[r];
1339
1406
  if (i === void 0) continue;
@@ -1343,18 +1410,18 @@ function at(e) {
1343
1410
  }
1344
1411
  let o = /* @__PURE__ */ new Set();
1345
1412
  i.forEach((e) => {
1346
- typeof e != "string" || !a.has(e) ? t.push(`layers.${r} ${I(e)} is not a layer (${nt(n)}).`) : o.has(e) && t.push(`layers.${r} ${I(e)} is listed twice.`), o.add(e);
1413
+ typeof e != "string" || !a.has(e) ? t.push(`layers.${r} ${F(e)} is not a layer (${ot(n)}).`) : o.has(e) && t.push(`layers.${r} ${F(e)} is listed twice.`), o.add(e);
1347
1414
  });
1348
1415
  }
1349
1416
  return t;
1350
1417
  }
1351
- function ot(e) {
1418
+ function ut(e) {
1352
1419
  let t = {
1353
1420
  add: [],
1354
1421
  off: [],
1355
1422
  order: []
1356
1423
  };
1357
- if (!F(e) || at(e).length) return t;
1424
+ if (!P(e) || lt(e).length) return t;
1358
1425
  let n = (e) => Array.isArray(e) ? e.slice(0, 20) : e;
1359
1426
  return {
1360
1427
  add: (e.add || []).map((e) => {
@@ -1371,7 +1438,7 @@ function ot(e) {
1371
1438
  order: [...e.order || []]
1372
1439
  };
1373
1440
  }
1374
- function st(e) {
1441
+ function dt(e) {
1375
1442
  let t = /* @__PURE__ */ new Map();
1376
1443
  for (let n of e) typeof n.kind == "string" && n.kind && (t.has(n.type) || t.set(n.type, /* @__PURE__ */ new Set()), t.get(n.type).add(n.kind));
1377
1444
  let n = /* @__PURE__ */ new Map();
@@ -1385,71 +1452,71 @@ function st(e) {
1385
1452
  return n;
1386
1453
  }
1387
1454
  // ../explorer/layer-model.js
1388
- var ct = (e) => (e.projectLayers || []).some((e) => e.match && e.match.parent !== void 0) ? (t) => Je(e.edges || []).get(t.id) : void 0;
1389
- function lt(e, t) {
1455
+ var ft = (e) => (e.projectLayers || []).some((e) => e.match && e.match.parent !== void 0) ? (t) => $e(e.edges || []).get(t.id) : void 0;
1456
+ function pt(e, t) {
1390
1457
  let n = e.projectLayers;
1391
- return !n || !n.length ? null : $e(n, t, ct(e));
1458
+ return !n || !n.length ? null : rt(n, t, ft(e));
1392
1459
  }
1393
- var ut = (e, t) => et(e.projectLayers || [], t, ct(e)), dt = /* @__PURE__ */ new WeakMap();
1394
- function ft(e) {
1395
- let t = e.edges || [], n = dt.get(e.nodes);
1460
+ var mt = (e, t) => it(e.projectLayers || [], t, ft(e)), ht = /* @__PURE__ */ new WeakMap();
1461
+ function gt(e) {
1462
+ let t = e.edges || [], n = ht.get(e.nodes);
1396
1463
  if (n && n.edges === t && n.n === e.nodes.length && n.e === t.length) return n.touched;
1397
1464
  let r = S(e.nodes, t).touched;
1398
- return dt.set(e.nodes, {
1465
+ return ht.set(e.nodes, {
1399
1466
  edges: t,
1400
1467
  n: e.nodes.length,
1401
1468
  e: t.length,
1402
1469
  touched: r
1403
1470
  }), r;
1404
1471
  }
1405
- var pt = (e, t) => !!e.proposal && ft(e).has(t.id), mt = /* @__PURE__ */ new WeakMap();
1406
- function ht(e, t) {
1472
+ var _t = (e, t) => !!e.proposal && gt(e).has(t.id), vt = /* @__PURE__ */ new WeakMap();
1473
+ function yt(e, t) {
1407
1474
  if (typeof t.kind != "string" || !t.kind || t.type === "external") return "";
1408
- let n = mt.get(e.nodes);
1475
+ let n = vt.get(e.nodes);
1409
1476
  n && n.n === e.nodes.length || (n = {
1410
1477
  n: e.nodes.length,
1411
- map: st(e.nodes)
1412
- }, mt.set(e.nodes, n));
1478
+ map: dt(e.nodes)
1479
+ }, vt.set(e.nodes, n));
1413
1480
  let r = n.map.get(t.type);
1414
1481
  return r && r.get(t.kind) || "";
1415
1482
  }
1416
- var gt = Object.freeze({
1483
+ var bt = Object.freeze({
1417
1484
  core: ["pkg"],
1418
1485
  store: ["flow"],
1419
1486
  rom: ["flow"]
1420
- }), _t = (e) => !!e && !!e.mark && e.mark !== "none";
1421
- function vt({ nodes: e, edges: t, rowOf: n, flight: r = null }) {
1487
+ }), xt = (e) => !!e && !!e.mark && e.mark !== "none";
1488
+ function St({ nodes: e, edges: t, rowOf: n, flight: r = null }) {
1422
1489
  let { touched: i } = S(e, t), a = /* @__PURE__ */ new Set();
1423
1490
  for (let t of e) {
1424
1491
  if (!i.has(t.id)) continue;
1425
1492
  let e = n(t);
1426
1493
  if (e) {
1427
1494
  a.add(e);
1428
- for (let t of gt[e] || []) a.add(t);
1495
+ for (let t of bt[e] || []) a.add(t);
1429
1496
  }
1430
1497
  r && r.has(t.id) && a.add("runs");
1431
1498
  }
1432
- for (let e of t) _t(e) && e.kind === "flow" && a.add("flow");
1499
+ for (let e of t) xt(e) && e.kind === "flow" && a.add("flow");
1433
1500
  return a;
1434
1501
  }
1435
- function yt({ active: e, touched: t, universe: n, review: r }) {
1502
+ function Ct({ active: e, touched: t, universe: n, review: r }) {
1436
1503
  let i = { ...e };
1437
1504
  if (!r.whole && t.size) for (let e of n) i[e] = t.has(e);
1438
1505
  return Object.assign(i, r.manual || {}, r.step || {}), i;
1439
1506
  }
1440
- var bt = /* @__PURE__ */ new WeakMap();
1441
- function xt(e) {
1442
- let t = e.nodes, n = e.edges || [], r = e.runsMap ? e.runsMap.flight : null, i = bt.get(t);
1507
+ var wt = /* @__PURE__ */ new WeakMap();
1508
+ function Tt(e) {
1509
+ let t = e.nodes, n = e.edges || [], r = e.runsMap ? e.runsMap.flight : null, i = wt.get(t);
1443
1510
  if (i && i.edges === n && i.n === t.length && i.e === n.length && i.flight === r && i.project === e.projectLayers) return i;
1444
- let a = vt({
1511
+ let a = St({
1445
1512
  nodes: t,
1446
1513
  edges: n,
1447
- rowOf: (t) => ut(e, t),
1514
+ rowOf: (t) => mt(e, t),
1448
1515
  flight: r
1449
1516
  }), o = /* @__PURE__ */ new Set([
1450
- ...Pe.map((e) => e.key),
1517
+ ...ze.map((e) => e.key),
1451
1518
  ...(e.projectLayers || []).map((e) => e.key),
1452
- ...t.map((t) => ut(e, t)).filter(Boolean)
1519
+ ...t.map((t) => mt(e, t)).filter(Boolean)
1453
1520
  ]), s = {
1454
1521
  edges: n,
1455
1522
  n: t.length,
@@ -1459,21 +1526,21 @@ function xt(e) {
1459
1526
  touched: a,
1460
1527
  universe: o
1461
1528
  };
1462
- return bt.set(t, s), s;
1529
+ return wt.set(t, s), s;
1463
1530
  }
1464
- var St = /* @__PURE__ */ new WeakMap();
1465
- function Ct(e) {
1531
+ var Et = /* @__PURE__ */ new WeakMap();
1532
+ function Dt(e) {
1466
1533
  let t = e.review;
1467
1534
  if (!t || !e.proposal) return e.activeLayers;
1468
- let n = St.get(t);
1535
+ let n = Et.get(t);
1469
1536
  if (n && n.rev === t.rev && n.version === e.sceneVersion && n.active === e.activeLayers && n.nodes === e.nodes) return n.out;
1470
- let { touched: r, universe: i } = xt(e), a = yt({
1537
+ let { touched: r, universe: i } = Tt(e), a = Ct({
1471
1538
  active: e.activeLayers,
1472
1539
  touched: r,
1473
1540
  universe: i,
1474
1541
  review: t
1475
1542
  });
1476
- return St.set(t, {
1543
+ return Et.set(t, {
1477
1544
  rev: t.rev,
1478
1545
  version: e.sceneVersion,
1479
1546
  active: e.activeLayers,
@@ -1481,7 +1548,7 @@ function Ct(e) {
1481
1548
  out: a
1482
1549
  }), a;
1483
1550
  }
1484
- var wt = (e) => !!e.review && !!e.proposal && !e.review.whole && ft(e).size > 0, Tt = Object.freeze({
1551
+ var Ot = (e) => !!e.review && !!e.proposal && !e.review.whole && gt(e).size > 0, kt = Object.freeze({
1485
1552
  aliceblue: "#f0f8ff",
1486
1553
  antiquewhite: "#faebd7",
1487
1554
  aqua: "#00ffff",
@@ -1630,8 +1697,8 @@ var wt = (e) => !!e.review && !!e.proposal && !e.review.whole && ft(e).size > 0,
1630
1697
  whitesmoke: "#f5f5f5",
1631
1698
  yellow: "#ffff00",
1632
1699
  yellowgreen: "#9acd32"
1633
- }), Et = "[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?", Dt = (e, t, n) => Math.min(n, Math.max(t, e));
1634
- function Ot(e, t) {
1700
+ }), At = "[+-]?(?:\\d+\\.?\\d*|\\.\\d+)(?:e[+-]?\\d+)?", jt = (e, t, n) => Math.min(n, Math.max(t, e));
1701
+ function Mt(e, t) {
1635
1702
  let n = RegExp(`^${t}\\(`, "i").exec(e);
1636
1703
  if (!n || !e.endsWith(")")) return null;
1637
1704
  let r = 0;
@@ -1639,19 +1706,19 @@ function Ot(e, t) {
1639
1706
  else if (e[t] === ")" && --r === 0 && t !== e.length - 1) return null;
1640
1707
  return r === 0 ? e.slice(n[0].length, -1) : null;
1641
1708
  }
1642
- function kt(e, t) {
1709
+ function Nt(e, t) {
1643
1710
  let n = [], r = 0, i = 0;
1644
1711
  for (let a = 0; a < e.length; a++) e[a] === "(" ? r++ : e[a] === ")" ? r-- : e[a] === t && r === 0 && (n.push(e.slice(i, a)), i = a + 1);
1645
1712
  return n.push(e.slice(i)), n;
1646
1713
  }
1647
- var At = (e, t) => {
1648
- let n = RegExp(`^(${Et})(%?)$`, "i").exec(e);
1714
+ var Pt = (e, t) => {
1715
+ let n = RegExp(`^(${At})(%?)$`, "i").exec(e);
1649
1716
  return n ? n[2] ? Number(n[1]) / 100 * t : Number(n[1]) : null;
1650
- }, jt = (e) => e === void 0 ? 1 : (() => {
1651
- let t = At(e, 1);
1652
- return t === null ? null : Dt(t, 0, 1);
1717
+ }, Ft = (e) => e === void 0 ? 1 : (() => {
1718
+ let t = Pt(e, 1);
1719
+ return t === null ? null : jt(t, 0, 1);
1653
1720
  })();
1654
- function Mt(e, t, n) {
1721
+ function It(e, t, n) {
1655
1722
  let r = (t) => (t + e / 30) % 12, i = t * Math.min(n, 1 - n), a = (e) => n - i * Math.max(-1, Math.min(r(e) - 3, Math.min(9 - r(e), 1)));
1656
1723
  return [
1657
1724
  a(0) * 255,
@@ -1659,7 +1726,7 @@ function Mt(e, t, n) {
1659
1726
  a(4) * 255
1660
1727
  ];
1661
1728
  }
1662
- function Nt(e) {
1729
+ function Lt(e) {
1663
1730
  let t = e.trim();
1664
1731
  if (t.includes(",")) {
1665
1732
  let e = t.split(/\s*,\s*/);
@@ -1668,7 +1735,7 @@ function Nt(e) {
1668
1735
  let n = /^(\S+)\s+(\S+)\s+([^\s/]+)(?:\s*\/\s*(\S+))?$/.exec(t);
1669
1736
  return n && !n.slice(1, 4).some((e) => e.includes("/")) ? n.slice(1, n[4] === void 0 ? 4 : 5) : null;
1670
1737
  }
1671
- function Pt(e, t = 0) {
1738
+ function Rt(e, t = 0) {
1672
1739
  let n = String(e).trim().toLowerCase();
1673
1740
  if (n === "transparent") return [
1674
1741
  0,
@@ -1676,7 +1743,7 @@ function Pt(e, t = 0) {
1676
1743
  0,
1677
1744
  0
1678
1745
  ];
1679
- if (Tt[n]) return Pt(Tt[n], t);
1746
+ if (kt[n]) return Rt(kt[n], t);
1680
1747
  let r = /^#([0-9a-f]{3,4})$/.exec(n);
1681
1748
  if (r) {
1682
1749
  let e = [...r[1]].map((e) => parseInt(e + e, 16));
@@ -1696,26 +1763,26 @@ function Pt(e, t = 0) {
1696
1763
  e.length === 8 ? parseInt(e.slice(6, 8), 16) / 255 : 1
1697
1764
  ];
1698
1765
  }
1699
- let i = Ot(n, "rgba?");
1766
+ let i = Mt(n, "rgba?");
1700
1767
  if (i !== null) {
1701
- let e = Nt(i);
1768
+ let e = Lt(i);
1702
1769
  if (!e) return null;
1703
- let t = e.slice(0, 3).map((e) => At(e, 255)), n = jt(e[3]);
1704
- return t.some((e) => e === null) || n === null ? null : [...t.map((e) => Dt(e, 0, 255)), n];
1770
+ let t = e.slice(0, 3).map((e) => Pt(e, 255)), n = Ft(e[3]);
1771
+ return t.some((e) => e === null) || n === null ? null : [...t.map((e) => jt(e, 0, 255)), n];
1705
1772
  }
1706
- let a = Ot(n, "hsla?");
1773
+ let a = Mt(n, "hsla?");
1707
1774
  if (a !== null) {
1708
- let e = Nt(a);
1775
+ let e = Lt(a);
1709
1776
  if (!e) return null;
1710
- let t = RegExp(`^(${Et})(?:deg)?$`).exec(e[0]), n = /%$/.test(e[1]) ? At(e[1], 1) : null, r = /%$/.test(e[2]) ? At(e[2], 1) : null, i = jt(e[3]);
1711
- return !t || n === null || r === null || i === null ? null : [...Mt((Number(t[1]) % 360 + 360) % 360, Dt(n, 0, 1), Dt(r, 0, 1)), i];
1777
+ let t = RegExp(`^(${At})(?:deg)?$`).exec(e[0]), n = /%$/.test(e[1]) ? Pt(e[1], 1) : null, r = /%$/.test(e[2]) ? Pt(e[2], 1) : null, i = Ft(e[3]);
1778
+ return !t || n === null || r === null || i === null ? null : [...It((Number(t[1]) % 360 + 360) % 360, jt(n, 0, 1), jt(r, 0, 1)), i];
1712
1779
  }
1713
- let o = t < 8 ? Ot(n, "color-mix") : null;
1780
+ let o = t < 8 ? Mt(n, "color-mix") : null;
1714
1781
  if (o !== null) {
1715
- let e = kt(o, ",").map((e) => e.trim());
1782
+ let e = Nt(o, ",").map((e) => e.trim());
1716
1783
  if (e.length !== 3 || !/^in\s+srgb$/.test(e[0])) return null;
1717
1784
  let n = (e) => {
1718
- let n = /^(\d*\.?\d+)%\s+(.+)$/.exec(e), r = /^(.+?)\s+(\d*\.?\d+)%$/.exec(e), [i, a] = n ? [n[2], n[1]] : r ? [r[1], r[2]] : [e, null], o = Pt(i, t + 1);
1785
+ let n = /^(\d*\.?\d+)%\s+(.+)$/.exec(e), r = /^(.+?)\s+(\d*\.?\d+)%$/.exec(e), [i, a] = n ? [n[2], n[1]] : r ? [r[1], r[2]] : [e, null], o = Rt(i, t + 1);
1719
1786
  return o && {
1720
1787
  c: o,
1721
1788
  p: a === null ? null : Number(a) / 100
@@ -1723,27 +1790,27 @@ function Pt(e, t = 0) {
1723
1790
  }, r = n(e[1]), i = n(e[2]);
1724
1791
  if (!r || !i || r.p !== null && (r.p < 0 || r.p > 1) || i.p !== null && (i.p < 0 || i.p > 1)) return null;
1725
1792
  let a = r.p ?? (i.p === null ? .5 : 1 - i.p), s = i.p ?? 1 - a;
1726
- return a + s <= 0 ? null : It(r.c, a, i.c, s);
1793
+ return a + s <= 0 ? null : Bt(r.c, a, i.c, s);
1727
1794
  }
1728
1795
  return null;
1729
1796
  }
1730
- function Ft(e) {
1797
+ function zt(e) {
1731
1798
  if (String(e).length > 4096) return null;
1732
1799
  try {
1733
- return Pt(e);
1800
+ return Rt(e);
1734
1801
  } catch {
1735
1802
  return null;
1736
1803
  }
1737
1804
  }
1738
1805
  function L(e) {
1739
- return Ft(e) ?? [
1806
+ return zt(e) ?? [
1740
1807
  0,
1741
1808
  0,
1742
1809
  0,
1743
1810
  0
1744
1811
  ];
1745
1812
  }
1746
- function It(e, t, n, r) {
1813
+ function Bt(e, t, n, r) {
1747
1814
  let i = t + r, [a, o] = [t / i, r / i], s = e[3] * a + n[3] * o, c = (t) => s === 0 ? 0 : (e[t] * e[3] * a + n[t] * n[3] * o) / s;
1748
1815
  return [
1749
1816
  c(0),
@@ -1752,10 +1819,10 @@ function It(e, t, n, r) {
1752
1819
  s * Math.min(1, i)
1753
1820
  ];
1754
1821
  }
1755
- var Lt = (e) => {
1822
+ var Vt = (e) => {
1756
1823
  let t = e / 255;
1757
1824
  return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
1758
- }, Rt = ([e, t, n]) => .2126 * Lt(e) + .7152 * Lt(t) + .0722 * Lt(n), zt = (e, t) => (Math.max(e, t) + .05) / (Math.min(e, t) + .05), R = Object.freeze({
1825
+ }, Ht = ([e, t, n]) => .2126 * Vt(e) + .7152 * Vt(t) + .0722 * Vt(n), Ut = (e, t) => (Math.max(e, t) + .05) / (Math.min(e, t) + .05), R = Object.freeze({
1759
1826
  dark: Object.freeze({
1760
1827
  added: "#2dd4bf",
1761
1828
  changed: "#fbbf24",
@@ -1768,10 +1835,10 @@ var Lt = (e) => {
1768
1835
  removed: "#e20b0b",
1769
1836
  edit: "#6839f6"
1770
1837
  })
1771
- }), Bt = .85, Vt = .9, Ht = .6, Ut = .45, Wt = Object.freeze({
1772
- light: Ht,
1838
+ }), Wt = .85, Gt = .9, Kt = .6, qt = .45, Jt = Object.freeze({
1839
+ light: Kt,
1773
1840
  dark: .5
1774
- }), Gt = Object.freeze({
1841
+ }), Yt = Object.freeze({
1775
1842
  added: Object.freeze({
1776
1843
  ringDash: Object.freeze([5, 4]),
1777
1844
  edgeDash: Object.freeze([7, 5]),
@@ -1792,14 +1859,14 @@ var Lt = (e) => {
1792
1859
  edgeDash: Object.freeze([12, 4]),
1793
1860
  strike: !1
1794
1861
  })
1795
- }), Kt = "#f4f6fa", qt = {
1862
+ }), Xt = "#f4f6fa", Zt = {
1796
1863
  mark: 3.2,
1797
1864
  text: 4.8
1798
- }, Jt = .16, Yt = 1.35, Xt = .11;
1799
- function Zt(e, t) {
1865
+ }, Qt = .16, $t = 1.35, en = .11;
1866
+ function tn(e, t) {
1800
1867
  return e === "light" || e === "dark" ? e : t ? "light" : "dark";
1801
1868
  }
1802
- function Qt([e, t, n]) {
1869
+ function nn([e, t, n]) {
1803
1870
  let r = e / 255, i = t / 255, a = n / 255, o = Math.max(r, i, a), s = Math.min(r, i, a), c = (o + s) / 2;
1804
1871
  if (o === s) return [
1805
1872
  0,
@@ -1813,7 +1880,7 @@ function Qt([e, t, n]) {
1813
1880
  c
1814
1881
  ];
1815
1882
  }
1816
- function $t([e, t, n]) {
1883
+ function rn([e, t, n]) {
1817
1884
  let r = (t) => (t + e / 30) % 12, i = t * Math.min(n, 1 - n), a = (e) => n - i * Math.max(-1, Math.min(r(e) - 3, 9 - r(e), 1));
1818
1885
  return [
1819
1886
  a(0),
@@ -1821,64 +1888,64 @@ function $t([e, t, n]) {
1821
1888
  a(4)
1822
1889
  ].map((e) => Math.round(e * 255));
1823
1890
  }
1824
- var en = (e) => `#${e.map((e) => e.toString(16).padStart(2, "0")).join("")}`, tn = (e, t) => t >= 1 ? en(e) : `rgba(${e.join(", ")}, ${+t.toFixed(3)})`, nn = Rt(L(Kt)), rn = /* @__PURE__ */ new Map();
1891
+ var an = (e) => `#${e.map((e) => e.toString(16).padStart(2, "0")).join("")}`, on = (e, t) => t >= 1 ? an(e) : `rgba(${e.join(", ")}, ${+t.toFixed(3)})`, sn = Ht(L(Xt)), cn = /* @__PURE__ */ new Map();
1825
1892
  function z(e, t = "mark") {
1826
- let n = `${t}|${e}`, r = rn.get(n);
1893
+ let n = `${t}|${e}`, r = cn.get(n);
1827
1894
  if (r !== void 0) return r;
1828
- let i = an(e, t);
1829
- return rn.set(n, i), i;
1895
+ let i = ln(e, t);
1896
+ return cn.set(n, i), i;
1830
1897
  }
1831
- function an(e, t) {
1898
+ function ln(e, t) {
1832
1899
  if (typeof e != "string") return e;
1833
1900
  let [n, r, i, a] = L(e);
1834
1901
  if (a === 0) return e;
1835
- let [o, s, c] = Qt([
1902
+ let [o, s, c] = nn([
1836
1903
  n,
1837
1904
  r,
1838
1905
  i
1839
1906
  ]);
1840
- if ((Math.max(n, r, i) - Math.min(n, r, i)) / 255 < Jt && c > .5) return tn($t([
1907
+ if ((Math.max(n, r, i) - Math.min(n, r, i)) / 255 < Qt && c > .5) return on(rn([
1841
1908
  o,
1842
1909
  s,
1843
- Math.max(Xt, 1 - c)
1910
+ Math.max(en, 1 - c)
1844
1911
  ]), a);
1845
- let l = qt[t] || qt.mark;
1846
- if (zt(Rt([
1912
+ let l = Zt[t] || Zt.mark;
1913
+ if (Ut(Ht([
1847
1914
  n,
1848
1915
  r,
1849
1916
  i
1850
- ]), nn) >= l) return e;
1917
+ ]), sn) >= l) return e;
1851
1918
  let u = 0, d = c;
1852
1919
  for (let e = 0; e < 20; e++) {
1853
1920
  let e = (u + d) / 2;
1854
- zt(Rt($t([
1921
+ Ut(Ht(rn([
1855
1922
  o,
1856
1923
  s,
1857
1924
  e
1858
- ])), nn) >= l ? u = e : d = e;
1925
+ ])), sn) >= l ? u = e : d = e;
1859
1926
  }
1860
- return tn($t([
1927
+ return on(rn([
1861
1928
  o,
1862
1929
  s,
1863
1930
  u
1864
1931
  ]), a);
1865
1932
  }
1866
- var on = (e) => {
1933
+ var un = (e) => {
1867
1934
  e && (e.color = z(e.color, "text"));
1868
1935
  };
1869
- function sn(e) {
1936
+ function dn(e) {
1870
1937
  e.theme = "light";
1871
1938
  for (let t of e.nodes) t.color = z(t.color), t.labelColor = z(t.labelColor, "text");
1872
1939
  for (let t of e.edges) {
1873
1940
  if (t.mark && t.mark !== "none") t.color = R.dark[t.mark] === t.color ? R.light[t.mark] : z(t.color);
1874
1941
  else {
1875
- t.alpha < 1 && (t.alpha = Math.min(1, t.alpha * Yt)), t.color = z(t.color);
1942
+ t.alpha < 1 && (t.alpha = Math.min(1, t.alpha * $t)), t.color = z(t.color);
1876
1943
  let [e, n, r, i] = L(t.color);
1877
- i > 0 && i < 1 && (t.color = tn([
1944
+ i > 0 && i < 1 && (t.color = on([
1878
1945
  e,
1879
1946
  n,
1880
1947
  r
1881
- ], Math.min(1, i * Yt)));
1948
+ ], Math.min(1, i * $t)));
1882
1949
  }
1883
1950
  t.glowColor &&= z(t.glowColor), t.label &&= {
1884
1951
  ...t.label,
@@ -1906,37 +1973,37 @@ function sn(e) {
1906
1973
  "title",
1907
1974
  "note",
1908
1975
  "arrow"
1909
- ]) t[e] && (t[e] = { ...t[e] }, on(t[e]));
1976
+ ]) t[e] && (t[e] = { ...t[e] }, un(t[e]));
1910
1977
  return t;
1911
1978
  }), e;
1912
1979
  }
1913
- var cn = 1.2, B = 96, ln = 24, un = "glyph:", dn = "#ffffff", fn = "#0b1220";
1914
- Object.freeze(Object.keys(C));
1915
- var pn = (e) => typeof e == "string" && Object.hasOwn(C, e), mn = (e, t) => `${un}${e}|${t}`, hn = (e) => typeof e == "string" && e.startsWith(un);
1916
- function gn(e) {
1980
+ var fn = 1.2, B = 96, pn = 24, mn = "glyph:", hn = "#ffffff", gn = "#0b1220";
1981
+ Object.freeze(Object.keys(E));
1982
+ var _n = (e) => typeof e == "string" && Object.hasOwn(E, e), vn = (e, t) => `${mn}${e}|${t}`, yn = (e) => typeof e == "string" && e.startsWith(mn);
1983
+ function bn(e) {
1917
1984
  let t = e.slice(6), n = t.indexOf("|");
1918
1985
  return {
1919
1986
  type: t.slice(0, n),
1920
1987
  ink: t.slice(n + 1)
1921
1988
  };
1922
1989
  }
1923
- var _n = ([e, t, n]) => {
1990
+ var xn = ([e, t, n]) => {
1924
1991
  let r = (e) => {
1925
1992
  let t = e / 255;
1926
1993
  return t <= .03928 ? t / 12.92 : ((t + .055) / 1.055) ** 2.4;
1927
1994
  };
1928
1995
  return .2126 * r(e) + .7152 * r(t) + .0722 * r(n);
1929
- }, vn = (e, t) => {
1996
+ }, Sn = (e, t) => {
1930
1997
  let [n, r] = e > t ? [e, t] : [t, e];
1931
1998
  return (n + .05) / (r + .05);
1932
1999
  };
1933
- function yn(e) {
1934
- let t = _n(L(e));
1935
- return vn(1, t) >= vn(_n(L("#0b1220")), t) ? dn : fn;
2000
+ function Cn(e) {
2001
+ let t = xn(L(e));
2002
+ return Sn(1, t) >= Sn(xn(L("#0b1220")), t) ? hn : gn;
1936
2003
  }
1937
- var bn = (e, t) => t && t.values && t.values["--corn-map-glyph"] || yn(e.color), xn = (e, t) => !!e.glyph && !e.icon && !e.letters && e.r * 2 * t >= 14, Sn = {
2004
+ var wn = (e, t) => t && t.values && t.values["--corn-map-glyph"] || Cn(e.color), Tn = (e, t) => !!e.glyph && !e.icon && !e.letters && e.r * 2 * t >= 14, En = {
1938
2005
  root: (e) => {
1939
- Cn(e, 12, 12, 8), H(e, 12, 12, 3.2);
2006
+ Dn(e, 12, 12, 8), H(e, 12, 12, 3.2);
1940
2007
  },
1941
2008
  app: (e) => {
1942
2009
  e.beginPath(), e.rect(3.5, 5, 17, 14), e.stroke(), V(e, 3.5, 9.5, 20.5, 9.5);
@@ -1948,7 +2015,7 @@ var bn = (e, t) => t && t.values && t.values["--corn-map-glyph"] || yn(e.color),
1948
2015
  e.beginPath(), e.rect(4, 7, 16, 13), e.stroke(), V(e, 4, 12, 20, 12), V(e, 12, 7, 12, 12);
1949
2016
  },
1950
2017
  core: (e) => {
1951
- Cn(e, 12, 12, 8.2), H(e, 12, 12, 4);
2018
+ Dn(e, 12, 12, 8.2), H(e, 12, 12, 4);
1952
2019
  },
1953
2020
  token: (e) => {
1954
2021
  for (let [t, n] of [
@@ -2011,35 +2078,35 @@ var bn = (e, t) => t && t.values && t.values["--corn-map-glyph"] || yn(e.color),
2011
2078
  function V(e, t, n, r, i) {
2012
2079
  e.beginPath(), e.moveTo(t, n), e.lineTo(r, i), e.stroke();
2013
2080
  }
2014
- function Cn(e, t, n, r) {
2081
+ function Dn(e, t, n, r) {
2015
2082
  e.beginPath(), e.arc(t, n, r, 0, Math.PI * 2), e.stroke();
2016
2083
  }
2017
2084
  function H(e, t, n, r) {
2018
2085
  e.beginPath(), e.arc(t, n, r, 0, Math.PI * 2), e.fill();
2019
2086
  }
2020
- function wn(e, t, n, r) {
2021
- let i = Sn[t];
2087
+ function On(e, t, n, r) {
2088
+ let i = En[t];
2022
2089
  if (!i) return;
2023
- let a = n / ln;
2090
+ let a = n / pn;
2024
2091
  e.save(), e.scale(a, a), e.lineWidth = 2.4, e.lineCap = "round", e.lineJoin = "round", e.strokeStyle = r, e.fillStyle = r, i(e), e.restore();
2025
2092
  }
2026
- var Tn = /* @__PURE__ */ new Map();
2027
- function En(e, t) {
2028
- if (!pn(e) || typeof t != "string") return null;
2029
- let n = mn(e, t);
2030
- if (Tn.has(n)) return Tn.get(n);
2031
- if (Tn.size >= 64) return null;
2093
+ var kn = /* @__PURE__ */ new Map();
2094
+ function An(e, t) {
2095
+ if (!_n(e) || typeof t != "string") return null;
2096
+ let n = vn(e, t);
2097
+ if (kn.has(n)) return kn.get(n);
2098
+ if (kn.size >= 64) return null;
2032
2099
  let r = null;
2033
2100
  try {
2034
2101
  let n = typeof OffscreenCanvas < "u" ? new OffscreenCanvas(B, B) : typeof document < "u" ? Object.assign(document.createElement("canvas"), {
2035
2102
  width: B,
2036
2103
  height: B
2037
2104
  }) : null, i = n && n.getContext && n.getContext("2d");
2038
- i && i.stroke && (wn(i, e, B, t), r = n);
2105
+ i && i.stroke && (On(i, e, B, t), r = n);
2039
2106
  } catch {
2040
2107
  r = null;
2041
2108
  }
2042
- return Tn.set(n, r), r;
2109
+ return kn.set(n, r), r;
2043
2110
  }
2044
2111
  Object.freeze([
2045
2112
  "pulls",
@@ -2072,12 +2139,12 @@ Object.freeze([
2072
2139
  ["other", "Cancelled or skipped"]
2073
2140
  ]
2074
2141
  });
2075
- var Dn = .2, On = "#f87171";
2076
- function kn(e, t) {
2142
+ var jn = .2, Mn = "#f87171";
2143
+ function Nn(e, t) {
2077
2144
  if (!t || !t.changed.size && !t.failing.size) return;
2078
2145
  let n = (e) => t.changed.has(e) || t.failing.has(e);
2079
- for (let r of e.nodes) n(r.id) ? (r.alpha = 1, r.labelAlpha = 1, r.glow = Math.max(r.glow, 14), r.labelKeep = !0, r.halo !== "selected" && (r.halo = "match"), t.failing.has(r.id) && (r.color = On)) : (r.alpha = Math.min(r.alpha, Dn), r.labelAlpha = r.alpha, r.glow = 0);
2080
- for (let t of e.edges) !n(t.from) && !n(t.to) && (t.alpha = Math.min(t.alpha, Dn / 2));
2146
+ for (let r of e.nodes) n(r.id) ? (r.alpha = 1, r.labelAlpha = 1, r.glow = Math.max(r.glow, 14), r.labelKeep = !0, r.halo !== "selected" && (r.halo = "match"), t.failing.has(r.id) && (r.color = Mn)) : (r.alpha = Math.min(r.alpha, jn), r.labelAlpha = r.alpha, r.glow = 0);
2147
+ for (let t of e.edges) !n(t.from) && !n(t.to) && (t.alpha = Math.min(t.alpha, jn / 2));
2081
2148
  }
2082
2149
  // ../explorer/search-model.js
2083
2150
  var U = Object.freeze({
@@ -2086,7 +2153,7 @@ var U = Object.freeze({
2086
2153
  label: 2,
2087
2154
  idOrFile: 3,
2088
2155
  typeOrKind: 4
2089
- }), An = Object.freeze({
2156
+ }), Pn = Object.freeze({
2090
2157
  root: "Root",
2091
2158
  app: "Apps",
2092
2159
  pkg: "Packages",
@@ -2108,22 +2175,22 @@ var U = Object.freeze({
2108
2175
  floor: "House",
2109
2176
  room: "House",
2110
2177
  persona: "People"
2111
- }), jn = (e) => e && e.charAt(0).toUpperCase() + e.slice(1), Mn = (e) => An[e.type] || jn(String(e.type || "")), W = (e) => typeof e == "string" ? e.toLowerCase() : "", Nn = /[^\p{L}\p{N}]+/u;
2112
- function Pn(e, t) {
2178
+ }), Fn = (e) => e && e.charAt(0).toUpperCase() + e.slice(1), In = (e) => Pn[e.type] || Fn(String(e.type || "")), W = (e) => typeof e == "string" ? e.toLowerCase() : "", Ln = /[^\p{L}\p{N}]+/u;
2179
+ function Rn(e, t) {
2113
2180
  let n = String(t || "").toLowerCase();
2114
2181
  if (!n) return -1;
2115
2182
  let r = W(e.label);
2116
- return r.startsWith(n) ? U.labelStart : r.split(Nn).some((e) => e && e.startsWith(n)) ? U.wordStart : r.includes(n) ? U.label : W(e.id).includes(n) || W(e.file).includes(n) ? U.idOrFile : W(e.type).includes(n) || W(Mn(e)).includes(n) || W(e.kind).includes(n) ? U.typeOrKind : -1;
2183
+ return r.startsWith(n) ? U.labelStart : r.split(Ln).some((e) => e && e.startsWith(n)) ? U.wordStart : r.includes(n) ? U.label : W(e.id).includes(n) || W(e.file).includes(n) ? U.idOrFile : W(e.type).includes(n) || W(In(e)).includes(n) || W(e.kind).includes(n) ? U.typeOrKind : -1;
2117
2184
  }
2118
- function Fn(e, t) {
2185
+ function zn(e, t) {
2119
2186
  let n = String(t || "").trim().toLowerCase(), r = /* @__PURE__ */ new Set();
2120
2187
  if (!n) return r;
2121
- for (let t of e) Pn(t, n) >= 0 && r.add(t.id);
2188
+ for (let t of e) Rn(t, n) >= 0 && r.add(t.id);
2122
2189
  return r;
2123
2190
  }
2124
2191
  // ../explorer/css-color.js
2125
- var G, In = /* @__PURE__ */ new Map();
2126
- function Ln() {
2192
+ var G, Bn = /* @__PURE__ */ new Map();
2193
+ function Vn() {
2127
2194
  if (G !== void 0) return G;
2128
2195
  G = null;
2129
2196
  try {
@@ -2133,30 +2200,30 @@ function Ln() {
2133
2200
  }
2134
2201
  return G;
2135
2202
  }
2136
- function Rn(e) {
2203
+ function Hn(e) {
2137
2204
  let t = typeof e == "string" ? e.trim() : "";
2138
2205
  if (!t || t.toLowerCase() === "auto") return null;
2139
- if (Bn(t)) return t;
2206
+ if (Wn(t)) return t;
2140
2207
  if (/^transparent$/i.test(t)) return "rgba(0, 0, 0, 0)";
2141
- if (In.has(t)) return In.get(t);
2142
- let n = null, r = zn(t) && !/currentcolor/i.test(t) ? Ln() : null;
2208
+ if (Bn.has(t)) return Bn.get(t);
2209
+ let n = null, r = Un(t) && !/currentcolor/i.test(t) ? Vn() : null;
2143
2210
  if (r) try {
2144
2211
  let e = (e) => (r.fillStyle = e, r.fillStyle = t, String(r.fillStyle)), i = e("#010203"), a = i === "#010203" && e("#040506") === "#040506" ? null : i;
2145
- n = a === null ? null : Hn(a) ? a : Un(r, t);
2212
+ n = a === null ? null : Kn(a) ? a : qn(r, t);
2146
2213
  } catch {
2147
2214
  n = null;
2148
2215
  }
2149
- return In.set(t, n), n;
2216
+ return Bn.set(t, n), n;
2150
2217
  }
2151
- function zn(e) {
2218
+ function Un(e) {
2152
2219
  try {
2153
2220
  return typeof CSS > "u" || typeof CSS.supports != "function" || CSS.supports("color", e);
2154
2221
  } catch {
2155
2222
  return !1;
2156
2223
  }
2157
2224
  }
2158
- function Bn(e) {
2159
- if (!Hn(e)) return !1;
2225
+ function Wn(e) {
2226
+ if (!Kn(e)) return !1;
2160
2227
  let t = /^rgba?\(/i.test(e.trim()) ? e.slice(e.indexOf("(") + 1, e.lastIndexOf(")")).split(",").map(Number) : null;
2161
2228
  if (t && (t.slice(0, 3).some((e) => !(e >= 0 && e <= 255)) || t.length > 3 && !(t[3] > 0 && t[3] <= 1))) return !1;
2162
2229
  let [n, r, i, a] = L(e);
@@ -2166,30 +2233,30 @@ function Bn(e) {
2166
2233
  i
2167
2234
  ].every((e) => Number.isFinite(e) && e >= 0 && e <= 255) && Number.isFinite(a) && a > 0 && a <= 1;
2168
2235
  }
2169
- var Vn = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$|^rgba?\(\s*[\d.]+\s*,\s*[\d.]+\s*,\s*[\d.]+\s*(?:,\s*[\d.]+\s*)?\)$/i, Hn = (e) => Vn.test(e.trim());
2170
- function Un(e, t) {
2236
+ var Gn = /^#(?:[0-9a-f]{3}|[0-9a-f]{6})$|^rgba?\(\s*[\d.]+\s*,\s*[\d.]+\s*,\s*[\d.]+\s*(?:,\s*[\d.]+\s*)?\)$/i, Kn = (e) => Gn.test(e.trim());
2237
+ function qn(e, t) {
2171
2238
  if (!e.getImageData || !e.fillRect) return null;
2172
2239
  e.clearRect(0, 0, 1, 1), e.fillStyle = t, e.fillRect(0, 0, 1, 1);
2173
2240
  let [n, r, i, a] = e.getImageData(0, 0, 1, 1).data;
2174
- return Wn(n, r, i, a / 255);
2241
+ return Jn(n, r, i, a / 255);
2175
2242
  }
2176
- var Wn = (e, t, n, r) => `rgba(${e}, ${t}, ${n}, ${+r.toFixed(3)})`;
2177
- function Gn(e) {
2243
+ var Jn = (e, t, n, r) => `rgba(${e}, ${t}, ${n}, ${+r.toFixed(3)})`;
2244
+ function Yn(e) {
2178
2245
  if (typeof e != "string" || e.length > 200) return null;
2179
2246
  let t = e.trim();
2180
- return !t || /^(?:auto|currentcolor)$/i.test(t) ? null : Rn(t) || (Ln() === null && Ft(t) ? t : null);
2247
+ return !t || /^(?:auto|currentcolor)$/i.test(t) ? null : Hn(t) || (Vn() === null && zt(t) ? t : null);
2181
2248
  }
2182
2249
  // ../explorer/camera.js
2183
- var K = .25, Kn = .005, qn = (e, t = K) => Math.max(Math.max(Kn, Math.min(t, K)), Math.min(3, e)), Jn = (e, t, n) => t < e ? Math.min(e, qn(t, n)) : qn(t, n);
2184
- function Yn(e, t, n, r, i = K) {
2185
- let a = Jn(e.zoom, e.zoom * t, i), o = (n - e.x) / e.zoom, s = (r - e.y) / e.zoom;
2250
+ var K = .25, Xn = .005, Zn = (e, t = K) => Math.max(Math.max(Xn, Math.min(t, K)), Math.min(3, e)), Qn = (e, t, n) => t < e ? Math.min(e, Zn(t, n)) : Zn(t, n);
2251
+ function $n(e, t, n, r, i = K) {
2252
+ let a = Qn(e.zoom, e.zoom * t, i), o = (n - e.x) / e.zoom, s = (r - e.y) / e.zoom;
2186
2253
  return {
2187
2254
  x: n - o * a,
2188
2255
  y: r - s * a,
2189
2256
  zoom: a
2190
2257
  };
2191
2258
  }
2192
- var Xn = (e, t, n) => ({
2259
+ var er = (e, t, n) => ({
2193
2260
  x: e.x,
2194
2261
  y: e.y,
2195
2262
  zoom: e.zoom,
@@ -2199,15 +2266,15 @@ var Xn = (e, t, n) => ({
2199
2266
  y: n.y
2200
2267
  }
2201
2268
  });
2202
- function Zn(e, t, n, r = K) {
2203
- let i = Jn(e.zoom, e.zoom * (t / e.dist), r), a = (e.mid.x - e.x) / e.zoom, o = (e.mid.y - e.y) / e.zoom;
2269
+ function tr(e, t, n, r = K) {
2270
+ let i = Qn(e.zoom, e.zoom * (t / e.dist), r), a = (e.mid.x - e.x) / e.zoom, o = (e.mid.y - e.y) / e.zoom;
2204
2271
  return {
2205
2272
  x: n.x - a * i,
2206
2273
  y: n.y - o * i,
2207
2274
  zoom: i
2208
2275
  };
2209
2276
  }
2210
- function Qn(e, t, n = {}, r = 120) {
2277
+ function nr(e, t, n = {}, r = 120) {
2211
2278
  let i = (e, t = 0, n = 0) => {
2212
2279
  let i = Math.max(0, t), a = Math.max(0, n), o = Math.max(0, e - r), s = i + a > o && i + a > 0 ? o / (i + a) : 1;
2213
2280
  return [i * s, a * s];
@@ -2219,7 +2286,7 @@ function Qn(e, t, n = {}, r = 120) {
2219
2286
  height: Math.max(0, t - a - o)
2220
2287
  };
2221
2288
  }
2222
- var $n = (e) => {
2289
+ var rr = (e) => {
2223
2290
  let t = e.r || 18;
2224
2291
  return {
2225
2292
  left: e.x - t - 25,
@@ -2227,15 +2294,15 @@ var $n = (e) => {
2227
2294
  top: e.y - t - 25,
2228
2295
  bottom: e.y + t + 35
2229
2296
  };
2230
- }, er = (e, t) => Math.min(e, t.width / 4, t.height / 4);
2231
- function tr(e, t, { padding: n = 40, maxZoom: r = 1, minZoom: i = K } = {}) {
2297
+ }, ir = (e, t) => Math.min(e, t.width / 4, t.height / 4);
2298
+ function ar(e, t, { padding: n = 40, maxZoom: r = 1, minZoom: i = K } = {}) {
2232
2299
  if (!e.length) return null;
2233
2300
  let a = Infinity, o = -Infinity, s = Infinity, c = -Infinity;
2234
2301
  for (let t of e) {
2235
- let e = $n(t);
2302
+ let e = rr(t);
2236
2303
  a = Math.min(a, e.left), o = Math.max(o, e.right), s = Math.min(s, e.top), c = Math.max(c, e.bottom);
2237
2304
  }
2238
- let l = er(n, t), u = Math.min((t.width - l * 2) / (o - a), (t.height - l * 2) / (c - s)), d = Math.max(i, Math.min(r, u));
2305
+ let l = ir(n, t), u = Math.min((t.width - l * 2) / (o - a), (t.height - l * 2) / (c - s)), d = Math.max(i, Math.min(r, u));
2239
2306
  return {
2240
2307
  x: t.x + t.width / 2 - (a + o) / 2 * d,
2241
2308
  y: t.y + t.height / 2 - (s + c) / 2 * d,
@@ -2243,7 +2310,7 @@ function tr(e, t, { padding: n = 40, maxZoom: r = 1, minZoom: i = K } = {}) {
2243
2310
  };
2244
2311
  }
2245
2312
  // ../explorer/selection-model.js
2246
- var nr = Object.freeze({
2313
+ var or = Object.freeze({
2247
2314
  ownership: {
2248
2315
  panel: "Owns",
2249
2316
  edge: "owns"
@@ -2288,8 +2355,8 @@ var nr = Object.freeze({
2288
2355
  panel: "Extends",
2289
2356
  edge: "extends"
2290
2357
  }
2291
- }), rr = (e) => e.kind || (e.dashed ? "usage" : "ownership"), ir = (e) => `${e.from}->${e.to}`, ar = (e) => Object.hasOwn(nr, e) ? nr[e].edge : String(e);
2292
- function or(e, t, { throughChildren: n = !1, kind: r = null } = {}) {
2358
+ }), sr = (e) => e.kind || (e.dashed ? "usage" : "ownership"), cr = (e) => `${e.from}->${e.to}`, lr = (e) => Object.hasOwn(or, e) ? or[e].edge : String(e);
2359
+ function ur(e, t, { throughChildren: n = !1, kind: r = null } = {}) {
2293
2360
  if (!e) return null;
2294
2361
  let i = e.id, a = /* @__PURE__ */ new Set();
2295
2362
  for (let e of t) !e.kind && !e.dashed && e.from === i && a.add(e.to);
@@ -2297,11 +2364,11 @@ function or(e, t, { throughChildren: n = !1, kind: r = null } = {}) {
2297
2364
  for (let e of t) (o ? o.has(e.from) || o.has(e.to) : e.from === i || e.to === i) && s.push(e);
2298
2365
  let c = /* @__PURE__ */ new Map();
2299
2366
  for (let e of s) {
2300
- let t = rr(e);
2367
+ let t = sr(e);
2301
2368
  c.set(t, (c.get(t) || 0) + 1);
2302
2369
  }
2303
- let l = r && c.has(r) ? r : null, u = l ? s.filter((e) => rr(e) === l) : s, d = /* @__PURE__ */ new Set([i]), f = /* @__PURE__ */ new Set();
2304
- for (let e of u) d.add(e.from), d.add(e.to), f.add(ir(e));
2370
+ let l = r && c.has(r) ? r : null, u = l ? s.filter((e) => sr(e) === l) : s, d = /* @__PURE__ */ new Set([i]), f = /* @__PURE__ */ new Set();
2371
+ for (let e of u) d.add(e.from), d.add(e.to), f.add(cr(e));
2305
2372
  return {
2306
2373
  connectedNodeIds: d,
2307
2374
  connectedEdgeKeys: f,
@@ -2313,8 +2380,8 @@ function or(e, t, { throughChildren: n = !1, kind: r = null } = {}) {
2313
2380
  throughChildren: n
2314
2381
  };
2315
2382
  }
2316
- function sr(e, t, n, { padding: r = 40 } = {}) {
2317
- let i = tr(t.length ? t : [e], n, {
2383
+ function dr(e, t, n, { padding: r = 40 } = {}) {
2384
+ let i = ar(t.length ? t : [e], n, {
2318
2385
  padding: r,
2319
2386
  maxZoom: 1,
2320
2387
  minZoom: 1e-4
@@ -2330,7 +2397,7 @@ function sr(e, t, n, { padding: r = 40 } = {}) {
2330
2397
  };
2331
2398
  }
2332
2399
  // ../explorer/scene.js
2333
- var cr = [
2400
+ var fr = [
2334
2401
  "root",
2335
2402
  "app",
2336
2403
  "pkg",
@@ -2338,7 +2405,7 @@ var cr = [
2338
2405
  "store",
2339
2406
  "rom",
2340
2407
  "floor"
2341
- ], lr = "\"Segoe UI\", -apple-system, BlinkMacSystemFont, Roboto, sans-serif", ur = "\"Segoe UI\", -apple-system, sans-serif", dr = .32, fr = "#ffffff", pr = .07, mr = {
2408
+ ], pr = "\"Segoe UI\", -apple-system, BlinkMacSystemFont, Roboto, sans-serif", mr = "\"Segoe UI\", -apple-system, sans-serif", hr = .32, gr = "#ffffff", _r = .07, vr = {
2342
2409
  node: {
2343
2410
  color: "rgba(9, 13, 22, 0.85)",
2344
2411
  width: 3.5
@@ -2347,10 +2414,10 @@ var cr = [
2347
2414
  color: "rgba(9, 13, 22, 0.9)",
2348
2415
  width: 3
2349
2416
  }
2350
- }, hr = {
2417
+ }, yr = {
2351
2418
  length: 9,
2352
2419
  spread: .45
2353
- }, gr = Object.freeze({
2420
+ }, br = Object.freeze({
2354
2421
  flow: "chevron",
2355
2422
  reads: "chevron",
2356
2423
  writes: "chevron",
@@ -2360,7 +2427,7 @@ var cr = [
2360
2427
  "runs-on": "bar",
2361
2428
  uses: "diamond",
2362
2429
  extends: "diamond"
2363
- }), _r = Object.freeze({
2430
+ }), xr = Object.freeze({
2364
2431
  strokeWidth: 1.8,
2365
2432
  barHalf: 5,
2366
2433
  diamondHalf: 6,
@@ -2375,13 +2442,13 @@ var cr = [
2375
2442
  squareHalf: .86,
2376
2443
  squareCorner: .12,
2377
2444
  diamondHalf: 1.15
2378
- }), vr = Object.freeze({
2445
+ }), Sr = Object.freeze({
2379
2446
  circle: 1,
2380
2447
  "rounded-square": (q.roundedHalf - q.roundedCorner) * Math.SQRT2 + q.roundedCorner,
2381
2448
  hexagon: q.hexInradius / Math.cos(Math.PI / 6),
2382
2449
  square: (q.squareHalf - q.squareCorner) * Math.SQRT2 + q.squareCorner,
2383
2450
  diamond: q.diamondHalf
2384
- }), yr = Object.freeze([7, 5]), br = Object.freeze([1.5, 4]), xr = {
2451
+ }), Cr = Object.freeze([7, 5]), wr = Object.freeze([1.5, 4]), Tr = {
2385
2452
  selected: {
2386
2453
  fill: "rgba(99, 102, 241, 0.55)",
2387
2454
  fillR: 8,
@@ -2403,17 +2470,17 @@ var cr = [
2403
2470
  ringR: 5,
2404
2471
  ringWidth: 1.2
2405
2472
  }
2406
- }, Sr = {
2473
+ }, Er = {
2407
2474
  halfLength: 7,
2408
2475
  width: 2
2409
- }, Cr = {
2476
+ }, Dr = {
2410
2477
  color: "#ffffff",
2411
2478
  radius: 3.5,
2412
2479
  glow: 10,
2413
2480
  cycleMs: 2600
2414
2481
  }, J = {
2415
2482
  added: {
2416
- ...Gt.added,
2483
+ ...Yt.added,
2417
2484
  color: R.dark.added,
2418
2485
  ringR: 9,
2419
2486
  ringWidth: 2,
@@ -2421,7 +2488,7 @@ var cr = [
2421
2488
  alpha: 1
2422
2489
  },
2423
2490
  changed: {
2424
- ...Gt.changed,
2491
+ ...Yt.changed,
2425
2492
  color: R.dark.changed,
2426
2493
  ringR: 9,
2427
2494
  ringWidth: 2.5,
@@ -2429,15 +2496,15 @@ var cr = [
2429
2496
  alpha: 1
2430
2497
  },
2431
2498
  removed: {
2432
- ...Gt.removed,
2499
+ ...Yt.removed,
2433
2500
  color: R.dark.removed,
2434
2501
  ringR: 9,
2435
2502
  ringWidth: 2,
2436
2503
  edgeWidth: 2,
2437
- alpha: Bt
2504
+ alpha: Wt
2438
2505
  },
2439
2506
  edit: {
2440
- ...Gt.edit,
2507
+ ...Yt.edit,
2441
2508
  color: R.dark.edit,
2442
2509
  ringR: 9,
2443
2510
  ringWidth: 3,
@@ -2445,10 +2512,10 @@ var cr = [
2445
2512
  alpha: 1
2446
2513
  }
2447
2514
  };
2448
- function wr(e) {
2449
- return e === "light" ? Dr : Er;
2515
+ function Or(e) {
2516
+ return e === "light" ? jr : Ar;
2450
2517
  }
2451
- var Tr = (e) => {
2518
+ var kr = (e) => {
2452
2519
  let t = { ...e };
2453
2520
  for (let e of [
2454
2521
  "fill",
@@ -2456,18 +2523,18 @@ var Tr = (e) => {
2456
2523
  "color"
2457
2524
  ]) typeof t[e] == "string" && (t[e] = z(t[e]));
2458
2525
  return t;
2459
- }, Er = Object.freeze({
2460
- halo: xr,
2526
+ }, Ar = Object.freeze({
2527
+ halo: Tr,
2461
2528
  mark: J,
2462
- core: fr,
2463
- labelOutline: mr
2464
- }), Dr = Object.freeze({
2465
- halo: Object.fromEntries(Object.entries(xr).map(([e, t]) => [e, Tr(t)])),
2529
+ core: gr,
2530
+ labelOutline: vr
2531
+ }), jr = Object.freeze({
2532
+ halo: Object.fromEntries(Object.entries(Tr).map(([e, t]) => [e, kr(t)])),
2466
2533
  mark: Object.fromEntries(Object.entries(J).map(([e, t]) => [e, {
2467
2534
  ...t,
2468
2535
  color: R.light[e]
2469
2536
  }])),
2470
- core: fr,
2537
+ core: gr,
2471
2538
  labelOutline: {
2472
2539
  node: {
2473
2540
  color: "rgba(244, 246, 250, 0.9)",
@@ -2478,28 +2545,28 @@ var Tr = (e) => {
2478
2545
  width: 3
2479
2546
  }
2480
2547
  }
2481
- }), Or = {
2548
+ }), Mr = {
2482
2549
  ring: 1.8,
2483
2550
  edge: 1.6,
2484
2551
  gap: 4
2485
- }, kr = .28;
2552
+ }, Nr = .28;
2486
2553
  function Y(e, t, { viewer: n = !1 } = {}) {
2487
- return e.proposal && !v(e.proposalView || "diff", t) ? !1 : e.view === "dataflow" ? !!e.flow && e.flow.ids.has(t.id) : e.view === "house" ? me(e, t) : t.type === "root" || Ar(e, t, n ? e.activeLayers : Ct(e)) || pt(e, t);
2554
+ return e.proposal && !v(e.proposalView || "diff", t) ? !1 : e.view === "dataflow" ? !!e.flow && e.flow.ids.has(t.id) : e.view === "house" ? ye(e, t) : t.type === "root" || Pr(e, t, n ? e.activeLayers : Dt(e)) || _t(e, t);
2488
2555
  }
2489
- function Ar(e, t, n = Ct(e)) {
2490
- let r = lt(e, t);
2491
- return r ? n[r] !== !1 : t.type === "core" ? (n.pkg || n.atom) && n.core !== !1 : t.type === "store" ? n.flow !== !1 && n.store !== !1 : t.type === "rom" ? n.rom !== !1 && n.flow !== !1 : t.type === "floor" || t.type === "room" ? n.house !== !1 : t.type === "external" ? n[ne(t)] !== !1 : n[t.type] !== !1;
2556
+ function Pr(e, t, n = Dt(e)) {
2557
+ let r = pt(e, t);
2558
+ return r ? n[r] !== !1 : t.type === "core" ? (n.pkg || n.atom) && n.core !== !1 : t.type === "store" ? n.flow !== !1 && n.store !== !1 : t.type === "rom" ? n.rom !== !1 && n.flow !== !1 : t.type === "floor" || t.type === "room" ? n.house !== !1 : t.type === "external" ? n[se(t)] !== !1 : n[t.type] !== !1;
2492
2559
  }
2493
- var jr = (e) => e.view === "dataflow" && e.flow ? e.flow.edges : e.view === "house" ? he(e) : e.edges;
2494
- function Mr(e, t, n) {
2495
- return or(e, t, n);
2560
+ var Fr = (e) => e.view === "dataflow" && e.flow ? e.flow.edges : e.view === "house" ? be(e) : e.edges;
2561
+ function Ir(e, t, n) {
2562
+ return ur(e, t, n);
2496
2563
  }
2497
- function Nr(e) {
2564
+ function Lr(e) {
2498
2565
  let t = e.scenario, n = new Set(t.visited.nodes), r = new Set(t.visited.edgeList.map(X));
2499
2566
  t.linkNodes && e.edges.forEach((e) => {
2500
2567
  n.has(e.from) && n.has(e.to) && r.add(X(e));
2501
2568
  });
2502
- let i = de(t, e.nodes, e.edges);
2569
+ let i = ge(t, e.nodes, e.edges);
2503
2570
  i && (i.down.forEach((e) => n.add(e)), i.hits.forEach((e, t) => n.add(t)), i.edges.forEach((e, t) => r.add(t)));
2504
2571
  let { node: a, edge: o } = t.current, s = a === void 0 ? o ? o.kind === "writes" ? o.from : o.to : void 0 : a;
2505
2572
  return {
@@ -2509,7 +2576,7 @@ function Nr(e) {
2509
2576
  selectedId: s
2510
2577
  };
2511
2578
  }
2512
- function Pr(e, t, n) {
2579
+ function Rr(e, t, n) {
2513
2580
  let r = n.x - t.x, i = n.y - t.y, a = Math.hypot(r, i) || 1, o = e.bend === void 0 ? .18 : e.bend, s = {
2514
2581
  x: (t.x + n.x) / 2 + -i / a * a * o,
2515
2582
  y: (t.y + n.y) / 2 + r / a * a * o
@@ -2526,14 +2593,14 @@ function Pr(e, t, n) {
2526
2593
  c: s
2527
2594
  };
2528
2595
  }
2529
- function Fr(e, t, n, r) {
2596
+ function zr(e, t, n, r) {
2530
2597
  let i = 1 - r;
2531
2598
  return {
2532
2599
  x: i * i * e.x + 2 * i * r * t.x + r * r * n.x,
2533
2600
  y: i * i * e.y + 2 * i * r * t.y + r * r * n.y
2534
2601
  };
2535
2602
  }
2536
- function Ir(e, t) {
2603
+ function Br(e, t) {
2537
2604
  let n = {
2538
2605
  x: e.x1,
2539
2606
  y: e.y1
@@ -2541,7 +2608,7 @@ function Ir(e, t) {
2541
2608
  x: e.x2,
2542
2609
  y: e.y2
2543
2610
  };
2544
- return Fr(n, e.curve ? {
2611
+ return zr(n, e.curve ? {
2545
2612
  x: e.curve.cx,
2546
2613
  y: e.curve.cy
2547
2614
  } : {
@@ -2549,16 +2616,16 @@ function Ir(e, t) {
2549
2616
  y: (n.y + r.y) / 2
2550
2617
  }, r, t);
2551
2618
  }
2552
- function Lr(e, t) {
2553
- return Ir(e, (t / 1e3 * e.packet.speed + e.packet.phase) % 1);
2619
+ function Vr(e, t) {
2620
+ return Br(e, (t / 1e3 * e.packet.speed + e.packet.phase) % 1);
2554
2621
  }
2555
- var Rr = (e) => e.kind || (e.dashed ? "usage" : "ownership"), zr = (e) => `${e.from}->${e.to}${e.kind ? `|${e.kind}` : e.dashed ? "|dashed" : ""}${e.kind === "flow" && e.flow ? `|${e.flow}` : ""}`, X = (e) => `${e.from}->${e.to}`;
2556
- function Br(e, t, n, r, a, o) {
2557
- let s = e.kind === "reads" || e.kind === "writes", c = i(e), l = !r || r.connectedEdgeKeys.has(X(e)), u = e.status !== "live", { a: d, b: f, c: p } = Pr(e, t, n), m = !!r && l, h = Rr(e), g = null;
2622
+ var Hr = (e) => e.kind || (e.dashed ? "usage" : "ownership"), Ur = (e) => `${e.from}->${e.to}${e.kind ? `|${e.kind}` : e.dashed ? "|dashed" : ""}${e.kind === "flow" && e.flow ? `|${e.flow}` : ""}`, X = (e) => `${e.from}->${e.to}`;
2623
+ function Wr(e, t, n, r, a, o) {
2624
+ let s = e.kind === "reads" || e.kind === "writes", c = i(e), l = !r || r.connectedEdgeKeys.has(X(e)), u = e.status !== "live", { a: d, b: f, c: p } = Rr(e, t, n), m = !!r && l, h = Hr(e), g = null;
2558
2625
  if (r && l) {
2559
- let t = Fr(d, p, f, .5);
2626
+ let t = zr(d, p, f, .5);
2560
2627
  g = {
2561
- text: e.count !== void 0 && e.label ? e.label : ar(h),
2628
+ text: e.count !== void 0 && e.label ? e.label : lr(h),
2562
2629
  x: t.x,
2563
2630
  y: t.y,
2564
2631
  color: c.color,
@@ -2569,19 +2636,19 @@ function Br(e, t, n, r, a, o) {
2569
2636
  if ((r ? l : a) && !o) {
2570
2637
  let t = e.phase === void 0 ? (e.from.length * 7 + e.to.length * 13) % 10 / 10 : e.phase;
2571
2638
  _ = {
2572
- color: Cr.color,
2639
+ color: Dr.color,
2573
2640
  glowColor: c.color,
2574
- radius: Cr.radius,
2575
- glow: Cr.glow,
2576
- speed: 1e3 / Cr.cycleMs,
2641
+ radius: Dr.radius,
2642
+ glow: Dr.glow,
2643
+ speed: 1e3 / Dr.cycleMs,
2577
2644
  phase: t
2578
2645
  };
2579
2646
  }
2580
2647
  return {
2581
- key: zr(e),
2648
+ key: Ur(e),
2582
2649
  from: e.from,
2583
2650
  to: e.to,
2584
- kind: Rr(e),
2651
+ kind: Hr(e),
2585
2652
  x1: d.x,
2586
2653
  y1: d.y,
2587
2654
  x2: f.x,
@@ -2591,14 +2658,14 @@ function Br(e, t, n, r, a, o) {
2591
2658
  color: c.color,
2592
2659
  width: m ? 2.4 : a && !s ? 2 : 1.6,
2593
2660
  alpha: r ? l ? 1 : .04 : a ? s ? .2 : .65 : s ? .12 : .45,
2594
- dash: u ? yr : null,
2595
- ticks: te(e),
2661
+ dash: u ? Cr : null,
2662
+ ticks: oe(e),
2596
2663
  curve: {
2597
2664
  cx: p.x,
2598
2665
  cy: p.y
2599
2666
  },
2600
2667
  arrow: !0,
2601
- end: Object.hasOwn(gr, h) ? gr[h] : "triangle",
2668
+ end: Object.hasOwn(br, h) ? br[h] : "triangle",
2602
2669
  glow: m ? 8 : 0,
2603
2670
  glowColor: m ? c.color : null,
2604
2671
  label: g,
@@ -2607,13 +2674,13 @@ function Br(e, t, n, r, a, o) {
2607
2674
  live: !!e.live
2608
2675
  };
2609
2676
  }
2610
- function Vr(e, t, n, r) {
2677
+ function Gr(e, t, n, r) {
2611
2678
  let i = !r || r.connectedEdgeKeys.has(X(e)), a, o, s = null, c = 0, l = null;
2612
- return r ? i ? e.dashed ? (a = "#818cf8", o = 2, c = 8, l = "rgba(129, 140, 248, 0.7)", s = br) : (a = "#ffffff", o = 2.4, c = 10, l = "rgba(255, 255, 255, 0.8)") : (a = "rgba(255, 255, 255, 0.02)", o = .8, s = e.dashed ? br : null) : e.dashed ? (a = "rgba(129, 140, 248, 0.35)", o = 1.2, s = br) : (a = "rgba(255, 255, 255, 0.16)", o = 1.4), {
2613
- key: zr(e),
2679
+ return r ? i ? e.dashed ? (a = "#818cf8", o = 2, c = 8, l = "rgba(129, 140, 248, 0.7)", s = wr) : (a = "#ffffff", o = 2.4, c = 10, l = "rgba(255, 255, 255, 0.8)") : (a = "rgba(255, 255, 255, 0.02)", o = .8, s = e.dashed ? wr : null) : e.dashed ? (a = "rgba(129, 140, 248, 0.35)", o = 1.2, s = wr) : (a = "rgba(255, 255, 255, 0.16)", o = 1.4), {
2680
+ key: Ur(e),
2614
2681
  from: e.from,
2615
2682
  to: e.to,
2616
- kind: Rr(e),
2683
+ kind: Hr(e),
2617
2684
  x1: t.x,
2618
2685
  y1: t.y,
2619
2686
  x2: n.x,
@@ -2636,7 +2703,7 @@ function Vr(e, t, n, r) {
2636
2703
  live: !!e.live
2637
2704
  };
2638
2705
  }
2639
- var Hr = [
2706
+ var Kr = [
2640
2707
  "flow",
2641
2708
  "reads",
2642
2709
  "writes",
@@ -2646,62 +2713,62 @@ var Hr = [
2646
2713
  "delivers",
2647
2714
  "uses",
2648
2715
  "extends"
2649
- ], Ur = (e) => e.proposal ? e.proposalView || "diff" : null;
2650
- function Wr(e, t, n, r = !1, i = !1) {
2716
+ ], qr = (e) => e.proposal ? e.proposalView || "diff" : null;
2717
+ function Jr(e, t, n, r = !1, i = !1) {
2651
2718
  if (e.mark = t, t === "none") {
2652
- (n === "diff" || i) && (e.alpha *= kr, e.glow = 0, e.packet = null), i && (e.greyed = !0);
2719
+ (n === "diff" || i) && (e.alpha *= Nr, e.glow = 0, e.packet = null), i && (e.greyed = !0);
2653
2720
  return;
2654
2721
  }
2655
2722
  let a = J[t];
2656
- e.color = a.color, e.dash = r ? J.removed.edgeDash : a.edgeDash, e.width = Math.max(e.width, a.edgeWidth), e.alpha >= .1 && (e.alpha = Math.max(e.alpha, Vt) * (r ? J.removed.alpha : a.alpha)), e.glow && (e.glowColor = a.color);
2723
+ e.color = a.color, e.dash = r ? J.removed.edgeDash : a.edgeDash, e.width = Math.max(e.width, a.edgeWidth), e.alpha >= .1 && (e.alpha = Math.max(e.alpha, Gt) * (r ? J.removed.alpha : a.alpha)), e.glow && (e.glowColor = a.color);
2657
2724
  }
2658
- function Gr(e, t, n) {
2659
- let { nodes: r } = e, i = Ct(e), a = wt(e), o = new Map(r.map((e) => [e.id, e])), s = e.view === "dataflow", c = [], l = (e) => !!t && t.connectedEdgeKeys.has(X(e)), u = (e, r, i) => c.push(Br(e, r, i, t, s, n)), d = Ur(e), f = (n) => {
2725
+ function Yr(e, t, n) {
2726
+ let { nodes: r } = e, i = Dt(e), a = Ot(e), o = new Map(r.map((e) => [e.id, e])), s = e.view === "dataflow", c = [], l = (e) => !!t && t.connectedEdgeKeys.has(X(e)), u = (e, r, i) => c.push(Wr(e, r, i, t, s, n)), d = qr(e), f = (n) => {
2660
2727
  let r = o.get(n.from), a = o.get(n.to);
2661
2728
  if (r && a && Y(e, r) && Y(e, a)) {
2662
2729
  if (s) return u(n, r, a);
2663
2730
  if (e.view === "house") {
2664
- let e = ge(n, r, a);
2665
- e === "flow" ? u(n, r, a) : e === "link" && c.push(Vr(n, r, a, t));
2666
- } else n.kind === "flow" ? i.flow !== !1 && u(n, r, a) : n.kind === "reads" || n.kind === "writes" ? i.table !== !1 && u(n, r, a) : n.kind === "runs-on" ? (i.stack !== !1 || a.type === "machine") && u(n, r, a) : n.kind === "calls" || n.kind === "triggers" || n.kind === "delivers" ? (r.type !== "page" || n.kind !== "calls" || l(n)) && u(n, r, a) : n.kind === "uses" || n.kind === "extends" ? l(n) && u(n, r, a) : c.push(Vr(n, r, a, t));
2731
+ let e = xe(n, r, a);
2732
+ e === "flow" ? u(n, r, a) : e === "link" && c.push(Gr(n, r, a, t));
2733
+ } else n.kind === "flow" ? i.flow !== !1 && u(n, r, a) : n.kind === "reads" || n.kind === "writes" ? i.table !== !1 && u(n, r, a) : n.kind === "runs-on" ? (i.stack !== !1 || a.type === "machine") && u(n, r, a) : n.kind === "calls" || n.kind === "triggers" || n.kind === "delivers" ? (r.type !== "page" || n.kind !== "calls" || l(n)) && u(n, r, a) : n.kind === "uses" || n.kind === "extends" ? l(n) && u(n, r, a) : c.push(Gr(n, r, a, t));
2667
2734
  }
2668
2735
  };
2669
- return jr(e).forEach((n) => {
2736
+ return Fr(e).forEach((n) => {
2670
2737
  if (d && !y(d, n)) return;
2671
2738
  let r = d === "before" ? x(n) : n, i = d ? b(d, n) : "none", l = c.length;
2672
2739
  if (i === "none") f(r);
2673
2740
  else {
2674
2741
  let n = o.get(r.from), i = o.get(r.to);
2675
2742
  if (!n || !i || !Y(e, n) || !Y(e, i)) return;
2676
- s || Hr.includes(r.kind) ? u(r, n, i) : c.push(Vr(r, n, i, t));
2743
+ s || Kr.includes(r.kind) ? u(r, n, i) : c.push(Gr(r, n, i, t));
2677
2744
  }
2678
- for (let e = l; e < c.length; e++) Wr(c[e], i, d, i === "edit" && n.editOp === "removed", a);
2745
+ for (let e = l; e < c.length; e++) Jr(c[e], i, d, i === "edit" && n.editOp === "removed", a);
2679
2746
  }), c;
2680
2747
  }
2681
- var Kr = (e) => e.type === "floor" || e.type === "room" ? "house" : e.type === "external" ? ne(e) : e.type, qr = (e) => Gn(e.color) ?? (C[e.type] || C.external).color;
2682
- function Jr(e, t) {
2683
- let { nodes: n, selectedNode: r, searchQuery: i } = e, a = i ? Fn(n, i) : null, o = !!a && n.some((t) => a.has(t.id) && Y(e, t)), s = [], c = Ur(e), l = wt(e), u = c === "diff" || c && l ? S(n, jr(e)) : null;
2748
+ var Xr = (e) => e.type === "floor" || e.type === "room" ? "house" : e.type === "external" ? se(e) : e.type, Zr = (e) => Yn(e.color) ?? (E[e.type] || E.external).color;
2749
+ function Qr(e, t) {
2750
+ let { nodes: n, selectedNode: r, searchQuery: i } = e, a = i ? zn(n, i) : null, o = !!a && n.some((t) => a.has(t.id) && Y(e, t)), s = [], c = qr(e), l = Ot(e), u = c === "diff" || c && l ? S(n, Fr(e)) : null;
2684
2751
  return n.forEach((n) => {
2685
2752
  if (!Y(e, n)) return;
2686
- let i = c === "before" ? x(n) : n, d = !!a && a.has(n.id), f = d && e.searchCurrent === n.id, p = !!r && r.id === n.id, m = !t || t.connectedNodeIds.has(n.id), h = t && t.childIds ? t.childIds.has(n.id) : !1, g = c ? b(c, n) : "none", _ = J[g], v = g === "edit" && n.editOp === "removed", y = t && !m && !(o && d) ? pr : 1;
2687
- o && !d && !p && !(t && m) && (y = pr);
2753
+ let i = c === "before" ? x(n) : n, d = !!a && a.has(n.id), f = d && e.searchCurrent === n.id, p = !!r && r.id === n.id, m = !t || t.connectedNodeIds.has(n.id), h = t && t.childIds ? t.childIds.has(n.id) : !1, g = c ? b(c, n) : "none", _ = J[g], v = g === "edit" && n.editOp === "removed", y = t && !m && !(o && d) ? _r : 1;
2754
+ o && !d && !p && !(t && m) && (y = _r);
2688
2755
  let S = l && !!u && !u.touched.has(n.id);
2689
- u && !u.touched.has(n.id) && (y = Math.min(y, S ? Ut : kr)), _ && (y *= v ? J.removed.alpha : _.alpha);
2690
- let C = i.type === "root" || i.type === "app", w = ht(e, i), T = lt(e, i);
2756
+ u && !u.touched.has(n.id) && (y = Math.min(y, S ? qt : Nr)), _ && (y *= v ? J.removed.alpha : _.alpha);
2757
+ let C = i.type === "root" || i.type === "app", w = yt(e, i), T = pt(e, i);
2691
2758
  s.push({
2692
2759
  id: n.id,
2693
2760
  type: i.type,
2694
- group: Kr(i),
2761
+ group: Xr(i),
2695
2762
  ...typeof i.kind == "string" && i.kind ? { kind: i.kind } : {},
2696
2763
  ...w ? { letters: w } : {},
2697
- shape: E(i.type),
2698
- hitR: i.r * vr[E(i.type)],
2699
- ...pn(i.type) ? { glyph: i.type } : {},
2764
+ shape: te(i.type),
2765
+ hitR: i.r * Sr[te(i.type)],
2766
+ ..._n(i.type) ? { glyph: i.type } : {},
2700
2767
  ...T ? { layer: T } : {},
2701
2768
  x: n.x,
2702
2769
  y: n.y,
2703
2770
  r: i.r,
2704
- color: qr(i),
2771
+ color: Zr(i),
2705
2772
  alpha: y,
2706
2773
  glow: m && y >= .5 ? C ? 15 : 9 : 0,
2707
2774
  halo: d ? "match" : p ? "selected" : h ? "child" : "none",
@@ -2715,16 +2782,16 @@ function Jr(e, t) {
2715
2782
  label: i.label,
2716
2783
  labelSize: C && !S ? 12 : 11,
2717
2784
  labelBold: C && !S,
2718
- labelAlpha: S && (!t || m) ? Wt[e.theme === "light" ? "light" : "dark"] : u && !u.touched.has(n.id) && (!t || m) ? Math.max(y, Ht) : y,
2785
+ labelAlpha: S && (!t || m) ? Jt[e.theme === "light" ? "light" : "dark"] : u && !u.touched.has(n.id) && (!t || m) ? Math.max(y, Kt) : y,
2719
2786
  labelColor: m ? "#f8fafc" : "rgba(255, 255, 255, 0.3)",
2720
- labelKeep: cr.includes(i.type) && !S || p || d || g !== "none" || !!(t && m),
2787
+ labelKeep: fr.includes(i.type) && !S || p || d || g !== "none" || !!(t && m),
2721
2788
  labelStrike: !!_ && (_.strike || v),
2722
2789
  live: !!n.live,
2723
2790
  box: n.box || null
2724
2791
  });
2725
2792
  }), s;
2726
2793
  }
2727
- function Yr(e) {
2794
+ function $r(e) {
2728
2795
  let { rings: t, selectedNode: n } = e, r = {
2729
2796
  color: n ? "rgba(66, 153, 225, 0.04)" : "rgba(66, 153, 225, 0.14)",
2730
2797
  width: 1,
@@ -2746,7 +2813,7 @@ function Yr(e) {
2746
2813
  ...i
2747
2814
  })))];
2748
2815
  }
2749
- function Xr(e) {
2816
+ function ei(e) {
2750
2817
  let t = -e.top + 40;
2751
2818
  return e.headers.map((n, r) => {
2752
2819
  let i = e.headers[r + 1];
@@ -2786,44 +2853,44 @@ function Xr(e) {
2786
2853
  };
2787
2854
  });
2788
2855
  }
2789
- var Zr = .55, Qr = .5, $r = {
2856
+ var ti = .55, ni = .5, ri = {
2790
2857
  color: "#ffffff",
2791
2858
  radius: 4.5,
2792
2859
  glow: 12
2793
- }, ei = {
2860
+ }, ii = {
2794
2861
  width: 3.6,
2795
2862
  glow: 14
2796
2863
  };
2797
- function ti(e, t) {
2864
+ function ai(e, t) {
2798
2865
  return e.from !== t.from || e.to !== t.to ? !1 : t.kind ? e.kind === t.kind && (!t.flow || e.key.split("|")[2] === t.flow) : e.kind === "ownership" || e.kind === "usage";
2799
2866
  }
2800
- function ni(e, t, n = {}) {
2867
+ function oi(e, t, n = {}) {
2801
2868
  if (t.done) return;
2802
2869
  let { node: r, edge: i, at: a } = t.current, o = new Set(r === void 0 ? i ? [i.from, i.to] : [] : [r]);
2803
2870
  a !== void 0 && o.add(a), e.nodes.forEach((e) => {
2804
- e.connected && (o.has(e.id) ? (r !== void 0 || e.id === a) && e.halo !== "match" && (e.halo = "selected") : (e.alpha = Zr, e.labelAlpha = Zr));
2871
+ e.connected && (o.has(e.id) ? (r !== void 0 || e.id === a) && e.halo !== "match" && (e.halo = "selected") : (e.alpha = ti, e.labelAlpha = ti));
2805
2872
  });
2806
2873
  let s = new Set(t.visited.edgeList.map(X)), c = (e) => s.has(X(e)) || t.linkNodes && t.visited.nodes.has(e.from) && t.visited.nodes.has(e.to);
2807
2874
  e.edges.forEach((e) => {
2808
- if (i && ti(e, i)) {
2809
- e.alpha = 1, e.width = Math.max(e.width, ei.width), e.glow = ei.glow, e.glowColor = e.glowColor || e.color;
2875
+ if (i && ai(e, i)) {
2876
+ e.alpha = 1, e.width = Math.max(e.width, ii.width), e.glow = ii.glow, e.glowColor = e.glowColor || e.color;
2810
2877
  let r = 1e3 / t.stepMs, i = t.stepStartMs == null ? 0 : (-t.stepStartMs / 1e3 * r % 1 + 1) % 1;
2811
2878
  e.packet = n.reduceMotion ? null : {
2812
- ...$r,
2879
+ ...ri,
2813
2880
  glowColor: e.color,
2814
2881
  speed: r,
2815
2882
  phase: i
2816
2883
  };
2817
- } else c(e) && (e.alpha = Qr, e.packet = null);
2884
+ } else c(e) && (e.alpha = ni, e.packet = null);
2818
2885
  });
2819
2886
  }
2820
- function ri(e, t = {}) {
2821
- let n = e.view === "dataflow", r = e.scenario ? Nr(e) : e.selectedNode ? Mr(e.selectedNode, jr(e), {
2887
+ function si(e, t = {}) {
2888
+ let n = e.view === "dataflow", r = e.scenario ? Lr(e) : e.selectedNode ? Ir(e.selectedNode, Fr(e), {
2822
2889
  throughChildren: !!e.throughChildren,
2823
2890
  kind: e.selectedKind || null
2824
- }) : null, i = n && e.flow ? Xr(e.flow) : [], a = !(n && e.flow) && !e.isFreeform ? Yr(e) : [], o = {
2825
- nodes: Jr(e, r),
2826
- edges: Gr(e, r, !!t.reduceMotion),
2891
+ }) : null, i = n && e.flow ? ei(e.flow) : [], a = !(n && e.flow) && !e.isFreeform ? $r(e) : [], o = {
2892
+ nodes: Qr(e, r),
2893
+ edges: Yr(e, r, !!t.reduceMotion),
2827
2894
  decor: {
2828
2895
  grid: {
2829
2896
  size: 48,
@@ -2842,18 +2909,18 @@ function ri(e, t = {}) {
2842
2909
  theme: "dark",
2843
2910
  version: e.sceneVersion || 0
2844
2911
  };
2845
- e.view === "house" && ve(o, e), e.scenario && ni(o, e.scenario, t), o.greying = o.nodes.some((e) => e.greyed) || o.edges.some((e) => e.greyed);
2912
+ e.view === "house" && Ce(o, e), e.scenario && oi(o, e.scenario, t), o.greying = o.nodes.some((e) => e.greyed) || o.edges.some((e) => e.greyed);
2846
2913
  let s = {
2847
2914
  nodes: o.nodes.map((e) => e.color),
2848
2915
  edges: o.edges.map((e) => e.color)
2849
2916
  };
2850
- return e.scenario && fe(o, de(e.scenario, e.nodes, e.edges)), e.scenario && Oe(o, e.scenario), e.forgeLit && kn(o, e.forgeLit), o.nodes.forEach((e, t) => {
2917
+ return e.scenario && _e(o, ge(e.scenario, e.nodes, e.edges)), e.scenario && Ne(o, e.scenario), e.forgeLit && Nn(o, e.forgeLit), o.nodes.forEach((e, t) => {
2851
2918
  s.nodes.length === o.nodes.length && e.color !== s.nodes[t] && o.painted.nodes.add(e.id);
2852
2919
  }), o.edges.forEach((e, t) => {
2853
2920
  s.edges.length === o.edges.length && e.color !== s.edges[t] && o.painted.edges.add(e.key);
2854
- }), e.theme === "light" && sn(o), o;
2921
+ }), e.theme === "light" && dn(o), o;
2855
2922
  }
2856
- function ii(e = ri) {
2923
+ function ci(e = si) {
2857
2924
  let t = null, n, r = {
2858
2925
  builds: 0,
2859
2926
  get(i) {
@@ -2863,7 +2930,7 @@ function ii(e = ri) {
2863
2930
  return r;
2864
2931
  }
2865
2932
  // ../explorer/engine/map-style.js
2866
- var ai = Object.freeze(Object.keys(C)), oi = Object.freeze([
2933
+ var li = Object.freeze(Object.keys(E)), ui = Object.freeze([
2867
2934
  "app",
2868
2935
  "pkg",
2869
2936
  "page",
@@ -2882,7 +2949,7 @@ var ai = Object.freeze(Object.keys(C)), oi = Object.freeze([
2882
2949
  "device",
2883
2950
  "house",
2884
2951
  "persona"
2885
- ]), si = Object.freeze([
2952
+ ]), di = Object.freeze([
2886
2953
  "ownership",
2887
2954
  "usage",
2888
2955
  "flow",
@@ -2894,33 +2961,33 @@ var ai = Object.freeze(Object.keys(C)), oi = Object.freeze([
2894
2961
  "runs-on",
2895
2962
  "uses",
2896
2963
  "extends"
2897
- ]), ci = Object.freeze([
2964
+ ]), fi = Object.freeze([
2898
2965
  "added",
2899
2966
  "changed",
2900
2967
  "removed",
2901
2968
  "edit"
2902
- ]), li = Object.freeze([
2969
+ ]), pi = Object.freeze([
2903
2970
  "selected",
2904
2971
  "match",
2905
2972
  "lit"
2906
- ]), ui = "--corn-map-stroke", di = "--corn-map-label", fi = "--corn-map-label-halo", pi = "--corn-map-font", mi = "--corn-map-edge-width", hi = "--corn-map-glow", gi = "--corn-map-label-min", _i = "--corn-map-grey", vi = "--corn-map-grey-alpha", yi = "--corn-map-glyph", bi = 1.6, xi = 1.5, Si = 1.2, Ci = (e) => `--corn-map-node-${e}`, wi = (e) => `--corn-map-group-${e}`, Ti = (e) => `--corn-map-edge-${e}`, Z = (e) => `--corn-map-${e}`, Ei = Object.freeze([
2907
- ...ai.map(Ci),
2908
- ...oi.map(wi),
2909
- ui,
2910
- di,
2911
- fi,
2912
- yi,
2913
- _i,
2914
- ...si.map(Ti),
2915
- ...ci.map(Z),
2916
- ...li.map(Z)
2973
+ ]), mi = "--corn-map-stroke", hi = "--corn-map-label", gi = "--corn-map-label-halo", _i = "--corn-map-font", vi = "--corn-map-edge-width", yi = "--corn-map-glow", bi = "--corn-map-label-min", xi = "--corn-map-grey", Si = "--corn-map-grey-alpha", Ci = "--corn-map-glyph", wi = 1.6, Ti = 1.5, Ei = 1.2, Di = (e) => `--corn-map-node-${e}`, Oi = (e) => `--corn-map-group-${e}`, ki = (e) => `--corn-map-edge-${e}`, Z = (e) => `--corn-map-${e}`, Ai = Object.freeze([
2974
+ ...li.map(Di),
2975
+ ...ui.map(Oi),
2976
+ mi,
2977
+ hi,
2978
+ gi,
2979
+ Ci,
2980
+ xi,
2981
+ ...di.map(ki),
2982
+ ...fi.map(Z),
2983
+ ...pi.map(Z)
2917
2984
  ]);
2918
2985
  function Q(e, t) {
2919
2986
  let [n, r, i, a] = L(e), o = L(t)[3];
2920
- return o >= 1 ? e : Wn(n, r, i, a * o);
2987
+ return o >= 1 ? e : Jn(n, r, i, a * o);
2921
2988
  }
2922
- var Di = /^(?:serif|sans-serif|monospace|cursive|fantasy|system-ui|ui-serif|ui-sans-serif|ui-monospace|ui-rounded|emoji|math|fangsong)$/i, Oi = /^(?:-apple-system|BlinkMacSystemFont)$/;
2923
- function ki(e) {
2989
+ var ji = /^(?:serif|sans-serif|monospace|cursive|fantasy|system-ui|ui-serif|ui-sans-serif|ui-monospace|ui-rounded|emoji|math|fangsong)$/i, Mi = /^(?:-apple-system|BlinkMacSystemFont)$/;
2990
+ function Ni(e) {
2924
2991
  let t = typeof e == "string" ? e.trim() : "";
2925
2992
  if (!t || t.length > 200 || t.toLowerCase() === "auto" || /[();:{}<>@\\/\u0000-\u001f\u007f]|\burl\b|\bvar\b|\bexpression\b|\bimport\b/i.test(t)) return null;
2926
2993
  let n = t.split(",").map((e) => e.trim());
@@ -2929,46 +2996,46 @@ function ki(e) {
2929
2996
  for (let e of n) {
2930
2997
  let t = /^"([A-Za-z0-9 ._+-]{1,60})"$|^'([A-Za-z0-9 ._+-]{1,60})'$/.exec(e), n = t ? (t[1] ?? t[2]).trim() : /^-?[A-Za-z][A-Za-z0-9 _-]{0,59}$/.test(e) ? e.replace(/\s+/g, " ") : null;
2931
2998
  if (!n) return null;
2932
- r.push(Di.test(n) ? n.toLowerCase() : Oi.test(n) ? n : `"${n}"`);
2999
+ r.push(ji.test(n) ? n.toLowerCase() : Mi.test(n) ? n : `"${n}"`);
2933
3000
  }
2934
3001
  return r.join(", ");
2935
3002
  }
2936
- function Ai(e, t) {
3003
+ function Pi(e, t) {
2937
3004
  let n = /^\s*(\d*\.?\d+)(?:px)?\s*$/i.exec(String(e ?? "")), r = n ? parseFloat(n[1]) : NaN;
2938
3005
  return Number.isFinite(r) && r > 0 && r <= t ? r : null;
2939
3006
  }
2940
- function ji(e) {
2941
- let t = Ai(e, 24);
3007
+ function Fi(e) {
3008
+ let t = Pi(e, 24);
2942
3009
  return t !== null && t >= 9 ? t : null;
2943
3010
  }
2944
- function Mi(e) {
3011
+ function Ii(e) {
2945
3012
  let t = /^\s*(\d*\.?\d+)(px)?\s*$/i.exec(String(e ?? ""));
2946
3013
  if (!t) return null;
2947
3014
  let n = parseFloat(t[1]);
2948
3015
  return t[2] && n !== 0 ? null : Number.isFinite(n) && n >= 0 && n <= 4 ? n : null;
2949
3016
  }
2950
- function Ni(e) {
3017
+ function Li(e) {
2951
3018
  let t = /^\s*(\d*\.?\d+)\s*$/.exec(String(e ?? "")), n = t ? parseFloat(t[1]) : NaN;
2952
3019
  return Number.isFinite(n) && n >= .1 && n <= 1 ? n : null;
2953
3020
  }
2954
- function Pi(e, t = []) {
3021
+ function Ri(e, t = []) {
2955
3022
  let n = {};
2956
- for (let r of [...Ei, ...t]) {
2957
- let t = Rn(e(r));
3023
+ for (let r of [...Ai, ...t]) {
3024
+ let t = Hn(e(r));
2958
3025
  t && (n[r] = t);
2959
3026
  }
2960
3027
  let r = parseFloat(String(e("--corn-map-stroke-width") ?? ""));
2961
3028
  return {
2962
3029
  values: n,
2963
- strokeWidth: Number.isFinite(r) && r >= 0 ? r : xi,
2964
- font: ki(e(pi)),
2965
- edgeWidth: Ai(e(mi), 12),
2966
- glow: Mi(e(hi)),
2967
- labelMin: ji(e(gi)),
2968
- greyAlpha: Ni(e(vi))
3030
+ strokeWidth: Number.isFinite(r) && r >= 0 ? r : Ti,
3031
+ font: Ni(e(_i)),
3032
+ edgeWidth: Pi(e(vi), 12),
3033
+ glow: Ii(e(yi)),
3034
+ labelMin: Fi(e(bi)),
3035
+ greyAlpha: Li(e(Si))
2969
3036
  };
2970
3037
  }
2971
- function Fi(e, t = "") {
3038
+ function zi(e, t = "") {
2972
3039
  return new Promise((n, r) => {
2973
3040
  if (typeof Image > "u") {
2974
3041
  r(/* @__PURE__ */ Error("no Image"));
@@ -2978,10 +3045,10 @@ function Fi(e, t = "") {
2978
3045
  t && (i.crossOrigin = t), i.onload = () => i.naturalWidth > 0 && i.naturalHeight > 0 ? n(i) : r(/* @__PURE__ */ Error(`${e} has no size`)), i.onerror = () => r(/* @__PURE__ */ Error(`${e} did not load`)), i.src = e;
2979
3046
  });
2980
3047
  }
2981
- function Ii(e, { load: t = Fi, onChange: n = () => {}, warn: r = (e) => console.warn(e) } = {}) {
3048
+ function Bi(e, { load: t = zi, onChange: n = () => {}, warn: r = (e) => console.warn(e) } = {}) {
2982
3049
  let i = /* @__PURE__ */ new Map(), a = 0;
2983
3050
  for (let [o, s] of Object.entries(e || {})) {
2984
- if (!Ge(o) || typeof s != "string" || !s.startsWith("/cornfield/theme/assets/") || s.includes("..")) continue;
3051
+ if (!Xe(o) || typeof s != "string" || !s.startsWith("/cornfield/theme/assets/") || s.includes("..")) continue;
2985
3052
  let e = {
2986
3053
  status: "loading",
2987
3054
  image: null
@@ -3002,18 +3069,18 @@ function Ii(e, { load: t = Fi, onChange: n = () => {}, warn: r = (e) => console.
3002
3069
  anyReady: () => a > 0
3003
3070
  };
3004
3071
  }
3005
- var Li = {
3072
+ var Vi = {
3006
3073
  values: {},
3007
- strokeWidth: xi,
3074
+ strokeWidth: Ti,
3008
3075
  font: null,
3009
3076
  edgeWidth: null,
3010
3077
  glow: null,
3011
3078
  labelMin: null,
3012
3079
  greyAlpha: null
3013
- }, Ri = Object.freeze({
3080
+ }, Hi = Object.freeze({
3014
3081
  version: 0,
3015
3082
  values: Object.freeze({}),
3016
- strokeWidth: xi,
3083
+ strokeWidth: Ti,
3017
3084
  font: null,
3018
3085
  edgeWidth: null,
3019
3086
  glow: null,
@@ -3022,9 +3089,9 @@ var Li = {
3022
3089
  icons: null,
3023
3090
  pixelated: !1,
3024
3091
  plain: !0
3025
- }), zi = 500;
3026
- function Bi(e) {
3027
- let t = Li, n = null, r = !1, i = 0, a = [], o = /* @__PURE__ */ new Set(), s = () => {
3092
+ }), Ui = 500;
3093
+ function Wi(e) {
3094
+ let t = Vi, n = null, r = !1, i = 0, a = [], o = /* @__PURE__ */ new Set(), s = () => {
3028
3095
  let e = !Object.keys(t.values).length && !(n && n.anyReady()) && t.font === null && t.edgeWidth === null && t.glow === null && t.labelMin === null && t.greyAlpha === null;
3029
3096
  return Object.freeze({
3030
3097
  version: i,
@@ -3051,12 +3118,12 @@ function Bi(e) {
3051
3118
  return o.add(e), () => o.delete(e);
3052
3119
  },
3053
3120
  setSubjects({ kinds: e = [], layers: t = [] } = {}) {
3054
- let n = [...new Set([...e.map(([e, t]) => He(e, t)), ...t.map((e) => Ue(e))].filter(Boolean))].sort().slice(0, zi);
3121
+ let n = [...new Set([...e.map(([e, t]) => qe(e, t)), ...t.map((e) => Je(e))].filter(Boolean))].sort().slice(0, Ui);
3055
3122
  return n.length === a.length && n.every((e, t) => e === a[t]) ? !1 : (a = n, d.refresh());
3056
3123
  },
3057
3124
  refresh(n = e.tokenReader()) {
3058
3125
  if (!n) return !1;
3059
- let r = Pi(n, a);
3126
+ let r = Ri(n, a);
3060
3127
  if (r.strokeWidth === t.strokeWidth && r.font === t.font && r.edgeWidth === t.edgeWidth && r.glow === t.glow && r.labelMin === t.labelMin && Object.keys(r.values).length === Object.keys(t.values).length && Object.entries(r.values).every(([e, n]) => t.values[e] === n)) return !1;
3061
3128
  t = r, u();
3062
3129
  try {
@@ -3068,8 +3135,8 @@ function Bi(e) {
3068
3135
  setIcons(t, i = {}) {
3069
3136
  let a = t && t.icons && typeof t.icons == "object" ? t.icons : {};
3070
3137
  r = !!(t && t.pixelated === !0);
3071
- let o = e.base ? "anonymous" : "", s = i.load || ((t) => Fi(e.url(t), o));
3072
- return n = Object.keys(a).length ? Ii(a, {
3138
+ let o = e.base ? "anonymous" : "", s = i.load || ((t) => zi(e.url(t), o));
3139
+ return n = Object.keys(a).length ? Bi(a, {
3073
3140
  ...i,
3074
3141
  load: s,
3075
3142
  onChange: () => {
@@ -3082,7 +3149,7 @@ function Bi(e) {
3082
3149
  return r && r.setAttribute && (t && t.pixelated === !0 ? r.setAttribute("data-pixelated", "") : r.removeAttribute("data-pixelated")), d.setIcons(t, n);
3083
3150
  },
3084
3151
  reset() {
3085
- t = Li, n = null, r = !1, a = [], u();
3152
+ t = Vi, n = null, r = !1, a = [], u();
3086
3153
  },
3087
3154
  watch() {
3088
3155
  let n = () => {
@@ -3120,12 +3187,12 @@ function Bi(e) {
3120
3187
  };
3121
3188
  return d;
3122
3189
  }
3123
- var Vi = (e) => e.slot("map-style", Bi), Hi = (e, t) => {
3190
+ var Gi = (e) => e.slot("map-style", Wi), Ki = (e, t) => {
3124
3191
  for (let n of t) if (e[n]) return e[n];
3125
3192
  return null;
3126
- }, Ui = We, Wi = (e, t) => Hi(e, Ui(t));
3127
- function Gi(e, t) {
3128
- let n = t.edgeWidth == null ? 1 : t.edgeWidth / bi, r = t.glow == null ? 1 : t.glow;
3193
+ }, qi = Ye, Ji = (e, t) => Ki(e, qi(t));
3194
+ function Yi(e, t) {
3195
+ let n = t.edgeWidth == null ? 1 : t.edgeWidth / wi, r = t.glow == null ? 1 : t.glow;
3129
3196
  if (n === 1 && r === 1) return e;
3130
3197
  let i = {
3131
3198
  ...e,
@@ -3137,19 +3204,19 @@ function Gi(e, t) {
3137
3204
  glow: e.packet.glow * r
3138
3205
  }), i;
3139
3206
  }
3140
- function Ki(e, t, n) {
3207
+ function Xi(e, t, n) {
3141
3208
  let { values: r } = t;
3142
3209
  if (e.mark && e.mark !== "none") {
3143
3210
  let n = r[Z(e.mark)];
3144
- return Gi(n ? {
3211
+ return Yi(n ? {
3145
3212
  ...e,
3146
3213
  color: n,
3147
3214
  glowColor: e.glowColor ? n : e.glowColor
3148
3215
  } : e, t);
3149
3216
  }
3150
- if (n.has(e.key)) return Gi(e, t);
3151
- let i = !e.curve && e.glow > 0 && !e.arrow && r[Z("lit")] || r[Ti(e.kind)];
3152
- if (!i) return Gi(e, t);
3217
+ if (n.has(e.key)) return Yi(e, t);
3218
+ let i = !e.curve && e.glow > 0 && !e.arrow && r[Z("lit")] || r[ki(e.kind)];
3219
+ if (!i) return Yi(e, t);
3153
3220
  let a = {
3154
3221
  ...e,
3155
3222
  color: Q(i, e.color)
@@ -3157,18 +3224,18 @@ function Ki(e, t, n) {
3157
3224
  return e.glowColor && (a.glowColor = Q(i, e.glowColor)), e.packet && (a.packet = {
3158
3225
  ...e.packet,
3159
3226
  glowColor: Q(i, e.packet.glowColor)
3160
- }), Gi(a, t);
3227
+ }), Yi(a, t);
3161
3228
  }
3162
- function qi(e) {
3229
+ function Zi(e) {
3163
3230
  let [t, n, r, i] = L(e), a = Math.round(.2126 * t + .7152 * n + .0722 * r);
3164
- return i >= 1 ? `rgb(${a}, ${a}, ${a})` : Wn(a, a, a, i);
3231
+ return i >= 1 ? `rgb(${a}, ${a}, ${a})` : Jn(a, a, a, i);
3165
3232
  }
3166
- function Ji(e, t) {
3167
- let { values: n } = t, r = n[_i], i = t.greyAlpha == null ? 1 : t.greyAlpha / Ut, a = (e) => r ? Q(r, e) : qi(e), o = n[di], s = n[ui], c = e.painted || {
3233
+ function Qi(e, t) {
3234
+ let { values: n } = t, r = n[xi], i = t.greyAlpha == null ? 1 : t.greyAlpha / qt, a = (e) => r ? Q(r, e) : Zi(e), o = n[hi], s = n[mi], c = e.painted || {
3168
3235
  nodes: /* @__PURE__ */ new Set(),
3169
3236
  edges: /* @__PURE__ */ new Set()
3170
3237
  }, l = e.nodes.map((e) => {
3171
- let r = !c.nodes.has(e.id) && Wi(n, e), l = t.icons && Ke(e.type, e.kind, e.layer).find((e) => t.icons.get(e)) || null, u = t.glow != null && t.glow !== 1 && e.glow > 0, d = !!e.greyed && !c.nodes.has(e.id);
3238
+ let r = !c.nodes.has(e.id) && Ji(n, e), l = t.icons && Ze(e.type, e.kind, e.layer).find((e) => t.icons.get(e)) || null, u = t.glow != null && t.glow !== 1 && e.glow > 0, d = !!e.greyed && !c.nodes.has(e.id);
3172
3239
  if (!r && !o && !s && !l && !u && !d) return e;
3173
3240
  let f = { ...e };
3174
3241
  return u && (f.glow = e.glow * t.glow), r && (f.color = r), o && (f.labelColor = Q(o, e.labelColor)), s && t.strokeWidth > 0 && (f.stroke = {
@@ -3176,7 +3243,7 @@ function Ji(e, t) {
3176
3243
  width: t.strokeWidth
3177
3244
  }), l && !d && (f.icon = l), d && (f.color = a(f.color), f.alpha = Math.min(1, e.alpha * i)), f;
3178
3245
  }), u = e.edges.map((e) => {
3179
- let n = Ki(e, t, c.edges);
3246
+ let n = Xi(e, t, c.edges);
3180
3247
  return !e.greyed || c.edges.has(e.key) ? n : {
3181
3248
  ...n,
3182
3249
  color: a(n.color),
@@ -3189,9 +3256,9 @@ function Ji(e, t) {
3189
3256
  edges: u
3190
3257
  };
3191
3258
  t.font && (d.labelFont = t.font), t.labelMin != null && (d.labelMin = t.labelMin);
3192
- let f = n[fi];
3259
+ let f = n[gi];
3193
3260
  if (f) {
3194
- let { node: t, edge: n } = wr(e.theme).labelOutline;
3261
+ let { node: t, edge: n } = Or(e.theme).labelOutline;
3195
3262
  d.labelOutline = {
3196
3263
  node: {
3197
3264
  ...t,
@@ -3205,21 +3272,21 @@ function Ji(e, t) {
3205
3272
  }
3206
3273
  return d;
3207
3274
  }
3208
- var Yi = /* @__PURE__ */ new WeakMap();
3209
- function Xi(e, t) {
3275
+ var $i = /* @__PURE__ */ new WeakMap();
3276
+ function ea(e, t) {
3210
3277
  if (!t || t.plain && !e.greying) return e;
3211
- let n = Yi.get(e);
3278
+ let n = $i.get(e);
3212
3279
  if (n && n.style === t) return n.out;
3213
- let r = Ji(e, t);
3214
- return Yi.set(e, {
3280
+ let r = Qi(e, t);
3281
+ return $i.set(e, {
3215
3282
  style: t,
3216
3283
  out: r
3217
3284
  }), r;
3218
3285
  }
3219
- var Zi = /* @__PURE__ */ new WeakMap();
3220
- function Qi(e, t) {
3286
+ var ta = /* @__PURE__ */ new WeakMap();
3287
+ function na(e, t) {
3221
3288
  if (!t || t.plain) return e;
3222
- let n = Zi.get(e);
3289
+ let n = ta.get(e);
3223
3290
  if (n && n.style === t) return n.out;
3224
3291
  let { values: r } = t, i = { ...e.halo };
3225
3292
  for (let e of ["selected", "match"]) {
@@ -3231,7 +3298,7 @@ function Qi(e, t) {
3231
3298
  });
3232
3299
  }
3233
3300
  let a = { ...e.mark };
3234
- for (let e of ci) {
3301
+ for (let e of fi) {
3235
3302
  let t = r[Z(e)];
3236
3303
  t && (a[e] = {
3237
3304
  ...a[e],
@@ -3243,13 +3310,13 @@ function Qi(e, t) {
3243
3310
  halo: i,
3244
3311
  mark: a
3245
3312
  };
3246
- return Zi.set(e, {
3313
+ return ta.set(e, {
3247
3314
  style: t,
3248
3315
  out: o
3249
3316
  }), o;
3250
3317
  }
3251
3318
  // ../explorer/engine/layout.js
3252
- function $i(e) {
3319
+ function ra(e) {
3253
3320
  let { state: t } = e;
3254
3321
  e.touchScene();
3255
3322
  let n = {};
@@ -3264,18 +3331,18 @@ function $i(e) {
3264
3331
  e.r = Math.max(12, Math.round(e.baseR + r)), e.scaleDelta = r;
3265
3332
  });
3266
3333
  }
3267
- var ea = "\"Segoe UI\", -apple-system, sans-serif";
3268
- function ta(e, t) {
3334
+ var ia = "\"Segoe UI\", -apple-system, sans-serif";
3335
+ function aa(e, t) {
3269
3336
  let { ctx: n } = e.state;
3270
- n.save(), n.font = `${t.type === "root" || t.type === "app" ? "bold 12px" : "11px"} ${ea}`;
3337
+ n.save(), n.font = `${t.type === "root" || t.type === "app" ? "bold 12px" : "11px"} ${ia}`;
3271
3338
  let r = n.measureText(t.label || "").width;
3272
3339
  return n.restore(), r;
3273
3340
  }
3274
- var na = [
3341
+ var oa = [
3275
3342
  "store",
3276
3343
  "table",
3277
3344
  "rom"
3278
- ], ra = [
3345
+ ], sa = [
3279
3346
  "core",
3280
3347
  "atom",
3281
3348
  "molecule",
@@ -3289,8 +3356,8 @@ var na = [
3289
3356
  "tool",
3290
3357
  "app",
3291
3358
  "pkg"
3292
- ];
3293
- function ia(e, { first: t = 110, gap: n = 76, spacing: r = 90 } = {}) {
3359
+ ], ca = 64;
3360
+ function la(e, { first: t = 110, gap: n = 76, spacing: r = 90 } = {}) {
3294
3361
  let i = [], a = [], o = 0, s = 0;
3295
3362
  for (; o < e.length;) {
3296
3363
  let c = t + s * n, l = Math.max(1, Math.floor(2 * Math.PI * c / r)), u = Math.min(l, e.length - o), d = (e) => Array.from({ length: u }, (t, n) => -Math.PI / 2 + e + n / u * Math.PI * 2).some((e) => Math.abs(Math.atan2(Math.sin(e - Math.PI / 2), Math.cos(e - Math.PI / 2))) < .35), f = s % 2 ? Math.PI / u : 0;
@@ -3309,50 +3376,50 @@ function ia(e, { first: t = 110, gap: n = 76, spacing: r = 90 } = {}) {
3309
3376
  radii: a
3310
3377
  };
3311
3378
  }
3312
- function aa(e, t, n, r, i = /* @__PURE__ */ new Set()) {
3313
- let a = [], o = [];
3379
+ function ua(e, t, n, r, i = /* @__PURE__ */ new Set(), a = 0) {
3380
+ let o = [], s = [];
3314
3381
  e.forEach((e) => {
3315
- let s = i.has(e.id) ? [] : t(e);
3316
- if (!s.length) {
3317
- o.push(e);
3382
+ let c = i.has(e.id) || a >= ca ? [] : t(e);
3383
+ if (!c.length) {
3384
+ s.push(e);
3318
3385
  return;
3319
3386
  }
3320
3387
  i.add(e.id);
3321
- let c = aa(s.sort(r), t, n, r, i);
3322
- a.push({
3388
+ let l = ua(c.sort(r), t, n, r, i, a + 1);
3389
+ o.push({
3323
3390
  c: e,
3324
- sub: c,
3325
- fp: c.extent
3391
+ sub: l,
3392
+ fp: l.extent
3326
3393
  });
3327
- }), a.sort((e, t) => t.fp - e.fp);
3328
- let s = ia(o, { spacing: n(e) }), c = {
3329
- children: [...o],
3330
- offsets: [...s.offsets],
3331
- radii: s.radii,
3332
- subs: o.map(() => null),
3333
- extent: s.radii.length ? s.radii[s.radii.length - 1] + 40 : 0
3394
+ }), o.sort((e, t) => t.fp - e.fp);
3395
+ let c = la(s, { spacing: n(e) }), l = {
3396
+ children: [...s],
3397
+ offsets: [...c.offsets],
3398
+ radii: c.radii,
3399
+ subs: s.map(() => null),
3400
+ extent: c.radii.length ? c.radii[c.radii.length - 1] + 40 : 0
3334
3401
  };
3335
- if (a.length) {
3336
- let e = s.radii.length ? s.radii[s.radii.length - 1] : 0, t = a[0].fp, n = a.reduce((e, t) => e + 2 * t.fp + 30, 0), r = [], i = -Math.PI / 2;
3337
- a.forEach((e) => {
3402
+ if (o.length) {
3403
+ let e = c.radii.length ? c.radii[c.radii.length - 1] : 0, t = o[0].fp, n = o.reduce((e, t) => e + 2 * t.fp + 30, 0), r = [], i = -Math.PI / 2;
3404
+ o.forEach((e) => {
3338
3405
  let t = (2 * e.fp + 30) / n * Math.PI * 2;
3339
3406
  r.push(i + t / 2), i += t;
3340
3407
  });
3341
- let o = Math.max(110, e + t + 40, n / (2 * Math.PI));
3342
- for (let e = 0; e < a.length; e++) for (let t = e + 1; t < a.length; t++) {
3408
+ let a = Math.max(110, e + t + 40, n / (2 * Math.PI));
3409
+ for (let e = 0; e < o.length; e++) for (let t = e + 1; t < o.length; t++) {
3343
3410
  let n = Math.sin(Math.abs(r[t] - r[e]) / 2);
3344
- n > 1e-6 && (o = Math.max(o, (a[e].fp + a[t].fp + 30) / (2 * n)));
3411
+ n > 1e-6 && (a = Math.max(a, (o[e].fp + o[t].fp + 30) / (2 * n)));
3345
3412
  }
3346
- a.forEach((e, t) => {
3347
- c.children.push(e.c), c.offsets.push({
3348
- x: Math.cos(r[t]) * o,
3349
- y: Math.sin(r[t]) * o
3350
- }), c.subs.push(e.sub);
3351
- }), c.bigRadius = o, c.extent = Math.max(c.extent, o + t);
3413
+ o.forEach((e, t) => {
3414
+ l.children.push(e.c), l.offsets.push({
3415
+ x: Math.cos(r[t]) * a,
3416
+ y: Math.sin(r[t]) * a
3417
+ }), l.subs.push(e.sub);
3418
+ }), l.bigRadius = a, l.extent = Math.max(l.extent, a + t);
3352
3419
  }
3353
- return c;
3420
+ return l;
3354
3421
  }
3355
- function oa(e, t, n, r) {
3422
+ function da(e, t, n, r) {
3356
3423
  e.children.forEach((i, a) => {
3357
3424
  i.x = t + e.offsets[a].x, i.y = n + e.offsets[a].y;
3358
3425
  let o = e.subs[a];
@@ -3360,13 +3427,13 @@ function oa(e, t, n, r) {
3360
3427
  x: i.x,
3361
3428
  y: i.y,
3362
3429
  radii: o.radii
3363
- }), oa(o, i.x, i.y, r));
3430
+ }), da(o, i.x, i.y, r));
3364
3431
  });
3365
3432
  }
3366
- var sa = 2;
3367
- function ca(e, t) {
3433
+ var fa = 2;
3434
+ function pa(e, t) {
3368
3435
  let n = null;
3369
- for (let r = 0; r < 360; r += sa) {
3436
+ for (let r = 0; r < 360; r += fa) {
3370
3437
  let i = -Math.PI / 2 + r * Math.PI / 180, a = Math.cos(i), o = Math.sin(i), s = [];
3371
3438
  for (let n of e) {
3372
3439
  let e = a * n.x + o * n.y, r = n.r + t, i = e * e - (n.x * n.x + n.y * n.y) + r * r;
@@ -3383,7 +3450,7 @@ function ca(e, t) {
3383
3450
  }
3384
3451
  return n;
3385
3452
  }
3386
- function la(e) {
3453
+ function ma(e) {
3387
3454
  let { state: t } = e;
3388
3455
  e.touchScene();
3389
3456
  let { nodes: n, edges: r } = t;
@@ -3409,16 +3476,16 @@ function la(e) {
3409
3476
  });
3410
3477
  let s = n.find((e) => e.id === "root");
3411
3478
  s && (s.x = 0, s.y = 0);
3412
- let c = (e) => na.includes(e.type), l = new Set(Object.values(o)), u = new Set(n.filter((e) => o[e.id] && !c(e)).map((e) => o[e.id])), d = new Set(n.filter((e) => e.id !== "root" && (c(e) ? l.has(e.id) && (!o[e.id] || o[e.id] === "root") && (e.type === "store" || u.has(e.id)) : o[e.id] === "root" || !o[e.id] && (l.has(e.id) || [
3479
+ let c = (e) => oa.includes(e.type), l = new Set(Object.values(o)), u = new Set(n.filter((e) => o[e.id] && !c(e)).map((e) => o[e.id])), d = new Set(n.filter((e) => e.id !== "root" && (c(e) ? l.has(e.id) && (!o[e.id] || o[e.id] === "root") && (e.type === "store" || u.has(e.id)) : o[e.id] === "root" || !o[e.id] && (l.has(e.id) || [
3413
3480
  "app",
3414
3481
  "pkg",
3415
3482
  "tool",
3416
3483
  "external",
3417
3484
  "stack"
3418
3485
  ].includes(e.type)))).map((e) => e.id)), f = n.filter((e) => d.has(e.id) || e.id !== "root" && c(e) && u.has(e.id) && !d.has(o[e.id])), p = new Set(f.map((e) => e.id)), m = (e) => {
3419
- let t = ra.indexOf(e.type);
3486
+ let t = sa.indexOf(e.type);
3420
3487
  return t < 0 ? 99 : t;
3421
- }, h = (e, t) => m(e) - m(t) || String(e.label).localeCompare(String(t.label)), g = n.filter((e) => c(e) && !p.has(e.id) && !p.has(o[e.id])).sort((e, t) => na.indexOf(e.type) - na.indexOf(t.type) || String(e.label).localeCompare(String(t.label))), _ = Math.max(110, ...g.map((t) => ta(e, t) + 24)), v = Math.max(150, g.length * _ / (2 * Math.PI));
3488
+ }, h = (e, t) => m(e) - m(t) || String(e.label).localeCompare(String(t.label)), g = n.filter((e) => c(e) && !p.has(e.id) && !p.has(o[e.id])).sort((e, t) => oa.indexOf(e.type) - oa.indexOf(t.type) || String(e.label).localeCompare(String(t.label))), _ = Math.max(110, ...g.map((t) => aa(e, t) + 24)), v = Math.max(150, g.length * _ / (2 * Math.PI));
3422
3489
  g.forEach((e, t) => {
3423
3490
  let n = -Math.PI / 2 + t / Math.max(1, g.length) * Math.PI * 2;
3424
3491
  e.x = Math.cos(n) * v, e.y = Math.sin(n) * v;
@@ -3429,10 +3496,10 @@ function la(e) {
3429
3496
  y: 0,
3430
3497
  r: v
3431
3498
  });
3432
- let b = (e) => e.id === "root" ? [] : n.filter((t) => o[t.id] === e.id && !p.has(t.id) && !c(t) && t.id !== "root"), x = (t) => Math.min(170, Math.max(84, ...t.map((t) => ta(e, t) * .8 + 26))), S = /* @__PURE__ */ new Map();
3499
+ let b = (e) => e.id === "root" ? [] : n.filter((t) => o[t.id] === e.id && !p.has(t.id) && !c(t) && t.id !== "root"), x = (t) => Math.min(170, Math.max(84, ...t.map((t) => aa(e, t) * .8 + 26))), S = /* @__PURE__ */ new Map();
3433
3500
  f.forEach((e) => {
3434
3501
  let t = n.filter((t) => o[t.id] === e.id && !p.has(t.id)).sort(h);
3435
- t.length && S.set(e.id, aa(t, b, x, h, /* @__PURE__ */ new Set([e.id])));
3502
+ t.length && S.set(e.id, ua(t, b, x, h, /* @__PURE__ */ new Set([e.id])));
3436
3503
  });
3437
3504
  let C = f.filter((e) => S.has(e.id)).sort((e, t) => S.get(t.id).extent - S.get(e.id).extent || String(e.label).localeCompare(String(t.label))), w = [{
3438
3505
  x: 0,
@@ -3440,7 +3507,7 @@ function la(e) {
3440
3507
  r: y
3441
3508
  }], T = y;
3442
3509
  C.forEach((e) => {
3443
- let t = S.get(e.id), n = ca(w, t.extent + 35);
3510
+ let t = S.get(e.id), n = pa(w, t.extent + 35);
3444
3511
  e.x = n.x, e.y = n.y, w.push({
3445
3512
  x: e.x,
3446
3513
  y: e.y,
@@ -3449,46 +3516,46 @@ function la(e) {
3449
3516
  x: e.x,
3450
3517
  y: e.y,
3451
3518
  radii: t.radii
3452
- }), oa(t, e.x, e.y, i.clusters);
3519
+ }), da(t, e.x, e.y, i.clusters);
3453
3520
  });
3454
- let E = n.filter((e) => e.id !== "root" && !o[e.id] && !c(e) && !p.has(e.id)), D = [...f.filter((e) => !S.has(e.id)), ...E].sort(h), ee = Math.max(120, ...D.map((t) => ta(e, t) + 30)), O = Math.max(T + 90, D.length * ee / (2 * Math.PI));
3455
- D.forEach((e, t) => {
3456
- let n = -Math.PI / 2 + t / Math.max(1, D.length) * Math.PI * 2;
3521
+ let ee = n.filter((e) => e.id !== "root" && !o[e.id] && !c(e) && !p.has(e.id)), E = [...f.filter((e) => !S.has(e.id)), ...ee].sort(h), D = Math.max(120, ...E.map((t) => aa(e, t) + 30)), O = Math.max(T + 90, E.length * D / (2 * Math.PI));
3522
+ E.forEach((e, t) => {
3523
+ let n = -Math.PI / 2 + t / Math.max(1, E.length) * Math.PI * 2;
3457
3524
  e.x = Math.cos(n) * O, e.y = Math.sin(n) * O;
3458
- }), D.length && i.rings.push({
3525
+ }), E.length && i.rings.push({
3459
3526
  x: 0,
3460
3527
  y: 0,
3461
3528
  r: O
3462
3529
  });
3463
- let k = (e) => e.id === "root" || e.x !== 0 || e.y !== 0, A = /* @__PURE__ */ new Map();
3530
+ let te = (e) => e.id === "root" || e.x !== 0 || e.y !== 0, ne = /* @__PURE__ */ new Map();
3464
3531
  n.forEach((e) => {
3465
3532
  let t = o[e.id];
3466
- !k(e) && t && (A.get(t) || A.set(t, []).get(t)).push(e);
3533
+ !te(e) && t && (ne.get(t) || ne.set(t, []).get(t)).push(e);
3467
3534
  });
3468
- let te = new Map(n.map((e) => [e.id, e]));
3469
- A.forEach((e, t) => {
3470
- let n = te.get(t);
3471
- if (!n || !k(n) || e.every(k)) return;
3472
- let r = aa(e.sort(h), b, x, h, /* @__PURE__ */ new Set([t]));
3535
+ let re = new Map(n.map((e) => [e.id, e]));
3536
+ ne.forEach((e, t) => {
3537
+ let n = re.get(t);
3538
+ if (!n || !te(n) || e.every(te)) return;
3539
+ let r = ua(e.sort(h), b, x, h, /* @__PURE__ */ new Set([t]));
3473
3540
  i.clusters.push({
3474
3541
  x: n.x,
3475
3542
  y: n.y,
3476
3543
  radii: r.radii
3477
- }), oa(r, n.x, n.y, i.clusters);
3544
+ }), da(r, n.x, n.y, i.clusters);
3478
3545
  });
3479
3546
  }
3480
- var ua = 50, da = 110, fa = 15;
3481
- function pa(e, t) {
3547
+ var ha = 50, ga = 110, _a = 15;
3548
+ function va(e, t) {
3482
3549
  e.touchScene();
3483
3550
  let n = 0;
3484
3551
  t.headers = [];
3485
3552
  let r = [];
3486
3553
  t.tiers.forEach((i) => {
3487
3554
  if (!i.nodes.length) return;
3488
- let a = Math.ceil(i.nodes.length / fa), o = Math.ceil(i.nodes.length / a), s = Math.max(70, ...i.nodes.map((t) => ta(e, t) + 30)), c = n;
3555
+ let a = Math.ceil(i.nodes.length / _a), o = Math.ceil(i.nodes.length / a), s = Math.max(70, ...i.nodes.map((t) => aa(e, t) + 30)), c = n;
3489
3556
  i.nodes.forEach((e, t) => {
3490
3557
  let n = Math.floor(t / o), i = t % o;
3491
- e.x = c + n * s + s / 2, e.y = (i - (o - 1) / 2) * ua, r.push(e);
3558
+ e.x = c + n * s + s / 2, e.y = (i - (o - 1) / 2) * ha, r.push(e);
3492
3559
  });
3493
3560
  let l = a * s;
3494
3561
  t.headers.push({
@@ -3498,20 +3565,20 @@ function pa(e, t) {
3498
3565
  left: c,
3499
3566
  right: c + l,
3500
3567
  rows: o
3501
- }), n += l + da;
3502
- }), t.top = -((Math.max(1, ...t.headers.map((e) => e.rows)) - 1) / 2) * ua - 70;
3503
- let i = (n - da) / 2;
3568
+ }), n += l + ga;
3569
+ }), t.top = -((Math.max(1, ...t.headers.map((e) => e.rows)) - 1) / 2) * ha - 70;
3570
+ let i = (n - ga) / 2;
3504
3571
  r.forEach((e) => {
3505
3572
  e.x -= i;
3506
3573
  }), t.headers.forEach((e) => {
3507
3574
  e.x -= i, e.left -= i, e.right -= i;
3508
3575
  });
3509
3576
  }
3510
- var ma = "cornfield-freeform-positions";
3511
- function ha(e) {
3512
- e.store.set(ma, JSON.stringify(e.state.freeformPositions));
3577
+ var ya = "cornfield-freeform-positions";
3578
+ function ba(e) {
3579
+ e.store.set(ya, JSON.stringify(e.state.freeformPositions));
3513
3580
  }
3514
- function ga(e) {
3581
+ function xa(e) {
3515
3582
  let { state: t } = e;
3516
3583
  e.touchScene();
3517
3584
  let n = 0;
@@ -3520,30 +3587,30 @@ function ga(e) {
3520
3587
  r && (e.x = r.x, e.y = r.y, n++);
3521
3588
  }), n > 0;
3522
3589
  }
3523
- function _a(e) {
3524
- la(e), e.state.isFreeform && ga(e);
3590
+ function Sa(e) {
3591
+ ma(e), e.state.isFreeform && xa(e);
3525
3592
  }
3526
3593
  // ../explorer/engine/hint.js
3527
- var va = "cornfield:hint-done";
3528
- function ya(e) {
3594
+ var Ca = "cornfield:hint-done";
3595
+ function wa(e) {
3529
3596
  try {
3530
3597
  return !!(e && e.matchMedia && e.matchMedia("(pointer: coarse)").matches);
3531
3598
  } catch {
3532
3599
  return !1;
3533
3600
  }
3534
3601
  }
3535
- function ba(e, t, n) {
3602
+ function Ta(e, t, n) {
3536
3603
  return n && (t.set || !e.set) ? t.text : e.text;
3537
3604
  }
3538
- function xa(e, t = ya(e.win)) {
3605
+ function Ea(e, t = wa(e.win)) {
3539
3606
  let { state: n } = e;
3540
- return n.view === "dataflow" ? p(e, "hintDataFlow") : n.isFreeform ? ba({
3607
+ return n.view === "dataflow" ? p(e, "hintDataFlow") : n.isFreeform ? Ta({
3541
3608
  text: p(e, "hintDrag"),
3542
3609
  set: d(e, "hintDrag")
3543
3610
  }, {
3544
3611
  text: p(e, "hintDragTouch"),
3545
3612
  set: d(e, "hintDragTouch")
3546
- }, t) : ba({
3613
+ }, t) : Ta({
3547
3614
  text: p(e, "hintInspect"),
3548
3615
  set: d(e, "hintInspect")
3549
3616
  }, {
@@ -3551,33 +3618,33 @@ function xa(e, t = ya(e.win)) {
3551
3618
  set: d(e, "hintInspectTouch")
3552
3619
  }, t);
3553
3620
  }
3554
- var Sa = (e) => {
3621
+ var Da = (e) => {
3555
3622
  try {
3556
3623
  return e.win ? e.win.sessionStorage : null;
3557
3624
  } catch {
3558
3625
  return null;
3559
3626
  }
3560
- }, Ca = (e) => e.slot("hint", () => {
3627
+ }, Oa = (e) => e.slot("hint", () => {
3561
3628
  let t = { dismissed: !1 };
3562
3629
  try {
3563
- let n = Sa(e);
3630
+ let n = Da(e);
3564
3631
  t.dismissed = !!n && n.getItem("cornfield:hint-done") === "1";
3565
3632
  } catch {
3566
3633
  t.dismissed = !1;
3567
3634
  }
3568
3635
  return t;
3569
3636
  });
3570
- function wa(e) {
3571
- let t = Ca(e);
3637
+ function ka(e) {
3638
+ let t = Oa(e);
3572
3639
  if (!t.dismissed && (t.dismissed = !0, e.el("instruction-badge-text"))) {
3573
3640
  try {
3574
- let t = Sa(e);
3575
- t && t.setItem(va, "1");
3641
+ let t = Da(e);
3642
+ t && t.setItem(Ca, "1");
3576
3643
  } catch {}
3577
- Ea(e);
3644
+ ja(e);
3578
3645
  }
3579
3646
  }
3580
- function Ta(e) {
3647
+ function Aa(e) {
3581
3648
  let t = (t) => e.el(t), n = t("proposal-bar");
3582
3649
  if (n && !n.hidden) return !0;
3583
3650
  let r = t("spec-drawer");
@@ -3585,22 +3652,22 @@ function Ta(e) {
3585
3652
  let i = t("forge-panel");
3586
3653
  return i && i.classList.contains("forge-open") ? !0 : !!(e.root && e.root.querySelector("[data-corn=\"scenario-player\"]"));
3587
3654
  }
3588
- function Ea(e) {
3589
- let t = e.el("instruction-badge-text"), n = xa(e);
3655
+ function ja(e) {
3656
+ let t = e.el("instruction-badge-text"), n = Ea(e);
3590
3657
  t && t.textContent !== n && (t.textContent = n);
3591
3658
  let r = t && t.closest("[data-corn=\"hint\"]");
3592
3659
  if (!r) return;
3593
- let i = Ta(e) || Ca(e).dismissed && e.state.view !== "dataflow";
3660
+ let i = Aa(e) || Oa(e).dismissed && e.state.view !== "dataflow";
3594
3661
  r.hidden !== i && (r.hidden = i);
3595
3662
  }
3596
3663
  // ../explorer/sheet-model.js
3597
- var Da = Object.freeze({
3664
+ var Ma = Object.freeze({
3598
3665
  proposal: "review",
3599
3666
  player: "review",
3600
3667
  forge: "other",
3601
3668
  drawer: "other"
3602
- }), Oa = /* @__PURE__ */ new Set(["other"]);
3603
- function ka(e = Da) {
3669
+ }), Na = /* @__PURE__ */ new Set(["other"]);
3670
+ function Pa(e = Ma) {
3604
3671
  let t = /* @__PURE__ */ new Set(), n = /* @__PURE__ */ new Set(), r = null, i = (t) => e[t] || t;
3605
3672
  return {
3606
3673
  add: (e) => {
@@ -3611,7 +3678,7 @@ function ka(e = Da) {
3611
3678
  },
3612
3679
  has: (e) => t.has(e),
3613
3680
  show(e) {
3614
- if (!t.has(e) || (n.add(e), !Oa.has(i(e)))) return [];
3681
+ if (!t.has(e) || (n.add(e), !Na.has(i(e)))) return [];
3615
3682
  let a = [...n].filter((t) => t !== e && i(t) === i(e));
3616
3683
  for (let e of a) n.delete(e), r === e && (r = null);
3617
3684
  return a;
@@ -3644,38 +3711,42 @@ function ka(e = Da) {
3644
3711
  ids: () => [...t]
3645
3712
  };
3646
3713
  }
3647
- function Aa(e) {
3714
+ function Fa(e) {
3648
3715
  return e.slot("sheets", () => ({
3649
- model: ka(),
3716
+ model: Pa(),
3650
3717
  elements: /* @__PURE__ */ new Map(),
3651
3718
  options: /* @__PURE__ */ new Map(),
3652
3719
  offs: /* @__PURE__ */ new Map(),
3653
3720
  away: /* @__PURE__ */ new Set(),
3654
3721
  listeners: /* @__PURE__ */ new Set(),
3655
3722
  dock: null,
3723
+ box: null,
3656
3724
  lastCovered: 0,
3657
3725
  observers: [],
3658
3726
  wiredDock: null,
3659
3727
  documentWired: !1
3660
3728
  }));
3661
3729
  }
3662
- var ja = (e) => !!(e.win && typeof e.win.matchMedia == "function" && e.win.matchMedia("(max-width: 767px)").matches), Ma = (e, t) => t.dock && t.dock.parentElement || (e.state.canvas ? e.state.canvas.parentElement : null);
3663
- function Na(e) {
3664
- let t = Aa(e), { state: n } = e;
3730
+ var Ia = 768, La = (e) => {
3731
+ let { box: t } = Fa(e);
3732
+ return t ? t.isConnected && t.clientWidth > 0 && t.clientWidth < Ia : !!(e.win && typeof e.win.matchMedia == "function" && e.win.matchMedia("(max-width: 767px)").matches);
3733
+ }, Ra = (e, t) => t.dock && t.dock.parentElement || (e.state.canvas ? e.state.canvas.parentElement : null);
3734
+ function za(e) {
3735
+ let t = Fa(e), { state: n } = e;
3665
3736
  if (!t.dock || !t.dock.isConnected) return n.coveredBottom || 0;
3666
- let r = ja(e) ? Math.round(t.dock.offsetHeight || 0) : 0;
3737
+ let r = La(e) ? Math.round(t.dock.offsetHeight || 0) : 0;
3667
3738
  n.coveredBottom = r;
3668
- let i = Ma(e, t);
3739
+ let i = Ra(e, t);
3669
3740
  return i && i.style.setProperty("--hx-covered", `${r}px`), r !== t.lastCovered && (t.lastCovered = r, t.listeners.forEach((e) => e())), r;
3670
3741
  }
3671
- function Pa(e) {
3742
+ function Ba(e) {
3672
3743
  let { state: t } = e, n = {
3673
3744
  top: 0,
3674
3745
  bottom: 0,
3675
3746
  left: 0,
3676
3747
  right: 0
3677
3748
  }, r = t.canvas, i = (e) => !!e && !e.hidden && e.isConnected;
3678
- if (ja(e)) n.bottom = Na(e) + 8;
3749
+ if (La(e)) n.bottom = za(e) + 8;
3679
3750
  else if (r && typeof r.getBoundingClientRect == "function") {
3680
3751
  let t = r.getBoundingClientRect(), a = e.el("proposal-bar");
3681
3752
  i(a) && (n.top = Math.max(0, a.getBoundingClientRect().bottom - t.top) + 8);
@@ -3688,9 +3759,9 @@ function Pa(e) {
3688
3759
  let l = e.root ? e.root.querySelector(".hx-player") : null;
3689
3760
  i(l) && (n.bottom = Math.max(0, t.bottom - l.getBoundingClientRect().top) + 8);
3690
3761
  }
3691
- return Qn(t.width || 0, t.height || 0, n);
3762
+ return nr(t.width || 0, t.height || 0, n);
3692
3763
  }
3693
- function Fa(e) {
3764
+ function Va(e) {
3694
3765
  return e.slot("fly", () => {
3695
3766
  let t = { glide: null };
3696
3767
  return t.tick = (n) => {
@@ -3705,36 +3776,36 @@ function Fa(e) {
3705
3776
  }) : null, t.off && e.own(t.off), t;
3706
3777
  });
3707
3778
  }
3708
- function Ia(e, t) {
3779
+ function Ha(e, t) {
3709
3780
  if (!t) return;
3710
- let n = Fa(e), { state: r } = e;
3781
+ let n = Va(e), { state: r } = e;
3711
3782
  e.reducedMotion || !r.width ? (Object.assign(r.camera, t), n.glide = null, e.map.render()) : (n.glide = {
3712
3783
  to: { ...t },
3713
3784
  last: null
3714
3785
  }, e.map.ensureFlowLoop());
3715
3786
  }
3716
- function La(e) {
3717
- Fa(e).glide = null;
3787
+ function Ua(e) {
3788
+ Va(e).glide = null;
3718
3789
  }
3719
3790
  // ../explorer/selection-view.js
3720
- function Ra(e) {
3791
+ function Wa(e) {
3721
3792
  return !e.state.selectedNode || e.state.scenario ? [] : e.map.getScene().nodes.filter((e) => e.connected);
3722
3793
  }
3723
- function za(e) {
3794
+ function Ga(e) {
3724
3795
  let t = e.state.selectedNode;
3725
3796
  if (!t) return null;
3726
- let n = sr(t, Ra(e), Pa(e), { padding: e.map.fitPadding() });
3727
- return Ia(e, {
3797
+ let n = dr(t, Wa(e), Ba(e), { padding: e.map.fitPadding() });
3798
+ return Ha(e, {
3728
3799
  x: n.x,
3729
3800
  y: n.y,
3730
3801
  zoom: n.zoom
3731
3802
  }), n;
3732
3803
  }
3733
3804
  // ../explorer/engine/selection.js
3734
- function Ba(e, t, { frame: n = !1, source: r = "api" } = {}) {
3805
+ function Ka(e, t, { frame: n = !1, source: r = "api" } = {}) {
3735
3806
  if (!t) return;
3736
3807
  let { state: i } = e;
3737
- e.emit("scenario:clear"), wa(e), i.selectedNode && i.selectedNode.id === t.id || (i.selectedKind = null);
3808
+ e.emit("scenario:clear"), ka(e), i.selectedNode && i.selectedNode.id === t.id || (i.selectedKind = null);
3738
3809
  let a = e.setSelection(t, null, {
3739
3810
  source: r,
3740
3811
  quiet: !0
@@ -3742,9 +3813,9 @@ function Ba(e, t, { frame: n = !1, source: r = "api" } = {}) {
3742
3813
  e.touchScene(), e.map.render(), a.announce(), e.emit("node:show", {
3743
3814
  node: t,
3744
3815
  frame: n
3745
- }), n && za(e);
3816
+ }), n && Ga(e);
3746
3817
  }
3747
- function Va(e, { source: t = "api" } = {}) {
3818
+ function qa(e, { source: t = "api" } = {}) {
3748
3819
  e.emit("scenario:clear");
3749
3820
  let n = e.setSelection(null, null, {
3750
3821
  source: t,
@@ -3752,16 +3823,16 @@ function Va(e, { source: t = "api" } = {}) {
3752
3823
  });
3753
3824
  e.touchScene(), e.map.render(), e.emit("node:close"), n.announce();
3754
3825
  }
3755
- var Ha = 1.25, Ua = {
3826
+ var Ja = 1.25, Ya = {
3756
3827
  ArrowLeft: [-1, 0],
3757
3828
  ArrowRight: [1, 0],
3758
3829
  ArrowUp: [0, -1],
3759
3830
  ArrowDown: [0, 1]
3760
3831
  };
3761
- function Wa(e, t = {}) {
3832
+ function Xa(e, t = {}) {
3762
3833
  let { shift: n = !1, alt: r = !1, ctrl: i = !1, meta: a = !1, scenario: o = !1, freeform: s = !1, selected: c = !1 } = t;
3763
3834
  if (i || a) return null;
3764
- let l = Ua[e];
3835
+ let l = Ya[e];
3765
3836
  if (l) {
3766
3837
  if (r) return s && c ? {
3767
3838
  type: "move",
@@ -3781,12 +3852,12 @@ function Wa(e, t = {}) {
3781
3852
  case "+":
3782
3853
  case "=": return {
3783
3854
  type: "zoom",
3784
- factor: Ha
3855
+ factor: Ja
3785
3856
  };
3786
3857
  case "-":
3787
3858
  case "_": return {
3788
3859
  type: "zoom",
3789
- factor: 1 / Ha
3860
+ factor: 1 / Ja
3790
3861
  };
3791
3862
  case "0": return { type: "fit" };
3792
3863
  case "n":
@@ -3810,21 +3881,21 @@ function Wa(e, t = {}) {
3810
3881
  default: return null;
3811
3882
  }
3812
3883
  }
3813
- function Ga(e) {
3884
+ function Za(e) {
3814
3885
  return [...e].sort((e, t) => Math.floor(e.y / 40) - Math.floor(t.y / 40) || e.x - t.x || (e.id < t.id ? -1 : +(e.id > t.id)));
3815
3886
  }
3816
- function Ka(e, t, n) {
3887
+ function Qa(e, t, n) {
3817
3888
  if (!e.length) return null;
3818
3889
  let r = t == null ? -1 : e.findIndex((e) => e.id === t);
3819
3890
  if (r < 0) return n >= 0 ? e[0] : e[e.length - 1];
3820
3891
  let i = e.length;
3821
3892
  return e[((r + n) % i + i) % i];
3822
3893
  }
3823
- function qa(e, t, n) {
3894
+ function $a(e, t, n) {
3824
3895
  let r = e.type === "external" ? "outside service" : e.type, i = Number.isFinite(e.degree) ? `, ${e.degree} ${e.degree === 1 ? "connection" : "connections"}` : "", a = Number.isFinite(t) && Number.isFinite(n) ? `, ${n + 1} of ${t}` : "";
3825
3896
  return `${e.label}, ${r}${i}${a}`;
3826
3897
  }
3827
- var Ja = (e) => `Zoom ${Math.round(e * 100)} percent`;
3898
+ var eo = (e) => `Zoom ${Math.round(e * 100)} percent`;
3828
3899
  // ../explorer/engine/keyboard.js
3829
3900
  function $(e, t) {
3830
3901
  let n = e.slot("announce", () => {
@@ -3837,32 +3908,32 @@ function $(e, t) {
3837
3908
  r.textContent = t;
3838
3909
  }, 30));
3839
3910
  }
3840
- var Ya = (e) => Ga(e.state.nodes.filter((t) => e.map.isNodeVisible(t)));
3841
- function Xa(e, t, n) {
3842
- t ? (Ba(e, t, {
3911
+ var to = (e) => Za(e.state.nodes.filter((t) => e.map.isNodeVisible(t)));
3912
+ function no(e, t, n) {
3913
+ t ? (Ka(e, t, {
3843
3914
  frame: !0,
3844
3915
  source: "keyboard"
3845
- }), $(e, qa(t, n.length, n.indexOf(t)))) : $(e, e.el("legend-dropdown") ? "No nodes are shown. Turn a layer on in the Layers menu." : "No nodes are shown.");
3916
+ }), $(e, $a(t, n.length, n.indexOf(t)))) : $(e, e.el("legend-dropdown") ? "No nodes are shown. Turn a layer on in the Layers menu." : "No nodes are shown.");
3846
3917
  }
3847
- function Za(e) {
3918
+ function ro(e) {
3848
3919
  let { state: t } = e;
3849
3920
  if (!t.selectedNode) return;
3850
- let n = za(e);
3921
+ let n = Ga(e);
3851
3922
  if (!n) return;
3852
- let r = Math.max(0, Ra(e).length - 1);
3923
+ let r = Math.max(0, Wa(e).length - 1);
3853
3924
  $(e, n.framed ? `Framed ${t.selectedNode.label} and ${r} connected` : `${t.selectedNode.label} centred: ${r} connected, too spread out to frame together`);
3854
3925
  }
3855
- function Qa(e, t, n) {
3926
+ function io(e, t, n) {
3856
3927
  let { state: r } = e, i = r.selectedNode;
3857
3928
  i && (i.x += t, i.y += n, r.freeformPositions[i.id] = {
3858
3929
  x: i.x,
3859
3930
  y: i.y
3860
- }, e.touchScene(), ha(e), e.map.render(), $(e, `Moved ${i.label}`));
3931
+ }, e.touchScene(), ba(e), e.map.render(), $(e, `Moved ${i.label}`));
3861
3932
  }
3862
- function $a(e, t) {
3933
+ function ao(e, t) {
3863
3934
  let { state: n, map: r } = e;
3864
3935
  if (t.target !== n.canvas || t.defaultPrevented) return;
3865
- let i = Wa(t.key, {
3936
+ let i = Xa(t.key, {
3866
3937
  shift: t.shiftKey,
3867
3938
  alt: t.altKey,
3868
3939
  ctrl: t.ctrlKey,
@@ -3879,52 +3950,52 @@ function $a(e, t) {
3879
3950
  a.x += i.dx, a.y += i.dy, r.render();
3880
3951
  break;
3881
3952
  case "zoom":
3882
- Object.assign(a, Yn(a, i.factor, o / 2, s / 2, r.getMinZoom())), r.render(), $(e, Ja(a.zoom));
3953
+ Object.assign(a, $n(a, i.factor, o / 2, s / 2, r.getMinZoom())), r.render(), $(e, eo(a.zoom));
3883
3954
  break;
3884
3955
  case "fit":
3885
- r.fitGraphToViewport(r.fitPadding()), $(e, `The whole map. ${Ja(a.zoom)}`);
3956
+ r.fitGraphToViewport(r.fitPadding()), $(e, `The whole map. ${eo(a.zoom)}`);
3886
3957
  break;
3887
3958
  case "step": {
3888
3959
  if (e.ask("search:active") && e.ask("search:step", i.by)) break;
3889
- let t = Ya(e);
3890
- Xa(e, Ka(t, n.selectedNode && n.selectedNode.id, i.by), t);
3960
+ let t = to(e);
3961
+ no(e, Qa(t, n.selectedNode && n.selectedNode.id, i.by), t);
3891
3962
  break;
3892
3963
  }
3893
3964
  case "first":
3894
3965
  case "last": {
3895
- let t = Ya(e);
3896
- Xa(e, i.type === "first" ? t[0] : t[t.length - 1], t);
3966
+ let t = to(e);
3967
+ no(e, i.type === "first" ? t[0] : t[t.length - 1], t);
3897
3968
  break;
3898
3969
  }
3899
3970
  case "frame":
3900
- Za(e);
3971
+ ro(e);
3901
3972
  break;
3902
3973
  case "open":
3903
3974
  e.emit("node:focus");
3904
3975
  break;
3905
3976
  case "close":
3906
- Va(e, { source: "keyboard" }), $(e, e.el("spec-drawer") ? "Panel closed" : "Selection cleared");
3977
+ qa(e, { source: "keyboard" }), $(e, e.el("spec-drawer") ? "Panel closed" : "Selection cleared");
3907
3978
  break;
3908
- case "move": Qa(e, i.dx, i.dy);
3979
+ case "move": io(e, i.dx, i.dy);
3909
3980
  }
3910
3981
  }
3911
- function eo(e) {
3982
+ function oo(e) {
3912
3983
  let t = e.slot("keyboard", () => ({ off: null }));
3913
- !t.off && e.state.canvas && (t.off = e.listen(e.state.canvas, "keydown", (t) => $a(e, t)));
3984
+ !t.off && e.state.canvas && (t.off = e.listen(e.state.canvas, "keydown", (t) => ao(e, t)));
3914
3985
  }
3915
- function to(e) {
3986
+ function so(e) {
3916
3987
  let t = e.slot("keyboard", () => ({ off: null }));
3917
3988
  t.off && t.off(), t.off = null;
3918
3989
  }
3919
3990
  // ../explorer/engine/piece.js
3920
- var no = /* @__PURE__ */ RegExp("\\sdata-corn=\\\"([^\\\"]+)\\\"");
3921
- function ro(e) {
3922
- return String(e).replace(/<[a-zA-Z][^<>]*>/g, (e) => /\spart=/.test(e) ? e : e.replace(no, (e, t) => ` data-corn=\"${t}\" part=\"${t}\"`));
3991
+ var co = /* @__PURE__ */ RegExp("\\sdata-corn=\\\"([^\\\"]+)\\\"");
3992
+ function lo(e) {
3993
+ return String(e).replace(/<[a-zA-Z][^<>]*>/g, (e) => /\spart=/.test(e) ? e : e.replace(co, (e, t) => ` data-corn=\"${t}\" part=\"${t}\"`));
3923
3994
  }
3924
- function io(e) {
3995
+ function uo(e) {
3925
3996
  for (let t of e.querySelectorAll("[data-corn]:not([part])")) t.setAttribute("part", t.getAttribute("data-corn"));
3926
3997
  }
3927
- function ao(e) {
3998
+ function fo(e) {
3928
3999
  let t = [], n = !1, r = {
3929
4000
  listen(n, r, i, a) {
3930
4001
  let o = e.listen(n, r, i, a);
@@ -3947,7 +4018,7 @@ function ao(e) {
3947
4018
  let r = e.win && e.win.MutationObserver;
3948
4019
  if (!r) return;
3949
4020
  let i = new r((e) => {
3950
- for (let t of e) for (let e of t.addedNodes) e.nodeType === 1 && (e.hasAttribute("data-corn") && !e.hasAttribute("part") && e.setAttribute("part", e.getAttribute("data-corn")), io(e));
4021
+ for (let t of e) for (let e of t.addedNodes) e.nodeType === 1 && (e.hasAttribute("data-corn") && !e.hasAttribute("part") && e.setAttribute("part", e.getAttribute("data-corn")), uo(e));
3951
4022
  });
3952
4023
  for (let e of n) i.observe(e, {
3953
4024
  childList: !0,
@@ -3965,22 +4036,22 @@ function ao(e) {
3965
4036
  };
3966
4037
  return e.own(r.destroy), r;
3967
4038
  }
3968
- function oo(e, t, n, r, i) {
4039
+ function po(e, t, n, r, i) {
3969
4040
  let a = e.doc.createElement("template");
3970
- a.innerHTML = ro(n), h(e, a.content);
4041
+ a.innerHTML = lo(n), h(e, a.content);
3971
4042
  let o = [...a.content.children], s = r && i ? r[i] : null;
3972
4043
  if (s && s.parentNode) {
3973
- let t = so(s);
3974
- s.parentNode.insertBefore(a.content, s), t && co(e, t, o);
4044
+ let t = mo(s);
4045
+ s.parentNode.insertBefore(a.content, s), t && ho(e, t, o);
3975
4046
  } else t.append(a.content);
3976
4047
  return o;
3977
4048
  }
3978
- function so(e) {
4049
+ function mo(e) {
3979
4050
  let t = [], n = `corn-placeholder:${String(e.data || "").replace(/^corn-piece:/, "")}`;
3980
4051
  for (let r = e.previousSibling; r; r = r.previousSibling) if (t.push(r), r.nodeType === 8 && r.data === n) return t;
3981
4052
  return null;
3982
4053
  }
3983
- function co(e, t, n) {
4054
+ function ho(e, t, n) {
3984
4055
  let r = (e) => e.flatMap((e) => e.nodeType === 1 ? [...e.matches("button, input") ? [e] : [], ...e.querySelectorAll("button, input")] : []), i = r(t.slice().reverse()), a = r(n), o = e.active();
3985
4056
  i.forEach((e, t) => {
3986
4057
  let n = a[t];
@@ -3988,34 +4059,34 @@ function co(e, t, n) {
3988
4059
  }), t.forEach((e) => e.remove());
3989
4060
  }
3990
4061
  // ../explorer/pieces/adopt-tokens.js
3991
- var lo = Symbol.for("cornfield.default-tokens"), uo = "data-corn-default-tokens";
3992
- function fo(e, t) {
4062
+ var go = Symbol.for("cornfield.default-tokens"), _o = "data-corn-default-tokens";
4063
+ function vo(e, t) {
3993
4064
  if (!e || !t) return !1;
3994
4065
  let n = e.nodeType === 9 ? e : e.ownerDocument, r = e.adoptedStyleSheets;
3995
4066
  if (Array.isArray(r) && n && n.defaultView && typeof n.defaultView.CSSStyleSheet == "function" && "replaceSync" in n.defaultView.CSSStyleSheet.prototype) {
3996
- if (r.some((e) => e && e[lo])) return !1;
4067
+ if (r.some((e) => e && e[go])) return !1;
3997
4068
  let i = new n.defaultView.CSSStyleSheet();
3998
- return i.replaceSync(t), i[lo] = !0, e.adoptedStyleSheets = [...r, i], !0;
4069
+ return i.replaceSync(t), i[go] = !0, e.adoptedStyleSheets = [...r, i], !0;
3999
4070
  }
4000
4071
  let i = e.nodeType === 9 ? e.head : e;
4001
- if (!i || i.querySelector(`style[${uo}]`)) return !1;
4072
+ if (!i || i.querySelector(`style[${_o}]`)) return !1;
4002
4073
  let a = n.createElement("style");
4003
- return a.setAttribute(uo, ""), a.textContent = t, i.prepend(a), !0;
4074
+ return a.setAttribute(_o, ""), a.textContent = t, i.prepend(a), !0;
4004
4075
  }
4005
4076
  // ../explorer/pieces/scope-link.js
4006
- var po = "corn-scope-request", mo = "corn-scope-changed", ho = (e) => e.slot("scope", () => ({
4077
+ var yo = "corn-scope-request", bo = "corn-scope-changed", xo = (e) => e.slot("scope", () => ({
4007
4078
  theme: "auto",
4008
4079
  serverTheme: null,
4009
4080
  host: null,
4010
4081
  source: null,
4011
4082
  mountStatus: null
4012
- })), go = (e) => {
4013
- let t = ho(e);
4083
+ })), So = (e) => {
4084
+ let t = xo(e);
4014
4085
  return t.host ? t : null;
4015
4086
  };
4016
- function _o(e, t) {
4087
+ function Co(e, t) {
4017
4088
  let n = null;
4018
- e.dispatchEvent(new CustomEvent(po, {
4089
+ e.dispatchEvent(new CustomEvent(yo, {
4019
4090
  bubbles: !0,
4020
4091
  composed: !0,
4021
4092
  detail: {
@@ -4026,16 +4097,16 @@ function _o(e, t) {
4026
4097
  }
4027
4098
  }));
4028
4099
  let r = () => t();
4029
- e.addEventListener(mo, r);
4100
+ e.addEventListener(bo, r);
4030
4101
  let i = !1;
4031
4102
  return {
4032
4103
  inst: n ? n.inst : null,
4033
4104
  scope: n ? n.scope : null,
4034
4105
  leave() {
4035
- i || (i = !0, e.removeEventListener(mo, r), n && n.release());
4106
+ i || (i = !0, e.removeEventListener(bo, r), n && n.release());
4036
4107
  }
4037
4108
  };
4038
4109
  }
4039
4110
  // \0corn-default-tokens
4040
- var vo = "/* cornfield's default design tokens, generated from explorer/tokens.css by components/scripts/tokens.mjs: do not edit.\n Every selector is :where(...), at zero specificity: any ordinary rule of yours (on :root, or on one element) overrides it. */\n\n:where(:root) {\n --corn-ground: #090d16;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.2) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.16) 0%, transparent 45%),\n radial-gradient(circle at 50% 50%, rgba(66, 153, 225, 0.10) 0%, transparent 60%);\n --corn-surface-1: rgba(26, 34, 52, 0.72);\n --corn-surface-2: rgba(30, 41, 59, 0.8);\n --corn-surface-3: rgba(51, 65, 85, 0.8);\n --corn-line: rgba(255, 255, 255, 0.12);\n --corn-line-soft: rgba(255, 255, 255, 0.07);\n --corn-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.45);\n --corn-shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.4);\n --corn-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n --corn-shadow-color: rgba(0, 0, 0, 0.5);\n --corn-glow: 8px;\n --corn-scrim: rgba(0, 0, 0, 0.6);\n --corn-shadow-sheet: 0 -8px 24px color-mix(in srgb, var(--corn-shadow-color) 70%, transparent);\n --corn-blur: 16px;\n --corn-text: #f8fafc;\n --corn-text-2: #cbd5e1;\n --corn-text-3: #9aa9bc;\n --corn-text-on-accent: #fff;\n --corn-mockup-ground: #fff;\n --corn-accent: #4f46e5;\n --corn-accent-hover: #6265f1;\n --corn-accent-text: #98a1fa;\n --corn-accent-soft: color-mix(in srgb, var(--corn-accent-hover) 20%, transparent);\n --corn-focus: #818cf8;\n --corn-brand-gradient: linear-gradient(135deg, #4299e1 0%, #818cf8 50%, #e53e3e 100%);\n --corn-ok: #34d399;\n --corn-warn: #fcd34d;\n --corn-bad: #fca5a5;\n --corn-info: #7dd3fc;\n --corn-ok-soft: color-mix(in srgb, var(--corn-ok) 15%, transparent);\n --corn-run-requested: var(--corn-text-3);\n --corn-run-claimed: var(--corn-info);\n --corn-run-working: var(--corn-info);\n --corn-run-waiting: var(--corn-warn);\n --corn-run-waiting-ink: var(--corn-ground);\n --corn-run-done: var(--corn-ok);\n --corn-run-failed: var(--corn-bad);\n --corn-run-stopped: var(--corn-text-2);\n --corn-added: #2dd4bf;\n --corn-changed: #fbbf24;\n --corn-removed: #fa9292;\n --corn-edit: #b49cfb;\n --corn-added-text: color-mix(in srgb, var(--corn-added) 60%, var(--corn-text));\n --corn-edit-text: color-mix(in srgb, var(--corn-edit) 60%, var(--corn-text));\n --corn-hue-orange: #fb923c;\n --corn-hue-fuchsia: #e879f9;\n --corn-hue-pink: #f472b6;\n --corn-hue-lime: #a3e635;\n --corn-hue-orange-text: var(--corn-hue-orange);\n --corn-hue-orange-soft: color-mix(in srgb, var(--corn-hue-orange) 12%, transparent);\n --corn-font: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n --corn-font-display: var(--corn-font);\n --corn-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, \"Liberation Mono\", monospace;\n --corn-font-num: var(--corn-font);\n --corn-text-2xs: 10px;\n --corn-text-xs: 11px;\n --corn-text-sm: 12px;\n --corn-text-md: 13px;\n --corn-text-base: 14px;\n --corn-text-lg: 15px;\n --corn-text-xl: 20px;\n --corn-radius-xs: 3px;\n --corn-radius-sm: 6px;\n --corn-radius: 10px;\n --corn-radius-lg: 14px;\n --corn-radius-pill: 999px;\n --corn-border: 1px;\n --corn-border-strong: 2px;\n --corn-focus-width: 2px;\n --corn-focus-offset: 2px;\n --corn-space: 4px;\n --corn-space-1: var(--corn-space);\n --corn-space-2: 6px;\n --corn-space-3: 8px;\n --corn-space-4: 12px;\n --corn-space-5: 16px;\n --corn-space-6: 24px;\n --corn-control-height: 32px;\n --corn-panel-pad: calc(var(--corn-space-5) + var(--corn-space-1));\n --corn-panel-head-height: calc(var(--corn-control-height) + var(--corn-space-3));\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 18%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 45%, transparent);\n --corn-glyph-mix: 100%;\n color-scheme: dark;\n --corn-map-stroke: auto;\n --corn-map-stroke-width: 1.5px;\n --corn-map-label: auto;\n --corn-map-label-halo: auto;\n --corn-map-collision: var(--corn-warn);\n --corn-map-font: auto;\n --corn-map-edge-width: auto;\n --corn-map-glow: auto;\n --corn-map-label-min: auto;\n --corn-map-glyph: auto;\n --corn-map-grey: auto;\n --corn-map-grey-alpha: auto;\n --corn-map-added: auto;\n --corn-map-changed: auto;\n --corn-map-removed: auto;\n --corn-map-edit: auto;\n --corn-map-selected: auto;\n --corn-map-match: auto;\n --corn-map-lit: auto;\n --corn-map-edge-ownership: auto;\n --corn-map-edge-usage: auto;\n --corn-map-edge-flow: auto;\n --corn-map-edge-reads: auto;\n --corn-map-edge-writes: auto;\n --corn-map-edge-calls: auto;\n --corn-map-edge-triggers: auto;\n --corn-map-edge-delivers: auto;\n --corn-map-edge-runs-on: auto;\n --corn-map-edge-uses: auto;\n --corn-map-edge-extends: auto;\n --corn-map-node-root: auto;\n --corn-map-node-app: auto;\n --corn-map-node-page: auto;\n --corn-map-node-pkg: auto;\n --corn-map-node-core: auto;\n --corn-map-node-token: auto;\n --corn-map-node-atom: auto;\n --corn-map-node-molecule: auto;\n --corn-map-node-tool: auto;\n --corn-map-node-store: auto;\n --corn-map-node-table: auto;\n --corn-map-node-rom: auto;\n --corn-map-node-service: auto;\n --corn-map-node-external: auto;\n --corn-map-node-stack: auto;\n --corn-map-node-machine: auto;\n --corn-map-node-container: auto;\n --corn-map-node-persona: auto;\n --corn-map-node-device: auto;\n --corn-map-node-floor: auto;\n --corn-map-node-room: auto;\n --corn-map-group-app: auto;\n --corn-map-group-pkg: auto;\n --corn-map-group-page: auto;\n --corn-map-group-atom: auto;\n --corn-map-group-molecule: auto;\n --corn-map-group-token: auto;\n --corn-map-group-tool: auto;\n --corn-map-group-table: auto;\n --corn-map-group-rom: auto;\n --corn-map-group-service: auto;\n --corn-map-group-cloud: auto;\n --corn-map-group-web: auto;\n --corn-map-group-stack: auto;\n --corn-map-group-machine: auto;\n --corn-map-group-container: auto;\n --corn-map-group-device: auto;\n --corn-map-group-house: auto;\n --corn-map-group-persona: auto;\n}\n\n@media (prefers-color-scheme: light) {\n :where(:root:not([data-theme=\"dark\"])) {\n --corn-ground: #f4f6fa;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.06) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.04) 0%, transparent 45%);\n --corn-surface-1: rgba(255, 255, 255, 0.8);\n --corn-surface-2: rgba(241, 245, 249, 0.92);\n --corn-surface-3: rgba(226, 232, 240, 0.95);\n --corn-line: rgba(15, 23, 42, 0.12);\n --corn-line-soft: rgba(15, 23, 42, 0.07);\n --corn-shadow: 0 8px 28px 0 rgba(15, 23, 42, 0.12);\n --corn-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.25);\n --corn-shadow-lg: 0 10px 30px -12px rgba(15, 23, 42, 0.18);\n --corn-shadow-color: rgba(15, 23, 42, 0.25);\n --corn-glow: 0px;\n --corn-scrim: rgba(15, 23, 42, 0.35);\n --corn-text: #0f172a;\n --corn-text-2: #334155;\n --corn-text-3: #475569;\n --corn-accent-text: #4f46e5;\n --corn-focus: #4f46e5;\n --corn-brand-gradient: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #dc2626 100%);\n --corn-ok: #046f51;\n --corn-warn: #854d0e;\n --corn-bad: #b91c1c;\n --corn-info: #03679e;\n --corn-added: #197c6f;\n --corn-changed: #8f6703;\n --corn-removed: #e20b0b;\n --corn-edit: #6839f6;\n --corn-hue-orange: #c2410c;\n --corn-hue-fuchsia: #a21caf;\n --corn-hue-pink: #be185d;\n --corn-hue-lime: #4c7b0f;\n --corn-hue-orange-text: #9a3412;\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 30%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 55%, transparent);\n --corn-glyph-mix: 45%;\n color-scheme: light;\n }\n}\n\n:where(:root[data-theme=\"light\"]) {\n --corn-ground: #f4f6fa;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.06) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.04) 0%, transparent 45%);\n --corn-surface-1: rgba(255, 255, 255, 0.8);\n --corn-surface-2: rgba(241, 245, 249, 0.92);\n --corn-surface-3: rgba(226, 232, 240, 0.95);\n --corn-line: rgba(15, 23, 42, 0.12);\n --corn-line-soft: rgba(15, 23, 42, 0.07);\n --corn-shadow: 0 8px 28px 0 rgba(15, 23, 42, 0.12);\n --corn-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.25);\n --corn-shadow-lg: 0 10px 30px -12px rgba(15, 23, 42, 0.18);\n --corn-shadow-color: rgba(15, 23, 42, 0.25);\n --corn-glow: 0px;\n --corn-scrim: rgba(15, 23, 42, 0.35);\n --corn-text: #0f172a;\n --corn-text-2: #334155;\n --corn-text-3: #475569;\n --corn-accent-text: #4f46e5;\n --corn-focus: #4f46e5;\n --corn-brand-gradient: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #dc2626 100%);\n --corn-ok: #046f51;\n --corn-warn: #854d0e;\n --corn-bad: #b91c1c;\n --corn-info: #03679e;\n --corn-added: #197c6f;\n --corn-changed: #8f6703;\n --corn-removed: #e20b0b;\n --corn-edit: #6839f6;\n --corn-hue-orange: #c2410c;\n --corn-hue-fuchsia: #a21caf;\n --corn-hue-pink: #be185d;\n --corn-hue-lime: #4c7b0f;\n --corn-hue-orange-text: #9a3412;\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 30%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 55%, transparent);\n --corn-glyph-mix: 45%;\n color-scheme: light;\n}\n\n@media (max-width: 767px) {\n :where(:root) {\n --corn-control-height: 44px;\n }\n}\n\n@media (max-width: 639px) {\n :where(:root) {\n --corn-panel-pad: var(--corn-space-5);\n }\n}\n\n:where(:root) {\n --hx-bg: var(--corn-ground);\n --hx-text: var(--corn-text);\n --hx-ink: var(--corn-text);\n --hx-text-1: var(--corn-text);\n --hx-text-2: var(--corn-text-2);\n --hx-slate-300: var(--corn-text-2);\n --hx-slate-400: var(--corn-text-3);\n --hx-slate-500: var(--corn-text-3);\n --hx-slate-600: var(--corn-text-3);\n --hx-slate-700: var(--corn-surface-3);\n --hx-slate-800: var(--corn-surface-2);\n --hx-slate-900: var(--corn-ground);\n --hx-slate-950: var(--corn-ground);\n --hx-indigo: var(--corn-accent-text);\n --hx-indigo-strong: var(--corn-accent);\n --hx-emerald: var(--corn-ok);\n --hx-amber: var(--corn-warn);\n --hx-sky: var(--corn-info);\n --hx-pink: var(--corn-hue-pink);\n --hx-fuchsia: var(--corn-hue-fuchsia);\n --hx-fuchsia-strong: var(--corn-hue-fuchsia);\n --hx-red: var(--corn-bad);\n --hx-code: var(--corn-warn);\n --hx-orange-text: var(--corn-hue-orange);\n --hx-orange-strong: var(--corn-hue-orange);\n --hx-teal-text: var(--corn-added-text);\n --hx-teal-strong: var(--corn-added-text);\n --hx-violet-text: var(--corn-edit-text);\n --hx-green-text: var(--corn-ok);\n --hx-lime-text: var(--corn-hue-lime);\n --hx-mark-added: var(--corn-added);\n --hx-mark-changed: var(--corn-changed);\n --hx-mark-removed: var(--corn-removed);\n --hx-mark-edit: var(--corn-edit);\n --hx-control: var(--corn-surface-2);\n --hx-control-hover: var(--corn-surface-3);\n --hx-control-off: color-mix(in srgb, var(--corn-ground) 40%, transparent);\n --hx-well: color-mix(in srgb, var(--corn-ground) 80%, transparent);\n --hx-well-soft: color-mix(in srgb, var(--corn-ground) 55%, transparent);\n --hx-line: var(--corn-line);\n --hx-line-soft: var(--corn-line-soft);\n --hx-scroll: color-mix(in srgb, var(--corn-text) 18%, transparent);\n --hx-scroll-hover: color-mix(in srgb, var(--corn-text) 28%, transparent);\n --hx-swatch-solid: color-mix(in srgb, var(--corn-text) 55%, transparent);\n --hx-backdrop: var(--corn-scrim);\n --hx-glyph-mix: var(--corn-glyph-mix);\n --surface-glass: var(--corn-surface-1);\n --surface-glass-header: color-mix(in srgb, var(--corn-ground) 88%, transparent);\n --border-glass: var(--corn-line);\n --border-subtle: var(--corn-line-soft);\n --glass-blur: blur(var(--corn-blur));\n --glass-shadow: var(--corn-shadow);\n --gradient-primary: var(--corn-brand-gradient);\n --bg-gradient: var(--corn-ground-image), var(--corn-ground);\n --pop-font-body: var(--corn-font);\n --pop-font-mono: var(--corn-mono);\n}\n\n/* theme=\"light\" on an element: this mode's tokens, on the element itself */\n:where(corn-map[theme=\"light\"]),\n:where(corn-scope[theme=\"light\"]) {\n --corn-ground: #f4f6fa;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.06) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.04) 0%, transparent 45%);\n --corn-surface-1: rgba(255, 255, 255, 0.8);\n --corn-surface-2: rgba(241, 245, 249, 0.92);\n --corn-surface-3: rgba(226, 232, 240, 0.95);\n --corn-line: rgba(15, 23, 42, 0.12);\n --corn-line-soft: rgba(15, 23, 42, 0.07);\n --corn-shadow: 0 8px 28px 0 rgba(15, 23, 42, 0.12);\n --corn-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.25);\n --corn-shadow-lg: 0 10px 30px -12px rgba(15, 23, 42, 0.18);\n --corn-shadow-color: rgba(15, 23, 42, 0.25);\n --corn-glow: 0px;\n --corn-scrim: rgba(15, 23, 42, 0.35);\n --corn-text: #0f172a;\n --corn-text-2: #334155;\n --corn-text-3: #475569;\n --corn-accent-text: #4f46e5;\n --corn-focus: #4f46e5;\n --corn-brand-gradient: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #dc2626 100%);\n --corn-ok: #046f51;\n --corn-warn: #854d0e;\n --corn-bad: #b91c1c;\n --corn-info: #03679e;\n --corn-added: #197c6f;\n --corn-changed: #8f6703;\n --corn-removed: #e20b0b;\n --corn-edit: #6839f6;\n --corn-hue-orange: #c2410c;\n --corn-hue-fuchsia: #a21caf;\n --corn-hue-pink: #be185d;\n --corn-hue-lime: #4c7b0f;\n --corn-hue-orange-text: #9a3412;\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 30%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 55%, transparent);\n --corn-glyph-mix: 45%;\n color-scheme: light;\n --corn-shadow-sheet: 0 -8px 24px color-mix(in srgb, var(--corn-shadow-color) 70%, transparent);\n --corn-accent-soft: color-mix(in srgb, var(--corn-accent-hover) 20%, transparent);\n --corn-ok-soft: color-mix(in srgb, var(--corn-ok) 15%, transparent);\n --corn-run-requested: var(--corn-text-3);\n --corn-run-claimed: var(--corn-info);\n --corn-run-working: var(--corn-info);\n --corn-run-waiting: var(--corn-warn);\n --corn-run-waiting-ink: var(--corn-ground);\n --corn-run-done: var(--corn-ok);\n --corn-run-failed: var(--corn-bad);\n --corn-run-stopped: var(--corn-text-2);\n --corn-added-text: color-mix(in srgb, var(--corn-added) 60%, var(--corn-text));\n --corn-edit-text: color-mix(in srgb, var(--corn-edit) 60%, var(--corn-text));\n --corn-hue-orange-soft: color-mix(in srgb, var(--corn-hue-orange) 12%, transparent);\n --corn-font-display: var(--corn-font);\n --corn-font-num: var(--corn-font);\n --corn-space-1: var(--corn-space);\n --corn-panel-pad: calc(var(--corn-space-5) + var(--corn-space-1));\n --corn-panel-head-height: calc(var(--corn-control-height) + var(--corn-space-3));\n --corn-map-collision: var(--corn-warn);\n --hx-bg: var(--corn-ground);\n --hx-text: var(--corn-text);\n --hx-ink: var(--corn-text);\n --hx-text-1: var(--corn-text);\n --hx-text-2: var(--corn-text-2);\n --hx-slate-300: var(--corn-text-2);\n --hx-slate-400: var(--corn-text-3);\n --hx-slate-500: var(--corn-text-3);\n --hx-slate-600: var(--corn-text-3);\n --hx-slate-700: var(--corn-surface-3);\n --hx-slate-800: var(--corn-surface-2);\n --hx-slate-900: var(--corn-ground);\n --hx-slate-950: var(--corn-ground);\n --hx-indigo: var(--corn-accent-text);\n --hx-indigo-strong: var(--corn-accent);\n --hx-emerald: var(--corn-ok);\n --hx-amber: var(--corn-warn);\n --hx-sky: var(--corn-info);\n --hx-pink: var(--corn-hue-pink);\n --hx-fuchsia: var(--corn-hue-fuchsia);\n --hx-fuchsia-strong: var(--corn-hue-fuchsia);\n --hx-red: var(--corn-bad);\n --hx-code: var(--corn-warn);\n --hx-orange-text: var(--corn-hue-orange);\n --hx-orange-strong: var(--corn-hue-orange);\n --hx-teal-text: var(--corn-added-text);\n --hx-teal-strong: var(--corn-added-text);\n --hx-violet-text: var(--corn-edit-text);\n --hx-green-text: var(--corn-ok);\n --hx-lime-text: var(--corn-hue-lime);\n --hx-mark-added: var(--corn-added);\n --hx-mark-changed: var(--corn-changed);\n --hx-mark-removed: var(--corn-removed);\n --hx-mark-edit: var(--corn-edit);\n --hx-control: var(--corn-surface-2);\n --hx-control-hover: var(--corn-surface-3);\n --hx-control-off: color-mix(in srgb, var(--corn-ground) 40%, transparent);\n --hx-well: color-mix(in srgb, var(--corn-ground) 80%, transparent);\n --hx-well-soft: color-mix(in srgb, var(--corn-ground) 55%, transparent);\n --hx-line: var(--corn-line);\n --hx-line-soft: var(--corn-line-soft);\n --hx-scroll: color-mix(in srgb, var(--corn-text) 18%, transparent);\n --hx-scroll-hover: color-mix(in srgb, var(--corn-text) 28%, transparent);\n --hx-swatch-solid: color-mix(in srgb, var(--corn-text) 55%, transparent);\n --hx-backdrop: var(--corn-scrim);\n --hx-glyph-mix: var(--corn-glyph-mix);\n --surface-glass: var(--corn-surface-1);\n --surface-glass-header: color-mix(in srgb, var(--corn-ground) 88%, transparent);\n --border-glass: var(--corn-line);\n --border-subtle: var(--corn-line-soft);\n --glass-blur: blur(var(--corn-blur));\n --glass-shadow: var(--corn-shadow);\n --gradient-primary: var(--corn-brand-gradient);\n --bg-gradient: var(--corn-ground-image), var(--corn-ground);\n --pop-font-body: var(--corn-font);\n --pop-font-mono: var(--corn-mono);\n}\n\n/* theme=\"dark\" on an element: this mode's tokens, on the element itself */\n:where(corn-map[theme=\"dark\"]),\n:where(corn-scope[theme=\"dark\"]) {\n --corn-ground: #090d16;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.2) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.16) 0%, transparent 45%),\n radial-gradient(circle at 50% 50%, rgba(66, 153, 225, 0.10) 0%, transparent 60%);\n --corn-surface-1: rgba(26, 34, 52, 0.72);\n --corn-surface-2: rgba(30, 41, 59, 0.8);\n --corn-surface-3: rgba(51, 65, 85, 0.8);\n --corn-line: rgba(255, 255, 255, 0.12);\n --corn-line-soft: rgba(255, 255, 255, 0.07);\n --corn-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.45);\n --corn-shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.4);\n --corn-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n --corn-shadow-color: rgba(0, 0, 0, 0.5);\n --corn-glow: 8px;\n --corn-scrim: rgba(0, 0, 0, 0.6);\n --corn-text: #f8fafc;\n --corn-text-2: #cbd5e1;\n --corn-text-3: #9aa9bc;\n --corn-accent-text: #98a1fa;\n --corn-focus: #818cf8;\n --corn-brand-gradient: linear-gradient(135deg, #4299e1 0%, #818cf8 50%, #e53e3e 100%);\n --corn-ok: #34d399;\n --corn-warn: #fcd34d;\n --corn-bad: #fca5a5;\n --corn-info: #7dd3fc;\n --corn-added: #2dd4bf;\n --corn-changed: #fbbf24;\n --corn-removed: #fa9292;\n --corn-edit: #b49cfb;\n --corn-hue-orange: #fb923c;\n --corn-hue-fuchsia: #e879f9;\n --corn-hue-pink: #f472b6;\n --corn-hue-lime: #a3e635;\n --corn-hue-orange-text: var(--corn-hue-orange);\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 18%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 45%, transparent);\n --corn-glyph-mix: 100%;\n color-scheme: dark;\n --corn-shadow-sheet: 0 -8px 24px color-mix(in srgb, var(--corn-shadow-color) 70%, transparent);\n --corn-accent-soft: color-mix(in srgb, var(--corn-accent-hover) 20%, transparent);\n --corn-ok-soft: color-mix(in srgb, var(--corn-ok) 15%, transparent);\n --corn-run-requested: var(--corn-text-3);\n --corn-run-claimed: var(--corn-info);\n --corn-run-working: var(--corn-info);\n --corn-run-waiting: var(--corn-warn);\n --corn-run-waiting-ink: var(--corn-ground);\n --corn-run-done: var(--corn-ok);\n --corn-run-failed: var(--corn-bad);\n --corn-run-stopped: var(--corn-text-2);\n --corn-added-text: color-mix(in srgb, var(--corn-added) 60%, var(--corn-text));\n --corn-edit-text: color-mix(in srgb, var(--corn-edit) 60%, var(--corn-text));\n --corn-hue-orange-soft: color-mix(in srgb, var(--corn-hue-orange) 12%, transparent);\n --corn-font-display: var(--corn-font);\n --corn-font-num: var(--corn-font);\n --corn-space-1: var(--corn-space);\n --corn-panel-pad: calc(var(--corn-space-5) + var(--corn-space-1));\n --corn-panel-head-height: calc(var(--corn-control-height) + var(--corn-space-3));\n --corn-map-collision: var(--corn-warn);\n --hx-bg: var(--corn-ground);\n --hx-text: var(--corn-text);\n --hx-ink: var(--corn-text);\n --hx-text-1: var(--corn-text);\n --hx-text-2: var(--corn-text-2);\n --hx-slate-300: var(--corn-text-2);\n --hx-slate-400: var(--corn-text-3);\n --hx-slate-500: var(--corn-text-3);\n --hx-slate-600: var(--corn-text-3);\n --hx-slate-700: var(--corn-surface-3);\n --hx-slate-800: var(--corn-surface-2);\n --hx-slate-900: var(--corn-ground);\n --hx-slate-950: var(--corn-ground);\n --hx-indigo: var(--corn-accent-text);\n --hx-indigo-strong: var(--corn-accent);\n --hx-emerald: var(--corn-ok);\n --hx-amber: var(--corn-warn);\n --hx-sky: var(--corn-info);\n --hx-pink: var(--corn-hue-pink);\n --hx-fuchsia: var(--corn-hue-fuchsia);\n --hx-fuchsia-strong: var(--corn-hue-fuchsia);\n --hx-red: var(--corn-bad);\n --hx-code: var(--corn-warn);\n --hx-orange-text: var(--corn-hue-orange);\n --hx-orange-strong: var(--corn-hue-orange);\n --hx-teal-text: var(--corn-added-text);\n --hx-teal-strong: var(--corn-added-text);\n --hx-violet-text: var(--corn-edit-text);\n --hx-green-text: var(--corn-ok);\n --hx-lime-text: var(--corn-hue-lime);\n --hx-mark-added: var(--corn-added);\n --hx-mark-changed: var(--corn-changed);\n --hx-mark-removed: var(--corn-removed);\n --hx-mark-edit: var(--corn-edit);\n --hx-control: var(--corn-surface-2);\n --hx-control-hover: var(--corn-surface-3);\n --hx-control-off: color-mix(in srgb, var(--corn-ground) 40%, transparent);\n --hx-well: color-mix(in srgb, var(--corn-ground) 80%, transparent);\n --hx-well-soft: color-mix(in srgb, var(--corn-ground) 55%, transparent);\n --hx-line: var(--corn-line);\n --hx-line-soft: var(--corn-line-soft);\n --hx-scroll: color-mix(in srgb, var(--corn-text) 18%, transparent);\n --hx-scroll-hover: color-mix(in srgb, var(--corn-text) 28%, transparent);\n --hx-swatch-solid: color-mix(in srgb, var(--corn-text) 55%, transparent);\n --hx-backdrop: var(--corn-scrim);\n --hx-glyph-mix: var(--corn-glyph-mix);\n --surface-glass: var(--corn-surface-1);\n --surface-glass-header: color-mix(in srgb, var(--corn-ground) 88%, transparent);\n --border-glass: var(--corn-line);\n --border-subtle: var(--corn-line-soft);\n --glass-blur: blur(var(--corn-blur));\n --glass-shadow: var(--corn-shadow);\n --gradient-primary: var(--corn-brand-gradient);\n --bg-gradient: var(--corn-ground-image), var(--corn-ground);\n --pop-font-body: var(--corn-font);\n --pop-font-mono: var(--corn-mono);\n}\n";
4041
- export { gn as $, ur as A, wr as B, Qi as C, dr as D, hr as E, ri as F, Xn as G, Kn as H, ii as I, fn as J, Yn as K, Ir as L, cr as M, Or as N, Sr as O, q as P, mn as Q, Mr as R, Ri as S, Xi as T, K as U, Lr as V, Zn as W, En as X, dn as Y, bn as Z, pa as _, _o as a, Pe as at, yi as b, oo as c, T as ct, eo as d, o as dt, yn as et, to as f, n as ft, $i as g, La as h, ho as i, L as it, lr as j, _r as k, ao as l, f as lt, Ba as m, mo as n, xn as nt, go as o, ot, Va as p, cn as q, po as r, Zt as rt, fo as s, C as st, vo as t, hn as tt, ro as u, p as ut, _a as v, Vi as w, Si as x, ha as y, Y as z };
4111
+ var wo = "/* cornfield's default design tokens, generated from explorer/tokens.css by components/scripts/tokens.mjs: do not edit.\n Every selector is :where(...), at zero specificity: any ordinary rule of yours (on :root, or on one element) overrides it. */\n\n:where(:root) {\n --corn-ground: #090d16;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.2) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.16) 0%, transparent 45%),\n radial-gradient(circle at 50% 50%, rgba(66, 153, 225, 0.10) 0%, transparent 60%);\n --corn-surface-1: rgba(26, 34, 52, 0.72);\n --corn-surface-2: rgba(30, 41, 59, 0.8);\n --corn-surface-3: rgba(51, 65, 85, 0.8);\n --corn-line: rgba(255, 255, 255, 0.12);\n --corn-line-soft: rgba(255, 255, 255, 0.07);\n --corn-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.45);\n --corn-shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.4);\n --corn-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n --corn-shadow-color: rgba(0, 0, 0, 0.5);\n --corn-glow: 8px;\n --corn-scrim: rgba(0, 0, 0, 0.6);\n --corn-shadow-sheet: 0 -8px 24px color-mix(in srgb, var(--corn-shadow-color) 70%, transparent);\n --corn-blur: 16px;\n --corn-text: #f8fafc;\n --corn-text-2: #cbd5e1;\n --corn-text-3: #9aa9bc;\n --corn-text-on-accent: #fff;\n --corn-mockup-ground: #fff;\n --corn-accent: #4f46e5;\n --corn-accent-hover: #6265f1;\n --corn-accent-text: #98a1fa;\n --corn-accent-soft: color-mix(in srgb, var(--corn-accent-hover) 20%, transparent);\n --corn-focus: #818cf8;\n --corn-brand-gradient: linear-gradient(135deg, #4299e1 0%, #818cf8 50%, #e53e3e 100%);\n --corn-ok: #34d399;\n --corn-warn: #fcd34d;\n --corn-bad: #fca5a5;\n --corn-info: #7dd3fc;\n --corn-ok-soft: color-mix(in srgb, var(--corn-ok) 15%, transparent);\n --corn-run-requested: var(--corn-text-3);\n --corn-run-claimed: var(--corn-info);\n --corn-run-working: var(--corn-info);\n --corn-run-waiting: var(--corn-warn);\n --corn-run-waiting-ink: var(--corn-ground);\n --corn-run-done: var(--corn-ok);\n --corn-run-failed: var(--corn-bad);\n --corn-run-stopped: var(--corn-text-2);\n --corn-added: #2dd4bf;\n --corn-changed: #fbbf24;\n --corn-removed: #fa9292;\n --corn-edit: #b49cfb;\n --corn-added-text: color-mix(in srgb, var(--corn-added) 60%, var(--corn-text));\n --corn-edit-text: color-mix(in srgb, var(--corn-edit) 60%, var(--corn-text));\n --corn-hue-orange: #fb923c;\n --corn-hue-fuchsia: #e879f9;\n --corn-hue-pink: #f472b6;\n --corn-hue-lime: #a3e635;\n --corn-hue-orange-text: var(--corn-hue-orange);\n --corn-hue-orange-soft: color-mix(in srgb, var(--corn-hue-orange) 12%, transparent);\n --corn-font: system-ui, -apple-system, \"Segoe UI\", Roboto, \"Helvetica Neue\", Arial, sans-serif;\n --corn-font-display: var(--corn-font);\n --corn-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, \"Liberation Mono\", monospace;\n --corn-font-num: var(--corn-font);\n --corn-text-2xs: 10px;\n --corn-text-xs: 11px;\n --corn-text-sm: 12px;\n --corn-text-md: 13px;\n --corn-text-base: 14px;\n --corn-text-lg: 15px;\n --corn-text-xl: 20px;\n --corn-radius-xs: 3px;\n --corn-radius-sm: 6px;\n --corn-radius: 10px;\n --corn-radius-lg: 14px;\n --corn-radius-pill: 999px;\n --corn-border: 1px;\n --corn-border-strong: 2px;\n --corn-focus-width: 2px;\n --corn-focus-offset: 2px;\n --corn-space: 4px;\n --corn-space-1: var(--corn-space);\n --corn-space-2: 6px;\n --corn-space-3: 8px;\n --corn-space-4: 12px;\n --corn-space-5: 16px;\n --corn-space-6: 24px;\n --corn-control-height: 32px;\n --corn-panel-pad: calc(var(--corn-space-5) + var(--corn-space-1));\n --corn-panel-head-height: calc(var(--corn-control-height) + var(--corn-space-3));\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 18%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 45%, transparent);\n --corn-glyph-mix: 100%;\n color-scheme: dark;\n --corn-map-stroke: auto;\n --corn-map-stroke-width: 1.5px;\n --corn-map-label: auto;\n --corn-map-label-halo: auto;\n --corn-map-collision: var(--corn-warn);\n --corn-map-font: auto;\n --corn-map-edge-width: auto;\n --corn-map-glow: auto;\n --corn-map-label-min: auto;\n --corn-map-glyph: auto;\n --corn-map-grey: auto;\n --corn-map-grey-alpha: auto;\n --corn-map-added: auto;\n --corn-map-changed: auto;\n --corn-map-removed: auto;\n --corn-map-edit: auto;\n --corn-map-selected: auto;\n --corn-map-match: auto;\n --corn-map-lit: auto;\n --corn-map-edge-ownership: auto;\n --corn-map-edge-usage: auto;\n --corn-map-edge-flow: auto;\n --corn-map-edge-reads: auto;\n --corn-map-edge-writes: auto;\n --corn-map-edge-calls: auto;\n --corn-map-edge-triggers: auto;\n --corn-map-edge-delivers: auto;\n --corn-map-edge-runs-on: auto;\n --corn-map-edge-uses: auto;\n --corn-map-edge-extends: auto;\n --corn-map-node-root: auto;\n --corn-map-node-app: auto;\n --corn-map-node-page: auto;\n --corn-map-node-pkg: auto;\n --corn-map-node-core: auto;\n --corn-map-node-token: auto;\n --corn-map-node-atom: auto;\n --corn-map-node-molecule: auto;\n --corn-map-node-tool: auto;\n --corn-map-node-store: auto;\n --corn-map-node-table: auto;\n --corn-map-node-rom: auto;\n --corn-map-node-service: auto;\n --corn-map-node-external: auto;\n --corn-map-node-stack: auto;\n --corn-map-node-machine: auto;\n --corn-map-node-container: auto;\n --corn-map-node-persona: auto;\n --corn-map-node-device: auto;\n --corn-map-node-floor: auto;\n --corn-map-node-room: auto;\n --corn-map-group-app: auto;\n --corn-map-group-pkg: auto;\n --corn-map-group-page: auto;\n --corn-map-group-atom: auto;\n --corn-map-group-molecule: auto;\n --corn-map-group-token: auto;\n --corn-map-group-tool: auto;\n --corn-map-group-table: auto;\n --corn-map-group-rom: auto;\n --corn-map-group-service: auto;\n --corn-map-group-cloud: auto;\n --corn-map-group-web: auto;\n --corn-map-group-stack: auto;\n --corn-map-group-machine: auto;\n --corn-map-group-container: auto;\n --corn-map-group-device: auto;\n --corn-map-group-house: auto;\n --corn-map-group-persona: auto;\n}\n\n@media (prefers-color-scheme: light) {\n :where(:root:not([data-theme=\"dark\"])) {\n --corn-ground: #f4f6fa;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.06) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.04) 0%, transparent 45%);\n --corn-surface-1: rgba(255, 255, 255, 0.8);\n --corn-surface-2: rgba(241, 245, 249, 0.92);\n --corn-surface-3: rgba(226, 232, 240, 0.95);\n --corn-line: rgba(15, 23, 42, 0.12);\n --corn-line-soft: rgba(15, 23, 42, 0.07);\n --corn-shadow: 0 8px 28px 0 rgba(15, 23, 42, 0.12);\n --corn-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.25);\n --corn-shadow-lg: 0 10px 30px -12px rgba(15, 23, 42, 0.18);\n --corn-shadow-color: rgba(15, 23, 42, 0.25);\n --corn-glow: 0px;\n --corn-scrim: rgba(15, 23, 42, 0.35);\n --corn-text: #0f172a;\n --corn-text-2: #334155;\n --corn-text-3: #475569;\n --corn-accent-text: #4f46e5;\n --corn-focus: #4f46e5;\n --corn-brand-gradient: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #dc2626 100%);\n --corn-ok: #046f51;\n --corn-warn: #854d0e;\n --corn-bad: #b91c1c;\n --corn-info: #03679e;\n --corn-added: #197c6f;\n --corn-changed: #8f6703;\n --corn-removed: #e20b0b;\n --corn-edit: #6839f6;\n --corn-hue-orange: #c2410c;\n --corn-hue-fuchsia: #a21caf;\n --corn-hue-pink: #be185d;\n --corn-hue-lime: #4c7b0f;\n --corn-hue-orange-text: #9a3412;\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 30%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 55%, transparent);\n --corn-glyph-mix: 45%;\n color-scheme: light;\n }\n}\n\n:where(:root[data-theme=\"light\"]) {\n --corn-ground: #f4f6fa;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.06) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.04) 0%, transparent 45%);\n --corn-surface-1: rgba(255, 255, 255, 0.8);\n --corn-surface-2: rgba(241, 245, 249, 0.92);\n --corn-surface-3: rgba(226, 232, 240, 0.95);\n --corn-line: rgba(15, 23, 42, 0.12);\n --corn-line-soft: rgba(15, 23, 42, 0.07);\n --corn-shadow: 0 8px 28px 0 rgba(15, 23, 42, 0.12);\n --corn-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.25);\n --corn-shadow-lg: 0 10px 30px -12px rgba(15, 23, 42, 0.18);\n --corn-shadow-color: rgba(15, 23, 42, 0.25);\n --corn-glow: 0px;\n --corn-scrim: rgba(15, 23, 42, 0.35);\n --corn-text: #0f172a;\n --corn-text-2: #334155;\n --corn-text-3: #475569;\n --corn-accent-text: #4f46e5;\n --corn-focus: #4f46e5;\n --corn-brand-gradient: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #dc2626 100%);\n --corn-ok: #046f51;\n --corn-warn: #854d0e;\n --corn-bad: #b91c1c;\n --corn-info: #03679e;\n --corn-added: #197c6f;\n --corn-changed: #8f6703;\n --corn-removed: #e20b0b;\n --corn-edit: #6839f6;\n --corn-hue-orange: #c2410c;\n --corn-hue-fuchsia: #a21caf;\n --corn-hue-pink: #be185d;\n --corn-hue-lime: #4c7b0f;\n --corn-hue-orange-text: #9a3412;\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 30%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 55%, transparent);\n --corn-glyph-mix: 45%;\n color-scheme: light;\n}\n\n@media (max-width: 767px) {\n :where(:root) {\n --corn-control-height: 44px;\n }\n}\n\n@media (max-width: 639px) {\n :where(:root) {\n --corn-panel-pad: var(--corn-space-5);\n }\n}\n\n:where(:root) {\n --hx-bg: var(--corn-ground);\n --hx-text: var(--corn-text);\n --hx-ink: var(--corn-text);\n --hx-text-1: var(--corn-text);\n --hx-text-2: var(--corn-text-2);\n --hx-slate-300: var(--corn-text-2);\n --hx-slate-400: var(--corn-text-3);\n --hx-slate-500: var(--corn-text-3);\n --hx-slate-600: var(--corn-text-3);\n --hx-slate-700: var(--corn-surface-3);\n --hx-slate-800: var(--corn-surface-2);\n --hx-slate-900: var(--corn-ground);\n --hx-slate-950: var(--corn-ground);\n --hx-indigo: var(--corn-accent-text);\n --hx-indigo-strong: var(--corn-accent);\n --hx-emerald: var(--corn-ok);\n --hx-amber: var(--corn-warn);\n --hx-sky: var(--corn-info);\n --hx-pink: var(--corn-hue-pink);\n --hx-fuchsia: var(--corn-hue-fuchsia);\n --hx-fuchsia-strong: var(--corn-hue-fuchsia);\n --hx-red: var(--corn-bad);\n --hx-code: var(--corn-warn);\n --hx-orange-text: var(--corn-hue-orange);\n --hx-orange-strong: var(--corn-hue-orange);\n --hx-teal-text: var(--corn-added-text);\n --hx-teal-strong: var(--corn-added-text);\n --hx-violet-text: var(--corn-edit-text);\n --hx-green-text: var(--corn-ok);\n --hx-lime-text: var(--corn-hue-lime);\n --hx-mark-added: var(--corn-added);\n --hx-mark-changed: var(--corn-changed);\n --hx-mark-removed: var(--corn-removed);\n --hx-mark-edit: var(--corn-edit);\n --hx-control: var(--corn-surface-2);\n --hx-control-hover: var(--corn-surface-3);\n --hx-control-off: color-mix(in srgb, var(--corn-ground) 40%, transparent);\n --hx-well: color-mix(in srgb, var(--corn-ground) 80%, transparent);\n --hx-well-soft: color-mix(in srgb, var(--corn-ground) 55%, transparent);\n --hx-line: var(--corn-line);\n --hx-line-soft: var(--corn-line-soft);\n --hx-scroll: color-mix(in srgb, var(--corn-text) 18%, transparent);\n --hx-scroll-hover: color-mix(in srgb, var(--corn-text) 28%, transparent);\n --hx-swatch-solid: color-mix(in srgb, var(--corn-text) 55%, transparent);\n --hx-backdrop: var(--corn-scrim);\n --hx-glyph-mix: var(--corn-glyph-mix);\n --surface-glass: var(--corn-surface-1);\n --surface-glass-header: color-mix(in srgb, var(--corn-ground) 88%, transparent);\n --border-glass: var(--corn-line);\n --border-subtle: var(--corn-line-soft);\n --glass-blur: blur(var(--corn-blur));\n --glass-shadow: var(--corn-shadow);\n --gradient-primary: var(--corn-brand-gradient);\n --bg-gradient: var(--corn-ground-image), var(--corn-ground);\n --pop-font-body: var(--corn-font);\n --pop-font-mono: var(--corn-mono);\n}\n\n/* theme=\"light\" on an element: this mode's tokens, on the element itself */\n:where(corn-map[theme=\"light\"]),\n:where(corn-scope[theme=\"light\"]) {\n --corn-ground: #f4f6fa;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.06) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.04) 0%, transparent 45%);\n --corn-surface-1: rgba(255, 255, 255, 0.8);\n --corn-surface-2: rgba(241, 245, 249, 0.92);\n --corn-surface-3: rgba(226, 232, 240, 0.95);\n --corn-line: rgba(15, 23, 42, 0.12);\n --corn-line-soft: rgba(15, 23, 42, 0.07);\n --corn-shadow: 0 8px 28px 0 rgba(15, 23, 42, 0.12);\n --corn-shadow-sm: 0 1px 3px rgba(15, 23, 42, 0.25);\n --corn-shadow-lg: 0 10px 30px -12px rgba(15, 23, 42, 0.18);\n --corn-shadow-color: rgba(15, 23, 42, 0.25);\n --corn-glow: 0px;\n --corn-scrim: rgba(15, 23, 42, 0.35);\n --corn-text: #0f172a;\n --corn-text-2: #334155;\n --corn-text-3: #475569;\n --corn-accent-text: #4f46e5;\n --corn-focus: #4f46e5;\n --corn-brand-gradient: linear-gradient(135deg, #2563eb 0%, #4f46e5 50%, #dc2626 100%);\n --corn-ok: #046f51;\n --corn-warn: #854d0e;\n --corn-bad: #b91c1c;\n --corn-info: #03679e;\n --corn-added: #197c6f;\n --corn-changed: #8f6703;\n --corn-removed: #e20b0b;\n --corn-edit: #6839f6;\n --corn-hue-orange: #c2410c;\n --corn-hue-fuchsia: #a21caf;\n --corn-hue-pink: #be185d;\n --corn-hue-lime: #4c7b0f;\n --corn-hue-orange-text: #9a3412;\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 30%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 55%, transparent);\n --corn-glyph-mix: 45%;\n color-scheme: light;\n --corn-shadow-sheet: 0 -8px 24px color-mix(in srgb, var(--corn-shadow-color) 70%, transparent);\n --corn-accent-soft: color-mix(in srgb, var(--corn-accent-hover) 20%, transparent);\n --corn-ok-soft: color-mix(in srgb, var(--corn-ok) 15%, transparent);\n --corn-run-requested: var(--corn-text-3);\n --corn-run-claimed: var(--corn-info);\n --corn-run-working: var(--corn-info);\n --corn-run-waiting: var(--corn-warn);\n --corn-run-waiting-ink: var(--corn-ground);\n --corn-run-done: var(--corn-ok);\n --corn-run-failed: var(--corn-bad);\n --corn-run-stopped: var(--corn-text-2);\n --corn-added-text: color-mix(in srgb, var(--corn-added) 60%, var(--corn-text));\n --corn-edit-text: color-mix(in srgb, var(--corn-edit) 60%, var(--corn-text));\n --corn-hue-orange-soft: color-mix(in srgb, var(--corn-hue-orange) 12%, transparent);\n --corn-font-display: var(--corn-font);\n --corn-font-num: var(--corn-font);\n --corn-space-1: var(--corn-space);\n --corn-panel-pad: calc(var(--corn-space-5) + var(--corn-space-1));\n --corn-panel-head-height: calc(var(--corn-control-height) + var(--corn-space-3));\n --corn-map-collision: var(--corn-warn);\n --hx-bg: var(--corn-ground);\n --hx-text: var(--corn-text);\n --hx-ink: var(--corn-text);\n --hx-text-1: var(--corn-text);\n --hx-text-2: var(--corn-text-2);\n --hx-slate-300: var(--corn-text-2);\n --hx-slate-400: var(--corn-text-3);\n --hx-slate-500: var(--corn-text-3);\n --hx-slate-600: var(--corn-text-3);\n --hx-slate-700: var(--corn-surface-3);\n --hx-slate-800: var(--corn-surface-2);\n --hx-slate-900: var(--corn-ground);\n --hx-slate-950: var(--corn-ground);\n --hx-indigo: var(--corn-accent-text);\n --hx-indigo-strong: var(--corn-accent);\n --hx-emerald: var(--corn-ok);\n --hx-amber: var(--corn-warn);\n --hx-sky: var(--corn-info);\n --hx-pink: var(--corn-hue-pink);\n --hx-fuchsia: var(--corn-hue-fuchsia);\n --hx-fuchsia-strong: var(--corn-hue-fuchsia);\n --hx-red: var(--corn-bad);\n --hx-code: var(--corn-warn);\n --hx-orange-text: var(--corn-hue-orange);\n --hx-orange-strong: var(--corn-hue-orange);\n --hx-teal-text: var(--corn-added-text);\n --hx-teal-strong: var(--corn-added-text);\n --hx-violet-text: var(--corn-edit-text);\n --hx-green-text: var(--corn-ok);\n --hx-lime-text: var(--corn-hue-lime);\n --hx-mark-added: var(--corn-added);\n --hx-mark-changed: var(--corn-changed);\n --hx-mark-removed: var(--corn-removed);\n --hx-mark-edit: var(--corn-edit);\n --hx-control: var(--corn-surface-2);\n --hx-control-hover: var(--corn-surface-3);\n --hx-control-off: color-mix(in srgb, var(--corn-ground) 40%, transparent);\n --hx-well: color-mix(in srgb, var(--corn-ground) 80%, transparent);\n --hx-well-soft: color-mix(in srgb, var(--corn-ground) 55%, transparent);\n --hx-line: var(--corn-line);\n --hx-line-soft: var(--corn-line-soft);\n --hx-scroll: color-mix(in srgb, var(--corn-text) 18%, transparent);\n --hx-scroll-hover: color-mix(in srgb, var(--corn-text) 28%, transparent);\n --hx-swatch-solid: color-mix(in srgb, var(--corn-text) 55%, transparent);\n --hx-backdrop: var(--corn-scrim);\n --hx-glyph-mix: var(--corn-glyph-mix);\n --surface-glass: var(--corn-surface-1);\n --surface-glass-header: color-mix(in srgb, var(--corn-ground) 88%, transparent);\n --border-glass: var(--corn-line);\n --border-subtle: var(--corn-line-soft);\n --glass-blur: blur(var(--corn-blur));\n --glass-shadow: var(--corn-shadow);\n --gradient-primary: var(--corn-brand-gradient);\n --bg-gradient: var(--corn-ground-image), var(--corn-ground);\n --pop-font-body: var(--corn-font);\n --pop-font-mono: var(--corn-mono);\n}\n\n/* theme=\"dark\" on an element: this mode's tokens, on the element itself */\n:where(corn-map[theme=\"dark\"]),\n:where(corn-scope[theme=\"dark\"]) {\n --corn-ground: #090d16;\n --corn-ground-image: radial-gradient(circle at 14% 18%, rgba(66, 153, 225, 0.2) 0%, transparent 45%),\n radial-gradient(circle at 86% 82%, rgba(229, 62, 62, 0.16) 0%, transparent 45%),\n radial-gradient(circle at 50% 50%, rgba(66, 153, 225, 0.10) 0%, transparent 60%);\n --corn-surface-1: rgba(26, 34, 52, 0.72);\n --corn-surface-2: rgba(30, 41, 59, 0.8);\n --corn-surface-3: rgba(51, 65, 85, 0.8);\n --corn-line: rgba(255, 255, 255, 0.12);\n --corn-line-soft: rgba(255, 255, 255, 0.07);\n --corn-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.45);\n --corn-shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.4);\n --corn-shadow-lg: 0 25px 50px -12px rgba(0, 0, 0, 0.5);\n --corn-shadow-color: rgba(0, 0, 0, 0.5);\n --corn-glow: 8px;\n --corn-scrim: rgba(0, 0, 0, 0.6);\n --corn-text: #f8fafc;\n --corn-text-2: #cbd5e1;\n --corn-text-3: #9aa9bc;\n --corn-accent-text: #98a1fa;\n --corn-focus: #818cf8;\n --corn-brand-gradient: linear-gradient(135deg, #4299e1 0%, #818cf8 50%, #e53e3e 100%);\n --corn-ok: #34d399;\n --corn-warn: #fcd34d;\n --corn-bad: #fca5a5;\n --corn-info: #7dd3fc;\n --corn-added: #2dd4bf;\n --corn-changed: #fbbf24;\n --corn-removed: #fa9292;\n --corn-edit: #b49cfb;\n --corn-hue-orange: #fb923c;\n --corn-hue-fuchsia: #e879f9;\n --corn-hue-pink: #f472b6;\n --corn-hue-lime: #a3e635;\n --corn-hue-orange-text: var(--corn-hue-orange);\n --corn-house-line: color-mix(in srgb, var(--corn-hue-lime) 18%, transparent);\n --corn-house-room: color-mix(in srgb, var(--corn-hue-lime) 45%, transparent);\n --corn-glyph-mix: 100%;\n color-scheme: dark;\n --corn-shadow-sheet: 0 -8px 24px color-mix(in srgb, var(--corn-shadow-color) 70%, transparent);\n --corn-accent-soft: color-mix(in srgb, var(--corn-accent-hover) 20%, transparent);\n --corn-ok-soft: color-mix(in srgb, var(--corn-ok) 15%, transparent);\n --corn-run-requested: var(--corn-text-3);\n --corn-run-claimed: var(--corn-info);\n --corn-run-working: var(--corn-info);\n --corn-run-waiting: var(--corn-warn);\n --corn-run-waiting-ink: var(--corn-ground);\n --corn-run-done: var(--corn-ok);\n --corn-run-failed: var(--corn-bad);\n --corn-run-stopped: var(--corn-text-2);\n --corn-added-text: color-mix(in srgb, var(--corn-added) 60%, var(--corn-text));\n --corn-edit-text: color-mix(in srgb, var(--corn-edit) 60%, var(--corn-text));\n --corn-hue-orange-soft: color-mix(in srgb, var(--corn-hue-orange) 12%, transparent);\n --corn-font-display: var(--corn-font);\n --corn-font-num: var(--corn-font);\n --corn-space-1: var(--corn-space);\n --corn-panel-pad: calc(var(--corn-space-5) + var(--corn-space-1));\n --corn-panel-head-height: calc(var(--corn-control-height) + var(--corn-space-3));\n --corn-map-collision: var(--corn-warn);\n --hx-bg: var(--corn-ground);\n --hx-text: var(--corn-text);\n --hx-ink: var(--corn-text);\n --hx-text-1: var(--corn-text);\n --hx-text-2: var(--corn-text-2);\n --hx-slate-300: var(--corn-text-2);\n --hx-slate-400: var(--corn-text-3);\n --hx-slate-500: var(--corn-text-3);\n --hx-slate-600: var(--corn-text-3);\n --hx-slate-700: var(--corn-surface-3);\n --hx-slate-800: var(--corn-surface-2);\n --hx-slate-900: var(--corn-ground);\n --hx-slate-950: var(--corn-ground);\n --hx-indigo: var(--corn-accent-text);\n --hx-indigo-strong: var(--corn-accent);\n --hx-emerald: var(--corn-ok);\n --hx-amber: var(--corn-warn);\n --hx-sky: var(--corn-info);\n --hx-pink: var(--corn-hue-pink);\n --hx-fuchsia: var(--corn-hue-fuchsia);\n --hx-fuchsia-strong: var(--corn-hue-fuchsia);\n --hx-red: var(--corn-bad);\n --hx-code: var(--corn-warn);\n --hx-orange-text: var(--corn-hue-orange);\n --hx-orange-strong: var(--corn-hue-orange);\n --hx-teal-text: var(--corn-added-text);\n --hx-teal-strong: var(--corn-added-text);\n --hx-violet-text: var(--corn-edit-text);\n --hx-green-text: var(--corn-ok);\n --hx-lime-text: var(--corn-hue-lime);\n --hx-mark-added: var(--corn-added);\n --hx-mark-changed: var(--corn-changed);\n --hx-mark-removed: var(--corn-removed);\n --hx-mark-edit: var(--corn-edit);\n --hx-control: var(--corn-surface-2);\n --hx-control-hover: var(--corn-surface-3);\n --hx-control-off: color-mix(in srgb, var(--corn-ground) 40%, transparent);\n --hx-well: color-mix(in srgb, var(--corn-ground) 80%, transparent);\n --hx-well-soft: color-mix(in srgb, var(--corn-ground) 55%, transparent);\n --hx-line: var(--corn-line);\n --hx-line-soft: var(--corn-line-soft);\n --hx-scroll: color-mix(in srgb, var(--corn-text) 18%, transparent);\n --hx-scroll-hover: color-mix(in srgb, var(--corn-text) 28%, transparent);\n --hx-swatch-solid: color-mix(in srgb, var(--corn-text) 55%, transparent);\n --hx-backdrop: var(--corn-scrim);\n --hx-glyph-mix: var(--corn-glyph-mix);\n --surface-glass: var(--corn-surface-1);\n --surface-glass-header: color-mix(in srgb, var(--corn-ground) 88%, transparent);\n --border-glass: var(--corn-line);\n --border-subtle: var(--corn-line-soft);\n --glass-blur: blur(var(--corn-blur));\n --glass-shadow: var(--corn-shadow);\n --gradient-primary: var(--corn-brand-gradient);\n --bg-gradient: var(--corn-ground-image), var(--corn-ground);\n --pop-font-body: var(--corn-font);\n --pop-font-mono: var(--corn-mono);\n}\n";
4112
+ export { bn as $, mr as A, Or as B, na as C, hr as D, yr as E, si as F, er as G, Xn as H, ci as I, gn as J, $n as K, Br as L, fr as M, Mr as N, Er as O, q as P, vn as Q, Ir as R, Hi as S, ea as T, K as U, Vr as V, tr as W, An as X, hn as Y, wn as Z, va as _, Co as a, ze as at, Ci as b, po as c, O as ct, oo as d, f as dt, Cn as et, so as f, p as ft, ra as g, Ua as h, xo as i, L as it, pr as j, xr as k, fo as l, ee as lt, Ka as m, n as mt, bo as n, Tn as nt, So as o, ut as ot, qa as p, o as pt, fn as q, yo as r, tn as rt, vo as s, E as st, wo as t, yn as tt, lo as u, w as ut, Sa as v, Gi as w, Ei as x, ba as y, Y as z };