@peasant-labs/fairtrade 0.0.41 → 0.0.42

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.
package/dist/lib/graph.js CHANGED
@@ -1,4 +1,4 @@
1
- import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, N as m, O as h, P as g, Q as _, R as v, S as y, T as b, U as x, V as S, W as C, X as w, Y as T, Z as E, _ as D, a as O, at as k, b as A, c as j, ct as M, et as N, f as P, g as F, gt as I, i as ee, it as te, j as ne, k as re, l as ie, lt as ae, m as oe, n as se, o as ce, ot as le, pt as ue, q as de, r as fe, rt as pe, s as me, st as he, t as ge, tt as _e, v as ve, vt as ye, w as be, wt as xe, x as Se, y as Ce, z as we } from "./GraphLegend-CBKZsRta.js";
1
+ import { $ as e, A as t, B as n, C as r, D as i, E as a, F as o, G as s, H as c, I as l, J as u, K as d, L as f, M as p, N as m, O as h, P as g, Q as _, R as v, S as y, T as b, U as x, V as S, W as C, X as w, Y as T, Z as E, _ as D, a as O, at as k, b as A, c as j, ct as M, et as N, f as P, g as F, gt as ee, i as I, it as te, j as ne, k as re, l as ie, lt as ae, m as oe, n as se, o as ce, ot as le, pt as ue, q as de, r as fe, rt as pe, s as me, st as he, t as ge, tt as _e, v as ve, vt as ye, w as be, wt as xe, x as Se, y as Ce, z as we } from "./GraphLegend-CBKZsRta.js";
2
2
  import { p as Te } from "./time-CpVBzcqQ.js";
3
3
  import { a as Ee, n as De, r as Oe } from "./format-B3uT2wzU.js";
4
4
  import { memo as ke, useCallback as L, useEffect as R, useMemo as z, useRef as B, useState as V } from "react";
@@ -849,58 +849,58 @@ function rn(e, t) {
849
849
  }
850
850
  //#endregion
851
851
  //#region src/ui/graph/CodeMapNavigator.jsx
852
- function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsChange: r, selectedId: i = null, onSelect: a, focusedId: o, onFocusChange: s, filter: c = "", onFilterChange: l, onOpenMap: u, onStateAction: d, ariaLabel: f = "code map navigator" }) {
853
- let [p, m] = V(() => /* @__PURE__ */ new Set()), [h, g] = V(null), _ = n === void 0 ? p : new Set(n), v = o === void 0 ? h : o, y = B(/* @__PURE__ */ new Map()), b = z(() => Se(e, A({
852
+ function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsChange: r, selectedId: i = null, onSelect: a, focusedId: o, onFocusChange: s, filter: c = "", onFilterChange: l, onOpenMap: u, onStateAction: d, ariaLabel: f = "code map navigator", lineCounts: p = "measured" }) {
853
+ let [m, h] = V(() => /* @__PURE__ */ new Set()), [g, _] = V(null), v = n === void 0 ? m : new Set(n), y = o === void 0 ? g : o, b = B(/* @__PURE__ */ new Map()), x = z(() => Se(e, A({
854
854
  grain: t,
855
- expandedIds: Array.from(_),
855
+ expandedIds: Array.from(v),
856
856
  selectedId: i,
857
- navigatorFocusedId: v,
857
+ navigatorFocusedId: y,
858
858
  navigatorFilter: c
859
859
  })), [
860
860
  e,
861
861
  t,
862
- sn(_),
862
+ sn(v),
863
863
  i,
864
- v,
864
+ y,
865
865
  c
866
- ]), x = b.rows, S = b.focusedId, C = b.selected, w = C ? x.find((e) => e.node.id === C.id) : null, T = !!w?.canExpand && !w.forcedOpen;
867
- function E(e) {
868
- n === void 0 && m(e), d?.({
866
+ ]), S = x.rows, C = x.focusedId, w = x.selected, T = w ? S.find((e) => e.node.id === w.id) : null, E = !!T?.canExpand && !T.forcedOpen;
867
+ function D(e) {
868
+ n === void 0 && h(e), d?.({
869
869
  type: "set-expanded",
870
870
  ids: Array.from(e)
871
871
  }), r?.(Array.from(e));
872
872
  }
873
- function D(e) {
874
- let t = new Set(_);
875
- t.has(e) ? t.delete(e) : t.add(e), E(t);
876
- }
877
873
  function O(e) {
878
- o === void 0 && g(e), d?.({
874
+ let t = new Set(v);
875
+ t.has(e) ? t.delete(e) : t.add(e), D(t);
876
+ }
877
+ function k(e) {
878
+ o === void 0 && _(e), d?.({
879
879
  type: "focus",
880
880
  id: e
881
- }), s?.(e), y.current.get(e)?.focus();
881
+ }), s?.(e), b.current.get(e)?.focus();
882
882
  }
883
- function k(e) {
884
- o === void 0 && g(e.id), y.current.get(e.id)?.focus(), d?.({
883
+ function j(e) {
884
+ o === void 0 && _(e.id), b.current.get(e.id)?.focus(), d?.({
885
885
  type: "select",
886
886
  id: e.id
887
887
  }), s?.(e.id), a?.(e.id, e);
888
888
  }
889
- function j(e, t) {
890
- let n = x[t];
889
+ function M(e, t) {
890
+ let n = S[t];
891
891
  if (!n) return;
892
892
  let { node: r } = n, i = null;
893
- if (e.key === "ArrowDown") i = x[Math.min(t + 1, x.length - 1)]?.node.id;
894
- else if (e.key === "ArrowUp") i = x[Math.max(t - 1, 0)]?.node.id;
895
- else if (e.key === "Home") i = x[0]?.node.id;
896
- else if (e.key === "End") i = x[x.length - 1]?.node.id;
897
- else if (e.key === "ArrowRight" && (n.canExpand || n.forcedOpen)) n.forcedOpen || n.expanded ? i = n.childIds[0] ?? null : _.has(r.id) || D(r.id);
898
- else if (e.key === "ArrowLeft") !n.forcedOpen && n.canExpand && n.expanded ? D(r.id) : i = n.parentId;
893
+ if (e.key === "ArrowDown") i = S[Math.min(t + 1, S.length - 1)]?.node.id;
894
+ else if (e.key === "ArrowUp") i = S[Math.max(t - 1, 0)]?.node.id;
895
+ else if (e.key === "Home") i = S[0]?.node.id;
896
+ else if (e.key === "End") i = S[S.length - 1]?.node.id;
897
+ else if (e.key === "ArrowRight" && (n.canExpand || n.forcedOpen)) n.forcedOpen || n.expanded ? i = n.childIds[0] ?? null : v.has(r.id) || O(r.id);
898
+ else if (e.key === "ArrowLeft") !n.forcedOpen && n.canExpand && n.expanded ? O(r.id) : i = n.parentId;
899
899
  else if (e.key === "Enter" || e.key === " ") {
900
- k(r), e.preventDefault();
900
+ j(r), e.preventDefault();
901
901
  return;
902
902
  } else return;
903
- e.preventDefault(), i && O(i);
903
+ e.preventDefault(), i && k(i);
904
904
  }
905
905
  return /* @__PURE__ */ U("section", {
906
906
  className: "gmp-navigator",
@@ -929,7 +929,7 @@ function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
929
929
  ]
930
930
  })
931
931
  }),
932
- b.staleSelectedId ? /* @__PURE__ */ U("p", {
932
+ x.staleSelectedId ? /* @__PURE__ */ U("p", {
933
933
  className: "gmp-navigator-missing",
934
934
  role: "status",
935
935
  children: [
@@ -947,16 +947,16 @@ function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
947
947
  /* @__PURE__ */ U("div", {
948
948
  className: "gmp-navigator-body",
949
949
  children: [/* @__PURE__ */ H("div", {
950
- role: x.length ? "tree" : void 0,
950
+ role: S.length ? "tree" : void 0,
951
951
  "aria-label": "code areas",
952
952
  className: "gmp-navigator-tree",
953
953
  "data-grain": t,
954
- children: x.length === 0 ? /* @__PURE__ */ H("p", {
954
+ children: S.length === 0 ? /* @__PURE__ */ H("p", {
955
955
  className: "gmp-navigator-empty",
956
956
  role: "status",
957
957
  children: "no code areas match this filter"
958
- }) : x.map((e, t) => {
959
- let n = e.canExpand || e.forcedOpen, r = e.expanded, a = S === e.node.id;
958
+ }) : S.map((e, t) => {
959
+ let n = e.canExpand || e.forcedOpen, r = e.expanded, a = C === e.node.id;
960
960
  return /* @__PURE__ */ H(on, {
961
961
  row: e,
962
962
  hasChildren: n,
@@ -964,35 +964,36 @@ function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
964
964
  selected: i === e.node.id,
965
965
  tabbable: a,
966
966
  setRef: (t) => {
967
- t ? y.current.set(e.node.id, t) : y.current.delete(e.node.id);
967
+ t ? b.current.set(e.node.id, t) : b.current.delete(e.node.id);
968
968
  },
969
969
  onFocus: () => {
970
- o === void 0 && g(e.node.id);
970
+ o === void 0 && _(e.node.id);
971
971
  },
972
- onSelect: () => k(e.node),
972
+ onSelect: () => j(e.node),
973
973
  onToggle: () => {
974
- e.forcedOpen || D(e.node.id);
974
+ e.forcedOpen || O(e.node.id);
975
975
  },
976
- onKeyDown: (e) => j(e, t)
976
+ onKeyDown: (e) => M(e, t),
977
+ lineCounts: p
977
978
  }, e.node.id);
978
979
  })
979
980
  }), /* @__PURE__ */ H("aside", {
980
981
  className: "gmp-navigator-actions",
981
982
  "aria-label": "selected code area",
982
- children: C ? /* @__PURE__ */ U(Ae, { children: [
983
+ children: w ? /* @__PURE__ */ U(Ae, { children: [
983
984
  /* @__PURE__ */ H("p", {
984
985
  className: "gmp-navigator-selected",
985
- children: C.name || C.id
986
+ children: w.name || w.id
986
987
  }),
987
988
  /* @__PURE__ */ H("p", {
988
989
  className: "gmp-navigator-selected-path",
989
- children: C.id
990
+ children: w.id
990
991
  }),
991
- T ? /* @__PURE__ */ U("button", {
992
+ E ? /* @__PURE__ */ U("button", {
992
993
  type: "button",
993
994
  className: "gmp-navigator-action",
994
- onClick: () => D(C.id),
995
- children: [/* @__PURE__ */ H(W, { "aria-hidden": "true" }), _.has(C.id) ? "hide children" : "show children"]
995
+ onClick: () => O(w.id),
996
+ children: [/* @__PURE__ */ H(W, { "aria-hidden": "true" }), v.has(w.id) ? "hide children" : "show children"]
996
997
  }) : null,
997
998
  /* @__PURE__ */ U("button", {
998
999
  type: "button",
@@ -1000,8 +1001,8 @@ function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
1000
1001
  onClick: () => {
1001
1002
  d?.({
1002
1003
  type: "open-in-map",
1003
- id: C.id
1004
- }), u?.(C.id);
1004
+ id: w.id
1005
+ }), u?.(w.id);
1005
1006
  },
1006
1007
  children: [/* @__PURE__ */ H(He, { "aria-hidden": "true" }), " open in map"]
1007
1008
  })
@@ -1014,7 +1015,7 @@ function an({ payload: e, grain: t = "package", expandedIds: n, onExpandedIdsCha
1014
1015
  ]
1015
1016
  });
1016
1017
  }
1017
- function on({ row: e, hasChildren: t, isExpanded: n, selected: r, tabbable: i, setRef: a, onFocus: o, onSelect: s, onToggle: c, onKeyDown: l }) {
1018
+ function on({ row: e, hasChildren: t, isExpanded: n, selected: r, tabbable: i, setRef: a, onFocus: o, onSelect: s, onToggle: c, onKeyDown: l, lineCounts: u }) {
1018
1019
  return /* @__PURE__ */ U("div", {
1019
1020
  role: "none",
1020
1021
  className: "gmp-navigator-row-wrap",
@@ -1061,7 +1062,7 @@ function on({ row: e, hasChildren: t, isExpanded: n, selected: r, tabbable: i, s
1061
1062
  }),
1062
1063
  /* @__PURE__ */ U("span", {
1063
1064
  className: "gmp-navigator-meta",
1064
- children: [/* @__PURE__ */ U("span", { children: [cn(e.node.loc ?? 0), " lines"] }), /* @__PURE__ */ H("span", { children: ln(e.node.recordedFiles, e.node.totalFiles) })]
1065
+ children: [u === "unknown" ? null : /* @__PURE__ */ U("span", { children: [cn(e.node.loc ?? 0), " lines"] }), /* @__PURE__ */ H("span", { children: ln(e.node.recordedFiles, e.node.totalFiles) })]
1065
1066
  })
1066
1067
  ]
1067
1068
  })]
@@ -1079,49 +1080,49 @@ function ln(e, t) {
1079
1080
  }
1080
1081
  //#endregion
1081
1082
  //#region src/ui/graph/CodeMapComposition.jsx
1082
- function un({ payload: e, zoom: t, onZoomChange: n, selectedId: r, onSelect: i, onExpand: a, highlightedIds: o, nodeDeltas: s, structureEdgeDeltas: c, height: l = 480, ariaLabel: u = "code map", canvasSlot: d, rail: f, toolbar: p, sheetTitle: m = "code area", sheetMeta: h, railSide: g = "right", legend: _, canvasWrapperClassName: v = "", canvasWrapperStyle: y, className: b = "", presentation: x = "canvas", navigatorSlot: S, onPresentationChange: C, viewport: w, onViewportChange: T, state: E, defaultState: D, onStateChange: O }) {
1083
- let k = E !== void 0 || D !== void 0, [j, M] = V(() => A(D)), N = z(() => k ? A(E ?? j) : null, [
1084
- k,
1083
+ function un({ payload: e, zoom: t, onZoomChange: n, selectedId: r, onSelect: i, onExpand: a, highlightedIds: o, nodeDeltas: s, structureEdgeDeltas: c, height: l = 480, ariaLabel: u = "code map", canvasSlot: d, rail: f, toolbar: p, sheetTitle: m = "code area", sheetMeta: h, railSide: g = "right", legend: _, canvasWrapperClassName: v = "", canvasWrapperStyle: y, className: b = "", presentation: x = "canvas", navigatorSlot: S, onPresentationChange: C, viewport: w, onViewportChange: T, state: E, defaultState: D, onStateChange: O, lineCounts: k = "measured" }) {
1084
+ let j = E !== void 0 || D !== void 0, [M, N] = V(() => A(D)), P = z(() => j ? A(E ?? M) : null, [
1085
+ j,
1085
1086
  E,
1086
- j
1087
- ]), P = N?.presentation ?? x;
1088
- function F(e, t) {
1089
- E === void 0 && M(e), O?.(e), t?.(e);
1087
+ M
1088
+ ]), F = P?.presentation ?? x;
1089
+ function ee(e, t) {
1090
+ E === void 0 && N(e), O?.(e), t?.(e);
1090
1091
  }
1091
1092
  function I(e, t) {
1092
- if (!N) return;
1093
- let n = be(N, e);
1094
- Ce(N, n) || F(n, t);
1093
+ if (!P) return;
1094
+ let n = be(P, e);
1095
+ Ce(P, n) || ee(n, t);
1095
1096
  }
1096
- let ee = k || C ? /* @__PURE__ */ U(Ae, { children: [/* @__PURE__ */ U("div", {
1097
+ let te = j || C ? /* @__PURE__ */ U(Ae, { children: [/* @__PURE__ */ U("div", {
1097
1098
  className: "gmp-presentation-switch",
1098
1099
  role: "group",
1099
1100
  "aria-label": "code map view",
1100
1101
  children: [/* @__PURE__ */ H("button", {
1101
1102
  type: "button",
1102
- "aria-pressed": P === "navigator",
1103
- onClick: () => k ? I({
1103
+ "aria-pressed": F === "navigator",
1104
+ onClick: () => j ? I({
1104
1105
  type: "set-presentation",
1105
1106
  presentation: "navigator"
1106
1107
  }, () => C?.("navigator")) : C?.("navigator"),
1107
- children: P === "canvas" ? "back to browse" : "browse"
1108
+ children: F === "canvas" ? "back to browse" : "browse"
1108
1109
  }), /* @__PURE__ */ H("button", {
1109
1110
  type: "button",
1110
- "aria-pressed": P === "canvas",
1111
- onClick: () => k ? I({
1111
+ "aria-pressed": F === "canvas",
1112
+ onClick: () => j ? I({
1112
1113
  type: "set-presentation",
1113
1114
  presentation: "canvas"
1114
1115
  }, () => C?.("canvas")) : C?.("canvas"),
1115
1116
  children: "spatial map"
1116
1117
  })]
1117
- }), p] }) : p, te = d ?? /* @__PURE__ */ H($t, {
1118
+ }), p] }) : p, ne = d ?? /* @__PURE__ */ H($t, {
1118
1119
  payload: e,
1119
- zoom: N ? {
1120
- level: N.grain,
1121
- expanded: N.expandedIds
1120
+ zoom: P ? {
1121
+ level: P.grain,
1122
+ expanded: P.expandedIds
1122
1123
  } : t,
1123
1124
  onZoomChange: n,
1124
- selectedId: N ? N.selectedId : r,
1125
+ selectedId: P ? P.selectedId : r,
1125
1126
  onSelect: i,
1126
1127
  onExpand: a,
1127
1128
  highlightedIds: o,
@@ -1129,29 +1130,30 @@ function un({ payload: e, zoom: t, onZoomChange: n, selectedId: r, onSelect: i,
1129
1130
  structureEdgeDeltas: c,
1130
1131
  height: l,
1131
1132
  ariaLabel: u,
1132
- viewport: N ? N.viewport ?? void 0 : w,
1133
+ viewport: P ? P.viewport ?? void 0 : w,
1133
1134
  onViewportChange: T,
1134
- state: N ?? void 0,
1135
- onStateChange: N ? (e) => F(e) : void 0
1136
- }), ne = S ?? (N && e ? /* @__PURE__ */ H(an, {
1135
+ state: P ?? void 0,
1136
+ onStateChange: P ? (e) => ee(e) : void 0
1137
+ }), re = S ?? (P && e ? /* @__PURE__ */ H(an, {
1137
1138
  payload: e,
1138
- grain: N.grain,
1139
- expandedIds: N.expandedIds,
1140
- selectedId: N.selectedId,
1141
- focusedId: N.navigatorFocusedId,
1142
- filter: N.navigatorFilter,
1139
+ lineCounts: k,
1140
+ grain: P.grain,
1141
+ expandedIds: P.expandedIds,
1142
+ selectedId: P.selectedId,
1143
+ focusedId: P.navigatorFocusedId,
1144
+ filter: P.navigatorFilter,
1143
1145
  onStateAction: (t) => I(t, () => {
1144
1146
  t.type === "select" ? i?.(t.id, e.nodes.find((e) => e.id === t.id) ?? null) : t.type === "clear-selection" ? i?.(null, null) : t.type === "set-expanded" ? n?.({
1145
- level: N.grain,
1147
+ level: P.grain,
1146
1148
  expanded: Array.from(t.ids)
1147
1149
  }) : t.type === "open-in-map" && (i?.(t.id, e.nodes.find((e) => e.id === t.id) ?? null), C?.("canvas"));
1148
1150
  }),
1149
1151
  ariaLabel: `browse ${u}`
1150
- }) : null), re = P === "navigator" && ne !== null;
1152
+ }) : null), ie = F === "navigator" && re !== null;
1151
1153
  return /* @__PURE__ */ H("div", {
1152
1154
  className: ["gmp-root", b].filter(Boolean).join(" "),
1153
1155
  children: /* @__PURE__ */ U(oe, {
1154
- toolbar: ee,
1156
+ toolbar: te,
1155
1157
  rail: f,
1156
1158
  sheetTitle: m,
1157
1159
  sheetMeta: h,
@@ -1160,8 +1162,8 @@ function un({ payload: e, zoom: t, onZoomChange: n, selectedId: r, onSelect: i,
1160
1162
  className: ["gmp-map-canvas-region", v].filter(Boolean).join(" "),
1161
1163
  style: y,
1162
1164
  "data-testid": "gmp-map-canvas-region",
1163
- children: re ? ne : te
1164
- }), !re && _ !== !1 && (_ ?? /* @__PURE__ */ H(dn, {}))]
1165
+ children: ie ? re : ne
1166
+ }), !ie && _ !== !1 && (_ ?? /* @__PURE__ */ H(dn, {}))]
1165
1167
  })
1166
1168
  });
1167
1169
  }
@@ -1279,7 +1281,7 @@ function hn({ row: e, loc: t = 0, selected: n = !1, onSelect: r, className: i =
1279
1281
  onClick: () => r?.(e.id),
1280
1282
  ...a,
1281
1283
  children: [
1282
- /* @__PURE__ */ H(I, {
1284
+ /* @__PURE__ */ H(ee, {
1283
1285
  className: "tlp-ranked-doi-scope",
1284
1286
  children: /* @__PURE__ */ H(ye, {
1285
1287
  label: e.name,
@@ -1700,7 +1702,7 @@ function Dn({ data: e }) {
1700
1702
  id: "tool-target",
1701
1703
  position: K.Left,
1702
1704
  className: "tb-gnode-handle tb-gnode-handle-left"
1703
- }), /* @__PURE__ */ H(ee, {
1705
+ }), /* @__PURE__ */ H(I, {
1704
1706
  tools: o,
1705
1707
  totalDurationMs: r,
1706
1708
  hasError: i,
@@ -1913,13 +1915,13 @@ function In({ turns: e, toolVMsByTurn: t, filteredTurns: n, phases: r, annotatio
1913
1915
  h,
1914
1916
  w
1915
1917
  ]);
1916
- let I = L((e) => {
1918
+ let ee = L((e) => {
1917
1919
  if (e.type === "turn") {
1918
1920
  let t = e.data;
1919
1921
  return t.annotations?.some?.((e) => e.type === "error") ? "var(--danger)" : t.isFilteredOut ? "var(--rule)" : t.turn.role === "user" ? "var(--teal)" : t.turn.role === "assistant" ? "var(--amber)" : "var(--ink-2)";
1920
1922
  }
1921
1923
  return e.type === "toolCall" ? "var(--ink-3)" : "var(--rule)";
1922
- }, []), ee = L((e, t) => {
1924
+ }, []), I = L((e, t) => {
1923
1925
  if (t.type !== "turn") return;
1924
1926
  let n = t.data;
1925
1927
  d?.({
@@ -1941,7 +1943,7 @@ function In({ turns: e, toolVMsByTurn: t, filteredTurns: n, phases: r, annotatio
1941
1943
  edges: D,
1942
1944
  onNodesChange: E,
1943
1945
  onEdgesChange: k,
1944
- onNodeClick: ee,
1946
+ onNodeClick: I,
1945
1947
  nodeTypes: Pn,
1946
1948
  fitView: !1,
1947
1949
  minZoom: .2,
@@ -1966,7 +1968,7 @@ function In({ turns: e, toolVMsByTurn: t, filteredTurns: n, phases: r, annotatio
1966
1968
  }), /* @__PURE__ */ H(At, {
1967
1969
  zoomable: !0,
1968
1970
  pannable: !0,
1969
- nodeColor: I,
1971
+ nodeColor: ee,
1970
1972
  nodeStrokeColor: "var(--rule)",
1971
1973
  nodeBorderRadius: 0,
1972
1974
  maskColor: "color-mix(in srgb, var(--canvas) 70%, transparent)",
@@ -1980,4 +1982,4 @@ function In({ turns: e, toolVMsByTurn: t, filteredTurns: n, phases: r, annotatio
1980
1982
  });
1981
1983
  }
1982
1984
  //#endregion
1983
- export { tt as AllChangeBindings, nt as AllDiffLineKinds, rt as AllEdgeViolationKinds, it as AllFileChangeStatuses, at as AllInsightKinds, ot as AllInsightProvenances, st as AllMapNodeKinds, ct as AllReadAttributionStates, lt as AllReadStateGrades, de as CHANGE_BINDINGS, D as CODE_MAP_STATE_VERSION, ve as CODE_MAP_VIEWPORT_SCALE, a as COVERAGE_CAP, ut as ChangeBinding, Xt as ChangeDetail, Ht as Changes, $t as CodeMap, un as CodeMapComposition, an as CodeMapNavigator, i as DEBT_VIEWED, u as DIFF_LINE_KINDS, h as DOI_WEIGHTS, dn as DefaultMapLegend, dt as DiffLineKind, $ as EDGE_DEFAULTS, T as EDGE_VIOLATION_KINDS, ft as EdgeViolationKind, w as FILE_CHANGE_STATUSES, pt as FileChangeStatus, me as GRAPH_APP_SECTIONS, ge as GRAPH_LEGEND_ITEMS, ae as GhostCommitNode, he as GhostGroup, j as GraphAppShell, jn as GraphControls, se as GraphLegend, ie as GraphSectionNav, fe as GraphSubagentBranch, ee as GraphToolNode, O as GraphTurnNode, k as HighlightEdge, mt as InsightKind, _n as InsightPanel, ht as InsightProvenance, P as LOCAL_APP_SECTIONS, E as MAP_NODE_KINDS, gt as MapNodeKind, Q as NODE_DIMENSIONS, re as RANK_CAP, t as RANK_FLOOR, ne as RECENCY_HALF_LIFE_DAYS, gn as RankModeControl, hn as RankedRow, _t as ReadAttributionState, vt as ReadStateGrade, p as SCENT_TAGS, mn as ScentTag, M as SessionLane, le as SessionOverflowDisclosure, An as SubagentBranchNode, On as ToolPillNode, te as TouchedFileCluster, Fn as TrajectoryGraph, Nn as TrajectoryGraphLegend, En as TurnCardNode, ce as VillageObservations, _ as assertChangeDetailPayloadEnums, e as assertChangeDiffPayloadEnums, N as assertCodeMapPayloadEnums, pn as assertTimelineNavigationAction, Bt as buildChangesGraph, en as codeMapPayloadToMapData, Ce as codeMapStatesEqual, Sn as computeLaneHeaders, m as coverage, A as createCodeMapState, g as debt, o as debtHoverText, l as debtState, Se as deriveCodeMapView, f as deriveRankedRows, y as deriveTimelineHighlight, v as gateRankedRows, q as humanizeAge, we as hunkClears, yt as isChangeBinding, r as isCodeMapViewportScale, bt as isDiffLineKind, xt as isEdgeViolationKind, St as isFileChangeStatus, Ct as isInsightKind, wt as isInsightProvenance, Tt as isMapNodeKind, Et as isReadAttributionState, Dt as isReadStateGrade, n as partialReadHoverText, S as rankMapNodes, c as rankMapNodesIntrinsic, be as reduceCodeMapState, b as resolveEscapeAction, x as scentTagsFor, xn as turnsToFlow, Cn as useCanvasSync };
1985
+ export { tt as AllChangeBindings, nt as AllDiffLineKinds, rt as AllEdgeViolationKinds, it as AllFileChangeStatuses, at as AllInsightKinds, ot as AllInsightProvenances, st as AllMapNodeKinds, ct as AllReadAttributionStates, lt as AllReadStateGrades, de as CHANGE_BINDINGS, D as CODE_MAP_STATE_VERSION, ve as CODE_MAP_VIEWPORT_SCALE, a as COVERAGE_CAP, ut as ChangeBinding, Xt as ChangeDetail, Ht as Changes, $t as CodeMap, un as CodeMapComposition, an as CodeMapNavigator, i as DEBT_VIEWED, u as DIFF_LINE_KINDS, h as DOI_WEIGHTS, dn as DefaultMapLegend, dt as DiffLineKind, $ as EDGE_DEFAULTS, T as EDGE_VIOLATION_KINDS, ft as EdgeViolationKind, w as FILE_CHANGE_STATUSES, pt as FileChangeStatus, me as GRAPH_APP_SECTIONS, ge as GRAPH_LEGEND_ITEMS, ae as GhostCommitNode, he as GhostGroup, j as GraphAppShell, jn as GraphControls, se as GraphLegend, ie as GraphSectionNav, fe as GraphSubagentBranch, I as GraphToolNode, O as GraphTurnNode, k as HighlightEdge, mt as InsightKind, _n as InsightPanel, ht as InsightProvenance, P as LOCAL_APP_SECTIONS, E as MAP_NODE_KINDS, gt as MapNodeKind, Q as NODE_DIMENSIONS, re as RANK_CAP, t as RANK_FLOOR, ne as RECENCY_HALF_LIFE_DAYS, gn as RankModeControl, hn as RankedRow, _t as ReadAttributionState, vt as ReadStateGrade, p as SCENT_TAGS, mn as ScentTag, M as SessionLane, le as SessionOverflowDisclosure, An as SubagentBranchNode, On as ToolPillNode, te as TouchedFileCluster, Fn as TrajectoryGraph, Nn as TrajectoryGraphLegend, En as TurnCardNode, ce as VillageObservations, _ as assertChangeDetailPayloadEnums, e as assertChangeDiffPayloadEnums, N as assertCodeMapPayloadEnums, pn as assertTimelineNavigationAction, Bt as buildChangesGraph, en as codeMapPayloadToMapData, Ce as codeMapStatesEqual, Sn as computeLaneHeaders, m as coverage, A as createCodeMapState, g as debt, o as debtHoverText, l as debtState, Se as deriveCodeMapView, f as deriveRankedRows, y as deriveTimelineHighlight, v as gateRankedRows, q as humanizeAge, we as hunkClears, yt as isChangeBinding, r as isCodeMapViewportScale, bt as isDiffLineKind, xt as isEdgeViolationKind, St as isFileChangeStatus, Ct as isInsightKind, wt as isInsightProvenance, Tt as isMapNodeKind, Et as isReadAttributionState, Dt as isReadStateGrade, n as partialReadHoverText, S as rankMapNodes, c as rankMapNodesIntrinsic, be as reduceCodeMapState, b as resolveEscapeAction, x as scentTagsFor, xn as turnsToFlow, Cn as useCanvasSync };
@@ -65,6 +65,8 @@ export function AppPage({ children, as: Tag, className, ...rest }: AppPageProps)
65
65
  * @typedef {Object} AppSidebarAccount
66
66
  * @property {string} handle shown as @handle; its first letter fills the square avatar.
67
67
  * @property {string} [href] makes the account row a link.
68
+ * @property {import('./Menu.jsx').MenuItem[]} [items] makes the account row its own menu (profile, settings, sign
69
+ * out), drawn as the same flat row with no caret and opening above the footer. Takes precedence over href.
68
70
  */
69
71
  /**
70
72
  * @typedef {Object} AppSidebarProps
@@ -21,8 +21,12 @@
21
21
  * @param {React.ComponentType<any>} [props.icon] icon-only trigger: the glyph replaces the label and the caret
22
22
  * @param {string} [props.ariaLabel] the trigger's accessible name; required with `icon`, and the menu's name
23
23
  * @param {'sm'|'md'} [props.size='md'] `sm` uses the compact control height (header rows)
24
+ * @param {'bottom'|'top'} [props.side='bottom'] which side of the trigger the popout opens on; `top` for a
25
+ * trigger at the foot of a column (a sidebar's account row)
26
+ * @param {string} [props.triggerClassName] a host-drawn trigger: these classes replace the button's own,
27
+ * and the caret is left out, so a row can be its own menu trigger
24
28
  */
25
- export default function Menu({ label, items, align, caption, defaultOpen, icon: TriggerIcon, ariaLabel, size }: {
29
+ export default function Menu({ label, items, align, caption, defaultOpen, icon: TriggerIcon, ariaLabel, size, side, triggerClassName }: {
26
30
  label?: React.ReactNode;
27
31
  items?: MenuItem[];
28
32
  align?: "start" | "end";
@@ -31,6 +35,8 @@ export default function Menu({ label, items, align, caption, defaultOpen, icon:
31
35
  icon?: React.ComponentType<any>;
32
36
  ariaLabel?: string;
33
37
  size?: "sm" | "md";
38
+ side?: "bottom" | "top";
39
+ triggerClassName?: string;
34
40
  }): import("react").JSX.Element;
35
41
  export type MenuItem = {
36
42
  /**
@@ -53,8 +53,10 @@
53
53
  * @param {import('./codeMapState.js').CodeMapState} [props.state] canonical controlled state
54
54
  * @param {Partial<import('./codeMapState.js').CodeMapState>} [props.defaultState] initial canonical uncontrolled state
55
55
  * @param {(state:import('./codeMapState.js').CodeMapState)=>void} [props.onStateChange]
56
+ * @param {'measured'|'unknown'} [props.lineCounts='measured'] passed to the navigator: 'unknown' leaves out every row's
57
+ * "N lines" figure when the host knows the payload's line counts were not measured
56
58
  */
57
- export default function CodeMapComposition({ payload, zoom, onZoomChange, selectedId, onSelect, onExpand, highlightedIds, nodeDeltas, structureEdgeDeltas, height, ariaLabel, canvasSlot, rail, toolbar, sheetTitle, sheetMeta, railSide, legend, canvasWrapperClassName, canvasWrapperStyle, className, presentation, navigatorSlot, onPresentationChange, viewport, onViewportChange, state, defaultState, onStateChange, }: {
59
+ export default function CodeMapComposition({ payload, zoom, onZoomChange, selectedId, onSelect, onExpand, highlightedIds, nodeDeltas, structureEdgeDeltas, height, ariaLabel, canvasSlot, rail, toolbar, sheetTitle, sheetMeta, railSide, legend, canvasWrapperClassName, canvasWrapperStyle, className, presentation, navigatorSlot, onPresentationChange, viewport, onViewportChange, state, defaultState, onStateChange, lineCounts, }: {
58
60
  payload?: import("./types.js").CodeMapPayload;
59
61
  zoom?: {
60
62
  level: "project" | "package" | "file";
@@ -98,6 +100,7 @@ export default function CodeMapComposition({ payload, zoom, onZoomChange, select
98
100
  state?: import("./codeMapState.js").CodeMapState;
99
101
  defaultState?: Partial<import("./codeMapState.js").CodeMapState>;
100
102
  onStateChange?: (state: import("./codeMapState.js").CodeMapState) => void;
103
+ lineCounts?: "measured" | "unknown";
101
104
  }): import("react").JSX.Element;
102
105
  /**
103
106
  * The persistent legend explaining the canvas's four orthogonal visual channels
@@ -17,8 +17,11 @@
17
17
  * @param {(id:string)=>void} [props.onOpenMap]
18
18
  * @param {(action:import('./codeMapState.js').CodeMapAction)=>void} [props.onStateAction]
19
19
  * @param {string} [props.ariaLabel='code map navigator']
20
+ * @param {'measured'|'unknown'} [props.lineCounts='measured'] whether the payload's line counts were measured.
21
+ * 'unknown' (the host could not read the project's languages, so every loc is an unmeasured 0) leaves the
22
+ * "N lines" figure out of every row instead of stating a false 0; a measured 0 still reads "0 lines".
20
23
  */
21
- export default function CodeMapNavigator({ payload, grain, expandedIds, onExpandedIdsChange, selectedId, onSelect, focusedId, onFocusChange, filter, onFilterChange, onOpenMap, onStateAction, ariaLabel, }: {
24
+ export default function CodeMapNavigator({ payload, grain, expandedIds, onExpandedIdsChange, selectedId, onSelect, focusedId, onFocusChange, filter, onFilterChange, onOpenMap, onStateAction, ariaLabel, lineCounts, }: {
22
25
  payload: import("./types.js").CodeMapPayload;
23
26
  grain?: "project" | "package" | "file";
24
27
  expandedIds?: Iterable<string>;
@@ -32,4 +35,5 @@ export default function CodeMapNavigator({ payload, grain, expandedIds, onExpand
32
35
  onOpenMap?: (id: string) => void;
33
36
  onStateAction?: (action: import("./codeMapState.js").CodeMapAction) => void;
34
37
  ariaLabel?: string;
38
+ lineCounts?: "measured" | "unknown";
35
39
  }): import("react").JSX.Element;
@@ -497,58 +497,58 @@ function Mn({ page: e = 1, total: t = 1, onPrev: n, onNext: r, onChange: i, labe
497
497
  }
498
498
  //#endregion
499
499
  //#region src/ui/Menu.jsx
500
- function Nn({ label: t, items: n = [], align: r = "start", caption: i, defaultOpen: a = !1, icon: o, ariaLabel: s, size: c = "md" }) {
501
- let [l, u] = A(a), d = k(null), f = k(null), p = k(null), m = k(a), h = T(), g = n.map((e, t) => e.disabled || e.separator ? -1 : t).filter((e) => e >= 0), _ = k([]), v = (e) => {
502
- e == null || e < 0 || _.current[e]?.focus();
503
- }, y = () => g[0], b = () => g[g.length - 1], x = (e) => {
504
- m.current = !0, u(!0), p.current != null && cancelAnimationFrame(p.current), p.current = requestAnimationFrame(() => {
505
- p.current = null, m.current && v(e === "last" ? b() : y());
500
+ function Nn({ label: t, items: n = [], align: r = "start", caption: i, defaultOpen: a = !1, icon: o, ariaLabel: s, size: c = "md", side: l = "bottom", triggerClassName: u }) {
501
+ let [d, f] = A(a), p = k(null), m = k(null), h = k(null), g = k(a), _ = T(), v = n.map((e, t) => e.disabled || e.separator ? -1 : t).filter((e) => e >= 0), y = k([]), b = (e) => {
502
+ e == null || e < 0 || y.current[e]?.focus();
503
+ }, x = () => v[0], S = () => v[v.length - 1], C = (e) => {
504
+ g.current = !0, f(!0), h.current != null && cancelAnimationFrame(h.current), h.current = requestAnimationFrame(() => {
505
+ h.current = null, g.current && b(e === "last" ? S() : x());
506
506
  });
507
- }, S = (e) => {
508
- m.current = !1, p.current != null && cancelAnimationFrame(p.current), p.current = null, u(!1), e && d.current?.focus();
507
+ }, E = (e) => {
508
+ g.current = !1, h.current != null && cancelAnimationFrame(h.current), h.current = null, f(!1), e && p.current?.focus();
509
509
  };
510
510
  w(() => () => {
511
- p.current != null && cancelAnimationFrame(p.current);
511
+ h.current != null && cancelAnimationFrame(h.current);
512
512
  }, []), w(() => {
513
- if (!l) return;
513
+ if (!d) return;
514
514
  let e = (e) => {
515
- !f.current?.contains(e.target) && !d.current?.contains(e.target) && S(!1);
515
+ !m.current?.contains(e.target) && !p.current?.contains(e.target) && E(!1);
516
516
  };
517
517
  return document.addEventListener("mousedown", e), () => document.removeEventListener("mousedown", e);
518
- }, [l]);
519
- let C = (e) => {
520
- e.preventDefault(), l ? S(!0) : x("first");
521
- }, E = (e) => {
522
- e.key === "ArrowDown" ? (e.preventDefault(), x("first")) : e.key === "ArrowUp" ? (e.preventDefault(), x("last")) : e.key === "Escape" && m.current && (e.preventDefault(), S(!0));
523
- }, D = (e) => {
524
- let t = g;
518
+ }, [d]);
519
+ let D = (e) => {
520
+ e.preventDefault(), d ? E(!0) : C("first");
521
+ }, O = (e) => {
522
+ e.key === "ArrowDown" ? (e.preventDefault(), C("first")) : e.key === "ArrowUp" ? (e.preventDefault(), C("last")) : e.key === "Escape" && g.current && (e.preventDefault(), E(!0));
523
+ }, P = (e) => {
524
+ let t = v;
525
525
  if (!t.length) {
526
- e.key === "Escape" ? (e.preventDefault(), S(!0)) : e.key === "Tab" && S(!1);
526
+ e.key === "Escape" ? (e.preventDefault(), E(!0)) : e.key === "Tab" && E(!1);
527
527
  return;
528
528
  }
529
- let n = _.current.indexOf(document.activeElement), r = t.indexOf(n);
530
- e.key === "Escape" ? (e.preventDefault(), S(!0)) : e.key === "ArrowDown" ? (e.preventDefault(), v(t[(r + 1) % t.length])) : e.key === "ArrowUp" ? (e.preventDefault(), v(t[(r - 1 + t.length) % t.length])) : e.key === "Home" ? (e.preventDefault(), v(t[0])) : e.key === "End" ? (e.preventDefault(), v(t[t.length - 1])) : e.key === "Tab" && S(!1);
531
- }, O = (e) => {
532
- e.disabled || (e.onSelect?.(), S(!0));
533
- }, P = (e) => (t) => {
534
- (t.key === "Enter" || t.key === " ") && (t.preventDefault(), O(e));
529
+ let n = y.current.indexOf(document.activeElement), r = t.indexOf(n);
530
+ e.key === "Escape" ? (e.preventDefault(), E(!0)) : e.key === "ArrowDown" ? (e.preventDefault(), b(t[(r + 1) % t.length])) : e.key === "ArrowUp" ? (e.preventDefault(), b(t[(r - 1 + t.length) % t.length])) : e.key === "Home" ? (e.preventDefault(), b(t[0])) : e.key === "End" ? (e.preventDefault(), b(t[t.length - 1])) : e.key === "Tab" && E(!1);
531
+ }, F = (e) => {
532
+ e.disabled || (e.onSelect?.(), E(!0));
533
+ }, I = (e) => (t) => {
534
+ (t.key === "Enter" || t.key === " ") && (t.preventDefault(), F(e));
535
535
  };
536
536
  return /* @__PURE__ */ N("div", {
537
537
  className: "menu-anchor",
538
538
  children: [/* @__PURE__ */ M("button", {
539
- ref: d,
539
+ ref: p,
540
540
  type: "button",
541
- className: "btn btn-secondary menu-trigger" + (c === "sm" ? " btn-sm" : "") + (o ? " btn-icon" : ""),
541
+ className: u ? "menu-trigger " + u : "btn btn-secondary menu-trigger" + (c === "sm" ? " btn-sm" : "") + (o ? " btn-icon" : ""),
542
542
  "aria-haspopup": "menu",
543
- "aria-expanded": l ? "true" : "false",
544
- "aria-controls": h,
543
+ "aria-expanded": d ? "true" : "false",
544
+ "aria-controls": _,
545
545
  "aria-label": s,
546
- onClick: C,
547
- onKeyDown: E,
546
+ onClick: D,
547
+ onKeyDown: O,
548
548
  children: o ? /* @__PURE__ */ M(o, {
549
549
  size: 14,
550
550
  "aria-hidden": "true"
551
- }) : /* @__PURE__ */ N(j, { children: [
551
+ }) : u ? t : /* @__PURE__ */ N(j, { children: [
552
552
  t,
553
553
  " ",
554
554
  /* @__PURE__ */ M(V, {
@@ -557,11 +557,12 @@ function Nn({ label: t, items: n = [], align: r = "start", caption: i, defaultOp
557
557
  })
558
558
  ] })
559
559
  }), /* @__PURE__ */ N("div", {
560
- ref: f,
560
+ ref: m,
561
561
  className: "menu-pop menu-float",
562
- id: h,
563
- hidden: !l,
562
+ id: _,
563
+ hidden: !d,
564
564
  "data-align": r,
565
+ "data-side": l,
565
566
  children: [i != null && /* @__PURE__ */ M("p", {
566
567
  className: "menu-cap",
567
568
  children: i
@@ -569,7 +570,7 @@ function Nn({ label: t, items: n = [], align: r = "start", caption: i, defaultOp
569
570
  className: "menu-list",
570
571
  role: "menu",
571
572
  "aria-label": s ?? (typeof t == "string" ? t : void 0),
572
- onKeyDown: D,
573
+ onKeyDown: P,
573
574
  children: [n.map((t, n) => {
574
575
  if (t.separator) return /* @__PURE__ */ M("li", {
575
576
  role: "separator",
@@ -577,15 +578,15 @@ function Nn({ label: t, items: n = [], align: r = "start", caption: i, defaultOp
577
578
  }, n);
578
579
  let r = t.icon;
579
580
  return /* @__PURE__ */ N("li", {
580
- ref: (e) => _.current[n] = e,
581
+ ref: (e) => y.current[n] = e,
581
582
  role: "menuitem",
582
583
  tabIndex: -1,
583
584
  "aria-disabled": t.disabled ? "true" : void 0,
584
585
  className: "menu-item" + (t.danger ? " menu-danger" : ""),
585
586
  onClick: () => {
586
- t.disabled || O(t);
587
+ t.disabled || F(t);
587
588
  },
588
- onKeyDown: P(t),
589
+ onKeyDown: I(t),
589
590
  children: [
590
591
  t.brand ? /* @__PURE__ */ M(e, { name: t.brand }) : r && /* @__PURE__ */ M(r, { "aria-hidden": "true" }),
591
592
  /* @__PURE__ */ M("span", {
@@ -5129,7 +5130,13 @@ function Sa({ account: e, Link: t, onNavigate: n, collapsed: r }) {
5129
5130
  className: "asb-label asb-handle",
5130
5131
  children: ["@", i]
5131
5132
  })] });
5132
- return e.href ? /* @__PURE__ */ M(t, {
5133
+ return Array.isArray(e.items) && e.items.length > 0 ? /* @__PURE__ */ M(Nn, {
5134
+ label: a,
5135
+ items: e.items,
5136
+ side: "top",
5137
+ triggerClassName: "asb-account",
5138
+ ariaLabel: "@" + i
5139
+ }) : e.href ? /* @__PURE__ */ M(t, {
5133
5140
  href: e.href,
5134
5141
  className: "asb-account",
5135
5142
  title: r ? "@" + i : void 0,
package/dist/lib/ui.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import { At as e, Ct as t, Dt as n, Et as r, Ot as i, St as a, Tt as o, _t as s, a as c, bt as l, c as u, d, dt as f, f as p, ft as m, g as h, gt as g, h as _, ht as v, i as y, kt as b, l as x, m as S, mt as C, n as w, o as T, p as E, pt as D, r as O, rt as k, s as A, t as j, tt as M, u as N, ut as P, vt as F, wt as I, xt as L, yt as R } from "./GraphLegend-CBKZsRta.js";
2
- import { $ as z, $n as B, $t as V, A as H, An as U, At as W, B as G, Bn as K, Bt as q, C as J, Cn as Y, Ct as X, D as Z, Dn as Q, Dt as $, E as ee, En as te, Et as ne, F as re, Fn as ie, Ft as ae, G as oe, Gn as se, Gt as ce, H as le, Hn as ue, Ht as de, I as fe, In as pe, It as me, J as he, Jn as ge, Jt as _e, K as ve, Kn as ye, Kt as be, L as xe, Ln as Se, Lt as Ce, M as we, Mn as Te, Mt as Ee, N as De, Nn as Oe, Nt as ke, O as Ae, On as je, Ot as Me, P as Ne, Pn as Pe, Pt as Fe, Q as Ie, Qn as Le, Qt as Re, R as ze, Rn as Be, Rt as Ve, S as He, Sn as Ue, St as We, T as Ge, Tn as Ke, Tt as qe, U as Je, Un as Ye, Ut as Xe, V as Ze, Vn as Qe, Vt as $e, W as et, Wn as tt, Wt as nt, X as rt, Xn as it, Xt as at, Y as ot, Yn as st, Yt as ct, Z as lt, Zn as ut, Zt as dt, _ as ft, _n as pt, _t as mt, a as ht, an as gt, ar as _t, at as vt, b as yt, bn as bt, bt as xt, c as St, cn as Ct, ct as wt, d as Tt, dn as Et, dt as Dt, en as Ot, er as kt, et as At, f as jt, fn as Mt, ft as Nt, g as Pt, gn as Ft, gt as It, h as Lt, hn as Rt, ht as zt, i as Bt, in as Vt, ir as Ht, it as Ut, j as Wt, jn as Gt, jt as Kt, k as qt, kn as Jt, kt as Yt, l as Xt, ln as Zt, lt as Qt, m as $t, mn as en, mt as tn, n as nn, nn as rn, nr as an, nt as on, o as sn, on as cn, or as ln, ot as un, p as dn, pn as fn, pt as pn, q as mn, qn as hn, qt as gn, r as _n, rn as vn, rr as yn, rt as bn, s as xn, sn as Sn, sr as Cn, st as wn, t as Tn, tn as En, tr as Dn, tt as On, u as kn, un as An, ut as jn, v as Mn, vn as Nn, vt as Pn, w as Fn, wn as In, wt as Ln, x as Rn, xn as zn, xt as Bn, y as Vn, yn as Hn, yt as Un, z as Wn, zn as Gn, zt as Kn } from "./ui-Bhk29YuW.js";
2
+ import { $ as z, $n as B, $t as V, A as H, An as U, At as W, B as G, Bn as K, Bt as q, C as J, Cn as Y, Ct as X, D as Z, Dn as Q, Dt as $, E as ee, En as te, Et as ne, F as re, Fn as ie, Ft as ae, G as oe, Gn as se, Gt as ce, H as le, Hn as ue, Ht as de, I as fe, In as pe, It as me, J as he, Jn as ge, Jt as _e, K as ve, Kn as ye, Kt as be, L as xe, Ln as Se, Lt as Ce, M as we, Mn as Te, Mt as Ee, N as De, Nn as Oe, Nt as ke, O as Ae, On as je, Ot as Me, P as Ne, Pn as Pe, Pt as Fe, Q as Ie, Qn as Le, Qt as Re, R as ze, Rn as Be, Rt as Ve, S as He, Sn as Ue, St as We, T as Ge, Tn as Ke, Tt as qe, U as Je, Un as Ye, Ut as Xe, V as Ze, Vn as Qe, Vt as $e, W as et, Wn as tt, Wt as nt, X as rt, Xn as it, Xt as at, Y as ot, Yn as st, Yt as ct, Z as lt, Zn as ut, Zt as dt, _ as ft, _n as pt, _t as mt, a as ht, an as gt, ar as _t, at as vt, b as yt, bn as bt, bt as xt, c as St, cn as Ct, ct as wt, d as Tt, dn as Et, dt as Dt, en as Ot, er as kt, et as At, f as jt, fn as Mt, ft as Nt, g as Pt, gn as Ft, gt as It, h as Lt, hn as Rt, ht as zt, i as Bt, in as Vt, ir as Ht, it as Ut, j as Wt, jn as Gt, jt as Kt, k as qt, kn as Jt, kt as Yt, l as Xt, ln as Zt, lt as Qt, m as $t, mn as en, mt as tn, n as nn, nn as rn, nr as an, nt as on, o as sn, on as cn, or as ln, ot as un, p as dn, pn as fn, pt as pn, q as mn, qn as hn, qt as gn, r as _n, rn as vn, rr as yn, rt as bn, s as xn, sn as Sn, sr as Cn, st as wn, t as Tn, tn as En, tr as Dn, tt as On, u as kn, un as An, ut as jn, v as Mn, vn as Nn, vt as Pn, w as Fn, wn as In, wt as Ln, x as Rn, xn as zn, xt as Bn, y as Vn, yn as Hn, yt as Un, z as Wn, zn as Gn, zt as Kn } from "./ui-BxiVcGs3.js";
3
3
  import { a as qn, d as Jn, i as Yn, n as Xn, o as Zn, p as Qn, r as $n, t as er, v as tr } from "./time-CpVBzcqQ.js";
4
4
  import { a as nr, n as rr, o as ir, r as ar, t as or } from "./format-B3uT2wzU.js";
5
5
  import { n as sr, t as cr } from "./ChartLine-MZVbpUu1.js";