@popcorn245/cornfield-components 0.49.0 → 0.50.0

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