jazz-tools 0.18.21 → 0.18.23

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.
@@ -733,10 +733,33 @@ var isCoId = (coId) => typeof coId === "string" && coId.startsWith("co_") && !co
733
733
  import { styled as styled9 } from "goober";
734
734
  import React3, { useState as useState4 } from "react";
735
735
 
736
+ // src/inspector/ui/icons/caution.tsx
737
+ import { jsx as jsx10, jsxs as jsxs4 } from "react/jsx-runtime";
738
+ function CautionIcon(props) {
739
+ return /* @__PURE__ */ jsxs4(
740
+ "svg",
741
+ {
742
+ ...props,
743
+ xmlns: "http://www.w3.org/2000/svg",
744
+ width: "24",
745
+ height: "24",
746
+ viewBox: "0 0 24 24",
747
+ fill: "none",
748
+ stroke: "currentColor",
749
+ strokeLinejoin: "round",
750
+ children: [
751
+ /* @__PURE__ */ jsx10("circle", { cx: "12", cy: "12", r: "12", fill: "currentColor" }),
752
+ /* @__PURE__ */ jsx10("rect", { x: "10.5", y: "6", width: "3", height: "7.5", rx: "1.5", fill: "#fff" }),
753
+ /* @__PURE__ */ jsx10("rect", { x: "10.5", y: "16.5", width: "3", height: "3", rx: "1.5", fill: "#fff" })
754
+ ]
755
+ }
756
+ );
757
+ }
758
+
736
759
  // src/inspector/ui/icons/chevron-down-icon.tsx
737
- import { jsx as jsx10 } from "react/jsx-runtime";
760
+ import { jsx as jsx11 } from "react/jsx-runtime";
738
761
  function ChevronDownIcon(props) {
739
- return /* @__PURE__ */ jsx10(
762
+ return /* @__PURE__ */ jsx11(
740
763
  "svg",
741
764
  {
742
765
  ...props,
@@ -747,15 +770,15 @@ function ChevronDownIcon(props) {
747
770
  fill: "none",
748
771
  stroke: "currentColor",
749
772
  strokeLinejoin: "round",
750
- children: /* @__PURE__ */ jsx10("path", { d: "m6 9 6 6 6-6" })
773
+ children: /* @__PURE__ */ jsx11("path", { d: "m6 9 6 6 6-6" })
751
774
  }
752
775
  );
753
776
  }
754
777
 
755
778
  // src/inspector/ui/icons/delete-icon.tsx
756
- import { jsx as jsx11, jsxs as jsxs4 } from "react/jsx-runtime";
779
+ import { jsx as jsx12, jsxs as jsxs5 } from "react/jsx-runtime";
757
780
  function DeleteIcon(props) {
758
- return /* @__PURE__ */ jsxs4(
781
+ return /* @__PURE__ */ jsxs5(
759
782
  "svg",
760
783
  {
761
784
  ...props,
@@ -768,18 +791,18 @@ function DeleteIcon(props) {
768
791
  strokeLinejoin: "round",
769
792
  className: "lucide lucide-trash-icon lucide-trash",
770
793
  children: [
771
- /* @__PURE__ */ jsx11("path", { d: "M3 6h18" }),
772
- /* @__PURE__ */ jsx11("path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" }),
773
- /* @__PURE__ */ jsx11("path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" })
794
+ /* @__PURE__ */ jsx12("path", { d: "M3 6h18" }),
795
+ /* @__PURE__ */ jsx12("path", { d: "M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6" }),
796
+ /* @__PURE__ */ jsx12("path", { d: "M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2" })
774
797
  ]
775
798
  }
776
799
  );
777
800
  }
778
801
 
779
802
  // src/inspector/ui/icons/link-icon.tsx
780
- import { jsx as jsx12 } from "react/jsx-runtime";
803
+ import { jsx as jsx13 } from "react/jsx-runtime";
781
804
  function LinkIcon(props) {
782
- return /* @__PURE__ */ jsx12(
805
+ return /* @__PURE__ */ jsx13(
783
806
  "svg",
784
807
  {
785
808
  xmlns: "http://www.w3.org/2000/svg",
@@ -788,7 +811,7 @@ function LinkIcon(props) {
788
811
  strokeWidth: 1.5,
789
812
  stroke: "currentColor",
790
813
  ...props,
791
- children: /* @__PURE__ */ jsx12(
814
+ children: /* @__PURE__ */ jsx13(
792
815
  "path",
793
816
  {
794
817
  strokeLinecap: "round",
@@ -801,8 +824,9 @@ function LinkIcon(props) {
801
824
  }
802
825
 
803
826
  // src/inspector/ui/icon.tsx
804
- import { jsx as jsx13 } from "react/jsx-runtime";
827
+ import { jsx as jsx14 } from "react/jsx-runtime";
805
828
  var icons = {
829
+ caution: CautionIcon,
806
830
  chevronDown: ChevronDownIcon,
807
831
  delete: DeleteIcon,
808
832
  link: LinkIcon
@@ -849,7 +873,7 @@ function Icon({
849
873
  throw new Error(`Icon not found: ${name}`);
850
874
  }
851
875
  const IconComponent = icons?.hasOwnProperty(name) ? icons[name] : icon;
852
- return /* @__PURE__ */ jsx13(
876
+ return /* @__PURE__ */ jsx14(
853
877
  IconComponent,
854
878
  {
855
879
  "aria-hidden": "true",
@@ -862,7 +886,7 @@ function Icon({
862
886
  }
863
887
 
864
888
  // src/inspector/viewer/value-renderer.tsx
865
- import { Fragment as Fragment3, jsx as jsx14, jsxs as jsxs5 } from "react/jsx-runtime";
889
+ import { Fragment as Fragment3, jsx as jsx15, jsxs as jsxs6 } from "react/jsx-runtime";
866
890
  var LinkContainer = styled9("span")`
867
891
  display: inline-flex;
868
892
  gap: 0.25rem;
@@ -926,18 +950,18 @@ function ValueRenderer({
926
950
  }) {
927
951
  const [isExpanded, setIsExpanded] = useState4(false);
928
952
  if (typeof json === "undefined" || json === void 0) {
929
- return /* @__PURE__ */ jsx14(Text, { muted: true, children: "undefined" });
953
+ return /* @__PURE__ */ jsx15(Text, { muted: true, children: "undefined" });
930
954
  }
931
955
  if (json === null) {
932
- return /* @__PURE__ */ jsx14(Text, { muted: true, children: "null" });
956
+ return /* @__PURE__ */ jsx15(Text, { muted: true, children: "null" });
933
957
  }
934
958
  if (typeof json === "string" && isCoId(json)) {
935
- const content = /* @__PURE__ */ jsxs5(Fragment3, { children: [
959
+ const content = /* @__PURE__ */ jsxs6(Fragment3, { children: [
936
960
  json,
937
- onCoIDClick && /* @__PURE__ */ jsx14(Icon, { name: "link" })
961
+ onCoIDClick && /* @__PURE__ */ jsx15(Icon, { name: "link" })
938
962
  ] });
939
963
  if (onCoIDClick) {
940
- return /* @__PURE__ */ jsx14(
964
+ return /* @__PURE__ */ jsx15(
941
965
  Button,
942
966
  {
943
967
  variant: "link",
@@ -948,35 +972,35 @@ function ValueRenderer({
948
972
  }
949
973
  );
950
974
  }
951
- return /* @__PURE__ */ jsx14(LinkContainer, { children: content });
975
+ return /* @__PURE__ */ jsx15(LinkContainer, { children: content });
952
976
  }
953
977
  if (typeof json === "string") {
954
- return /* @__PURE__ */ jsx14(Text, { children: json });
978
+ return /* @__PURE__ */ jsx15(Text, { children: json });
955
979
  }
956
980
  if (typeof json === "number") {
957
- return /* @__PURE__ */ jsx14(Text, { mono: true, children: json });
981
+ return /* @__PURE__ */ jsx15(Text, { mono: true, children: json });
958
982
  }
959
983
  if (typeof json === "boolean") {
960
- return /* @__PURE__ */ jsx14(BooleanText, { value: json, children: json.toString() });
984
+ return /* @__PURE__ */ jsx15(BooleanText, { value: json, children: json.toString() });
961
985
  }
962
986
  const longJson = JSON.stringify(json, null, 2);
963
987
  const shortJson = longJson.split("\n").slice(0, compact ? 3 : 8).join("\n");
964
988
  const hasDifference = longJson !== shortJson;
965
989
  if (typeof json === "object") {
966
- return /* @__PURE__ */ jsxs5(Fragment3, { children: [
967
- /* @__PURE__ */ jsx14("p", { children: Array.isArray(json) ? /* @__PURE__ */ jsxs5(Fragment3, { children: [
990
+ return /* @__PURE__ */ jsxs6(Fragment3, { children: [
991
+ /* @__PURE__ */ jsx15("p", { children: Array.isArray(json) ? /* @__PURE__ */ jsxs6(Fragment3, { children: [
968
992
  "Array (",
969
993
  json.length,
970
994
  ")"
971
- ] }) : /* @__PURE__ */ jsx14(Fragment3, { children: "Object" }) }),
972
- /* @__PURE__ */ jsxs5(ObjectContent, { children: [
995
+ ] }) : /* @__PURE__ */ jsx15(Fragment3, { children: "Object" }) }),
996
+ /* @__PURE__ */ jsxs6(ObjectContent, { children: [
973
997
  isExpanded ? longJson : shortJson,
974
998
  hasDifference && !isExpanded ? "\n ..." : null
975
999
  ] }),
976
- !compact && hasDifference ? /* @__PURE__ */ jsx14(Button, { variant: "link", onClick: () => setIsExpanded(!isExpanded), children: isExpanded ? "Show less" : "Show more" }) : null
1000
+ !compact && hasDifference ? /* @__PURE__ */ jsx15(Button, { variant: "link", onClick: () => setIsExpanded(!isExpanded), children: isExpanded ? "Show less" : "Show more" }) : null
977
1001
  ] });
978
1002
  }
979
- return /* @__PURE__ */ jsx14("span", { children: String(json) });
1003
+ return /* @__PURE__ */ jsx15("span", { children: String(json) });
980
1004
  }
981
1005
  var CoMapPreview = ({
982
1006
  coId,
@@ -988,7 +1012,7 @@ var CoMapPreview = ({
988
1012
  node
989
1013
  );
990
1014
  if (!snapshot) {
991
- return /* @__PURE__ */ jsx14(
1015
+ return /* @__PURE__ */ jsx15(
992
1016
  "div",
993
1017
  {
994
1018
  style: {
@@ -1003,15 +1027,15 @@ var CoMapPreview = ({
1003
1027
  );
1004
1028
  }
1005
1029
  if (snapshot === "unavailable" && !value) {
1006
- return /* @__PURE__ */ jsx14(Text, { inline: true, muted: true, children: "Unavailable" });
1030
+ return /* @__PURE__ */ jsx15(Text, { inline: true, muted: true, children: "Unavailable" });
1007
1031
  }
1008
1032
  if (type === "coplaintext") {
1009
- return /* @__PURE__ */ jsx14(Fragment3, { children: value.toString() });
1033
+ return /* @__PURE__ */ jsx15(Fragment3, { children: value.toString() });
1010
1034
  }
1011
1035
  if (extendedType === "image" && isBrowserImage(snapshot)) {
1012
- return /* @__PURE__ */ jsxs5(ImagePreviewContainer2, { children: [
1013
- /* @__PURE__ */ jsx14(PreviewImage, { src: snapshot.placeholderDataURL }),
1014
- /* @__PURE__ */ jsxs5(Text, { inline: true, small: true, muted: true, children: [
1036
+ return /* @__PURE__ */ jsxs6(ImagePreviewContainer2, { children: [
1037
+ /* @__PURE__ */ jsx15(PreviewImage, { src: snapshot.placeholderDataURL }),
1038
+ /* @__PURE__ */ jsxs6(Text, { inline: true, small: true, muted: true, children: [
1015
1039
  snapshot.originalSize[0],
1016
1040
  " x ",
1017
1041
  snapshot.originalSize[1]
@@ -1019,10 +1043,10 @@ var CoMapPreview = ({
1019
1043
  ] });
1020
1044
  }
1021
1045
  if (extendedType === "record") {
1022
- return /* @__PURE__ */ jsxs5(RecordText, { children: [
1046
+ return /* @__PURE__ */ jsxs6(RecordText, { children: [
1023
1047
  "Record",
1024
1048
  " ",
1025
- /* @__PURE__ */ jsxs5(Text, { inline: true, muted: true, children: [
1049
+ /* @__PURE__ */ jsxs6(Text, { inline: true, muted: true, children: [
1026
1050
  "(",
1027
1051
  Object.keys(snapshot).length,
1028
1052
  ")"
@@ -1030,10 +1054,10 @@ var CoMapPreview = ({
1030
1054
  ] });
1031
1055
  }
1032
1056
  if (type === "colist") {
1033
- return /* @__PURE__ */ jsxs5(ListText, { children: [
1057
+ return /* @__PURE__ */ jsxs6(ListText, { children: [
1034
1058
  "List",
1035
1059
  " ",
1036
- /* @__PURE__ */ jsxs5(Text, { inline: true, muted: true, children: [
1060
+ /* @__PURE__ */ jsxs6(Text, { inline: true, muted: true, children: [
1037
1061
  "(",
1038
1062
  snapshot.length,
1039
1063
  ")"
@@ -1044,15 +1068,15 @@ var CoMapPreview = ({
1044
1068
  const limitedProperties = extendedType === "account" ? properties.filter(
1045
1069
  ([key]) => !key.startsWith("key_z") && !key.startsWith("sealer_z") && key !== "readKey"
1046
1070
  ).slice(0, limit) : properties.slice(0, limit);
1047
- return /* @__PURE__ */ jsxs5(PreviewContainer, { children: [
1048
- /* @__PURE__ */ jsx14(PreviewGrid, { children: limitedProperties.map(([key, value2]) => /* @__PURE__ */ jsxs5(React3.Fragment, { children: [
1049
- /* @__PURE__ */ jsxs5(Text, { strong: true, children: [
1071
+ return /* @__PURE__ */ jsxs6(PreviewContainer, { children: [
1072
+ /* @__PURE__ */ jsx15(PreviewGrid, { children: limitedProperties.map(([key, value2]) => /* @__PURE__ */ jsxs6(React3.Fragment, { children: [
1073
+ /* @__PURE__ */ jsxs6(Text, { strong: true, children: [
1050
1074
  key,
1051
1075
  ": "
1052
1076
  ] }),
1053
- /* @__PURE__ */ jsx14(ValueRenderer, { compact: true, json: value2 })
1077
+ /* @__PURE__ */ jsx15(ValueRenderer, { compact: true, json: value2 })
1054
1078
  ] }, key)) }),
1055
- properties.length > limit && /* @__PURE__ */ jsxs5(PreviewMoreText, { muted: true, small: true, children: [
1079
+ properties.length > limit && /* @__PURE__ */ jsxs6(PreviewMoreText, { muted: true, small: true, children: [
1056
1080
  properties.length - limit,
1057
1081
  " more"
1058
1082
  ] })
@@ -1084,7 +1108,7 @@ var CardBody = styled10("div")`
1084
1108
 
1085
1109
  // src/inspector/ui/grid.tsx
1086
1110
  import { styled as styled11 } from "goober";
1087
- import { jsx as jsx15 } from "react/jsx-runtime";
1111
+ import { jsx as jsx16 } from "react/jsx-runtime";
1088
1112
  var GridThreeColumns = styled11("div")`
1089
1113
  display: grid;
1090
1114
  grid-template-columns: repeat(1, minmax(0, 1fr));
@@ -1116,18 +1140,18 @@ function Grid(props) {
1116
1140
  const { cols, children, ...rest } = props;
1117
1141
  switch (cols) {
1118
1142
  case 1:
1119
- return /* @__PURE__ */ jsx15(GridOneColumn, { ...rest, children });
1143
+ return /* @__PURE__ */ jsx16(GridOneColumn, { ...rest, children });
1120
1144
  case 2:
1121
- return /* @__PURE__ */ jsx15(GridTwoColumns, { ...rest, children });
1145
+ return /* @__PURE__ */ jsx16(GridTwoColumns, { ...rest, children });
1122
1146
  case 3:
1123
- return /* @__PURE__ */ jsx15(GridThreeColumns, { ...rest, children });
1147
+ return /* @__PURE__ */ jsx16(GridThreeColumns, { ...rest, children });
1124
1148
  default:
1125
1149
  throw new Error(`Invalid number of columns: ${cols}`);
1126
1150
  }
1127
1151
  }
1128
1152
 
1129
1153
  // src/inspector/viewer/grid-view.tsx
1130
- import { Fragment as Fragment4, jsx as jsx16, jsxs as jsxs6 } from "react/jsx-runtime";
1154
+ import { Fragment as Fragment4, jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
1131
1155
  function GridItem({
1132
1156
  entry,
1133
1157
  onNavigate,
@@ -1144,12 +1168,12 @@ function GridItem({
1144
1168
  borderColor: "var(--j-foreground)"
1145
1169
  }
1146
1170
  };
1147
- return /* @__PURE__ */ jsxs6(Card, { ...props, children: [
1148
- /* @__PURE__ */ jsx16(CardHeader, { children: isCoValue ? /* @__PURE__ */ jsxs6(Fragment4, { children: [
1149
- /* @__PURE__ */ jsx16(Text, { strong: true, children: key }),
1150
- /* @__PURE__ */ jsx16(Badge, { children: /* @__PURE__ */ jsx16(ResolveIcon, { coId: value, node }) })
1151
- ] }) : /* @__PURE__ */ jsx16(Text, { strong: true, children: key }) }),
1152
- /* @__PURE__ */ jsx16(CardBody, { style: { wordBreak: "break-word" }, children: isCoValue ? /* @__PURE__ */ jsx16(CoMapPreview, { coId: value, node }) : /* @__PURE__ */ jsx16(
1171
+ return /* @__PURE__ */ jsxs7(Card, { ...props, children: [
1172
+ /* @__PURE__ */ jsx17(CardHeader, { children: isCoValue ? /* @__PURE__ */ jsxs7(Fragment4, { children: [
1173
+ /* @__PURE__ */ jsx17(Text, { strong: true, children: key }),
1174
+ /* @__PURE__ */ jsx17(Badge, { children: /* @__PURE__ */ jsx17(ResolveIcon, { coId: value, node }) })
1175
+ ] }) : /* @__PURE__ */ jsx17(Text, { strong: true, children: key }) }),
1176
+ /* @__PURE__ */ jsx17(CardBody, { style: { wordBreak: "break-word" }, children: isCoValue ? /* @__PURE__ */ jsx17(CoMapPreview, { coId: value, node }) : /* @__PURE__ */ jsx17(
1153
1177
  ValueRenderer,
1154
1178
  {
1155
1179
  json: value,
@@ -1166,7 +1190,7 @@ function GridView({
1166
1190
  node
1167
1191
  }) {
1168
1192
  const entries = Object.entries(data);
1169
- return /* @__PURE__ */ jsx16(Grid, { cols: entries.length === 1 ? 1 : 3, children: entries.map((entry, childIndex) => /* @__PURE__ */ jsx16(
1193
+ return /* @__PURE__ */ jsx17(Grid, { cols: entries.length === 1 ? 1 : 3, children: entries.map((entry, childIndex) => /* @__PURE__ */ jsx17(
1170
1194
  GridItem,
1171
1195
  {
1172
1196
  entry,
@@ -1179,7 +1203,7 @@ function GridView({
1179
1203
 
1180
1204
  // src/inspector/viewer/raw-data-card.tsx
1181
1205
  import { useEffect as useEffect4, useState as useState5 } from "react";
1182
- import { jsx as jsx17, jsxs as jsxs7 } from "react/jsx-runtime";
1206
+ import { jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
1183
1207
  function CopyButton({ data }) {
1184
1208
  const [copyCount, setCopyCount] = useState5(0);
1185
1209
  const copied = copyCount > 0;
@@ -1192,7 +1216,7 @@ function CopyButton({ data }) {
1192
1216
  };
1193
1217
  }
1194
1218
  }, [copyCount]);
1195
- return /* @__PURE__ */ jsx17(
1219
+ return /* @__PURE__ */ jsx18(
1196
1220
  Button,
1197
1221
  {
1198
1222
  style: {
@@ -1211,17 +1235,17 @@ function CopyButton({ data }) {
1211
1235
  );
1212
1236
  }
1213
1237
  function RawDataCard({ data }) {
1214
- return /* @__PURE__ */ jsxs7(Card, { style: { position: "relative" }, children: [
1215
- /* @__PURE__ */ jsxs7(CardHeader, { children: [
1216
- /* @__PURE__ */ jsx17(Text, { strong: true, children: "Raw data" }),
1217
- /* @__PURE__ */ jsx17(CopyButton, { data })
1238
+ return /* @__PURE__ */ jsxs8(Card, { style: { position: "relative" }, children: [
1239
+ /* @__PURE__ */ jsxs8(CardHeader, { children: [
1240
+ /* @__PURE__ */ jsx18(Text, { strong: true, children: "Raw data" }),
1241
+ /* @__PURE__ */ jsx18(CopyButton, { data })
1218
1242
  ] }),
1219
- /* @__PURE__ */ jsx17(CardBody, { children: /* @__PURE__ */ jsx17(ValueRenderer, { json: data }) })
1243
+ /* @__PURE__ */ jsx18(CardBody, { children: /* @__PURE__ */ jsx18(ValueRenderer, { json: data }) })
1220
1244
  ] });
1221
1245
  }
1222
1246
 
1223
1247
  // src/inspector/viewer/account-view.tsx
1224
- import { Fragment as Fragment5, jsx as jsx18, jsxs as jsxs8 } from "react/jsx-runtime";
1248
+ import { Fragment as Fragment5, jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
1225
1249
  function AccountView({
1226
1250
  data,
1227
1251
  onNavigate,
@@ -1233,26 +1257,26 @@ function AccountView({
1233
1257
  delete readableData[key];
1234
1258
  }
1235
1259
  }
1236
- return /* @__PURE__ */ jsxs8(Fragment5, { children: [
1237
- /* @__PURE__ */ jsx18(GridView, { data: readableData, onNavigate, node }),
1238
- /* @__PURE__ */ jsx18(RawDataCard, { data })
1260
+ return /* @__PURE__ */ jsxs9(Fragment5, { children: [
1261
+ /* @__PURE__ */ jsx19(GridView, { data: readableData, onNavigate, node }),
1262
+ /* @__PURE__ */ jsx19(RawDataCard, { data })
1239
1263
  ] });
1240
1264
  }
1241
1265
 
1242
1266
  // src/inspector/viewer/co-plain-text-view.tsx
1243
- import { Fragment as Fragment6, jsx as jsx19, jsxs as jsxs9 } from "react/jsx-runtime";
1267
+ import { Fragment as Fragment6, jsx as jsx20, jsxs as jsxs10 } from "react/jsx-runtime";
1244
1268
  function CoPlainTextView({ data }) {
1245
1269
  if (!data) return;
1246
- return /* @__PURE__ */ jsxs9(Fragment6, { children: [
1247
- /* @__PURE__ */ jsx19("p", { children: Object.values(data).join("") }),
1248
- /* @__PURE__ */ jsx19(RawDataCard, { data })
1270
+ return /* @__PURE__ */ jsxs10(Fragment6, { children: [
1271
+ /* @__PURE__ */ jsx20("p", { children: Object.values(data).join("") }),
1272
+ /* @__PURE__ */ jsx20(RawDataCard, { data })
1249
1273
  ] });
1250
1274
  }
1251
1275
 
1252
1276
  // src/inspector/ui/table.tsx
1253
1277
  import { styled as styled12 } from "goober";
1254
1278
  import React4 from "react";
1255
- import { jsx as jsx20 } from "react/jsx-runtime";
1279
+ import { jsx as jsx21 } from "react/jsx-runtime";
1256
1280
  var StyledTable = styled12("table")`
1257
1281
  width: 100%;
1258
1282
  `;
@@ -1282,35 +1306,35 @@ var StyledTh = styled12("th")`
1282
1306
  var StyledTd = styled12("td")`
1283
1307
  padding: 0.5rem 0.75rem;
1284
1308
  `;
1285
- var Table = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx20(StyledTable, { ref, ...props, children }));
1286
- var TableHead = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx20(StyledThead, { ref, ...props, children }));
1287
- var TableBody = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx20(StyledTbody, { ref, ...props, children }));
1288
- var TableRow = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx20("tr", { ref, ...props, children }));
1289
- var TableHeader = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx20(StyledTh, { ref, ...props, children }));
1290
- var TableCell = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx20(StyledTd, { ref, ...props, children }));
1309
+ var Table = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx21(StyledTable, { ref, ...props, children }));
1310
+ var TableHead = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx21(StyledThead, { ref, ...props, children }));
1311
+ var TableBody = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx21(StyledTbody, { ref, ...props, children }));
1312
+ var TableRow = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx21("tr", { ref, ...props, children }));
1313
+ var TableHeader = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx21(StyledTh, { ref, ...props, children }));
1314
+ var TableCell = React4.forwardRef(({ children, ...props }, ref) => /* @__PURE__ */ jsx21(StyledTd, { ref, ...props, children }));
1291
1315
 
1292
1316
  // src/inspector/viewer/group-view.tsx
1293
- import { Fragment as Fragment7, jsx as jsx21, jsxs as jsxs10 } from "react/jsx-runtime";
1317
+ import { Fragment as Fragment7, jsx as jsx22, jsxs as jsxs11 } from "react/jsx-runtime";
1294
1318
  function GroupView({
1295
1319
  data,
1296
1320
  onNavigate,
1297
1321
  node
1298
1322
  }) {
1299
- return /* @__PURE__ */ jsxs10(Fragment7, { children: [
1300
- /* @__PURE__ */ jsx21(Text, { strong: true, children: "Members" }),
1301
- /* @__PURE__ */ jsxs10(Table, { children: [
1302
- /* @__PURE__ */ jsx21(TableHead, { children: /* @__PURE__ */ jsxs10(TableRow, { children: [
1303
- /* @__PURE__ */ jsx21(TableHeader, { children: "Account" }),
1304
- /* @__PURE__ */ jsx21(TableHeader, { children: "Permission" })
1323
+ return /* @__PURE__ */ jsxs11(Fragment7, { children: [
1324
+ /* @__PURE__ */ jsx22(Text, { strong: true, children: "Members" }),
1325
+ /* @__PURE__ */ jsxs11(Table, { children: [
1326
+ /* @__PURE__ */ jsx22(TableHead, { children: /* @__PURE__ */ jsxs11(TableRow, { children: [
1327
+ /* @__PURE__ */ jsx22(TableHeader, { children: "Account" }),
1328
+ /* @__PURE__ */ jsx22(TableHeader, { children: "Permission" })
1305
1329
  ] }) }),
1306
- /* @__PURE__ */ jsxs10(TableBody, { children: [
1307
- "everyone" in data && typeof data.everyone === "string" ? /* @__PURE__ */ jsxs10(TableRow, { children: [
1308
- /* @__PURE__ */ jsx21(TableCell, { children: "everyone" }),
1309
- /* @__PURE__ */ jsx21(TableCell, { children: data.everyone })
1330
+ /* @__PURE__ */ jsxs11(TableBody, { children: [
1331
+ "everyone" in data && typeof data.everyone === "string" ? /* @__PURE__ */ jsxs11(TableRow, { children: [
1332
+ /* @__PURE__ */ jsx22(TableCell, { children: "everyone" }),
1333
+ /* @__PURE__ */ jsx22(TableCell, { children: data.everyone })
1310
1334
  ] }) : null,
1311
1335
  Object.entries(data).map(
1312
- ([key, value]) => isCoId(key) ? /* @__PURE__ */ jsxs10(TableRow, { children: [
1313
- /* @__PURE__ */ jsx21(TableCell, { children: /* @__PURE__ */ jsx21(
1336
+ ([key, value]) => isCoId(key) ? /* @__PURE__ */ jsxs11(TableRow, { children: [
1337
+ /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(
1314
1338
  AccountOrGroupText,
1315
1339
  {
1316
1340
  coId: key,
@@ -1321,17 +1345,17 @@ function GroupView({
1321
1345
  }
1322
1346
  }
1323
1347
  ) }),
1324
- /* @__PURE__ */ jsx21(TableCell, { children: value })
1348
+ /* @__PURE__ */ jsx22(TableCell, { children: value })
1325
1349
  ] }, key) : null
1326
1350
  )
1327
1351
  ] })
1328
1352
  ] }),
1329
- /* @__PURE__ */ jsx21(RawDataCard, { data })
1353
+ /* @__PURE__ */ jsx22(RawDataCard, { data })
1330
1354
  ] });
1331
1355
  }
1332
1356
 
1333
1357
  // src/inspector/viewer/role-display.tsx
1334
- import { jsxs as jsxs11 } from "react/jsx-runtime";
1358
+ import { jsxs as jsxs12 } from "react/jsx-runtime";
1335
1359
  function RoleDisplay({
1336
1360
  node,
1337
1361
  value
@@ -1350,7 +1374,7 @@ function RoleDisplay({
1350
1374
  } else {
1351
1375
  role = "unauthorized";
1352
1376
  }
1353
- return /* @__PURE__ */ jsxs11(Text, { children: [
1377
+ return /* @__PURE__ */ jsxs12(Text, { children: [
1354
1378
  "Role: ",
1355
1379
  role
1356
1380
  ] });
@@ -1359,7 +1383,7 @@ function RoleDisplay({
1359
1383
  // src/inspector/viewer/table-viewer.tsx
1360
1384
  import { styled as styled13 } from "goober";
1361
1385
  import { useMemo, useState as useState6 } from "react";
1362
- import { Fragment as Fragment8, jsx as jsx22, jsxs as jsxs12 } from "react/jsx-runtime";
1386
+ import { Fragment as Fragment8, jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
1363
1387
  var PaginationContainer = styled13("div")`
1364
1388
  padding: 1rem 0;
1365
1389
  display: flex;
@@ -1367,6 +1391,37 @@ var PaginationContainer = styled13("div")`
1367
1391
  justify-content: space-between;
1368
1392
  gap: 0.5rem;
1369
1393
  `;
1394
+ var RedTooltip = styled13("span")`
1395
+ position:relative; /* making the .tooltip span a container for the tooltip text */
1396
+ border-bottom:1px dashed #000; /* little indicater to indicate it's hoverable */
1397
+
1398
+ &:before {
1399
+ content: attr(data-text);
1400
+ background-color: red;
1401
+ position:absolute;
1402
+
1403
+ /* vertically center */
1404
+ top:50%;
1405
+ transform:translateY(-50%);
1406
+
1407
+ /* move to right */
1408
+ left:100%;
1409
+ margin-left:15px; /* and add a small left margin */
1410
+
1411
+ /* basic styles */
1412
+ width:200px;
1413
+ padding:10px;
1414
+ border-radius:10px;
1415
+ color: #fff;
1416
+ text-align:center;
1417
+
1418
+ display:none; /* hide by default */
1419
+ }
1420
+
1421
+ &:hover:before {
1422
+ display:block;
1423
+ }
1424
+ `;
1370
1425
  function CoValuesTableView({
1371
1426
  data,
1372
1427
  node,
@@ -1382,25 +1437,41 @@ function CoValuesTableView({
1382
1437
  const resolvedRows = useResolvedCoValues(visibleRows, node);
1383
1438
  const hasMore = visibleRowsCount < coIdArray.length;
1384
1439
  if (!coIdArray.length) {
1385
- return /* @__PURE__ */ jsx22("div", { children: "No data to display" });
1440
+ return /* @__PURE__ */ jsx23("div", { children: "No data to display" });
1386
1441
  }
1387
1442
  if (resolvedRows.length === 0) {
1388
- return /* @__PURE__ */ jsx22("div", { children: "Loading..." });
1443
+ return /* @__PURE__ */ jsx23("div", { children: "Loading..." });
1389
1444
  }
1390
1445
  const keys = Array.from(
1391
- new Set(resolvedRows.flatMap((item) => Object.keys(item.snapshot || {})))
1446
+ new Set(
1447
+ resolvedRows.filter((item) => item.snapshot !== "unavailable").flatMap((item) => Object.keys(item.snapshot || {}))
1448
+ )
1392
1449
  );
1393
1450
  const loadMore = () => {
1394
1451
  setVisibleRowsCount((prevVisibleRows) => prevVisibleRows + 10);
1395
1452
  };
1396
- return /* @__PURE__ */ jsxs12(Fragment8, { children: [
1397
- /* @__PURE__ */ jsxs12(Table, { children: [
1398
- /* @__PURE__ */ jsx22(TableHead, { children: /* @__PURE__ */ jsxs12(TableRow, { children: [
1399
- [...keys, "Action"].map((key) => /* @__PURE__ */ jsx22(TableHeader, { children: key }, key)),
1400
- onRemove && /* @__PURE__ */ jsx22(TableHeader, {})
1453
+ return /* @__PURE__ */ jsxs13(Fragment8, { children: [
1454
+ /* @__PURE__ */ jsxs13(Table, { children: [
1455
+ /* @__PURE__ */ jsx23(TableHead, { children: /* @__PURE__ */ jsxs13(TableRow, { children: [
1456
+ ["ID", ...keys, "Action"].map((key) => /* @__PURE__ */ jsx23(TableHeader, { children: key }, key)),
1457
+ onRemove && /* @__PURE__ */ jsx23(TableHeader, {})
1401
1458
  ] }) }),
1402
- /* @__PURE__ */ jsx22(TableBody, { children: resolvedRows.slice(0, visibleRowsCount).map((item, index) => /* @__PURE__ */ jsxs12(TableRow, { children: [
1403
- keys.map((key) => /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(
1459
+ /* @__PURE__ */ jsx23(TableBody, { children: resolvedRows.slice(0, visibleRowsCount).map((item, index) => /* @__PURE__ */ jsxs13(TableRow, { children: [
1460
+ /* @__PURE__ */ jsx23(TableCell, { children: /* @__PURE__ */ jsx23(Text, { mono: true, children: item.snapshot === "unavailable" ? /* @__PURE__ */ jsxs13(RedTooltip, { "data-text": "Unavailable", children: [
1461
+ /* @__PURE__ */ jsx23(
1462
+ Icon,
1463
+ {
1464
+ name: "caution",
1465
+ color: "red",
1466
+ style: {
1467
+ display: "inline-block",
1468
+ marginRight: "0.5rem"
1469
+ }
1470
+ }
1471
+ ),
1472
+ visibleRows[index]
1473
+ ] }) : visibleRows[index] }) }),
1474
+ keys.map((key) => /* @__PURE__ */ jsx23(TableCell, { children: item.snapshot !== "unavailable" && /* @__PURE__ */ jsx23(
1404
1475
  ValueRenderer,
1405
1476
  {
1406
1477
  json: item.snapshot[key],
@@ -1421,7 +1492,7 @@ function CoValuesTableView({
1421
1492
  }
1422
1493
  }
1423
1494
  ) }, key)),
1424
- /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(
1495
+ /* @__PURE__ */ jsx23(TableCell, { children: /* @__PURE__ */ jsx23(
1425
1496
  Button,
1426
1497
  {
1427
1498
  variant: "secondary",
@@ -1434,18 +1505,18 @@ function CoValuesTableView({
1434
1505
  children: "View"
1435
1506
  }
1436
1507
  ) }),
1437
- onRemove && /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(Button, { variant: "secondary", onClick: () => onRemove(index), children: "Remove" }) })
1508
+ onRemove && /* @__PURE__ */ jsx23(TableCell, { children: /* @__PURE__ */ jsx23(Button, { variant: "secondary", onClick: () => onRemove(index), children: "Remove" }) })
1438
1509
  ] }, index)) })
1439
1510
  ] }),
1440
- /* @__PURE__ */ jsxs12(PaginationContainer, { children: [
1441
- /* @__PURE__ */ jsxs12(Text, { muted: true, small: true, children: [
1511
+ /* @__PURE__ */ jsxs13(PaginationContainer, { children: [
1512
+ /* @__PURE__ */ jsxs13(Text, { muted: true, small: true, children: [
1442
1513
  "Showing ",
1443
1514
  Math.min(visibleRowsCount, coIdArray.length),
1444
1515
  " of",
1445
1516
  " ",
1446
1517
  coIdArray.length
1447
1518
  ] }),
1448
- hasMore && /* @__PURE__ */ jsx22(Button, { variant: "secondary", onClick: loadMore, children: "Load more" })
1519
+ hasMore && /* @__PURE__ */ jsx23(Button, { variant: "secondary", onClick: loadMore, children: "Load more" })
1449
1520
  ] })
1450
1521
  ] });
1451
1522
  }
@@ -1459,7 +1530,7 @@ function TableView({
1459
1530
  return Array.isArray(data) && data.every((k) => isCoId(k));
1460
1531
  }, [data]);
1461
1532
  if (isListOfCoValues) {
1462
- return /* @__PURE__ */ jsx22(
1533
+ return /* @__PURE__ */ jsx23(
1463
1534
  CoValuesTableView,
1464
1535
  {
1465
1536
  data,
@@ -1469,24 +1540,24 @@ function TableView({
1469
1540
  }
1470
1541
  );
1471
1542
  }
1472
- return /* @__PURE__ */ jsxs12(Table, { children: [
1473
- /* @__PURE__ */ jsx22(TableHead, { children: /* @__PURE__ */ jsxs12(TableRow, { children: [
1474
- /* @__PURE__ */ jsx22(TableHeader, { style: { width: "5rem" }, children: "Index" }),
1475
- /* @__PURE__ */ jsx22(TableHeader, { children: "Value" }),
1476
- onRemove && /* @__PURE__ */ jsx22(TableHeader, { children: "Action" })
1543
+ return /* @__PURE__ */ jsxs13(Table, { children: [
1544
+ /* @__PURE__ */ jsx23(TableHead, { children: /* @__PURE__ */ jsxs13(TableRow, { children: [
1545
+ /* @__PURE__ */ jsx23(TableHeader, { style: { width: "5rem" }, children: "Index" }),
1546
+ /* @__PURE__ */ jsx23(TableHeader, { children: "Value" }),
1547
+ onRemove && /* @__PURE__ */ jsx23(TableHeader, { children: "Action" })
1477
1548
  ] }) }),
1478
- /* @__PURE__ */ jsx22(TableBody, { children: Array.isArray(data) && data?.map((value, index) => /* @__PURE__ */ jsxs12(TableRow, { children: [
1479
- /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(Text, { mono: true, children: index }) }),
1480
- /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(ValueRenderer, { json: value }) }),
1481
- onRemove && /* @__PURE__ */ jsx22(TableCell, { children: /* @__PURE__ */ jsx22(Button, { variant: "secondary", onClick: () => onRemove(index), children: "Remove" }) })
1549
+ /* @__PURE__ */ jsx23(TableBody, { children: Array.isArray(data) && data?.map((value, index) => /* @__PURE__ */ jsxs13(TableRow, { children: [
1550
+ /* @__PURE__ */ jsx23(TableCell, { children: /* @__PURE__ */ jsx23(Text, { mono: true, children: index }) }),
1551
+ /* @__PURE__ */ jsx23(TableCell, { children: /* @__PURE__ */ jsx23(ValueRenderer, { json: value }) }),
1552
+ onRemove && /* @__PURE__ */ jsx23(TableCell, { children: /* @__PURE__ */ jsx23(Button, { variant: "secondary", onClick: () => onRemove(index), children: "Remove" }) })
1482
1553
  ] }, index)) })
1483
1554
  ] });
1484
1555
  }
1485
1556
 
1486
1557
  // src/inspector/viewer/page.tsx
1487
- import { Fragment as Fragment9, jsx as jsx23, jsxs as jsxs13 } from "react/jsx-runtime";
1558
+ import { Fragment as Fragment9, jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
1488
1559
  var BasePageContainer = React5.forwardRef(
1489
- ({ isTopLevel, ...rest }, ref) => /* @__PURE__ */ jsx23("div", { ref, ...rest })
1560
+ ({ isTopLevel, ...rest }, ref) => /* @__PURE__ */ jsx24("div", { ref, ...rest })
1490
1561
  );
1491
1562
  var PageContainer = styled14(BasePageContainer)`
1492
1563
  position: absolute;
@@ -1546,7 +1617,7 @@ function View(props) {
1546
1617
  const { node, onNavigate } = props;
1547
1618
  if (!snapshot || snapshot === "unavailable") return;
1548
1619
  if (type === "costream") {
1549
- return /* @__PURE__ */ jsx23(
1620
+ return /* @__PURE__ */ jsx24(
1550
1621
  CoStreamView,
1551
1622
  {
1552
1623
  data: snapshot,
@@ -1557,13 +1628,13 @@ function View(props) {
1557
1628
  );
1558
1629
  }
1559
1630
  if (extendedType === "group") {
1560
- return /* @__PURE__ */ jsx23(GroupView, { data: snapshot, node, onNavigate });
1631
+ return /* @__PURE__ */ jsx24(GroupView, { data: snapshot, node, onNavigate });
1561
1632
  }
1562
1633
  if (extendedType === "account") {
1563
- return /* @__PURE__ */ jsx23(AccountView, { data: snapshot, node, onNavigate });
1634
+ return /* @__PURE__ */ jsx24(AccountView, { data: snapshot, node, onNavigate });
1564
1635
  }
1565
1636
  if (type === "coplaintext") {
1566
- return /* @__PURE__ */ jsx23(CoPlainTextView, { data: snapshot });
1637
+ return /* @__PURE__ */ jsx24(CoPlainTextView, { data: snapshot });
1567
1638
  }
1568
1639
  if (type === "colist") {
1569
1640
  const handleRemove = (index) => {
@@ -1572,7 +1643,7 @@ function View(props) {
1572
1643
  list.delete(index);
1573
1644
  }
1574
1645
  };
1575
- return /* @__PURE__ */ jsx23(
1646
+ return /* @__PURE__ */ jsx24(
1576
1647
  TableView,
1577
1648
  {
1578
1649
  data: snapshot,
@@ -1583,9 +1654,9 @@ function View(props) {
1583
1654
  );
1584
1655
  }
1585
1656
  if (extendedType === "record") {
1586
- return /* @__PURE__ */ jsx23(TableView, { data: snapshot, node, onNavigate });
1657
+ return /* @__PURE__ */ jsx24(TableView, { data: snapshot, node, onNavigate });
1587
1658
  }
1588
- return /* @__PURE__ */ jsx23(GridView, { data: snapshot, onNavigate, node });
1659
+ return /* @__PURE__ */ jsx24(GridView, { data: snapshot, onNavigate, node });
1589
1660
  }
1590
1661
  function Page(props) {
1591
1662
  const {
@@ -1601,13 +1672,13 @@ function Page(props) {
1601
1672
  const coValue = useResolvedCoValue(coId, node);
1602
1673
  const { value, snapshot, type, extendedType } = coValue;
1603
1674
  if (snapshot === "unavailable") {
1604
- return /* @__PURE__ */ jsx23("div", { style, children: "Data unavailable" });
1675
+ return /* @__PURE__ */ jsx24("div", { style, children: "Data unavailable" });
1605
1676
  }
1606
1677
  if (!snapshot) {
1607
- return /* @__PURE__ */ jsx23("div", { style });
1678
+ return /* @__PURE__ */ jsx24("div", { style });
1608
1679
  }
1609
- return /* @__PURE__ */ jsxs13(PageContainer, { style, className, isTopLevel, children: [
1610
- !isTopLevel && /* @__PURE__ */ jsx23(
1680
+ return /* @__PURE__ */ jsxs14(PageContainer, { style, className, isTopLevel, children: [
1681
+ !isTopLevel && /* @__PURE__ */ jsx24(
1611
1682
  BackButton,
1612
1683
  {
1613
1684
  "aria-label": "Back",
@@ -1617,27 +1688,27 @@ function Page(props) {
1617
1688
  "aria-hidden": "true"
1618
1689
  }
1619
1690
  ),
1620
- /* @__PURE__ */ jsx23(HeaderContainer, { children: /* @__PURE__ */ jsxs13(TitleContainer, { children: [
1621
- /* @__PURE__ */ jsx23(Title, { children: /* @__PURE__ */ jsxs13("span", { children: [
1691
+ /* @__PURE__ */ jsx24(HeaderContainer, { children: /* @__PURE__ */ jsxs14(TitleContainer, { children: [
1692
+ /* @__PURE__ */ jsx24(Title, { children: /* @__PURE__ */ jsxs14("span", { children: [
1622
1693
  name,
1623
- typeof snapshot === "object" && "name" in snapshot ? /* @__PURE__ */ jsxs13("span", { style: { color: "#57534e", fontWeight: 500 }, children: [
1694
+ typeof snapshot === "object" && "name" in snapshot ? /* @__PURE__ */ jsxs14("span", { style: { color: "#57534e", fontWeight: 500 }, children: [
1624
1695
  " ",
1625
1696
  snapshot.name
1626
1697
  ] }) : null
1627
1698
  ] }) }),
1628
- /* @__PURE__ */ jsxs13(BadgeContainer, { children: [
1629
- /* @__PURE__ */ jsx23(Badge, { children: type && /* @__PURE__ */ jsx23(TypeIcon, { type, extendedType }) }),
1630
- /* @__PURE__ */ jsx23(Badge, { children: coId })
1699
+ /* @__PURE__ */ jsxs14(BadgeContainer, { children: [
1700
+ /* @__PURE__ */ jsx24(Badge, { children: type && /* @__PURE__ */ jsx24(TypeIcon, { type, extendedType }) }),
1701
+ /* @__PURE__ */ jsx24(Badge, { children: coId })
1631
1702
  ] })
1632
1703
  ] }) }),
1633
- /* @__PURE__ */ jsxs13(ContentContainer, { children: [
1634
- /* @__PURE__ */ jsx23(View, { ...props, coValue }),
1635
- extendedType !== "account" && extendedType !== "group" && /* @__PURE__ */ jsxs13(Fragment9, { children: [
1636
- /* @__PURE__ */ jsx23(RoleDisplay, { node, value }),
1637
- /* @__PURE__ */ jsxs13(Text, { muted: true, children: [
1704
+ /* @__PURE__ */ jsxs14(ContentContainer, { children: [
1705
+ /* @__PURE__ */ jsx24(View, { ...props, coValue }),
1706
+ extendedType !== "account" && extendedType !== "group" && /* @__PURE__ */ jsxs14(Fragment9, { children: [
1707
+ /* @__PURE__ */ jsx24(RoleDisplay, { node, value }),
1708
+ /* @__PURE__ */ jsxs14(Text, { muted: true, children: [
1638
1709
  "Owned by",
1639
1710
  " ",
1640
- /* @__PURE__ */ jsx23(
1711
+ /* @__PURE__ */ jsx24(
1641
1712
  AccountOrGroupText,
1642
1713
  {
1643
1714
  coId: value.group.id,
@@ -1655,7 +1726,7 @@ function Page(props) {
1655
1726
  }
1656
1727
 
1657
1728
  // src/inspector/viewer/page-stack.tsx
1658
- import { Fragment as Fragment10, jsx as jsx24, jsxs as jsxs14 } from "react/jsx-runtime";
1729
+ import { Fragment as Fragment10, jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
1659
1730
  var PageStackContainer = styled15("div")`
1660
1731
  position: relative;
1661
1732
  padding: 0 0.75rem;
@@ -1673,9 +1744,9 @@ function PageStack({
1673
1744
  }) {
1674
1745
  const page = path[path.length - 1];
1675
1746
  const index = path.length - 1;
1676
- return /* @__PURE__ */ jsx24(Fragment10, { children: /* @__PURE__ */ jsxs14(PageStackContainer, { children: [
1747
+ return /* @__PURE__ */ jsx25(Fragment10, { children: /* @__PURE__ */ jsxs15(PageStackContainer, { children: [
1677
1748
  children,
1678
- node && page && /* @__PURE__ */ jsx24(
1749
+ node && page && /* @__PURE__ */ jsx25(
1679
1750
  Page,
1680
1751
  {
1681
1752
  coId: page.coId,
@@ -1822,7 +1893,7 @@ var GlobalStyles = styled16("div")`
1822
1893
 
1823
1894
  // src/inspector/viewer/inspector-button.tsx
1824
1895
  import { styled as styled17 } from "goober";
1825
- import { jsx as jsx25, jsxs as jsxs15 } from "react/jsx-runtime";
1896
+ import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
1826
1897
  var StyledInspectorButton = styled17("button")`
1827
1898
  position: fixed;
1828
1899
  width: 2.5rem;
@@ -1865,8 +1936,8 @@ function InspectorButton({
1865
1936
  position = "right",
1866
1937
  ...buttonProps
1867
1938
  }) {
1868
- return /* @__PURE__ */ jsxs15(StyledInspectorButton, { position, ...buttonProps, children: [
1869
- /* @__PURE__ */ jsx25(
1939
+ return /* @__PURE__ */ jsxs16(StyledInspectorButton, { position, ...buttonProps, children: [
1940
+ /* @__PURE__ */ jsx26(
1870
1941
  JazzIcon,
1871
1942
  {
1872
1943
  xmlns: "http://www.w3.org/2000/svg",
@@ -1874,7 +1945,7 @@ function InspectorButton({
1874
1945
  height: "115",
1875
1946
  viewBox: "0 0 119 115",
1876
1947
  fill: "none",
1877
- children: /* @__PURE__ */ jsx25(
1948
+ children: /* @__PURE__ */ jsx26(
1878
1949
  "path",
1879
1950
  {
1880
1951
  fillRule: "evenodd",
@@ -1885,7 +1956,7 @@ function InspectorButton({
1885
1956
  )
1886
1957
  }
1887
1958
  ),
1888
- /* @__PURE__ */ jsx25(
1959
+ /* @__PURE__ */ jsx26(
1889
1960
  "span",
1890
1961
  {
1891
1962
  style: {
@@ -1922,7 +1993,7 @@ function useOpenInspector() {
1922
1993
  // src/inspector/ui/modal.tsx
1923
1994
  import { styled as styled18 } from "goober";
1924
1995
  import { forwardRef as forwardRef3, useEffect as useEffect7, useRef } from "react";
1925
- import { jsx as jsx26, jsxs as jsxs16 } from "react/jsx-runtime";
1996
+ import { jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
1926
1997
  var ModalContent = styled18("dialog")`
1927
1998
  background-color: var(--j-background);
1928
1999
  border-radius: var(--j-radius-lg);
@@ -2009,7 +2080,7 @@ var Modal = forwardRef3(
2009
2080
  onClose();
2010
2081
  };
2011
2082
  if (!isOpen) return null;
2012
- return /* @__PURE__ */ jsxs16(
2083
+ return /* @__PURE__ */ jsxs17(
2013
2084
  ModalContent,
2014
2085
  {
2015
2086
  ref: ref || modalRef,
@@ -2018,17 +2089,17 @@ var Modal = forwardRef3(
2018
2089
  "aria-labelledby": "modal-heading",
2019
2090
  onClose,
2020
2091
  children: [
2021
- /* @__PURE__ */ jsxs16(ModalHeader, { children: [
2022
- /* @__PURE__ */ jsx26(Heading, { id: "modal-heading", children: heading }),
2023
- /* @__PURE__ */ jsx26(CloseButton, { onClick: onClose, "aria-label": "Close modal", type: "button", children: "\xD7" })
2092
+ /* @__PURE__ */ jsxs17(ModalHeader, { children: [
2093
+ /* @__PURE__ */ jsx27(Heading, { id: "modal-heading", children: heading }),
2094
+ /* @__PURE__ */ jsx27(CloseButton, { onClick: onClose, "aria-label": "Close modal", type: "button", children: "\xD7" })
2024
2095
  ] }),
2025
- /* @__PURE__ */ jsxs16(ModalBody, { children: [
2026
- text && /* @__PURE__ */ jsx26("p", { style: { margin: "0 0 1rem 0", color: "var(--j-text-color)" }, children: text }),
2096
+ /* @__PURE__ */ jsxs17(ModalBody, { children: [
2097
+ text && /* @__PURE__ */ jsx27("p", { style: { margin: "0 0 1rem 0", color: "var(--j-text-color)" }, children: text }),
2027
2098
  children
2028
2099
  ] }),
2029
- showButtons && /* @__PURE__ */ jsxs16(ModalFooter, { children: [
2030
- /* @__PURE__ */ jsx26(Button, { variant: "secondary", onClick: handleCancel, children: cancelText }),
2031
- /* @__PURE__ */ jsx26(Button, { variant: "primary", onClick: handleConfirm, children: confirmText })
2100
+ showButtons && /* @__PURE__ */ jsxs17(ModalFooter, { children: [
2101
+ /* @__PURE__ */ jsx27(Button, { variant: "secondary", onClick: handleCancel, children: cancelText }),
2102
+ /* @__PURE__ */ jsx27(Button, { variant: "primary", onClick: handleConfirm, children: confirmText })
2032
2103
  ] })
2033
2104
  ]
2034
2105
  }
@@ -2039,14 +2110,14 @@ Modal.displayName = "Modal";
2039
2110
 
2040
2111
  // src/inspector/viewer/delete-local-data.tsx
2041
2112
  import { useState as useState9 } from "react";
2042
- import { Fragment as Fragment11, jsx as jsx27, jsxs as jsxs17 } from "react/jsx-runtime";
2113
+ import { Fragment as Fragment11, jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
2043
2114
  var DELETE_LOCAL_DATA_STRING = "delete my local data";
2044
2115
  function DeleteLocalData() {
2045
2116
  const [showDeleteModal, setShowDeleteModal] = useState9(false);
2046
2117
  const [confirmDeleteString, setConfirmDeleteString] = useState9("");
2047
- return /* @__PURE__ */ jsxs17(Fragment11, { children: [
2048
- /* @__PURE__ */ jsx27(Button, { variant: "destructive", onClick: () => setShowDeleteModal(true), children: "Delete my local data" }),
2049
- /* @__PURE__ */ jsxs17(
2118
+ return /* @__PURE__ */ jsxs18(Fragment11, { children: [
2119
+ /* @__PURE__ */ jsx28(Button, { variant: "destructive", onClick: () => setShowDeleteModal(true), children: "Delete my local data" }),
2120
+ /* @__PURE__ */ jsxs18(
2050
2121
  Modal,
2051
2122
  {
2052
2123
  isOpen: showDeleteModal,
@@ -2054,7 +2125,7 @@ function DeleteLocalData() {
2054
2125
  heading: "Delete Local Data",
2055
2126
  showButtons: false,
2056
2127
  children: [
2057
- /* @__PURE__ */ jsxs17(
2128
+ /* @__PURE__ */ jsxs18(
2058
2129
  "div",
2059
2130
  {
2060
2131
  style: {
@@ -2065,33 +2136,33 @@ function DeleteLocalData() {
2065
2136
  gap: "0.5rem"
2066
2137
  },
2067
2138
  children: [
2068
- /* @__PURE__ */ jsxs17("p", { children: [
2139
+ /* @__PURE__ */ jsxs18("p", { children: [
2069
2140
  "This action ",
2070
- /* @__PURE__ */ jsx27("strong", { children: "cannot" }),
2141
+ /* @__PURE__ */ jsx28("strong", { children: "cannot" }),
2071
2142
  " be undone."
2072
2143
  ] }),
2073
- /* @__PURE__ */ jsxs17("p", { children: [
2144
+ /* @__PURE__ */ jsxs18("p", { children: [
2074
2145
  "Be aware that the following data will be",
2075
2146
  " ",
2076
- /* @__PURE__ */ jsx27("strong", { children: "permanently" }),
2147
+ /* @__PURE__ */ jsx28("strong", { children: "permanently" }),
2077
2148
  " deleted:"
2078
2149
  ] }),
2079
- /* @__PURE__ */ jsxs17("ul", { style: { listStyleType: "disc", paddingLeft: "1rem" }, children: [
2080
- /* @__PURE__ */ jsxs17("li", { children: [
2150
+ /* @__PURE__ */ jsxs18("ul", { style: { listStyleType: "disc", paddingLeft: "1rem" }, children: [
2151
+ /* @__PURE__ */ jsxs18("li", { children: [
2081
2152
  "Unsynced data for ",
2082
- /* @__PURE__ */ jsx27("strong", { children: "all apps" }),
2153
+ /* @__PURE__ */ jsx28("strong", { children: "all apps" }),
2083
2154
  " on",
2084
2155
  " ",
2085
- /* @__PURE__ */ jsx27("code", { children: window.location.origin })
2156
+ /* @__PURE__ */ jsx28("code", { children: window.location.origin })
2086
2157
  ] }),
2087
- /* @__PURE__ */ jsx27("li", { children: "Accounts" }),
2088
- /* @__PURE__ */ jsx27("li", { children: "Logged in sessions" })
2158
+ /* @__PURE__ */ jsx28("li", { children: "Accounts" }),
2159
+ /* @__PURE__ */ jsx28("li", { children: "Logged in sessions" })
2089
2160
  ] }),
2090
- /* @__PURE__ */ jsx27("p", {})
2161
+ /* @__PURE__ */ jsx28("p", {})
2091
2162
  ]
2092
2163
  }
2093
2164
  ),
2094
- /* @__PURE__ */ jsx27(
2165
+ /* @__PURE__ */ jsx28(
2095
2166
  Input,
2096
2167
  {
2097
2168
  label: `Type "${DELETE_LOCAL_DATA_STRING}" to confirm`,
@@ -2102,7 +2173,7 @@ function DeleteLocalData() {
2102
2173
  }
2103
2174
  }
2104
2175
  ),
2105
- /* @__PURE__ */ jsx27(
2176
+ /* @__PURE__ */ jsx28(
2106
2177
  "p",
2107
2178
  {
2108
2179
  style: {
@@ -2112,14 +2183,14 @@ function DeleteLocalData() {
2112
2183
  flexDirection: "column",
2113
2184
  gap: "0.5rem"
2114
2185
  },
2115
- children: /* @__PURE__ */ jsxs17("small", { children: [
2186
+ children: /* @__PURE__ */ jsxs18("small", { children: [
2116
2187
  "Data synced to a sync server will ",
2117
- /* @__PURE__ */ jsx27("strong", { children: "not" }),
2188
+ /* @__PURE__ */ jsx28("strong", { children: "not" }),
2118
2189
  " be deleted, and will be synced when you log in again."
2119
2190
  ] })
2120
2191
  }
2121
2192
  ),
2122
- /* @__PURE__ */ jsxs17(
2193
+ /* @__PURE__ */ jsxs18(
2123
2194
  "div",
2124
2195
  {
2125
2196
  style: {
@@ -2129,8 +2200,8 @@ function DeleteLocalData() {
2129
2200
  gap: "0.5rem"
2130
2201
  },
2131
2202
  children: [
2132
- /* @__PURE__ */ jsx27(Button, { variant: "secondary", onClick: () => setShowDeleteModal(false), children: "Cancel" }),
2133
- /* @__PURE__ */ jsx27(
2203
+ /* @__PURE__ */ jsx28(Button, { variant: "secondary", onClick: () => setShowDeleteModal(false), children: "Cancel" }),
2204
+ /* @__PURE__ */ jsx28(
2134
2205
  Button,
2135
2206
  {
2136
2207
  variant: "destructive",
@@ -2157,7 +2228,7 @@ function DeleteLocalData() {
2157
2228
  }
2158
2229
 
2159
2230
  // src/inspector/viewer/new-app.tsx
2160
- import { Fragment as Fragment12, jsx as jsx28, jsxs as jsxs18 } from "react/jsx-runtime";
2231
+ import { Fragment as Fragment12, jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
2161
2232
  var InspectorContainer = styled19("div")`
2162
2233
  position: fixed;
2163
2234
  height: 50vh;
@@ -2216,12 +2287,12 @@ function JazzInspectorInternal({
2216
2287
  setCoValueId("");
2217
2288
  };
2218
2289
  if (!open) {
2219
- return /* @__PURE__ */ jsx28(InspectorButton, { position, onClick: () => setOpen(true) });
2290
+ return /* @__PURE__ */ jsx29(InspectorButton, { position, onClick: () => setOpen(true) });
2220
2291
  }
2221
- return /* @__PURE__ */ jsxs18(InspectorContainer, { as: GlobalStyles, style: { zIndex: 999 }, children: [
2222
- /* @__PURE__ */ jsxs18(HeaderContainer2, { children: [
2223
- /* @__PURE__ */ jsx28(Breadcrumbs, { path, onBreadcrumbClick: goToIndex }),
2224
- /* @__PURE__ */ jsx28(Form, { onSubmit: handleCoValueIdSubmit, children: path.length !== 0 && /* @__PURE__ */ jsx28(
2292
+ return /* @__PURE__ */ jsxs19(InspectorContainer, { as: GlobalStyles, style: { zIndex: 999 }, children: [
2293
+ /* @__PURE__ */ jsxs19(HeaderContainer2, { children: [
2294
+ /* @__PURE__ */ jsx29(Breadcrumbs, { path, onBreadcrumbClick: goToIndex }),
2295
+ /* @__PURE__ */ jsx29(Form, { onSubmit: handleCoValueIdSubmit, children: path.length !== 0 && /* @__PURE__ */ jsx29(
2225
2296
  Input,
2226
2297
  {
2227
2298
  label: "CoValue ID",
@@ -2232,24 +2303,24 @@ function JazzInspectorInternal({
2232
2303
  onChange: (e) => setCoValueId(e.target.value)
2233
2304
  }
2234
2305
  ) }),
2235
- /* @__PURE__ */ jsx28(DeleteLocalData, {}),
2236
- /* @__PURE__ */ jsx28(Button, { variant: "plain", type: "button", onClick: () => setOpen(false), children: "Close" })
2306
+ /* @__PURE__ */ jsx29(DeleteLocalData, {}),
2307
+ /* @__PURE__ */ jsx29(Button, { variant: "plain", type: "button", onClick: () => setOpen(false), children: "Close" })
2237
2308
  ] }),
2238
- /* @__PURE__ */ jsx28(
2309
+ /* @__PURE__ */ jsx29(
2239
2310
  PageStack,
2240
2311
  {
2241
2312
  path,
2242
2313
  node: localNode,
2243
2314
  goBack,
2244
2315
  addPages,
2245
- children: path.length <= 0 && /* @__PURE__ */ jsxs18(
2316
+ children: path.length <= 0 && /* @__PURE__ */ jsxs19(
2246
2317
  InitialForm,
2247
2318
  {
2248
2319
  onSubmit: handleCoValueIdSubmit,
2249
2320
  "aria-hidden": path.length !== 0,
2250
2321
  children: [
2251
- /* @__PURE__ */ jsx28(Heading, { children: "Jazz CoValue Inspector" }),
2252
- /* @__PURE__ */ jsx28(
2322
+ /* @__PURE__ */ jsx29(Heading, { children: "Jazz CoValue Inspector" }),
2323
+ /* @__PURE__ */ jsx29(
2253
2324
  Input,
2254
2325
  {
2255
2326
  label: "CoValue ID",
@@ -2260,10 +2331,10 @@ function JazzInspectorInternal({
2260
2331
  onChange: (e) => setCoValueId(e.target.value)
2261
2332
  }
2262
2333
  ),
2263
- /* @__PURE__ */ jsx28(Button, { type: "submit", variant: "primary", children: "Inspect CoValue" }),
2264
- accountId && /* @__PURE__ */ jsxs18(Fragment12, { children: [
2265
- /* @__PURE__ */ jsx28(OrText, { children: "or" }),
2266
- /* @__PURE__ */ jsx28(
2334
+ /* @__PURE__ */ jsx29(Button, { type: "submit", variant: "primary", children: "Inspect CoValue" }),
2335
+ accountId && /* @__PURE__ */ jsxs19(Fragment12, { children: [
2336
+ /* @__PURE__ */ jsx29(OrText, { children: "or" }),
2337
+ /* @__PURE__ */ jsx29(
2267
2338
  Button,
2268
2339
  {
2269
2340
  variant: "secondary",
@@ -2286,7 +2357,7 @@ function JazzInspectorInternal({
2286
2357
  // src/inspector/ui/select.tsx
2287
2358
  import { styled as styled20 } from "goober";
2288
2359
  import { useId as useId2 } from "react";
2289
- import { jsx as jsx29, jsxs as jsxs19 } from "react/jsx-runtime";
2360
+ import { jsx as jsx30, jsxs as jsxs20 } from "react/jsx-runtime";
2290
2361
  var SelectContainer = styled20("div")`
2291
2362
  display: grid;
2292
2363
  gap: 0.25rem;
@@ -2328,11 +2399,11 @@ function Select(props) {
2328
2399
  const { label, hideLabel, id: customId, className, ...selectProps } = props;
2329
2400
  const generatedId = useId2();
2330
2401
  const id = customId || generatedId;
2331
- return /* @__PURE__ */ jsxs19(SelectContainer, { className, children: [
2332
- /* @__PURE__ */ jsx29("label", { htmlFor: id, className: hideLabel ? "j-sr-only" : "", children: label }),
2333
- /* @__PURE__ */ jsxs19(SelectWrapper, { children: [
2334
- /* @__PURE__ */ jsx29(StyledSelect, { ...selectProps, id, children: props.children }),
2335
- /* @__PURE__ */ jsx29(SelectIcon, { children: /* @__PURE__ */ jsx29(Icon, { name: "chevronDown", size: "sm" }) })
2402
+ return /* @__PURE__ */ jsxs20(SelectContainer, { className, children: [
2403
+ /* @__PURE__ */ jsx30("label", { htmlFor: id, className: hideLabel ? "j-sr-only" : "", children: label }),
2404
+ /* @__PURE__ */ jsxs20(SelectWrapper, { children: [
2405
+ /* @__PURE__ */ jsx30(StyledSelect, { ...selectProps, id, children: props.children }),
2406
+ /* @__PURE__ */ jsx30(SelectIcon, { children: /* @__PURE__ */ jsx30(Icon, { name: "chevronDown", size: "sm" }) })
2336
2407
  ] })
2337
2408
  ] });
2338
2409
  }
@@ -2340,13 +2411,13 @@ function Select(props) {
2340
2411
  // src/inspector/index.tsx
2341
2412
  import { setup } from "goober";
2342
2413
  import { useJazzContext } from "jazz-tools/react-core";
2343
- import { jsx as jsx30 } from "react/jsx-runtime";
2414
+ import { jsx as jsx31 } from "react/jsx-runtime";
2344
2415
  function JazzInspector({ position = "right" }) {
2345
2416
  const context = useJazzContext();
2346
2417
  const localNode = context.node;
2347
2418
  const me = "me" in context ? context.me : void 0;
2348
2419
  if (process.env.NODE_ENV !== "development") return null;
2349
- return /* @__PURE__ */ jsx30(
2420
+ return /* @__PURE__ */ jsx31(
2350
2421
  JazzInspectorInternal,
2351
2422
  {
2352
2423
  position,