@localstack/appinspector-ui 1.0.80 → 1.0.81

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/index.js CHANGED
@@ -483,17 +483,17 @@ var init_event_streams = __esm({
483
483
  });
484
484
 
485
485
  // src/pages/spans-list-page.tsx
486
- import { Box as Box18 } from "@mui/material";
487
- import { useCallback as useCallback10, useState as useState16 } from "react";
486
+ import { Box as Box19 } from "@mui/material";
487
+ import { useCallback as useCallback10, useState as useState17 } from "react";
488
488
 
489
489
  // src/components/spans-list/spans-list.tsx
490
- import { Alert, Box as Box4, Button as Button2 } from "@mui/material";
490
+ import { Alert, Box as Box5, Button as Button3 } from "@mui/material";
491
491
 
492
492
  // src/components/spans-list/spans-data-grid.tsx
493
493
  import { DeleteForeverOutlined, PauseOutlined, PlayArrowOutlined } from "@mui/icons-material";
494
494
  import {
495
- Box as Box3,
496
- Button,
495
+ Box as Box4,
496
+ Button as Button2,
497
497
  CircularProgress,
498
498
  FormControlLabel,
499
499
  Grid,
@@ -505,8 +505,8 @@ import {
505
505
  TableHead,
506
506
  TableRow,
507
507
  TableSortLabel,
508
- Tooltip as Tooltip2,
509
- Typography as Typography2,
508
+ Tooltip as Tooltip3,
509
+ Typography as Typography3,
510
510
  useTheme as useTheme2
511
511
  } from "@mui/material";
512
512
 
@@ -12661,8 +12661,140 @@ var ServiceCell = memo7(({
12661
12661
  });
12662
12662
  ServiceCell.displayName = "ServiceCell";
12663
12663
 
12664
- // src/components/spans-list/spans-data-grid.tsx
12664
+ // src/components/spans-list/span-count-badge.tsx
12665
+ import { InfoOutlined, WarningAmberOutlined } from "@mui/icons-material";
12666
+ import { Box as Box3, Button, Divider as Divider2, IconButton, Popover, Skeleton, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
12667
+ import { useState as useState4 } from "react";
12665
12668
  import { Fragment as Fragment3, jsx as jsx124, jsxs as jsxs120 } from "react/jsx-runtime";
12669
+ var resolveBindingLimit = (systemLimit, licenseLimit) => {
12670
+ const numericLimits = [systemLimit, licenseLimit].filter((l2) => typeof l2 === "number");
12671
+ if (numericLimits.length > 0) return Math.min(...numericLimits);
12672
+ if (systemLimit === "unlimited" || licenseLimit === "unlimited") return "unlimited";
12673
+ return void 0;
12674
+ };
12675
+ var fmt = (n2) => n2.toLocaleString();
12676
+ var fmtLimit = (value) => {
12677
+ if (value === void 0) return "\u2014";
12678
+ if (value === "unlimited") return "Unlimited";
12679
+ return fmt(value);
12680
+ };
12681
+ var StatRow = ({ label, value }) => /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
12682
+ /* @__PURE__ */ jsx124(Typography2, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
12683
+ /* @__PURE__ */ jsx124(Typography2, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
12684
+ ] });
12685
+ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) => {
12686
+ const [anchorElement, setAnchorElement] = useState4();
12687
+ const bindingLimit = resolveBindingLimit(systemLimit, licenseLimit);
12688
+ if (totalCount === void 0 && bindingLimit === void 0) {
12689
+ return /* @__PURE__ */ jsx124(Fragment3, {});
12690
+ }
12691
+ if (visibleCount !== void 0) totalCount = Math.max(totalCount ?? 0, visibleCount);
12692
+ const isLoading = totalCount === void 0;
12693
+ const isOpen = anchorElement !== void 0;
12694
+ const systemLimitReached = typeof systemLimit === "number" && totalCount !== void 0 && totalCount >= systemLimit;
12695
+ const licenseLimitReached = typeof licenseLimit === "number" && totalCount !== void 0 && totalCount >= licenseLimit;
12696
+ return /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
12697
+ isLoading ? /* @__PURE__ */ jsx124(Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
12698
+ /* @__PURE__ */ jsx124(Typography2, { color: "text.secondary", variant: "caption", children: "Showing" }),
12699
+ /* @__PURE__ */ jsx124(Typography2, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
12700
+ /* @__PURE__ */ jsx124(Typography2, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
12701
+ ] }),
12702
+ /* @__PURE__ */ jsx124(Tooltip2, { title: "Operation count details", children: /* @__PURE__ */ jsx124(
12703
+ IconButton,
12704
+ {
12705
+ "aria-describedby": isOpen ? "operation-count-popover" : void 0,
12706
+ onClick: (event) => {
12707
+ setAnchorElement(isOpen ? void 0 : event.currentTarget);
12708
+ },
12709
+ size: "small",
12710
+ sx: { color: systemLimitReached || licenseLimitReached ? "warning.main" : "text.disabled" },
12711
+ children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ jsx124(WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ jsx124(InfoOutlined, { sx: { fontSize: 14 } })
12712
+ }
12713
+ ) }),
12714
+ /* @__PURE__ */ jsx124(
12715
+ Popover,
12716
+ {
12717
+ anchorEl: anchorElement,
12718
+ anchorOrigin: { horizontal: "right", vertical: "bottom" },
12719
+ id: "operation-count-popover",
12720
+ onClose: () => {
12721
+ setAnchorElement(void 0);
12722
+ },
12723
+ open: isOpen,
12724
+ transformOrigin: { horizontal: "right", vertical: "top" },
12725
+ children: /* @__PURE__ */ jsxs120(Box3, { sx: { minWidth: 240, p: 2 }, children: [
12726
+ /* @__PURE__ */ jsx124(Typography2, { fontWeight: 700, variant: "body2", children: "Storage" }),
12727
+ /* @__PURE__ */ jsx124(Typography2, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
12728
+ /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
12729
+ /* @__PURE__ */ jsx124(
12730
+ StatRow,
12731
+ {
12732
+ label: /* @__PURE__ */ jsx124(Tooltip2, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ jsx124(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
12733
+ value: visibleCount
12734
+ }
12735
+ ),
12736
+ /* @__PURE__ */ jsx124(
12737
+ StatRow,
12738
+ {
12739
+ label: /* @__PURE__ */ jsx124(Tooltip2, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ jsx124(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
12740
+ value: totalCount
12741
+ }
12742
+ )
12743
+ ] }),
12744
+ (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ jsxs120(Fragment3, { children: [
12745
+ /* @__PURE__ */ jsx124(Divider2, { sx: { my: 1.5 } }),
12746
+ /* @__PURE__ */ jsx124(Typography2, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
12747
+ /* @__PURE__ */ jsx124(Typography2, { color: "text.secondary", sx: { display: "block", mb: 1.5, mt: 0.25 }, variant: "caption", children: "Limits restrict the total number of operations that can be stored." }),
12748
+ /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
12749
+ licenseLimit !== void 0 && /* @__PURE__ */ jsx124(
12750
+ StatRow,
12751
+ {
12752
+ label: /* @__PURE__ */ jsx124(Tooltip2, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ jsx124(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
12753
+ value: licenseLimit
12754
+ }
12755
+ ),
12756
+ systemLimit !== void 0 && /* @__PURE__ */ jsx124(
12757
+ StatRow,
12758
+ {
12759
+ label: /* @__PURE__ */ jsx124(Tooltip2, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ jsx124(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
12760
+ value: systemLimit
12761
+ }
12762
+ )
12763
+ ] })
12764
+ ] }),
12765
+ (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
12766
+ licenseLimitReached && /* @__PURE__ */ jsxs120(Box3, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
12767
+ /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
12768
+ /* @__PURE__ */ jsx124(WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
12769
+ /* @__PURE__ */ jsx124(Typography2, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
12770
+ ] }),
12771
+ /* @__PURE__ */ jsx124(Typography2, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
12772
+ /* @__PURE__ */ jsx124(
12773
+ Button,
12774
+ {
12775
+ color: "inherit",
12776
+ href: "https://localstack.cloud/pricing",
12777
+ size: "small",
12778
+ sx: { color: "warning.contrastText", fontWeight: 600, p: 0, textDecoration: "underline" },
12779
+ target: "_blank",
12780
+ variant: "text",
12781
+ children: "Upgrade license \u2192"
12782
+ }
12783
+ )
12784
+ ] }),
12785
+ systemLimitReached && !licenseLimitReached && /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
12786
+ /* @__PURE__ */ jsx124(WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
12787
+ /* @__PURE__ */ jsx124(Typography2, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
12788
+ ] })
12789
+ ] })
12790
+ ] })
12791
+ }
12792
+ )
12793
+ ] });
12794
+ };
12795
+
12796
+ // src/components/spans-list/spans-data-grid.tsx
12797
+ import { Fragment as Fragment4, jsx as jsx125, jsxs as jsxs121 } from "react/jsx-runtime";
12666
12798
  var columnHelper = createColumnHelper();
12667
12799
  var newSpanBackgroundColor = {
12668
12800
  dark: { from: "rgba(136, 123, 2, 1)", to: "rgba(136, 123, 2, 0)" },
@@ -12673,15 +12805,15 @@ var LABEL_END_OF_STREAM = "This is the end of the stream";
12673
12805
  var LABEL_NO_SPANS = "There are no spans";
12674
12806
  var LABEL_LOAD_OLDER = "Load older spans";
12675
12807
  var LABEL_LOAD_NEWER = "Load newer spans";
12676
- var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ jsx124(TableRow, { children: /* @__PURE__ */ jsx124(TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx124("span", { children: label }) }) });
12677
- var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ jsx124(TableRow, { children: /* @__PURE__ */ jsxs120(TableCell, { colSpan, sx: { textAlign: "center" }, children: [
12678
- !fetching && /* @__PURE__ */ jsx124(Button, { onClick: onFetch, sx: { my: 1 }, children: label }),
12679
- fetching && /* @__PURE__ */ jsx124(CircularProgress, { size: 24, sx: { m: 2 } })
12808
+ var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ jsx125(TableRow, { children: /* @__PURE__ */ jsx125(TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx125("span", { children: label }) }) });
12809
+ var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ jsx125(TableRow, { children: /* @__PURE__ */ jsxs121(TableCell, { colSpan, sx: { textAlign: "center" }, children: [
12810
+ !fetching && /* @__PURE__ */ jsx125(Button2, { onClick: onFetch, sx: { my: 1 }, children: label }),
12811
+ fetching && /* @__PURE__ */ jsx125(CircularProgress, { size: 24, sx: { m: 2 } })
12680
12812
  ] }) });
12681
12813
  var SpansDataGridRow = memo8(
12682
12814
  ({ row }) => {
12683
12815
  const theme = useTheme2();
12684
- return /* @__PURE__ */ jsx124(
12816
+ return /* @__PURE__ */ jsx125(
12685
12817
  TableRow,
12686
12818
  {
12687
12819
  animate: {
@@ -12695,7 +12827,7 @@ var SpansDataGridRow = memo8(
12695
12827
  transition: "background-color 1200ms ease-in"
12696
12828
  },
12697
12829
  children: row.getVisibleCells().map((cell) => {
12698
- return /* @__PURE__ */ jsx124(
12830
+ return /* @__PURE__ */ jsx125(
12699
12831
  TableCell,
12700
12832
  {
12701
12833
  sx: {
@@ -12703,8 +12835,8 @@ var SpansDataGridRow = memo8(
12703
12835
  maxWidth: `${cell.column.getSize().toString()}px`,
12704
12836
  minWidth: `${cell.column.getSize().toString()}px`
12705
12837
  },
12706
- children: /* @__PURE__ */ jsx124(
12707
- Box3,
12838
+ children: /* @__PURE__ */ jsx125(
12839
+ Box4,
12708
12840
  {
12709
12841
  sx: {
12710
12842
  "alignItems": "center",
@@ -12716,7 +12848,7 @@ var SpansDataGridRow = memo8(
12716
12848
  },
12717
12849
  "width": "100%"
12718
12850
  },
12719
- children: /* @__PURE__ */ jsx124(Box3, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
12851
+ children: /* @__PURE__ */ jsx125(Box4, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
12720
12852
  }
12721
12853
  )
12722
12854
  },
@@ -12736,6 +12868,7 @@ var SpansDataGrid = ({
12736
12868
  fetchingForward,
12737
12869
  hasMoreBackward,
12738
12870
  hasMoreForward,
12871
+ licenseLimit,
12739
12872
  onClearSpans,
12740
12873
  onFetchBackward,
12741
12874
  onFetchForward,
@@ -12744,18 +12877,20 @@ var SpansDataGrid = ({
12744
12877
  onToggleStream,
12745
12878
  order: order2,
12746
12879
  spans,
12747
- streamPaused
12880
+ streamPaused,
12881
+ systemLimit,
12882
+ totalCount
12748
12883
  }) => {
12749
12884
  const columns = useMemo5(() => [
12750
12885
  columnHelper.accessor("trace_id", {
12751
- cell: (props) => /* @__PURE__ */ jsx124(
12752
- Box3,
12886
+ cell: (props) => /* @__PURE__ */ jsx125(
12887
+ Box4,
12753
12888
  {
12754
12889
  sx: {
12755
12890
  overflow: "hidden",
12756
12891
  textOverflow: "ellipsis"
12757
12892
  },
12758
- children: /* @__PURE__ */ jsx124(Tooltip2, { arrow: true, title: props.getValue(), children: /* @__PURE__ */ jsx124("span", { children: props.getValue() }) })
12893
+ children: /* @__PURE__ */ jsx125(Tooltip3, { arrow: true, title: props.getValue(), children: /* @__PURE__ */ jsx125("span", { children: props.getValue() }) })
12759
12894
  }
12760
12895
  ),
12761
12896
  header: "Trace",
@@ -12763,8 +12898,8 @@ var SpansDataGrid = ({
12763
12898
  maxSize: 120
12764
12899
  }),
12765
12900
  columnHelper.accessor("startTime", {
12766
- cell: (props) => /* @__PURE__ */ jsx124(ResponsiveTimestampCell, { date: props.getValue() }),
12767
- header: () => /* @__PURE__ */ jsx124(
12901
+ cell: (props) => /* @__PURE__ */ jsx125(ResponsiveTimestampCell, { date: props.getValue() }),
12902
+ header: () => /* @__PURE__ */ jsx125(
12768
12903
  TableSortLabel,
12769
12904
  {
12770
12905
  active: true,
@@ -12781,23 +12916,23 @@ var SpansDataGrid = ({
12781
12916
  columnHelper.display({
12782
12917
  cell: (props) => {
12783
12918
  if (!props.row.original.parent_service_name || !props.row.original.parent_resource_name) {
12784
- return /* @__PURE__ */ jsx124(Typography2, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
12919
+ return /* @__PURE__ */ jsx125(Typography3, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
12785
12920
  }
12786
- return /* @__PURE__ */ jsx124(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
12921
+ return /* @__PURE__ */ jsx125(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
12787
12922
  },
12788
12923
  header: "Producer",
12789
12924
  id: "producer",
12790
12925
  size: 180
12791
12926
  }),
12792
12927
  columnHelper.accessor("operation_name", {
12793
- cell: (props) => /* @__PURE__ */ jsx124(
12794
- Box3,
12928
+ cell: (props) => /* @__PURE__ */ jsx125(
12929
+ Box4,
12795
12930
  {
12796
12931
  sx: {
12797
12932
  overflow: "hidden",
12798
12933
  textOverflow: "ellipsis"
12799
12934
  },
12800
- children: /* @__PURE__ */ jsx124("span", { title: props.getValue(), children: props.getValue() })
12935
+ children: /* @__PURE__ */ jsx125("span", { title: props.getValue(), children: props.getValue() })
12801
12936
  }
12802
12937
  ),
12803
12938
  header: "Action",
@@ -12806,7 +12941,7 @@ var SpansDataGrid = ({
12806
12941
  }),
12807
12942
  columnHelper.display({
12808
12943
  cell: (props) => {
12809
- return /* @__PURE__ */ jsx124(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
12944
+ return /* @__PURE__ */ jsx125(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
12810
12945
  },
12811
12946
  header: "Consumer",
12812
12947
  id: "consumer",
@@ -12814,8 +12949,8 @@ var SpansDataGrid = ({
12814
12949
  }),
12815
12950
  columnHelper.display({
12816
12951
  cell: (props) => {
12817
- return /* @__PURE__ */ jsx124(Box3, { sx: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx124(
12818
- Button,
12952
+ return /* @__PURE__ */ jsx125(Box4, { sx: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx125(
12953
+ Button2,
12819
12954
  {
12820
12955
  onClick: () => {
12821
12956
  onSpanClick(props.row.original);
@@ -12840,17 +12975,18 @@ var SpansDataGrid = ({
12840
12975
  const columnCount = table.getAllColumns().length;
12841
12976
  const rows = table.getRowModel().rows;
12842
12977
  const hasRows = rows.length > 0;
12843
- return /* @__PURE__ */ jsxs120(Fragment3, { children: [
12844
- /* @__PURE__ */ jsx124(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
12845
- /* @__PURE__ */ jsx124(Box3, { sx: { flexGrow: 1 } }),
12846
- /* @__PURE__ */ jsx124(
12978
+ return /* @__PURE__ */ jsxs121(Fragment4, { children: [
12979
+ /* @__PURE__ */ jsx125(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
12980
+ /* @__PURE__ */ jsx125(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
12981
+ /* @__PURE__ */ jsx125(Box4, { sx: { flexGrow: 1 } }),
12982
+ /* @__PURE__ */ jsx125(
12847
12983
  FormControlLabel,
12848
12984
  {
12849
- control: /* @__PURE__ */ jsx124(
12850
- Button,
12985
+ control: /* @__PURE__ */ jsx125(
12986
+ Button2,
12851
12987
  {
12852
12988
  onClick: onToggleStream,
12853
- startIcon: streamPaused ? /* @__PURE__ */ jsx124(PlayArrowOutlined, {}) : /* @__PURE__ */ jsx124(PauseOutlined, {}),
12989
+ startIcon: streamPaused ? /* @__PURE__ */ jsx125(PlayArrowOutlined, {}) : /* @__PURE__ */ jsx125(PauseOutlined, {}),
12854
12990
  variant: "text",
12855
12991
  children: streamPaused ? "Resume Stream" : "Pause Stream"
12856
12992
  }
@@ -12858,14 +12994,14 @@ var SpansDataGrid = ({
12858
12994
  label: ""
12859
12995
  }
12860
12996
  ),
12861
- /* @__PURE__ */ jsx124(
12997
+ /* @__PURE__ */ jsx125(
12862
12998
  FormControlLabel,
12863
12999
  {
12864
- control: /* @__PURE__ */ jsx124(
12865
- Button,
13000
+ control: /* @__PURE__ */ jsx125(
13001
+ Button2,
12866
13002
  {
12867
13003
  onClick: onClearSpans,
12868
- startIcon: /* @__PURE__ */ jsx124(DeleteForeverOutlined, {}),
13004
+ startIcon: /* @__PURE__ */ jsx125(DeleteForeverOutlined, {}),
12869
13005
  children: "Clear Spans"
12870
13006
  }
12871
13007
  ),
@@ -12874,7 +13010,7 @@ var SpansDataGrid = ({
12874
13010
  }
12875
13011
  )
12876
13012
  ] }) }),
12877
- /* @__PURE__ */ jsx124(Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ jsx124(
13013
+ /* @__PURE__ */ jsx125(Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ jsx125(
12878
13014
  TableContainer,
12879
13015
  {
12880
13016
  sx: {
@@ -12885,7 +13021,7 @@ var SpansDataGrid = ({
12885
13021
  right: 0,
12886
13022
  top: 0
12887
13023
  },
12888
- children: /* @__PURE__ */ jsxs120(
13024
+ children: /* @__PURE__ */ jsxs121(
12889
13025
  Table,
12890
13026
  {
12891
13027
  stickyHeader: true,
@@ -12897,8 +13033,8 @@ var SpansDataGrid = ({
12897
13033
  "th+th": { pl: "8px !important" }
12898
13034
  },
12899
13035
  children: [
12900
- /* @__PURE__ */ jsx124(TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
12901
- return /* @__PURE__ */ jsx124(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx124(
13036
+ /* @__PURE__ */ jsx125(TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
13037
+ return /* @__PURE__ */ jsx125(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx125(
12902
13038
  TableCell,
12903
13039
  {
12904
13040
  colSpan: header.colSpan,
@@ -12913,31 +13049,31 @@ var SpansDataGrid = ({
12913
13049
  header.id
12914
13050
  )) }, headerGroup.id);
12915
13051
  }) }),
12916
- /* @__PURE__ */ jsxs120(TableBody, { children: [
12917
- (spans === void 0 || clearingSpans) && /* @__PURE__ */ jsx124(TableRow, { children: /* @__PURE__ */ jsx124(TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx124(CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
12918
- !clearingSpans && spans?.length === 0 && /* @__PURE__ */ jsx124(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
12919
- !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ jsxs120(Fragment3, { children: [
12920
- hasRows && hasMoreForward && /* @__PURE__ */ jsx124(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
12921
- hasRows && !hasMoreForward && /* @__PURE__ */ jsx124(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
12922
- hasRows && /* @__PURE__ */ jsx124(AnimatePresence, { initial: false, children: (() => {
13052
+ /* @__PURE__ */ jsxs121(TableBody, { children: [
13053
+ (spans === void 0 || clearingSpans) && /* @__PURE__ */ jsx125(TableRow, { children: /* @__PURE__ */ jsx125(TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx125(CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
13054
+ !clearingSpans && spans?.length === 0 && /* @__PURE__ */ jsx125(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
13055
+ !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ jsxs121(Fragment4, { children: [
13056
+ hasRows && hasMoreForward && /* @__PURE__ */ jsx125(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
13057
+ hasRows && !hasMoreForward && /* @__PURE__ */ jsx125(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
13058
+ hasRows && /* @__PURE__ */ jsx125(AnimatePresence, { initial: false, children: (() => {
12923
13059
  const reversed = [];
12924
13060
  for (let index = rows.length - 1; index >= 0; index--) {
12925
13061
  const row = rows.at(index);
12926
13062
  reversed.push(
12927
- /* @__PURE__ */ jsx124(SpansDataGridRow, { row }, row.original.span_id)
13063
+ /* @__PURE__ */ jsx125(SpansDataGridRow, { row }, row.original.span_id)
12928
13064
  );
12929
13065
  }
12930
13066
  return reversed;
12931
13067
  })() }),
12932
- hasRows && hasMoreBackward && /* @__PURE__ */ jsx124(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
12933
- hasRows && !hasMoreBackward && /* @__PURE__ */ jsx124(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
13068
+ hasRows && hasMoreBackward && /* @__PURE__ */ jsx125(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
13069
+ hasRows && !hasMoreBackward && /* @__PURE__ */ jsx125(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
12934
13070
  ] }),
12935
- !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ jsxs120(Fragment3, { children: [
12936
- hasRows && !hasMoreBackward && /* @__PURE__ */ jsx124(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
12937
- hasRows && hasMoreBackward && /* @__PURE__ */ jsx124(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
12938
- hasRows && /* @__PURE__ */ jsx124(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ jsx124(SpansDataGridRow, { row }, row.original.span_id)) }),
12939
- hasRows && hasMoreForward && /* @__PURE__ */ jsx124(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
12940
- hasRows && !hasMoreForward && /* @__PURE__ */ jsx124(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
13071
+ !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ jsxs121(Fragment4, { children: [
13072
+ hasRows && !hasMoreBackward && /* @__PURE__ */ jsx125(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
13073
+ hasRows && hasMoreBackward && /* @__PURE__ */ jsx125(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
13074
+ hasRows && /* @__PURE__ */ jsx125(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ jsx125(SpansDataGridRow, { row }, row.original.span_id)) }),
13075
+ hasRows && hasMoreForward && /* @__PURE__ */ jsx125(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
13076
+ hasRows && !hasMoreForward && /* @__PURE__ */ jsx125(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
12941
13077
  ] })
12942
13078
  ] })
12943
13079
  ]
@@ -12949,13 +13085,13 @@ var SpansDataGrid = ({
12949
13085
  };
12950
13086
 
12951
13087
  // src/components/spans-list/spans-list.tsx
12952
- import { jsx as jsx125, jsxs as jsxs121 } from "react/jsx-runtime";
13088
+ import { jsx as jsx126, jsxs as jsxs122 } from "react/jsx-runtime";
12953
13089
  var SpansList = (props) => {
12954
- return /* @__PURE__ */ jsxs121(Box4, { "data-testid": "spans-data-grid", sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
12955
- props.fetchError && /* @__PURE__ */ jsxs121(
13090
+ return /* @__PURE__ */ jsxs122(Box5, { "data-testid": "spans-data-grid", sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
13091
+ props.fetchError && /* @__PURE__ */ jsxs122(
12956
13092
  Alert,
12957
13093
  {
12958
- action: /* @__PURE__ */ jsx125(Button2, { onClick: props.onFetchForward, children: "Retry" }),
13094
+ action: /* @__PURE__ */ jsx126(Button3, { onClick: props.onFetchForward, children: "Retry" }),
12959
13095
  severity: "error",
12960
13096
  children: [
12961
13097
  "Unexpected error:",
@@ -12964,7 +13100,7 @@ var SpansList = (props) => {
12964
13100
  ]
12965
13101
  }
12966
13102
  ),
12967
- /* @__PURE__ */ jsx125(
13103
+ /* @__PURE__ */ jsx126(
12968
13104
  SpansDataGrid,
12969
13105
  {
12970
13106
  clearingSpans: props.clearingSpans,
@@ -12972,6 +13108,7 @@ var SpansList = (props) => {
12972
13108
  fetchingForward: props.fetchingForward,
12973
13109
  hasMoreBackward: props.hasMoreBackward,
12974
13110
  hasMoreForward: props.hasMoreForward,
13111
+ licenseLimit: props.licenseLimit,
12975
13112
  onClearSpans: props.onClearSpans,
12976
13113
  onFetchBackward: props.onFetchBackward,
12977
13114
  onFetchForward: props.onFetchForward,
@@ -12980,15 +13117,17 @@ var SpansList = (props) => {
12980
13117
  onToggleStream: props.onToggleStream,
12981
13118
  order: props.order,
12982
13119
  spans: props.spans,
12983
- streamPaused: props.streamPaused
13120
+ streamPaused: props.streamPaused,
13121
+ systemLimit: props.systemLimit,
13122
+ totalCount: props.totalCount
12984
13123
  }
12985
13124
  )
12986
13125
  ] });
12987
13126
  };
12988
13127
 
12989
13128
  // src/components/status-message/status-message.tsx
12990
- import { ErrorOutline, InfoOutlined } from "@mui/icons-material";
12991
- import { Alert as Alert2, AlertTitle, Box as Box5, Button as Button3, Link, Typography as Typography3 } from "@mui/material";
13129
+ import { ErrorOutline, InfoOutlined as InfoOutlined2 } from "@mui/icons-material";
13130
+ import { Alert as Alert2, AlertTitle, Box as Box6, Button as Button4, Link, Typography as Typography4 } from "@mui/material";
12992
13131
 
12993
13132
  // src/api/errors.ts
12994
13133
  var AppInspectorNotFoundError = class extends Error {
@@ -13031,15 +13170,15 @@ var getAppInspectorApiUrl = (localstackEndpoint, endpoint) => {
13031
13170
  };
13032
13171
 
13033
13172
  // src/components/status-message/status-message.tsx
13034
- import { Fragment as Fragment4, jsx as jsx126, jsxs as jsxs122 } from "react/jsx-runtime";
13173
+ import { Fragment as Fragment5, jsx as jsx127, jsxs as jsxs123 } from "react/jsx-runtime";
13035
13174
  var StatusMessage = ({
13036
13175
  error,
13037
13176
  onRetry,
13038
13177
  status
13039
13178
  }) => {
13040
13179
  if (error instanceof AppInspectorNotFoundError) {
13041
- return /* @__PURE__ */ jsx126(
13042
- Box5,
13180
+ return /* @__PURE__ */ jsx127(
13181
+ Box6,
13043
13182
  {
13044
13183
  sx: {
13045
13184
  alignItems: "center",
@@ -13049,19 +13188,19 @@ var StatusMessage = ({
13049
13188
  justifyContent: "center",
13050
13189
  p: 4
13051
13190
  },
13052
- children: /* @__PURE__ */ jsxs122(
13191
+ children: /* @__PURE__ */ jsxs123(
13053
13192
  Alert2,
13054
13193
  {
13055
- icon: /* @__PURE__ */ jsx126(ErrorOutline, { fontSize: "large" }),
13194
+ icon: /* @__PURE__ */ jsx127(ErrorOutline, { fontSize: "large" }),
13056
13195
  severity: "error",
13057
13196
  sx: { maxWidth: 600, width: "100%" },
13058
13197
  children: [
13059
- /* @__PURE__ */ jsx126(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
13060
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 2 }, variant: "body2", children: "The App Inspector extension is not licensed or not enabled in LocalStack." }),
13061
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx126("strong", { children: "To enable App Inspector:" }) }),
13062
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1 }, variant: "body2", children: "Set the environment variable and restart LocalStack:" }),
13063
- /* @__PURE__ */ jsx126(
13064
- Box5,
13198
+ /* @__PURE__ */ jsx127(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
13199
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 2 }, variant: "body2", children: "The App Inspector extension is not licensed or not enabled in LocalStack." }),
13200
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx127("strong", { children: "To enable App Inspector:" }) }),
13201
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1 }, variant: "body2", children: "Set the environment variable and restart LocalStack:" }),
13202
+ /* @__PURE__ */ jsx127(
13203
+ Box6,
13065
13204
  {
13066
13205
  component: "pre",
13067
13206
  sx: {
@@ -13073,24 +13212,24 @@ var StatusMessage = ({
13073
13212
  children: "LOCALSTACK_APPINSPECTOR_ENABLE=1"
13074
13213
  }
13075
13214
  ),
13076
- /* @__PURE__ */ jsxs122(Typography3, { sx: { fontStyle: "italic", mb: 1, mt: 2 }, variant: "body2", children: [
13215
+ /* @__PURE__ */ jsxs123(Typography4, { sx: { fontStyle: "italic", mb: 1, mt: 2 }, variant: "body2", children: [
13077
13216
  "Runtime changes can be made via endpoint",
13078
13217
  " ",
13079
- /* @__PURE__ */ jsxs122("code", { children: [
13218
+ /* @__PURE__ */ jsxs123("code", { children: [
13080
13219
  APPINSPECTOR_API_PREFIX,
13081
13220
  "/status"
13082
13221
  ] }),
13083
13222
  ". For persistent default state across restarts, adjust the",
13084
13223
  " ",
13085
- /* @__PURE__ */ jsx126("code", { children: "LOCALSTACK_APPINSPECTOR_ENABLE" }),
13224
+ /* @__PURE__ */ jsx127("code", { children: "LOCALSTACK_APPINSPECTOR_ENABLE" }),
13086
13225
  " ",
13087
13226
  "environment variable in your",
13088
13227
  " ",
13089
- /* @__PURE__ */ jsx126("code", { children: "~/.localstack" }),
13228
+ /* @__PURE__ */ jsx127("code", { children: "~/.localstack" }),
13090
13229
  " ",
13091
13230
  "profile files.",
13092
13231
  " ",
13093
- /* @__PURE__ */ jsx126(
13232
+ /* @__PURE__ */ jsx127(
13094
13233
  Link,
13095
13234
  {
13096
13235
  href: "https://docs.localstack.cloud/aws/capabilities/config/configuration/#profiles",
@@ -13100,8 +13239,8 @@ var StatusMessage = ({
13100
13239
  }
13101
13240
  )
13102
13241
  ] }),
13103
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1, mt: 2 }, variant: "body2", children: /* @__PURE__ */ jsx126("strong", { children: "For more information:" }) }),
13104
- /* @__PURE__ */ jsx126(
13242
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1, mt: 2 }, variant: "body2", children: /* @__PURE__ */ jsx127("strong", { children: "For more information:" }) }),
13243
+ /* @__PURE__ */ jsx127(
13105
13244
  Link,
13106
13245
  {
13107
13246
  href: "https://docs.localstack.cloud/user-guide/tools/application-inspector/",
@@ -13110,8 +13249,8 @@ var StatusMessage = ({
13110
13249
  children: "App Inspector Documentation"
13111
13250
  }
13112
13251
  ),
13113
- onRetry && /* @__PURE__ */ jsx126(Box5, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx126(
13114
- Button3,
13252
+ onRetry && /* @__PURE__ */ jsx127(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx127(
13253
+ Button4,
13115
13254
  {
13116
13255
  "aria-label": "Check App Inspector status again",
13117
13256
  onClick: onRetry,
@@ -13126,8 +13265,8 @@ var StatusMessage = ({
13126
13265
  );
13127
13266
  }
13128
13267
  if (error instanceof ConnectionError) {
13129
- return /* @__PURE__ */ jsx126(
13130
- Box5,
13268
+ return /* @__PURE__ */ jsx127(
13269
+ Box6,
13131
13270
  {
13132
13271
  sx: {
13133
13272
  alignItems: "center",
@@ -13137,18 +13276,18 @@ var StatusMessage = ({
13137
13276
  justifyContent: "center",
13138
13277
  p: 4
13139
13278
  },
13140
- children: /* @__PURE__ */ jsxs122(
13279
+ children: /* @__PURE__ */ jsxs123(
13141
13280
  Alert2,
13142
13281
  {
13143
- icon: /* @__PURE__ */ jsx126(ErrorOutline, { fontSize: "large" }),
13282
+ icon: /* @__PURE__ */ jsx127(ErrorOutline, { fontSize: "large" }),
13144
13283
  severity: "error",
13145
13284
  sx: { maxWidth: 600, width: "100%" },
13146
13285
  children: [
13147
- /* @__PURE__ */ jsx126(AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
13148
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 2 }, variant: "body2", children: "Failed to connect to LocalStack. Please ensure LocalStack is running and accessible." }),
13149
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx126("strong", { children: "To start LocalStack:" }) }),
13150
- /* @__PURE__ */ jsx126(
13151
- Box5,
13286
+ /* @__PURE__ */ jsx127(AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
13287
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 2 }, variant: "body2", children: "Failed to connect to LocalStack. Please ensure LocalStack is running and accessible." }),
13288
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx127("strong", { children: "To start LocalStack:" }) }),
13289
+ /* @__PURE__ */ jsx127(
13290
+ Box6,
13152
13291
  {
13153
13292
  component: "pre",
13154
13293
  sx: {
@@ -13160,8 +13299,8 @@ var StatusMessage = ({
13160
13299
  children: "localstack start"
13161
13300
  }
13162
13301
  ),
13163
- onRetry && /* @__PURE__ */ jsx126(Box5, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx126(
13164
- Button3,
13302
+ onRetry && /* @__PURE__ */ jsx127(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx127(
13303
+ Button4,
13165
13304
  {
13166
13305
  "aria-label": "Retry connection to LocalStack",
13167
13306
  onClick: onRetry,
@@ -13176,8 +13315,8 @@ var StatusMessage = ({
13176
13315
  );
13177
13316
  }
13178
13317
  if (status?.status === "DISABLED") {
13179
- return /* @__PURE__ */ jsx126(
13180
- Box5,
13318
+ return /* @__PURE__ */ jsx127(
13319
+ Box6,
13181
13320
  {
13182
13321
  sx: {
13183
13322
  alignItems: "center",
@@ -13187,18 +13326,18 @@ var StatusMessage = ({
13187
13326
  justifyContent: "center",
13188
13327
  p: 4
13189
13328
  },
13190
- children: /* @__PURE__ */ jsxs122(
13329
+ children: /* @__PURE__ */ jsxs123(
13191
13330
  Alert2,
13192
13331
  {
13193
- icon: /* @__PURE__ */ jsx126(InfoOutlined, { fontSize: "large" }),
13332
+ icon: /* @__PURE__ */ jsx127(InfoOutlined2, { fontSize: "large" }),
13194
13333
  severity: "warning",
13195
13334
  sx: { maxWidth: 600, width: "100%" },
13196
13335
  children: [
13197
- /* @__PURE__ */ jsx126(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector is Disabled" }),
13198
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is currently disabled. Please enable it to view traces and spans." }),
13199
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx126("strong", { children: "To enable App Inspector at runtime:" }) }),
13200
- /* @__PURE__ */ jsx126(
13201
- Box5,
13336
+ /* @__PURE__ */ jsx127(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector is Disabled" }),
13337
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is currently disabled. Please enable it to view traces and spans." }),
13338
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx127("strong", { children: "To enable App Inspector at runtime:" }) }),
13339
+ /* @__PURE__ */ jsx127(
13340
+ Box6,
13202
13341
  {
13203
13342
  component: "pre",
13204
13343
  sx: {
@@ -13213,10 +13352,10 @@ var StatusMessage = ({
13213
13352
  -d '{"status": "ENABLED"}'`
13214
13353
  }
13215
13354
  ),
13216
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1, mt: 2 }, variant: "body2", children: /* @__PURE__ */ jsx126("strong", { children: "To enable App Inspector persistently across restarts:" }) }),
13217
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 1 }, variant: "body2", children: "Set the environment variable:" }),
13218
- /* @__PURE__ */ jsx126(
13219
- Box5,
13355
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1, mt: 2 }, variant: "body2", children: /* @__PURE__ */ jsx127("strong", { children: "To enable App Inspector persistently across restarts:" }) }),
13356
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 1 }, variant: "body2", children: "Set the environment variable:" }),
13357
+ /* @__PURE__ */ jsx127(
13358
+ Box6,
13220
13359
  {
13221
13360
  component: "pre",
13222
13361
  sx: {
@@ -13228,9 +13367,9 @@ var StatusMessage = ({
13228
13367
  children: "APPINSPECTOR=1"
13229
13368
  }
13230
13369
  ),
13231
- Boolean(status.note) && /* @__PURE__ */ jsx126(Typography3, { sx: { display: "block", fontStyle: "italic", mt: 2 }, variant: "caption", children: status.note }),
13232
- onRetry && /* @__PURE__ */ jsx126(Box5, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx126(
13233
- Button3,
13370
+ Boolean(status.note) && /* @__PURE__ */ jsx127(Typography4, { sx: { display: "block", fontStyle: "italic", mt: 2 }, variant: "caption", children: status.note }),
13371
+ onRetry && /* @__PURE__ */ jsx127(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx127(
13372
+ Button4,
13234
13373
  {
13235
13374
  "aria-label": "Check if App Inspector is enabled",
13236
13375
  onClick: onRetry,
@@ -13245,8 +13384,8 @@ var StatusMessage = ({
13245
13384
  );
13246
13385
  }
13247
13386
  if (error) {
13248
- return /* @__PURE__ */ jsx126(
13249
- Box5,
13387
+ return /* @__PURE__ */ jsx127(
13388
+ Box6,
13250
13389
  {
13251
13390
  sx: {
13252
13391
  alignItems: "center",
@@ -13256,17 +13395,17 @@ var StatusMessage = ({
13256
13395
  justifyContent: "center",
13257
13396
  p: 4
13258
13397
  },
13259
- children: /* @__PURE__ */ jsxs122(
13398
+ children: /* @__PURE__ */ jsxs123(
13260
13399
  Alert2,
13261
13400
  {
13262
- icon: /* @__PURE__ */ jsx126(ErrorOutline, { fontSize: "large" }),
13401
+ icon: /* @__PURE__ */ jsx127(ErrorOutline, { fontSize: "large" }),
13263
13402
  severity: "error",
13264
13403
  sx: { maxWidth: 600, width: "100%" },
13265
13404
  children: [
13266
- /* @__PURE__ */ jsx126(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
13267
- /* @__PURE__ */ jsx126(Typography3, { sx: { mb: 2 }, variant: "body2", children: error.message }),
13268
- onRetry && /* @__PURE__ */ jsx126(Box5, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx126(
13269
- Button3,
13405
+ /* @__PURE__ */ jsx127(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
13406
+ /* @__PURE__ */ jsx127(Typography4, { sx: { mb: 2 }, variant: "body2", children: error.message }),
13407
+ onRetry && /* @__PURE__ */ jsx127(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx127(
13408
+ Button4,
13270
13409
  {
13271
13410
  "aria-label": "Retry operation",
13272
13411
  onClick: onRetry,
@@ -13280,13 +13419,13 @@ var StatusMessage = ({
13280
13419
  }
13281
13420
  );
13282
13421
  }
13283
- return /* @__PURE__ */ jsx126(Fragment4, {});
13422
+ return /* @__PURE__ */ jsx127(Fragment5, {});
13284
13423
  };
13285
13424
 
13286
13425
  // src/hooks/use-local-storage.tsx
13287
- import { useCallback as useCallback3, useEffect as useEffect11, useState as useState4 } from "react";
13426
+ import { useCallback as useCallback3, useEffect as useEffect11, useState as useState5 } from "react";
13288
13427
  function useLocalStorage(key, initialValue) {
13289
- const [storedValue, setStoredValue] = useState4(() => {
13428
+ const [storedValue, setStoredValue] = useState5(() => {
13290
13429
  try {
13291
13430
  const item = globalThis.localStorage.getItem(key);
13292
13431
  return item ? JSON.parse(item) : initialValue;
@@ -13329,14 +13468,14 @@ function useLocalStorage(key, initialValue) {
13329
13468
  }
13330
13469
 
13331
13470
  // src/hooks/use-spans.ts
13332
- import { useCallback as useCallback7, useEffect as useEffect15, useRef as useRef11, useState as useState8 } from "react";
13471
+ import { useCallback as useCallback7, useEffect as useEffect15, useRef as useRef11, useState as useState9 } from "react";
13333
13472
 
13334
13473
  // src/api/use-api.tsx
13335
13474
  import { createContext as createContext7, useContext as useContext14 } from "react";
13336
- import { jsx as jsx127 } from "react/jsx-runtime";
13475
+ import { jsx as jsx128 } from "react/jsx-runtime";
13337
13476
  var AppInspectorApiContext = createContext7(void 0);
13338
13477
  var ApiProvider = (props) => {
13339
- return /* @__PURE__ */ jsx127(AppInspectorApiContext.Provider, { value: props.api, children: props.children });
13478
+ return /* @__PURE__ */ jsx128(AppInspectorApiContext.Provider, { value: props.api, children: props.children });
13340
13479
  };
13341
13480
  var useAppInspectorApi = () => {
13342
13481
  const api = useContext14(AppInspectorApiContext);
@@ -13347,12 +13486,12 @@ var useAppInspectorApi = () => {
13347
13486
  };
13348
13487
 
13349
13488
  // src/hooks/use-status.tsx
13350
- import { useCallback as useCallback4, useEffect as useEffect12, useRef as useRef8, useState as useState5 } from "react";
13489
+ import { useCallback as useCallback4, useEffect as useEffect12, useRef as useRef8, useState as useState6 } from "react";
13351
13490
  var useStatus = () => {
13352
13491
  const api = useAppInspectorApi();
13353
- const [checking, setChecking] = useState5(true);
13354
- const [status, setStatus] = useState5();
13355
- const [error, setError] = useState5();
13492
+ const [checking, setChecking] = useState6(true);
13493
+ const [status, setStatus] = useState6();
13494
+ const [error, setError] = useState6();
13356
13495
  const hasFetchedReference = useRef8(false);
13357
13496
  const abortControllerReference = useRef8(null);
13358
13497
  const checkStatus = useCallback4(async () => {
@@ -13567,7 +13706,7 @@ var createPaginationBuffer = (options) => {
13567
13706
  };
13568
13707
 
13569
13708
  // src/hooks/use-spans-ws.tsx
13570
- import { useCallback as useCallback6, useEffect as useEffect13, useRef as useRef9, useState as useState6 } from "react";
13709
+ import { useCallback as useCallback6, useEffect as useEffect13, useRef as useRef9, useState as useState7 } from "react";
13571
13710
 
13572
13711
  // src/context.tsx
13573
13712
  import { createContext as createContext8, useContext as useContext15 } from "react";
@@ -13763,7 +13902,7 @@ var createApiClient = ({ localstackEndpoint }) => {
13763
13902
  };
13764
13903
 
13765
13904
  // src/context.tsx
13766
- import { jsx as jsx128 } from "react/jsx-runtime";
13905
+ import { jsx as jsx129 } from "react/jsx-runtime";
13767
13906
  var AppInspectorContext = createContext8(void 0);
13768
13907
  var useAppInspector = () => {
13769
13908
  const context = useContext15(AppInspectorContext);
@@ -13797,7 +13936,7 @@ var AppInspectorContextProvider = (props) => {
13797
13936
  }),
13798
13937
  [props.linkComponent, props.localstackEndpoint, resolveLink]
13799
13938
  );
13800
- return /* @__PURE__ */ jsx128(ApiProvider, { api, children: /* @__PURE__ */ jsx128(AppInspectorContext.Provider, { value: contextValue, children: props.children }) });
13939
+ return /* @__PURE__ */ jsx129(ApiProvider, { api, children: /* @__PURE__ */ jsx129(AppInspectorContext.Provider, { value: contextValue, children: props.children }) });
13801
13940
  };
13802
13941
 
13803
13942
  // src/hooks/use-spans-ws.tsx
@@ -13807,7 +13946,7 @@ function useSpansWebSocket(options) {
13807
13946
  useEffect13(() => {
13808
13947
  onMessageRef.current = onMessage;
13809
13948
  }, [onMessage]);
13810
- const [connected, setConnected] = useState6(false);
13949
+ const [connected, setConnected] = useState7(false);
13811
13950
  const wsRef = useRef9(void 0);
13812
13951
  const reconnectRef = useRef9(void 0);
13813
13952
  const { localstackEndpoint } = useAppInspector();
@@ -13854,11 +13993,11 @@ function useSpansWebSocket(options) {
13854
13993
  }
13855
13994
 
13856
13995
  // src/hooks/use-throttled-items.ts
13857
- import { useEffect as useEffect14, useRef as useRef10, useState as useState7 } from "react";
13996
+ import { useEffect as useEffect14, useRef as useRef10, useState as useState8 } from "react";
13858
13997
  function useThrottledItems(items, getId, catchUpIncrement = 10) {
13859
- const [displayedItems, setDisplayedItems] = useState7([]);
13860
- const [isCatchingUpForward, setIsCatchingUpForward] = useState7(false);
13861
- const [isCatchingUpBackward, setIsCatchingUpBackward] = useState7(false);
13998
+ const [displayedItems, setDisplayedItems] = useState8([]);
13999
+ const [isCatchingUpForward, setIsCatchingUpForward] = useState8(false);
14000
+ const [isCatchingUpBackward, setIsCatchingUpBackward] = useState8(false);
13862
14001
  const targetRef = useRef10([]);
13863
14002
  const rafRef = useRef10(void 0);
13864
14003
  const leftHiddenRef = useRef10(0);
@@ -13950,17 +14089,20 @@ function useThrottledItems(items, getId, catchUpIncrement = 10) {
13950
14089
  var PAGE_SIZE = 30;
13951
14090
  var useSpans = () => {
13952
14091
  const api = useAppInspectorApi();
13953
- const [spans, setSpans] = useState8();
14092
+ const [spans, setSpans] = useState9();
13954
14093
  const throttledSpans = useThrottledItems(spans, (span) => span.span_id);
13955
- const [fetchError, setFetchError] = useState8();
13956
- const [fetchingForward, setFetchingForward] = useState8(false);
13957
- const [fetchingBackward, setFetchingBackward] = useState8(false);
14094
+ const [fetchError, setFetchError] = useState9();
14095
+ const [fetchingForward, setFetchingForward] = useState9(false);
14096
+ const [fetchingBackward, setFetchingBackward] = useState9(false);
13958
14097
  const paginationBufferRef = useRef11(createPaginationBuffer({
13959
14098
  async fetchPage(token) {
13960
14099
  const response = await api.getSpans({
13961
14100
  limit: PAGE_SIZE,
13962
14101
  pagination_token: token
13963
14102
  });
14103
+ setTotalCount(response.pagination.total_count);
14104
+ setLicenseLimit(response.limits.span_count_limit_license);
14105
+ setSystemLimit(response.limits.span_count_limit_system);
13964
14106
  return {
13965
14107
  hasMoreBackward: response.pagination.has_prev,
13966
14108
  hasMoreForward: response.pagination.has_next,
@@ -13989,8 +14131,11 @@ var useSpans = () => {
13989
14131
  return a3.start_time_unix_nano < b3.start_time_unix_nano ? -1 : 1;
13990
14132
  }
13991
14133
  }));
13992
- const [hasMoreBackward, setHasMoreBackward] = useState8();
13993
- const [hasMoreForward, setHasMoreForward] = useState8();
14134
+ const [totalCount, setTotalCount] = useState9();
14135
+ const [licenseLimit, setLicenseLimit] = useState9();
14136
+ const [systemLimit, setSystemLimit] = useState9();
14137
+ const [hasMoreBackward, setHasMoreBackward] = useState9();
14138
+ const [hasMoreForward, setHasMoreForward] = useState9();
13994
14139
  const fetchForward = useCallback7(() => {
13995
14140
  void paginationBufferRef.current.fetchForward();
13996
14141
  }, []);
@@ -14001,7 +14146,7 @@ var useSpans = () => {
14001
14146
  fetchForward();
14002
14147
  }, [fetchForward]);
14003
14148
  const { checkStatus, error: statusError, status } = useStatus();
14004
- const [clearingSpans, setClearingSpans] = useState8(false);
14149
+ const [clearingSpans, setClearingSpans] = useState9(false);
14005
14150
  const clearSpans = useCallback7(async () => {
14006
14151
  if (clearingSpans) {
14007
14152
  return;
@@ -14009,6 +14154,7 @@ var useSpans = () => {
14009
14154
  setClearingSpans(true);
14010
14155
  try {
14011
14156
  await api.deleteSpans();
14157
+ setTotalCount(void 0);
14012
14158
  paginationBufferRef.current.clear();
14013
14159
  await paginationBufferRef.current.fetchForward();
14014
14160
  } catch (error) {
@@ -14018,7 +14164,7 @@ var useSpans = () => {
14018
14164
  setClearingSpans(false);
14019
14165
  }
14020
14166
  }, [clearingSpans, api]);
14021
- const [streamPaused, setStreamPaused] = useState8(false);
14167
+ const [streamPaused, setStreamPaused] = useState9(false);
14022
14168
  const toggleStream = useCallback7(() => {
14023
14169
  setStreamPaused((previous) => !previous);
14024
14170
  }, []);
@@ -14052,30 +14198,33 @@ var useSpans = () => {
14052
14198
  fetchingForward,
14053
14199
  hasMoreBackward,
14054
14200
  hasMoreForward,
14201
+ licenseLimit,
14055
14202
  spans: throttledSpans.items,
14056
14203
  status,
14057
14204
  statusError,
14058
14205
  streamPaused,
14059
- toggleStream
14206
+ systemLimit,
14207
+ toggleStream,
14208
+ totalCount
14060
14209
  };
14061
14210
  };
14062
14211
 
14063
14212
  // src/pages/trace-graph-page.tsx
14064
14213
  import { ArrowBack } from "@mui/icons-material";
14065
- import { Box as Box17, Button as Button5, Drawer, Paper as Paper3 } from "@mui/material";
14214
+ import { Box as Box18, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
14066
14215
  import { styled } from "@mui/material/styles";
14067
14216
  import { ReactFlowProvider } from "@xyflow/react";
14068
- import { useCallback as useCallback9, useEffect as useEffect20, useRef as useRef15, useState as useState15 } from "react";
14217
+ import { useCallback as useCallback9, useEffect as useEffect20, useRef as useRef15, useState as useState16 } from "react";
14069
14218
 
14070
14219
  // src/components/event-details/event-details.tsx
14071
14220
  import { Close as Close2 } from "@mui/icons-material";
14072
- import { Box as Box13, Chip as Chip3, Divider as Divider2, FormControlLabel as FormControlLabel2, IconButton as IconButton3, Stack as Stack2, Switch, Typography as Typography9, useTheme as useTheme3 } from "@mui/material";
14221
+ import { Box as Box14, Chip as Chip3, Divider as Divider3, FormControlLabel as FormControlLabel2, IconButton as IconButton4, Stack as Stack2, Switch, Typography as Typography10, useTheme as useTheme3 } from "@mui/material";
14073
14222
 
14074
14223
  // node_modules/@textea/json-viewer/dist/index.mjs
14075
14224
  var import_copy_to_clipboard = __toESM(require_copy_to_clipboard(), 1);
14076
- import { jsx as jsx129, jsxs as jsxs123, Fragment as Fragment5 } from "react/jsx-runtime";
14077
- import { Box as Box6, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
14078
- import { createContext as createContext9, useContext as useContext16, useState as useState9, useRef as useRef12, useCallback as useCallback8, useMemo as useMemo7, useEffect as useEffect16, memo as memo9 } from "react";
14225
+ import { jsx as jsx130, jsxs as jsxs124, Fragment as Fragment6 } from "react/jsx-runtime";
14226
+ import { Box as Box7, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
14227
+ import { createContext as createContext9, useContext as useContext16, useState as useState10, useRef as useRef12, useCallback as useCallback8, useMemo as useMemo7, useEffect as useEffect16, memo as memo9 } from "react";
14079
14228
  import { create, useStore, createStore } from "zustand";
14080
14229
  function r(e2) {
14081
14230
  var t2, f2, n2 = "";
@@ -14319,7 +14468,7 @@ async function copyString(value) {
14319
14468
  }
14320
14469
  function useClipboard() {
14321
14470
  let { timeout = 2e3 } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
14322
- const [copied, setCopied] = useState9(false);
14471
+ const [copied, setCopied] = useState10(false);
14323
14472
  const copyTimeout = useRef12(null);
14324
14473
  const handleCopyResult = useCallback8((value) => {
14325
14474
  const current = copyTimeout.current;
@@ -14402,7 +14551,7 @@ function useInspect(path, value, nestedIndex) {
14402
14551
  value,
14403
14552
  setInspectCache
14404
14553
  ]);
14405
- const [inspect, set] = useState9(() => {
14554
+ const [inspect, set] = useState10(() => {
14406
14555
  const shouldInspect = getInspectCache(path, nestedIndex);
14407
14556
  if (shouldInspect !== void 0) {
14408
14557
  return shouldInspect;
@@ -14428,7 +14577,7 @@ function useInspect(path, value, nestedIndex) {
14428
14577
  setInspect
14429
14578
  ];
14430
14579
  }
14431
- var DataBox = (props) => /* @__PURE__ */ jsx129(Box6, {
14580
+ var DataBox = (props) => /* @__PURE__ */ jsx130(Box7, {
14432
14581
  component: "div",
14433
14582
  ...props,
14434
14583
  sx: {
@@ -14439,7 +14588,7 @@ var DataBox = (props) => /* @__PURE__ */ jsx129(Box6, {
14439
14588
  var DataTypeLabel = (param) => {
14440
14589
  let { dataType, enable = true } = param;
14441
14590
  if (!enable) return null;
14442
- return /* @__PURE__ */ jsx129(DataBox, {
14591
+ return /* @__PURE__ */ jsx130(DataBox, {
14443
14592
  className: "data-type-label",
14444
14593
  sx: {
14445
14594
  mx: 0.5,
@@ -14457,18 +14606,18 @@ function defineEasyType(param) {
14457
14606
  const storeDisplayDataTypes = useJsonViewerStore((store) => store.displayDataTypes);
14458
14607
  const color2 = useJsonViewerStore((store) => store.colorspace[colorKey]);
14459
14608
  const onSelect = useJsonViewerStore((store) => store.onSelect);
14460
- return /* @__PURE__ */ jsxs123(DataBox, {
14609
+ return /* @__PURE__ */ jsxs124(DataBox, {
14461
14610
  onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(props.path, props.value),
14462
14611
  sx: {
14463
14612
  color: color2
14464
14613
  },
14465
14614
  children: [
14466
- displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx129(DataTypeLabel, {
14615
+ displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx130(DataTypeLabel, {
14467
14616
  dataType: type
14468
14617
  }),
14469
- /* @__PURE__ */ jsx129(DataBox, {
14618
+ /* @__PURE__ */ jsx130(DataBox, {
14470
14619
  className: "".concat(type, "-value"),
14471
- children: /* @__PURE__ */ jsx129(Render, {
14620
+ children: /* @__PURE__ */ jsx130(Render, {
14472
14621
  path: props.path,
14473
14622
  inspect: props.inspect,
14474
14623
  setInspect: props.setInspect,
@@ -14508,7 +14657,7 @@ function defineEasyType(param) {
14508
14657
  }, [
14509
14658
  setValue
14510
14659
  ]);
14511
- return /* @__PURE__ */ jsx129(InputBase, {
14660
+ return /* @__PURE__ */ jsx130(InputBase, {
14512
14661
  autoFocus: true,
14513
14662
  value,
14514
14663
  onChange: handleChange,
@@ -14548,7 +14697,7 @@ var booleanType = defineEasyType({
14548
14697
  },
14549
14698
  Renderer: (param) => {
14550
14699
  let { value } = param;
14551
- return /* @__PURE__ */ jsx129(Fragment5, {
14700
+ return /* @__PURE__ */ jsx130(Fragment6, {
14552
14701
  children: value ? "true" : "false"
14553
14702
  });
14554
14703
  }
@@ -14567,7 +14716,7 @@ var dateType = defineEasyType({
14567
14716
  colorKey: "base0D",
14568
14717
  Renderer: (param) => {
14569
14718
  let { value } = param;
14570
- return /* @__PURE__ */ jsx129(Fragment5, {
14719
+ return /* @__PURE__ */ jsx130(Fragment6, {
14571
14720
  children: value.toLocaleTimeString("en-us", displayOptions)
14572
14721
  });
14573
14722
  }
@@ -14596,12 +14745,12 @@ var functionName = (func) => {
14596
14745
  var lb = "{";
14597
14746
  var rb = "}";
14598
14747
  var PreFunctionType = (props) => {
14599
- return /* @__PURE__ */ jsxs123(NoSsr, {
14748
+ return /* @__PURE__ */ jsxs124(NoSsr, {
14600
14749
  children: [
14601
- /* @__PURE__ */ jsx129(DataTypeLabel, {
14750
+ /* @__PURE__ */ jsx130(DataTypeLabel, {
14602
14751
  dataType: "function"
14603
14752
  }),
14604
- /* @__PURE__ */ jsxs123(Box6, {
14753
+ /* @__PURE__ */ jsxs124(Box7, {
14605
14754
  component: "span",
14606
14755
  className: "data-function-start",
14607
14756
  sx: {
@@ -14617,8 +14766,8 @@ var PreFunctionType = (props) => {
14617
14766
  });
14618
14767
  };
14619
14768
  var PostFunctionType = () => {
14620
- return /* @__PURE__ */ jsx129(NoSsr, {
14621
- children: /* @__PURE__ */ jsx129(Box6, {
14769
+ return /* @__PURE__ */ jsx130(NoSsr, {
14770
+ children: /* @__PURE__ */ jsx130(Box7, {
14622
14771
  component: "span",
14623
14772
  className: "data-function-end",
14624
14773
  children: rb
@@ -14627,15 +14776,15 @@ var PostFunctionType = () => {
14627
14776
  };
14628
14777
  var FunctionType = (props) => {
14629
14778
  const functionColor = useJsonViewerStore((store) => store.colorspace.base05);
14630
- return /* @__PURE__ */ jsx129(NoSsr, {
14631
- children: /* @__PURE__ */ jsx129(Box6, {
14779
+ return /* @__PURE__ */ jsx130(NoSsr, {
14780
+ children: /* @__PURE__ */ jsx130(Box7, {
14632
14781
  className: "data-function",
14633
14782
  sx: {
14634
14783
  display: props.inspect ? "block" : "inline-block",
14635
14784
  pl: props.inspect ? 2 : 0,
14636
14785
  color: functionColor
14637
14786
  },
14638
- children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx129(Box6, {
14787
+ children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx130(Box7, {
14639
14788
  component: "span",
14640
14789
  className: "data-function-body",
14641
14790
  onClick: () => props.setInspect(true),
@@ -14663,7 +14812,7 @@ var nullType = defineEasyType({
14663
14812
  displayTypeLabel: false,
14664
14813
  Renderer: () => {
14665
14814
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
14666
- return /* @__PURE__ */ jsx129(Box6, {
14815
+ return /* @__PURE__ */ jsx130(Box7, {
14667
14816
  sx: {
14668
14817
  fontSize: "0.8rem",
14669
14818
  backgroundColor,
@@ -14686,7 +14835,7 @@ var nanType = defineEasyType({
14686
14835
  deserialize: (value) => parseFloat(value),
14687
14836
  Renderer: () => {
14688
14837
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
14689
- return /* @__PURE__ */ jsx129(Box6, {
14838
+ return /* @__PURE__ */ jsx130(Box7, {
14690
14839
  sx: {
14691
14840
  backgroundColor,
14692
14841
  fontSize: "0.8rem",
@@ -14706,7 +14855,7 @@ var floatType = defineEasyType({
14706
14855
  deserialize: (value) => parseFloat(value),
14707
14856
  Renderer: (param) => {
14708
14857
  let { value } = param;
14709
- return /* @__PURE__ */ jsx129(Fragment5, {
14858
+ return /* @__PURE__ */ jsx130(Fragment6, {
14710
14859
  children: value
14711
14860
  });
14712
14861
  }
@@ -14720,7 +14869,7 @@ var intType = defineEasyType({
14720
14869
  deserialize: (value) => parseFloat(value),
14721
14870
  Renderer: (param) => {
14722
14871
  let { value } = param;
14723
- return /* @__PURE__ */ jsx129(Fragment5, {
14872
+ return /* @__PURE__ */ jsx130(Fragment6, {
14724
14873
  children: value
14725
14874
  });
14726
14875
  }
@@ -14733,16 +14882,16 @@ var bigIntType = defineEasyType({
14733
14882
  deserialize: (value) => BigInt(value.replace(/\D/g, "")),
14734
14883
  Renderer: (param) => {
14735
14884
  let { value } = param;
14736
- return /* @__PURE__ */ jsx129(Fragment5, {
14885
+ return /* @__PURE__ */ jsx130(Fragment6, {
14737
14886
  children: "".concat(value, "n")
14738
14887
  });
14739
14888
  }
14740
14889
  });
14741
14890
  var BaseIcon = (param) => {
14742
14891
  let { d: d2, ...props } = param;
14743
- return /* @__PURE__ */ jsx129(SvgIcon, {
14892
+ return /* @__PURE__ */ jsx130(SvgIcon, {
14744
14893
  ...props,
14745
- children: /* @__PURE__ */ jsx129("path", {
14894
+ children: /* @__PURE__ */ jsx130("path", {
14746
14895
  d: d2
14747
14896
  })
14748
14897
  });
@@ -14757,55 +14906,55 @@ var Edit = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.3
14757
14906
  var ExpandMore = "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z";
14758
14907
  var Delete = "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5l-1-1h-5l-1 1H5v2h14V4z";
14759
14908
  var AddBoxIcon = (props) => {
14760
- return /* @__PURE__ */ jsx129(BaseIcon, {
14909
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14761
14910
  d: AddBox,
14762
14911
  ...props
14763
14912
  });
14764
14913
  };
14765
14914
  var CheckIcon = (props) => {
14766
- return /* @__PURE__ */ jsx129(BaseIcon, {
14915
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14767
14916
  d: Check,
14768
14917
  ...props
14769
14918
  });
14770
14919
  };
14771
14920
  var ChevronRightIcon = (props) => {
14772
- return /* @__PURE__ */ jsx129(BaseIcon, {
14921
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14773
14922
  d: ChevronRight,
14774
14923
  ...props
14775
14924
  });
14776
14925
  };
14777
14926
  var CircularArrowsIcon = (props) => {
14778
- return /* @__PURE__ */ jsx129(BaseIcon, {
14927
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14779
14928
  d: CircularArrows,
14780
14929
  ...props
14781
14930
  });
14782
14931
  };
14783
14932
  var CloseIcon = (props) => {
14784
- return /* @__PURE__ */ jsx129(BaseIcon, {
14933
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14785
14934
  d: Close,
14786
14935
  ...props
14787
14936
  });
14788
14937
  };
14789
14938
  var ContentCopyIcon = (props) => {
14790
- return /* @__PURE__ */ jsx129(BaseIcon, {
14939
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14791
14940
  d: ContentCopy,
14792
14941
  ...props
14793
14942
  });
14794
14943
  };
14795
14944
  var EditIcon = (props) => {
14796
- return /* @__PURE__ */ jsx129(BaseIcon, {
14945
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14797
14946
  d: Edit,
14798
14947
  ...props
14799
14948
  });
14800
14949
  };
14801
14950
  var ExpandMoreIcon = (props) => {
14802
- return /* @__PURE__ */ jsx129(BaseIcon, {
14951
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14803
14952
  d: ExpandMore,
14804
14953
  ...props
14805
14954
  });
14806
14955
  };
14807
14956
  var DeleteIcon = (props) => {
14808
- return /* @__PURE__ */ jsx129(BaseIcon, {
14957
+ return /* @__PURE__ */ jsx130(BaseIcon, {
14809
14958
  d: Delete,
14810
14959
  ...props
14811
14960
  });
@@ -14844,7 +14993,7 @@ var PreObjectType = (props) => {
14844
14993
  props.value
14845
14994
  ]);
14846
14995
  const isTrap = useIsCycleReference(props.path, props.value);
14847
- return /* @__PURE__ */ jsxs123(Box6, {
14996
+ return /* @__PURE__ */ jsxs124(Box7, {
14848
14997
  component: "span",
14849
14998
  className: "data-object-start",
14850
14999
  sx: {
@@ -14852,7 +15001,7 @@ var PreObjectType = (props) => {
14852
15001
  },
14853
15002
  children: [
14854
15003
  isArrayLike ? arrayLb : objectLb,
14855
- shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx129(Box6, {
15004
+ shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx130(Box7, {
14856
15005
  component: "span",
14857
15006
  sx: {
14858
15007
  pl: 0.5,
@@ -14862,16 +15011,16 @@ var PreObjectType = (props) => {
14862
15011
  },
14863
15012
  children: sizeOfValue
14864
15013
  }),
14865
- isTrap && !props.inspect && /* @__PURE__ */ jsxs123(Fragment5, {
15014
+ isTrap && !props.inspect && /* @__PURE__ */ jsxs124(Fragment6, {
14866
15015
  children: [
14867
- /* @__PURE__ */ jsx129(CircularArrowsIcon, {
15016
+ /* @__PURE__ */ jsx130(CircularArrowsIcon, {
14868
15017
  sx: {
14869
15018
  fontSize: 12,
14870
15019
  color: textColor,
14871
15020
  mx: 0.5
14872
15021
  }
14873
15022
  }),
14874
- /* @__PURE__ */ jsx129(DataBox, {
15023
+ /* @__PURE__ */ jsx130(DataBox, {
14875
15024
  sx: {
14876
15025
  cursor: "pointer",
14877
15026
  userSelect: "none"
@@ -14901,7 +15050,7 @@ var PostObjectType = (props) => {
14901
15050
  props.path,
14902
15051
  props.value
14903
15052
  ]);
14904
- return /* @__PURE__ */ jsxs123(Box6, {
15053
+ return /* @__PURE__ */ jsxs124(Box7, {
14905
15054
  component: "span",
14906
15055
  className: "data-object-end",
14907
15056
  sx: {
@@ -14912,7 +15061,7 @@ var PostObjectType = (props) => {
14912
15061
  },
14913
15062
  children: [
14914
15063
  isArrayLike ? arrayRb : objectRb,
14915
- shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx129(Box6, {
15064
+ shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx130(Box7, {
14916
15065
  component: "span",
14917
15066
  sx: {
14918
15067
  pl: 0.5,
@@ -14933,7 +15082,7 @@ var ObjectType = (props) => {
14933
15082
  const borderColor = useJsonViewerStore((store) => store.colorspace.base02);
14934
15083
  const groupArraysAfterLength = useJsonViewerStore((store) => store.groupArraysAfterLength);
14935
15084
  const isTrap = useIsCycleReference(props.path, props.value);
14936
- const [displayLength, setDisplayLength] = useState9(useJsonViewerStore((store) => store.maxDisplayLength));
15085
+ const [displayLength, setDisplayLength] = useState10(useJsonViewerStore((store) => store.maxDisplayLength));
14937
15086
  const objectSortKeys = useJsonViewerStore((store) => store.objectSortKeys);
14938
15087
  const elements = useMemo7(() => {
14939
15088
  if (!props.inspect) {
@@ -14952,7 +15101,7 @@ var ObjectType = (props) => {
14952
15101
  ...props.path,
14953
15102
  key
14954
15103
  ];
14955
- elements3.push(/* @__PURE__ */ jsx129(DataKeyPair, {
15104
+ elements3.push(/* @__PURE__ */ jsx130(DataKeyPair, {
14956
15105
  path,
14957
15106
  value: value2,
14958
15107
  prevValue: props.prevValue instanceof Map ? props.prevValue.get(k2) : void 0,
@@ -14968,7 +15117,7 @@ var ObjectType = (props) => {
14968
15117
  while (true) {
14969
15118
  const nextResult = iterator2.next();
14970
15119
  var _nextResult_done;
14971
- elements3.push(/* @__PURE__ */ jsx129(DataKeyPair, {
15120
+ elements3.push(/* @__PURE__ */ jsx130(DataKeyPair, {
14972
15121
  path: [
14973
15122
  ...props.path,
14974
15123
  "iterator:".concat(count2)
@@ -14996,7 +15145,7 @@ var ObjectType = (props) => {
14996
15145
  ...props.path,
14997
15146
  index
14998
15147
  ];
14999
- return /* @__PURE__ */ jsx129(DataKeyPair, {
15148
+ return /* @__PURE__ */ jsx130(DataKeyPair, {
15000
15149
  path,
15001
15150
  value: value2,
15002
15151
  prevValue: Array.isArray(props.prevValue) ? props.prevValue[index] : void 0,
@@ -15005,7 +15154,7 @@ var ObjectType = (props) => {
15005
15154
  });
15006
15155
  if (value.length > displayLength) {
15007
15156
  const rest = value.length - displayLength;
15008
- elements4.push(/* @__PURE__ */ jsxs123(DataBox, {
15157
+ elements4.push(/* @__PURE__ */ jsxs124(DataBox, {
15009
15158
  sx: {
15010
15159
  cursor: "pointer",
15011
15160
  lineHeight: 1.5,
@@ -15028,7 +15177,7 @@ var ObjectType = (props) => {
15028
15177
  const prevElements = Array.isArray(props.prevValue) ? segmentArray(props.prevValue, groupArraysAfterLength) : void 0;
15029
15178
  const elementsLastIndex = elements3.length - 1;
15030
15179
  return elements3.map((list, index) => {
15031
- return /* @__PURE__ */ jsx129(DataKeyPair, {
15180
+ return /* @__PURE__ */ jsx130(DataKeyPair, {
15032
15181
  path: props.path,
15033
15182
  value: list,
15034
15183
  nestedIndex: index,
@@ -15055,7 +15204,7 @@ var ObjectType = (props) => {
15055
15204
  ...props.path,
15056
15205
  key
15057
15206
  ];
15058
- return /* @__PURE__ */ jsx129(DataKeyPair, {
15207
+ return /* @__PURE__ */ jsx130(DataKeyPair, {
15059
15208
  path,
15060
15209
  value: value2,
15061
15210
  prevValue: (_props_prevValue = props.prevValue) === null || _props_prevValue === void 0 ? void 0 : _props_prevValue[key],
@@ -15064,7 +15213,7 @@ var ObjectType = (props) => {
15064
15213
  });
15065
15214
  if (entries.length > displayLength) {
15066
15215
  const rest = entries.length - displayLength;
15067
- elements2.push(/* @__PURE__ */ jsxs123(DataBox, {
15216
+ elements2.push(/* @__PURE__ */ jsxs124(DataBox, {
15068
15217
  sx: {
15069
15218
  cursor: "pointer",
15070
15219
  lineHeight: 1.5,
@@ -15102,7 +15251,7 @@ var ObjectType = (props) => {
15102
15251
  if (isEmptyValue) {
15103
15252
  return null;
15104
15253
  }
15105
- return /* @__PURE__ */ jsx129(Box6, {
15254
+ return /* @__PURE__ */ jsx130(Box7, {
15106
15255
  className: "data-object",
15107
15256
  sx: {
15108
15257
  display: props.inspect ? "block" : "inline-block",
@@ -15111,7 +15260,7 @@ var ObjectType = (props) => {
15111
15260
  color: keyColor,
15112
15261
  borderLeft: props.inspect ? "1px solid ".concat(borderColor) : "none"
15113
15262
  },
15114
- children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx129(Box6, {
15263
+ children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx130(Box7, {
15115
15264
  component: "span",
15116
15265
  className: "data-object-body",
15117
15266
  onClick: () => props.setInspect(true),
@@ -15139,11 +15288,11 @@ var stringType = defineEasyType({
15139
15288
  serialize: (value) => value,
15140
15289
  deserialize: (value) => value,
15141
15290
  Renderer: (props) => {
15142
- const [showRest, setShowRest] = useState9(false);
15291
+ const [showRest, setShowRest] = useState10(false);
15143
15292
  const collapseStringsAfterLength = useJsonViewerStore((store) => store.collapseStringsAfterLength);
15144
15293
  const value = showRest ? props.value : props.value.slice(0, collapseStringsAfterLength);
15145
15294
  const hasRest = props.value.length > collapseStringsAfterLength;
15146
- return /* @__PURE__ */ jsxs123(Box6, {
15295
+ return /* @__PURE__ */ jsxs124(Box7, {
15147
15296
  component: "span",
15148
15297
  sx: {
15149
15298
  overflowWrap: "anywhere",
@@ -15161,7 +15310,7 @@ var stringType = defineEasyType({
15161
15310
  children: [
15162
15311
  '"',
15163
15312
  value,
15164
- hasRest && !showRest && /* @__PURE__ */ jsx129(Box6, {
15313
+ hasRest && !showRest && /* @__PURE__ */ jsx130(Box7, {
15165
15314
  component: "span",
15166
15315
  sx: {
15167
15316
  padding: 0.5
@@ -15180,7 +15329,7 @@ var undefinedType = defineEasyType({
15180
15329
  displayTypeLabel: false,
15181
15330
  Renderer: () => {
15182
15331
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
15183
- return /* @__PURE__ */ jsx129(Box6, {
15332
+ return /* @__PURE__ */ jsx130(Box7, {
15184
15333
  sx: {
15185
15334
  fontSize: "0.7rem",
15186
15335
  backgroundColor,
@@ -15261,7 +15410,7 @@ function useTypeComponents(value, path) {
15261
15410
  registry
15262
15411
  ]);
15263
15412
  }
15264
- var IconBox = (props) => /* @__PURE__ */ jsx129(Box6, {
15413
+ var IconBox = (props) => /* @__PURE__ */ jsx130(Box7, {
15265
15414
  component: "span",
15266
15415
  ...props,
15267
15416
  sx: {
@@ -15293,7 +15442,7 @@ var DataKeyPair = (props) => {
15293
15442
  storeEditable,
15294
15443
  value
15295
15444
  ]);
15296
- const [tempValue, setTempValue] = useState9("");
15445
+ const [tempValue, setTempValue] = useState10("");
15297
15446
  const depth = path.length;
15298
15447
  const key = path[depth - 1];
15299
15448
  const hoverPath = useJsonViewerStore((store) => store.hoverPath);
@@ -15307,7 +15456,7 @@ var DataKeyPair = (props) => {
15307
15456
  const setHover = useJsonViewerStore((store) => store.setHover);
15308
15457
  const root = useJsonViewerStore((store) => store.value);
15309
15458
  const [inspect, setInspect] = useInspect(path, value, nestedIndex);
15310
- const [editing, setEditing] = useState9(false);
15459
+ const [editing, setEditing] = useState10(false);
15311
15460
  const onChange = useJsonViewerStore((store) => store.onChange);
15312
15461
  const keyColor = useTextColor();
15313
15462
  const numberKeyColor = useJsonViewerStore((store) => store.colorspace.base0C);
@@ -15447,18 +15596,18 @@ var DataKeyPair = (props) => {
15447
15596
  ]);
15448
15597
  const actionIcons = useMemo7(() => {
15449
15598
  if (editing) {
15450
- return /* @__PURE__ */ jsxs123(Fragment5, {
15599
+ return /* @__PURE__ */ jsxs124(Fragment6, {
15451
15600
  children: [
15452
- /* @__PURE__ */ jsx129(IconBox, {
15453
- children: /* @__PURE__ */ jsx129(CloseIcon, {
15601
+ /* @__PURE__ */ jsx130(IconBox, {
15602
+ children: /* @__PURE__ */ jsx130(CloseIcon, {
15454
15603
  sx: {
15455
15604
  fontSize: ".8rem"
15456
15605
  },
15457
15606
  onClick: abortEditing
15458
15607
  })
15459
15608
  }),
15460
- /* @__PURE__ */ jsx129(IconBox, {
15461
- children: /* @__PURE__ */ jsx129(CheckIcon, {
15609
+ /* @__PURE__ */ jsx130(IconBox, {
15610
+ children: /* @__PURE__ */ jsx130(CheckIcon, {
15462
15611
  sx: {
15463
15612
  fontSize: ".8rem"
15464
15613
  },
@@ -15468,9 +15617,9 @@ var DataKeyPair = (props) => {
15468
15617
  ]
15469
15618
  });
15470
15619
  }
15471
- return /* @__PURE__ */ jsxs123(Fragment5, {
15620
+ return /* @__PURE__ */ jsxs124(Fragment6, {
15472
15621
  children: [
15473
- enableClipboard && /* @__PURE__ */ jsx129(IconBox, {
15622
+ enableClipboard && /* @__PURE__ */ jsx130(IconBox, {
15474
15623
  onClick: (event) => {
15475
15624
  event.preventDefault();
15476
15625
  try {
@@ -15479,41 +15628,41 @@ var DataKeyPair = (props) => {
15479
15628
  console.error(e2);
15480
15629
  }
15481
15630
  },
15482
- children: copied ? /* @__PURE__ */ jsx129(CheckIcon, {
15631
+ children: copied ? /* @__PURE__ */ jsx130(CheckIcon, {
15483
15632
  sx: {
15484
15633
  fontSize: ".8rem"
15485
15634
  }
15486
- }) : /* @__PURE__ */ jsx129(ContentCopyIcon, {
15635
+ }) : /* @__PURE__ */ jsx130(ContentCopyIcon, {
15487
15636
  sx: {
15488
15637
  fontSize: ".8rem"
15489
15638
  }
15490
15639
  })
15491
15640
  }),
15492
- Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx129(IconBox, {
15641
+ Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx130(IconBox, {
15493
15642
  onClick: startEditing,
15494
- children: /* @__PURE__ */ jsx129(EditIcon, {
15643
+ children: /* @__PURE__ */ jsx130(EditIcon, {
15495
15644
  sx: {
15496
15645
  fontSize: ".8rem"
15497
15646
  }
15498
15647
  })
15499
15648
  }),
15500
- enableAdd && /* @__PURE__ */ jsx129(IconBox, {
15649
+ enableAdd && /* @__PURE__ */ jsx130(IconBox, {
15501
15650
  onClick: (event) => {
15502
15651
  event.preventDefault();
15503
15652
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(path);
15504
15653
  },
15505
- children: /* @__PURE__ */ jsx129(AddBoxIcon, {
15654
+ children: /* @__PURE__ */ jsx130(AddBoxIcon, {
15506
15655
  sx: {
15507
15656
  fontSize: ".8rem"
15508
15657
  }
15509
15658
  })
15510
15659
  }),
15511
- enableDelete && /* @__PURE__ */ jsx129(IconBox, {
15660
+ enableDelete && /* @__PURE__ */ jsx130(IconBox, {
15512
15661
  onClick: (event) => {
15513
15662
  event.preventDefault();
15514
15663
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(path, value);
15515
15664
  },
15516
- children: /* @__PURE__ */ jsx129(DeleteIcon, {
15665
+ children: /* @__PURE__ */ jsx130(DeleteIcon, {
15517
15666
  sx: {
15518
15667
  fontSize: ".9rem"
15519
15668
  }
@@ -15561,7 +15710,7 @@ var DataKeyPair = (props) => {
15561
15710
  prevValue,
15562
15711
  nestedIndex
15563
15712
  ]);
15564
- return /* @__PURE__ */ jsxs123(Box6, {
15713
+ return /* @__PURE__ */ jsxs124(Box7, {
15565
15714
  className: "data-key-pair",
15566
15715
  "data-testid": "data-key-pair" + path.join("."),
15567
15716
  sx: {
@@ -15573,7 +15722,7 @@ var DataKeyPair = (props) => {
15573
15722
  nestedIndex
15574
15723
  ]),
15575
15724
  children: [
15576
- /* @__PURE__ */ jsxs123(DataBox, {
15725
+ /* @__PURE__ */ jsxs124(DataBox, {
15577
15726
  component: "span",
15578
15727
  className: "data-key",
15579
15728
  sx: {
@@ -15594,7 +15743,7 @@ var DataKeyPair = (props) => {
15594
15743
  setInspect
15595
15744
  ]),
15596
15745
  children: [
15597
- expandable ? inspect ? /* @__PURE__ */ jsx129(ExpandMoreIcon, {
15746
+ expandable ? inspect ? /* @__PURE__ */ jsx130(ExpandMoreIcon, {
15598
15747
  className: "data-key-toggle-expanded",
15599
15748
  sx: {
15600
15749
  fontSize: ".8rem",
@@ -15602,7 +15751,7 @@ var DataKeyPair = (props) => {
15602
15751
  cursor: "pointer"
15603
15752
  }
15604
15753
  }
15605
- }) : /* @__PURE__ */ jsx129(ChevronRightIcon, {
15754
+ }) : /* @__PURE__ */ jsx130(ChevronRightIcon, {
15606
15755
  className: "data-key-toggle-collapsed",
15607
15756
  sx: {
15608
15757
  fontSize: ".8rem",
@@ -15611,44 +15760,44 @@ var DataKeyPair = (props) => {
15611
15760
  }
15612
15761
  }
15613
15762
  }) : null,
15614
- /* @__PURE__ */ jsx129(Box6, {
15763
+ /* @__PURE__ */ jsx130(Box7, {
15615
15764
  ref: highlightContainer,
15616
15765
  className: "data-key-key",
15617
15766
  component: "span",
15618
- children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs123(Fragment5, {
15767
+ children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs124(Fragment6, {
15619
15768
  children: [
15620
15769
  '"',
15621
15770
  rootName,
15622
15771
  '"'
15623
15772
  ]
15624
- }) : /* @__PURE__ */ jsx129(Fragment5, {
15773
+ }) : /* @__PURE__ */ jsx130(Fragment6, {
15625
15774
  children: rootName
15626
- }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx129(KeyRenderer, {
15775
+ }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx130(KeyRenderer, {
15627
15776
  ...downstreamProps
15628
- }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx129(Box6, {
15777
+ }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx130(Box7, {
15629
15778
  component: "span",
15630
15779
  style: {
15631
15780
  color: numberKeyColor,
15632
15781
  userSelect: isNumberKey ? "none" : "auto"
15633
15782
  },
15634
15783
  children: key
15635
- }) : quotesOnKeys ? /* @__PURE__ */ jsxs123(Fragment5, {
15784
+ }) : quotesOnKeys ? /* @__PURE__ */ jsxs124(Fragment6, {
15636
15785
  children: [
15637
15786
  '"',
15638
15787
  key,
15639
15788
  '"'
15640
15789
  ]
15641
- }) : /* @__PURE__ */ jsx129(Fragment5, {
15790
+ }) : /* @__PURE__ */ jsx130(Fragment6, {
15642
15791
  children: key
15643
15792
  }))
15644
15793
  }),
15645
- isRoot ? rootName !== false && /* @__PURE__ */ jsx129(DataBox, {
15794
+ isRoot ? rootName !== false && /* @__PURE__ */ jsx130(DataBox, {
15646
15795
  className: "data-key-colon",
15647
15796
  sx: {
15648
15797
  mr: 0.5
15649
15798
  },
15650
15799
  children: ":"
15651
- }) : nestedIndex === void 0 && /* @__PURE__ */ jsx129(DataBox, {
15800
+ }) : nestedIndex === void 0 && /* @__PURE__ */ jsx130(DataBox, {
15652
15801
  className: "data-key-colon",
15653
15802
  sx: {
15654
15803
  mr: 0.5,
@@ -15659,29 +15808,29 @@ var DataKeyPair = (props) => {
15659
15808
  },
15660
15809
  children: ":"
15661
15810
  }),
15662
- PreComponent && /* @__PURE__ */ jsx129(PreComponent, {
15811
+ PreComponent && /* @__PURE__ */ jsx130(PreComponent, {
15663
15812
  ...downstreamProps
15664
15813
  }),
15665
15814
  isHover && expandable && inspect && actionIcons
15666
15815
  ]
15667
15816
  }),
15668
- editing && editable ? Editor && /* @__PURE__ */ jsx129(Editor, {
15817
+ editing && editable ? Editor && /* @__PURE__ */ jsx130(Editor, {
15669
15818
  path,
15670
15819
  value: tempValue,
15671
15820
  setValue: setTempValue,
15672
15821
  abortEditing,
15673
15822
  commitEditing
15674
- }) : Component ? /* @__PURE__ */ jsx129(Component, {
15823
+ }) : Component ? /* @__PURE__ */ jsx130(Component, {
15675
15824
  ...downstreamProps
15676
- }) : /* @__PURE__ */ jsx129(Box6, {
15825
+ }) : /* @__PURE__ */ jsx130(Box7, {
15677
15826
  component: "span",
15678
15827
  className: "data-value-fallback",
15679
15828
  children: "fallback: ".concat(value)
15680
15829
  }),
15681
- PostComponent && /* @__PURE__ */ jsx129(PostComponent, {
15830
+ PostComponent && /* @__PURE__ */ jsx130(PostComponent, {
15682
15831
  ...downstreamProps
15683
15832
  }),
15684
- !last && displayComma && /* @__PURE__ */ jsx129(DataBox, {
15833
+ !last && displayComma && /* @__PURE__ */ jsx130(DataBox, {
15685
15834
  children: ","
15686
15835
  }),
15687
15836
  isHover && expandable && !inspect && actionIcons,
@@ -15692,7 +15841,7 @@ var DataKeyPair = (props) => {
15692
15841
  };
15693
15842
  var query = "(prefers-color-scheme: dark)";
15694
15843
  function useThemeDetector() {
15695
- const [isDark, setIsDark] = useState9(false);
15844
+ const [isDark, setIsDark] = useState10(false);
15696
15845
  useEffect16(() => {
15697
15846
  const listener = (e2) => setIsDark(e2.matches);
15698
15847
  setIsDark(window.matchMedia(query).matches);
@@ -15801,7 +15950,7 @@ var JsonViewerInner = (props) => {
15801
15950
  const onMouseLeave = useCallback8(() => setHover(null), [
15802
15951
  setHover
15803
15952
  ]);
15804
- return /* @__PURE__ */ jsx129(Paper2, {
15953
+ return /* @__PURE__ */ jsx130(Paper2, {
15805
15954
  elevation: 0,
15806
15955
  className: clsx(themeCls, props.className),
15807
15956
  style: props.style,
@@ -15812,7 +15961,7 @@ var JsonViewerInner = (props) => {
15812
15961
  ...props.sx
15813
15962
  },
15814
15963
  onMouseLeave,
15815
- children: /* @__PURE__ */ jsx129(DataKeyPair, {
15964
+ children: /* @__PURE__ */ jsx130(DataKeyPair, {
15816
15965
  value,
15817
15966
  prevValue,
15818
15967
  path: emptyPath,
@@ -15864,13 +16013,13 @@ var JsonViewer = function JsonViewer2(props) {
15864
16013
  };
15865
16014
  const jsonViewerStore = useMemo7(() => createJsonViewerStore(props), []);
15866
16015
  const typeRegistryStore = useMemo7(() => createTypeRegistryStore(), []);
15867
- return /* @__PURE__ */ jsx129(ThemeProvider, {
16016
+ return /* @__PURE__ */ jsx130(ThemeProvider, {
15868
16017
  theme,
15869
- children: /* @__PURE__ */ jsx129(TypeRegistryStoreContext.Provider, {
16018
+ children: /* @__PURE__ */ jsx130(TypeRegistryStoreContext.Provider, {
15870
16019
  value: typeRegistryStore,
15871
- children: /* @__PURE__ */ jsx129(JsonViewerStoreContext.Provider, {
16020
+ children: /* @__PURE__ */ jsx130(JsonViewerStoreContext.Provider, {
15872
16021
  value: jsonViewerStore,
15873
- children: /* @__PURE__ */ jsx129(JsonViewerInner, {
16022
+ children: /* @__PURE__ */ jsx130(JsonViewerInner, {
15874
16023
  ...mixedProps
15875
16024
  })
15876
16025
  })
@@ -15879,7 +16028,7 @@ var JsonViewer = function JsonViewer2(props) {
15879
16028
  };
15880
16029
 
15881
16030
  // src/components/event-details/event-details.tsx
15882
- import { memo as memo10, useMemo as useMemo11, useState as useState14 } from "react";
16031
+ import { memo as memo10, useMemo as useMemo11, useState as useState15 } from "react";
15883
16032
 
15884
16033
  // src/utils/iam-utils.ts
15885
16034
  function determinePermissionStatus(payload) {
@@ -16077,40 +16226,40 @@ var getEventGroupsByType = (events) => {
16077
16226
 
16078
16227
  // src/components/event-details/event-detail.tsx
16079
16228
  import { KeyboardArrowDown as KeyboardArrowDown2, KeyboardArrowRight as KeyboardArrowRight2 } from "@mui/icons-material";
16080
- import { Box as Box10, Grid as Grid3, IconButton as IconButton2, Typography as Typography6 } from "@mui/material";
16081
- import { useEffect as useEffect17, useMemo as useMemo9, useRef as useRef13, useState as useState11 } from "react";
16229
+ import { Box as Box11, Grid as Grid3, IconButton as IconButton3, Typography as Typography7 } from "@mui/material";
16230
+ import { useEffect as useEffect17, useMemo as useMemo9, useRef as useRef13, useState as useState12 } from "react";
16082
16231
 
16083
16232
  // src/components/status-icon.tsx
16084
16233
  import { Cancel, CheckCircle, Error as Error2, Info, RemoveCircle } from "@mui/icons-material";
16085
- import { Box as Box7 } from "@mui/material";
16086
- import { jsx as jsx130 } from "react/jsx-runtime";
16234
+ import { Box as Box8 } from "@mui/material";
16235
+ import { jsx as jsx131 } from "react/jsx-runtime";
16087
16236
  var StatusIcon = ({ errorLevel }) => {
16088
16237
  switch (errorLevel) {
16089
16238
  case EventLevel.LevelError: {
16090
- return /* @__PURE__ */ jsx130(Cancel, { sx: { color: "red" } });
16239
+ return /* @__PURE__ */ jsx131(Cancel, { sx: { color: "red" } });
16091
16240
  }
16092
16241
  case EventLevel.LevelInfo: {
16093
- return /* @__PURE__ */ jsx130(Info, { sx: { color: "gray" } });
16242
+ return /* @__PURE__ */ jsx131(Info, { sx: { color: "gray" } });
16094
16243
  }
16095
16244
  case EventLevel.LevelPermission: {
16096
- return /* @__PURE__ */ jsx130(RemoveCircle, { sx: { color: "blue" } });
16245
+ return /* @__PURE__ */ jsx131(RemoveCircle, { sx: { color: "blue" } });
16097
16246
  }
16098
16247
  case EventLevel.LevelWarning: {
16099
- return /* @__PURE__ */ jsx130(Error2, { sx: { color: "orange" } });
16248
+ return /* @__PURE__ */ jsx131(Error2, { sx: { color: "orange" } });
16100
16249
  }
16101
16250
  default: {
16102
- return /* @__PURE__ */ jsx130(CheckCircle, { sx: { color: "lightgray" } });
16251
+ return /* @__PURE__ */ jsx131(CheckCircle, { sx: { color: "lightgray" } });
16103
16252
  }
16104
16253
  }
16105
16254
  };
16106
16255
 
16107
16256
  // src/components/event-details/iam-event-detail.tsx
16108
16257
  import { CheckCircle as CheckCircle2, Error as ErrorIcon, Warning } from "@mui/icons-material";
16109
- import { Box as Box8, Chip, Grid as Grid2, Typography as Typography4 } from "@mui/material";
16110
- import { jsx as jsx131, jsxs as jsxs124 } from "react/jsx-runtime";
16111
- var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs124(Grid2, { container: true, spacing: 0, sx: { mb: 1 }, children: [
16112
- /* @__PURE__ */ jsx131(Grid2, { item: true, sx: { pr: 1 }, xs: 3, children: /* @__PURE__ */ jsx131(
16113
- Typography4,
16258
+ import { Box as Box9, Chip, Grid as Grid2, Typography as Typography5 } from "@mui/material";
16259
+ import { jsx as jsx132, jsxs as jsxs125 } from "react/jsx-runtime";
16260
+ var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs125(Grid2, { container: true, spacing: 0, sx: { mb: 1 }, children: [
16261
+ /* @__PURE__ */ jsx132(Grid2, { item: true, sx: { pr: 1 }, xs: 3, children: /* @__PURE__ */ jsx132(
16262
+ Typography5,
16114
16263
  {
16115
16264
  sx: {
16116
16265
  color: "text.secondary",
@@ -16120,8 +16269,8 @@ var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs124(Grid2, { contain
16120
16269
  children: label
16121
16270
  }
16122
16271
  ) }),
16123
- /* @__PURE__ */ jsx131(Grid2, { item: true, xs: 9, children: typeof content === "string" ? /* @__PURE__ */ jsx131(
16124
- Typography4,
16272
+ /* @__PURE__ */ jsx132(Grid2, { item: true, xs: 9, children: typeof content === "string" ? /* @__PURE__ */ jsx132(
16273
+ Typography5,
16125
16274
  {
16126
16275
  sx: {
16127
16276
  color: "text.primary",
@@ -16136,30 +16285,30 @@ var PermissionIcon = ({ status }) => {
16136
16285
  switch (status) {
16137
16286
  case "explicitly_allowed":
16138
16287
  case "implicitly_allowed": {
16139
- return /* @__PURE__ */ jsx131(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
16288
+ return /* @__PURE__ */ jsx132(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
16140
16289
  }
16141
16290
  case "explicitly_denied": {
16142
- return /* @__PURE__ */ jsx131(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
16291
+ return /* @__PURE__ */ jsx132(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
16143
16292
  }
16144
16293
  case "implicitly_denied": {
16145
- return /* @__PURE__ */ jsx131(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
16294
+ return /* @__PURE__ */ jsx132(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
16146
16295
  }
16147
16296
  }
16148
16297
  };
16149
16298
  var IAMEventDetail = ({ event }) => {
16150
16299
  const payloadString = event.attributes?.payload;
16151
16300
  if (!payloadString) {
16152
- return /* @__PURE__ */ jsx131(Box8, { sx: { p: 2 }, children: /* @__PURE__ */ jsx131(Typography4, { sx: { fontWeight: 600 }, variant: "body2", children: "No IAM policy evaluation data available" }) });
16301
+ return /* @__PURE__ */ jsx132(Box9, { sx: { p: 2 }, children: /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600 }, variant: "body2", children: "No IAM policy evaluation data available" }) });
16153
16302
  }
16154
16303
  const parsedIAM = parseIAMEvent(payloadString);
16155
16304
  if (!parsedIAM) {
16156
- return /* @__PURE__ */ jsx131(Box8, { sx: { p: 2 }, children: /* @__PURE__ */ jsx131(Typography4, { sx: { fontWeight: 600 }, variant: "body2", children: "Failed to parse IAM event data" }) });
16305
+ return /* @__PURE__ */ jsx132(Box9, { sx: { p: 2 }, children: /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600 }, variant: "body2", children: "Failed to parse IAM event data" }) });
16157
16306
  }
16158
- return /* @__PURE__ */ jsxs124(Box8, { sx: { p: 2 }, children: [
16159
- /* @__PURE__ */ jsx131(Box8, { sx: { mb: 2 }, children: /* @__PURE__ */ jsx131(
16307
+ return /* @__PURE__ */ jsxs125(Box9, { sx: { p: 2 }, children: [
16308
+ /* @__PURE__ */ jsx132(Box9, { sx: { mb: 2 }, children: /* @__PURE__ */ jsx132(
16160
16309
  Chip,
16161
16310
  {
16162
- icon: /* @__PURE__ */ jsx131(PermissionIcon, { status: parsedIAM.permission }),
16311
+ icon: /* @__PURE__ */ jsx132(PermissionIcon, { status: parsedIAM.permission }),
16163
16312
  label: formatPermissionStatus(parsedIAM.permission),
16164
16313
  size: "small",
16165
16314
  sx: {
@@ -16169,13 +16318,13 @@ var IAMEventDetail = ({ event }) => {
16169
16318
  variant: "outlined"
16170
16319
  }
16171
16320
  ) }),
16172
- /* @__PURE__ */ jsx131(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
16173
- /* @__PURE__ */ jsx131(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
16174
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx131(
16321
+ /* @__PURE__ */ jsx132(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
16322
+ /* @__PURE__ */ jsx132(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
16323
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx132(
16175
16324
  DetailRow,
16176
16325
  {
16177
- content: /* @__PURE__ */ jsx131(Box8, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx131(
16178
- Typography4,
16326
+ content: /* @__PURE__ */ jsx132(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx132(
16327
+ Typography5,
16179
16328
  {
16180
16329
  sx: {
16181
16330
  color: "text.primary"
@@ -16188,11 +16337,11 @@ var IAMEventDetail = ({ event }) => {
16188
16337
  label: "Actions"
16189
16338
  }
16190
16339
  ),
16191
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx131(
16340
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx132(
16192
16341
  DetailRow,
16193
16342
  {
16194
- content: /* @__PURE__ */ jsx131(Box8, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx131(
16195
- Typography4,
16343
+ content: /* @__PURE__ */ jsx132(Box9, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx132(
16344
+ Typography5,
16196
16345
  {
16197
16346
  sx: {
16198
16347
  color: "text.primary",
@@ -16206,20 +16355,20 @@ var IAMEventDetail = ({ event }) => {
16206
16355
  label: "Resources"
16207
16356
  }
16208
16357
  ),
16209
- /* @__PURE__ */ jsxs124(Box8, { sx: { mt: 2 }, children: [
16210
- /* @__PURE__ */ jsx131(Typography4, { sx: { fontWeight: 600, mb: 1 }, variant: "caption", children: "Policy Evaluation" }),
16211
- /* @__PURE__ */ jsxs124(Grid2, { container: true, spacing: 2, children: [
16212
- parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsx131(Grid2, { item: true, xs: 4, children: /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
16213
- /* @__PURE__ */ jsx131(Typography4, { color: "success.main", sx: { fontWeight: "bold" }, variant: "h6", children: parsedIAM.details.explicitAllows }),
16214
- /* @__PURE__ */ jsx131(Typography4, { sx: { fontWeight: 600 }, variant: "caption", children: "Explicit Allows" })
16358
+ /* @__PURE__ */ jsxs125(Box9, { sx: { mt: 2 }, children: [
16359
+ /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600, mb: 1 }, variant: "caption", children: "Policy Evaluation" }),
16360
+ /* @__PURE__ */ jsxs125(Grid2, { container: true, spacing: 2, children: [
16361
+ parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsx132(Grid2, { item: true, xs: 4, children: /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
16362
+ /* @__PURE__ */ jsx132(Typography5, { color: "success.main", sx: { fontWeight: "bold" }, variant: "h6", children: parsedIAM.details.explicitAllows }),
16363
+ /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600 }, variant: "caption", children: "Explicit Allows" })
16215
16364
  ] }) }),
16216
- parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsx131(Grid2, { item: true, xs: 4, children: /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
16217
- /* @__PURE__ */ jsx131(Typography4, { color: "error.main", sx: { fontWeight: "bold" }, variant: "h6", children: parsedIAM.details.explicitDenies }),
16218
- /* @__PURE__ */ jsx131(Typography4, { sx: { fontWeight: 600 }, variant: "caption", children: "Explicit Denies" })
16365
+ parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsx132(Grid2, { item: true, xs: 4, children: /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
16366
+ /* @__PURE__ */ jsx132(Typography5, { color: "error.main", sx: { fontWeight: "bold" }, variant: "h6", children: parsedIAM.details.explicitDenies }),
16367
+ /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600 }, variant: "caption", children: "Explicit Denies" })
16219
16368
  ] }) }),
16220
- parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsx131(Grid2, { item: true, xs: 4, children: /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
16221
- /* @__PURE__ */ jsx131(Typography4, { color: "warning.main", sx: { fontWeight: "bold" }, variant: "h6", children: parsedIAM.details.implicitDenies }),
16222
- /* @__PURE__ */ jsx131(Typography4, { sx: { fontWeight: 600 }, variant: "caption", children: "Implicit Denies" })
16369
+ parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsx132(Grid2, { item: true, xs: 4, children: /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
16370
+ /* @__PURE__ */ jsx132(Typography5, { color: "warning.main", sx: { fontWeight: "bold" }, variant: "h6", children: parsedIAM.details.implicitDenies }),
16371
+ /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600 }, variant: "caption", children: "Implicit Denies" })
16223
16372
  ] }) })
16224
16373
  ] })
16225
16374
  ] })
@@ -16228,9 +16377,9 @@ var IAMEventDetail = ({ event }) => {
16228
16377
 
16229
16378
  // src/components/event-details/iam-permission-detail.tsx
16230
16379
  import { KeyboardArrowDown, KeyboardArrowRight } from "@mui/icons-material";
16231
- import { Box as Box9, Chip as Chip2, IconButton, Typography as Typography5 } from "@mui/material";
16232
- import { useMemo as useMemo8, useState as useState10 } from "react";
16233
- import { jsx as jsx132, jsxs as jsxs125 } from "react/jsx-runtime";
16380
+ import { Box as Box10, Chip as Chip2, IconButton as IconButton2, Typography as Typography6 } from "@mui/material";
16381
+ import { useMemo as useMemo8, useState as useState11 } from "react";
16382
+ import { jsx as jsx133, jsxs as jsxs126 } from "react/jsx-runtime";
16234
16383
  var getChipColors = (status) => {
16235
16384
  const isAllowed = status === "explicitly_allowed" || status === "implicitly_allowed";
16236
16385
  return {
@@ -16239,7 +16388,7 @@ var getChipColors = (status) => {
16239
16388
  };
16240
16389
  };
16241
16390
  var IAMPermissionItem = ({ event }) => {
16242
- const [isOpen, setIsOpen] = useState10(false);
16391
+ const [isOpen, setIsOpen] = useState11(false);
16243
16392
  const parsedData = useMemo8(() => {
16244
16393
  const payloadString = event.attributes?.payload;
16245
16394
  if (!payloadString) {
@@ -16258,12 +16407,12 @@ var IAMPermissionItem = ({ event }) => {
16258
16407
  return null;
16259
16408
  }
16260
16409
  const { chipColors, parsedIAM } = parsedData;
16261
- return /* @__PURE__ */ jsxs125(Box9, { sx: { mb: 1 }, children: [
16262
- /* @__PURE__ */ jsxs125(Box9, { sx: { alignItems: "center", display: "flex" }, children: [
16263
- /* @__PURE__ */ jsx132(IconButton, { onClick: () => {
16410
+ return /* @__PURE__ */ jsxs126(Box10, { sx: { mb: 1 }, children: [
16411
+ /* @__PURE__ */ jsxs126(Box10, { sx: { alignItems: "center", display: "flex" }, children: [
16412
+ /* @__PURE__ */ jsx133(IconButton2, { onClick: () => {
16264
16413
  setIsOpen(!isOpen);
16265
- }, size: "small", sx: { mr: 1, p: 0 }, children: isOpen ? /* @__PURE__ */ jsx132(KeyboardArrowDown, {}) : /* @__PURE__ */ jsx132(KeyboardArrowRight, {}) }),
16266
- /* @__PURE__ */ jsx132(
16414
+ }, size: "small", sx: { mr: 1, p: 0 }, children: isOpen ? /* @__PURE__ */ jsx133(KeyboardArrowDown, {}) : /* @__PURE__ */ jsx133(KeyboardArrowRight, {}) }),
16415
+ /* @__PURE__ */ jsx133(
16267
16416
  Chip2,
16268
16417
  {
16269
16418
  label: formatPermissionStatus(parsedIAM.permission),
@@ -16275,19 +16424,19 @@ var IAMPermissionItem = ({ event }) => {
16275
16424
  }
16276
16425
  )
16277
16426
  ] }),
16278
- isOpen && /* @__PURE__ */ jsx132(Box9, { sx: { ml: 4, mt: 1 }, children: /* @__PURE__ */ jsxs125(Box9, { children: [
16279
- /* @__PURE__ */ jsx132(Typography5, { sx: { fontWeight: 600 }, variant: "caption", children: "Principal" }),
16280
- /* @__PURE__ */ jsx132(Typography5, { variant: "body2", children: parsedIAM.principal })
16427
+ isOpen && /* @__PURE__ */ jsx133(Box10, { sx: { ml: 4, mt: 1 }, children: /* @__PURE__ */ jsxs126(Box10, { children: [
16428
+ /* @__PURE__ */ jsx133(Typography6, { sx: { fontWeight: 600 }, variant: "caption", children: "Principal" }),
16429
+ /* @__PURE__ */ jsx133(Typography6, { variant: "body2", children: parsedIAM.principal })
16281
16430
  ] }) })
16282
16431
  ] });
16283
16432
  };
16284
- var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx132(Box9, { sx: { mt: 2 }, children: events.map((event) => /* @__PURE__ */ jsx132(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
16433
+ var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx133(Box10, { sx: { mt: 2 }, children: events.map((event) => /* @__PURE__ */ jsx133(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
16285
16434
 
16286
16435
  // src/components/event-details/event-detail.tsx
16287
- import { Fragment as Fragment6, jsx as jsx133, jsxs as jsxs126 } from "react/jsx-runtime";
16288
- var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs126(Grid3, { container: true, spacing: 0, sx: { mb: 1 }, children: [
16289
- /* @__PURE__ */ jsx133(Grid3, { item: true, sx: { pr: 1 }, xs: 3, children: /* @__PURE__ */ jsx133(
16290
- Typography6,
16436
+ import { Fragment as Fragment7, jsx as jsx134, jsxs as jsxs127 } from "react/jsx-runtime";
16437
+ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs127(Grid3, { container: true, spacing: 0, sx: { mb: 1 }, children: [
16438
+ /* @__PURE__ */ jsx134(Grid3, { item: true, sx: { pr: 1 }, xs: 3, children: /* @__PURE__ */ jsx134(
16439
+ Typography7,
16291
16440
  {
16292
16441
  sx: {
16293
16442
  color: "text.primary",
@@ -16297,8 +16446,8 @@ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs126(Grid3, { contai
16297
16446
  children: label
16298
16447
  }
16299
16448
  ) }),
16300
- /* @__PURE__ */ jsx133(Grid3, { item: true, xs: 9, children: typeof content === "string" ? /* @__PURE__ */ jsx133(
16301
- Typography6,
16449
+ /* @__PURE__ */ jsx134(Grid3, { item: true, xs: 9, children: typeof content === "string" ? /* @__PURE__ */ jsx134(
16450
+ Typography7,
16302
16451
  {
16303
16452
  sx: {
16304
16453
  color: "text.primary",
@@ -16310,8 +16459,8 @@ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs126(Grid3, { contai
16310
16459
  ) : content })
16311
16460
  ] });
16312
16461
  var EventMessage = ({ event }) => {
16313
- const [isOpen, setIsOpen] = useState11(false);
16314
- const [isOverflowing, setIsOverflowing] = useState11(false);
16462
+ const [isOpen, setIsOpen] = useState12(false);
16463
+ const [isOverflowing, setIsOverflowing] = useState12(false);
16315
16464
  const textReference = useRef13(null);
16316
16465
  const parsedMessage = useMemo9(() => parseEventMessage(event), [event]);
16317
16466
  const isIAMPolicyEvent = useMemo9(
@@ -16339,21 +16488,21 @@ var EventMessage = ({ event }) => {
16339
16488
  () => isOverflowing || hasAdditionalContent,
16340
16489
  [isOverflowing, hasAdditionalContent]
16341
16490
  );
16342
- return /* @__PURE__ */ jsxs126(Box10, { sx: { display: "flex", flexDirection: "column" }, children: [
16343
- /* @__PURE__ */ jsxs126(Box10, { sx: { alignItems: "flex-start", display: "flex" }, children: [
16344
- Boolean(shouldShowToggle) && /* @__PURE__ */ jsx133(
16345
- IconButton2,
16491
+ return /* @__PURE__ */ jsxs127(Box11, { sx: { display: "flex", flexDirection: "column" }, children: [
16492
+ /* @__PURE__ */ jsxs127(Box11, { sx: { alignItems: "flex-start", display: "flex" }, children: [
16493
+ Boolean(shouldShowToggle) && /* @__PURE__ */ jsx134(
16494
+ IconButton3,
16346
16495
  {
16347
16496
  onClick: () => {
16348
16497
  setIsOpen(!isOpen);
16349
16498
  },
16350
16499
  size: "small",
16351
16500
  sx: { mr: 1, mt: -0.5, p: 0 },
16352
- children: isOpen ? /* @__PURE__ */ jsx133(KeyboardArrowDown2, {}) : /* @__PURE__ */ jsx133(KeyboardArrowRight2, {})
16501
+ children: isOpen ? /* @__PURE__ */ jsx134(KeyboardArrowDown2, {}) : /* @__PURE__ */ jsx134(KeyboardArrowRight2, {})
16353
16502
  }
16354
16503
  ),
16355
- /* @__PURE__ */ jsx133(
16356
- Typography6,
16504
+ /* @__PURE__ */ jsx134(
16505
+ Typography7,
16357
16506
  {
16358
16507
  ref: textReference,
16359
16508
  sx: {
@@ -16370,9 +16519,9 @@ var EventMessage = ({ event }) => {
16370
16519
  }
16371
16520
  )
16372
16521
  ] }),
16373
- isOpen && /* @__PURE__ */ jsx133(Box10, { sx: { ml: 4, mt: 1 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx133(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs126(Fragment6, { children: [
16374
- Boolean(parsedMessage.message) && /* @__PURE__ */ jsx133(DetailRow2, { content: parsedMessage.message, label: "Message:" }),
16375
- Boolean(parsedMessage.details) && /* @__PURE__ */ jsx133(DetailRow2, { content: parsedMessage.details, label: "Details:" })
16522
+ isOpen && /* @__PURE__ */ jsx134(Box11, { sx: { ml: 4, mt: 1 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx134(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs127(Fragment7, { children: [
16523
+ Boolean(parsedMessage.message) && /* @__PURE__ */ jsx134(DetailRow2, { content: parsedMessage.message, label: "Message:" }),
16524
+ Boolean(parsedMessage.details) && /* @__PURE__ */ jsx134(DetailRow2, { content: parsedMessage.details, label: "Details:" })
16376
16525
  ] }) })
16377
16526
  ] });
16378
16527
  };
@@ -16401,17 +16550,17 @@ var EventDetail = ({
16401
16550
  type
16402
16551
  }) => {
16403
16552
  if (type === "permission") {
16404
- return /* @__PURE__ */ jsxs126(Box10, { children: [
16405
- /* @__PURE__ */ jsx133(
16406
- Box10,
16553
+ return /* @__PURE__ */ jsxs127(Box11, { children: [
16554
+ /* @__PURE__ */ jsx134(
16555
+ Box11,
16407
16556
  {
16408
16557
  sx: {
16409
16558
  alignItems: "left",
16410
16559
  display: "flex",
16411
16560
  mb: 1
16412
16561
  },
16413
- children: /* @__PURE__ */ jsx133(
16414
- Typography6,
16562
+ children: /* @__PURE__ */ jsx134(
16563
+ Typography7,
16415
16564
  {
16416
16565
  sx: {
16417
16566
  alignItems: "left",
@@ -16425,13 +16574,13 @@ var EventDetail = ({
16425
16574
  )
16426
16575
  }
16427
16576
  ),
16428
- /* @__PURE__ */ jsx133(IAMPermissionDetail, { events })
16577
+ /* @__PURE__ */ jsx134(IAMPermissionDetail, { events })
16429
16578
  ] });
16430
16579
  }
16431
16580
  const eventLevel = getEventLevelFromGroup(type);
16432
- return /* @__PURE__ */ jsxs126(Box10, { children: [
16433
- /* @__PURE__ */ jsxs126(
16434
- Box10,
16581
+ return /* @__PURE__ */ jsxs127(Box11, { children: [
16582
+ /* @__PURE__ */ jsxs127(
16583
+ Box11,
16435
16584
  {
16436
16585
  sx: {
16437
16586
  alignItems: "left",
@@ -16440,9 +16589,9 @@ var EventDetail = ({
16440
16589
  mb: 1
16441
16590
  },
16442
16591
  children: [
16443
- /* @__PURE__ */ jsx133(StatusIcon, { errorLevel: eventLevel }),
16444
- /* @__PURE__ */ jsx133(
16445
- Typography6,
16592
+ /* @__PURE__ */ jsx134(StatusIcon, { errorLevel: eventLevel }),
16593
+ /* @__PURE__ */ jsx134(
16594
+ Typography7,
16446
16595
  {
16447
16596
  sx: {
16448
16597
  alignItems: "left",
@@ -16460,14 +16609,14 @@ var EventDetail = ({
16460
16609
  ]
16461
16610
  }
16462
16611
  ),
16463
- /* @__PURE__ */ jsx133(Box10, { sx: { mt: 2 }, children: events.map((event) => /* @__PURE__ */ jsx133(
16464
- Box10,
16612
+ /* @__PURE__ */ jsx134(Box11, { sx: { mt: 2 }, children: events.map((event) => /* @__PURE__ */ jsx134(
16613
+ Box11,
16465
16614
  {
16466
16615
  sx: {
16467
16616
  maxWidth: "100%",
16468
16617
  mb: 1
16469
16618
  },
16470
- children: /* @__PURE__ */ jsx133(EventMessage, { event })
16619
+ children: /* @__PURE__ */ jsx134(EventMessage, { event })
16471
16620
  },
16472
16621
  `${event.span_id}-${event.event_id}`
16473
16622
  )) })
@@ -26161,9 +26310,9 @@ var QueryStatus = {
26161
26310
  };
26162
26311
 
26163
26312
  // src/components/event-details/lambda-invoke-logs-section.tsx
26164
- import { Box as Box11, CircularProgress as CircularProgress2, Stack, Typography as Typography7 } from "@mui/material";
26165
- import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef14, useState as useState12 } from "react";
26166
- import { jsx as jsx134, jsxs as jsxs127 } from "react/jsx-runtime";
26313
+ import { Box as Box12, CircularProgress as CircularProgress2, Stack, Typography as Typography8 } from "@mui/material";
26314
+ import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef14, useState as useState13 } from "react";
26315
+ import { jsx as jsx135, jsxs as jsxs128 } from "react/jsx-runtime";
26167
26316
  var POLL_INTERVAL_MS = 1e3;
26168
26317
  async function pollQueryResults(client, queryId) {
26169
26318
  return client.send(new GetQueryResultsCommand({ queryId }));
@@ -26191,9 +26340,9 @@ function useCloudWatchLogsClient(region) {
26191
26340
  return client;
26192
26341
  }
26193
26342
  function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano) {
26194
- const [loading, setLoading] = useState12(true);
26195
- const [logs, setLogs] = useState12([]);
26196
- const [error, setError] = useState12();
26343
+ const [loading, setLoading] = useState13(true);
26344
+ const [logs, setLogs] = useState13([]);
26345
+ const [error, setError] = useState13();
26197
26346
  const pollTimerRef = useRef14(null);
26198
26347
  const cloudWatchLogs = useCloudWatchLogsClient(region);
26199
26348
  useEffect18(() => {
@@ -26253,30 +26402,30 @@ function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, en
26253
26402
  var LambdaInvokeLogsSection = ({ endTimeNano, functionName: functionName2, region, requestId, startTimeNano }) => {
26254
26403
  const { error, loading, logs } = useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano);
26255
26404
  if (loading) {
26256
- return /* @__PURE__ */ jsxs127(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
26257
- /* @__PURE__ */ jsx134(CircularProgress2, { size: 14 }),
26258
- /* @__PURE__ */ jsx134(Typography7, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
26405
+ return /* @__PURE__ */ jsxs128(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
26406
+ /* @__PURE__ */ jsx135(CircularProgress2, { size: 14 }),
26407
+ /* @__PURE__ */ jsx135(Typography8, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
26259
26408
  ] });
26260
26409
  }
26261
26410
  if (error !== void 0) {
26262
- return /* @__PURE__ */ jsx134(Typography7, { color: "error", variant: "body2", children: error.message });
26411
+ return /* @__PURE__ */ jsx135(Typography8, { color: "error", variant: "body2", children: error.message });
26263
26412
  }
26264
26413
  if (logs.length === 0) {
26265
- return /* @__PURE__ */ jsx134(Typography7, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
26414
+ return /* @__PURE__ */ jsx135(Typography8, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
26266
26415
  }
26267
- return /* @__PURE__ */ jsx134(Box11, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx134("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx134(Typography7, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
26416
+ return /* @__PURE__ */ jsx135(Box12, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx135("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx135(Typography8, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
26268
26417
  };
26269
26418
 
26270
26419
  // src/components/event-details/toggle-section.tsx
26271
26420
  import { KeyboardArrowDown as KeyboardArrowDown3, KeyboardArrowRight as KeyboardArrowRight3 } from "@mui/icons-material";
26272
- import { Box as Box12, Typography as Typography8 } from "@mui/material";
26273
- import { useState as useState13 } from "react";
26274
- import { jsx as jsx135, jsxs as jsxs128 } from "react/jsx-runtime";
26421
+ import { Box as Box13, Typography as Typography9 } from "@mui/material";
26422
+ import { useState as useState14 } from "react";
26423
+ import { jsx as jsx136, jsxs as jsxs129 } from "react/jsx-runtime";
26275
26424
  var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
26276
- const [isOpen, setIsOpen] = useState13(initialOpen);
26277
- return /* @__PURE__ */ jsxs128(Box12, { sx: { mt: 4 }, children: [
26278
- /* @__PURE__ */ jsxs128(
26279
- Box12,
26425
+ const [isOpen, setIsOpen] = useState14(initialOpen);
26426
+ return /* @__PURE__ */ jsxs129(Box13, { sx: { mt: 4 }, children: [
26427
+ /* @__PURE__ */ jsxs129(
26428
+ Box13,
26280
26429
  {
26281
26430
  onClick: () => {
26282
26431
  setIsOpen(!isOpen);
@@ -26289,8 +26438,8 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
26289
26438
  mb: 1
26290
26439
  },
26291
26440
  children: [
26292
- /* @__PURE__ */ jsxs128(
26293
- Box12,
26441
+ /* @__PURE__ */ jsxs129(
26442
+ Box13,
26294
26443
  {
26295
26444
  role: "button",
26296
26445
  sx: {
@@ -26299,23 +26448,23 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
26299
26448
  gap: 1
26300
26449
  },
26301
26450
  children: [
26302
- /* @__PURE__ */ jsx135(Typography8, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
26303
- isOpen ? /* @__PURE__ */ jsx135(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx135(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
26451
+ /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
26452
+ isOpen ? /* @__PURE__ */ jsx136(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx136(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
26304
26453
  ]
26305
26454
  }
26306
26455
  ),
26307
- action !== false && /* @__PURE__ */ jsx135(Box12, { onClick: (event) => {
26456
+ action !== false && /* @__PURE__ */ jsx136(Box13, { onClick: (event) => {
26308
26457
  event.stopPropagation();
26309
26458
  }, children: action })
26310
26459
  ]
26311
26460
  }
26312
26461
  ),
26313
- isOpen && /* @__PURE__ */ jsx135(Box12, { children })
26462
+ isOpen && /* @__PURE__ */ jsx136(Box13, { children })
26314
26463
  ] });
26315
26464
  };
26316
26465
 
26317
26466
  // src/components/event-details/event-details.tsx
26318
- import { Fragment as Fragment7, jsx as jsx136, jsxs as jsxs129 } from "react/jsx-runtime";
26467
+ import { Fragment as Fragment8, jsx as jsx137, jsxs as jsxs130 } from "react/jsx-runtime";
26319
26468
  function tryParseJson(value) {
26320
26469
  if (typeof value !== "string") {
26321
26470
  return value;
@@ -26344,9 +26493,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
26344
26493
  () => getEventGroupsByType(selectedEvent?.events ?? []),
26345
26494
  [selectedEvent?.events]
26346
26495
  );
26347
- const [parseNestedJson, setParseNestedJson] = useState14(true);
26496
+ const [parseNestedJson, setParseNestedJson] = useState15(true);
26348
26497
  if (!selectedEvent) {
26349
- return /* @__PURE__ */ jsx136(Box13, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx136(Typography9, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
26498
+ return /* @__PURE__ */ jsx137(Box14, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx137(Typography10, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
26350
26499
  }
26351
26500
  const isLambdaInvoke = checkIsLambdaInvoke(selectedEvent);
26352
26501
  const isSqsSendMessage = checkIsSqsSendMessage(selectedEvent);
@@ -26367,9 +26516,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
26367
26516
  const exceptionPayload = tryParseJson(selectedEvent.attributes?.["localstack.aws.service.exception"]);
26368
26517
  const hasPayloads = requestPayload !== void 0 || responsePayload !== void 0 || exceptionPayload !== void 0;
26369
26518
  const duration = selectedEvent.end_time_unix_nano ? ((BigInt(selectedEvent.end_time_unix_nano) - BigInt(selectedEvent.start_time_unix_nano)) / BigInt("1000000")).toString() : void 0;
26370
- return /* @__PURE__ */ jsxs129(Box13, { "data-testid": "event-details", sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
26371
- /* @__PURE__ */ jsxs129(
26372
- Box13,
26519
+ return /* @__PURE__ */ jsxs130(Box14, { "data-testid": "event-details", sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
26520
+ /* @__PURE__ */ jsxs130(
26521
+ Box14,
26373
26522
  {
26374
26523
  sx: {
26375
26524
  alignItems: "center",
@@ -26381,57 +26530,57 @@ var EventDetails = ({ onClose, selectedEvent }) => {
26381
26530
  py: 1
26382
26531
  },
26383
26532
  children: [
26384
- /* @__PURE__ */ jsx136(Box13, { children: /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
26385
- onClose && /* @__PURE__ */ jsx136(IconButton3, { onClick: onClose, size: "small", children: /* @__PURE__ */ jsx136(Close2, {}) })
26533
+ /* @__PURE__ */ jsx137(Box14, { children: /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
26534
+ onClose && /* @__PURE__ */ jsx137(IconButton4, { onClick: onClose, size: "small", children: /* @__PURE__ */ jsx137(Close2, {}) })
26386
26535
  ]
26387
26536
  }
26388
26537
  ),
26389
- /* @__PURE__ */ jsx136(Box13, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs129(Stack2, { spacing: 2, children: [
26390
- /* @__PURE__ */ jsx136(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs129(Stack2, { spacing: 1, children: [
26391
- /* @__PURE__ */ jsxs129(Box13, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
26392
- /* @__PURE__ */ jsxs129(Box13, { children: [
26393
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
26394
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.service_name })
26538
+ /* @__PURE__ */ jsx137(Box14, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 2, children: [
26539
+ /* @__PURE__ */ jsx137(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 1, children: [
26540
+ /* @__PURE__ */ jsxs130(Box14, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
26541
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26542
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
26543
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.service_name })
26395
26544
  ] }),
26396
- /* @__PURE__ */ jsxs129(Box13, { children: [
26397
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Operation" }),
26398
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.operation_name })
26545
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26546
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Operation" }),
26547
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.operation_name })
26399
26548
  ] })
26400
26549
  ] }),
26401
- /* @__PURE__ */ jsxs129(Box13, { children: [
26402
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
26403
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.resource_name })
26550
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26551
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
26552
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.resource_name })
26404
26553
  ] }),
26405
- Boolean(resourceArn) && /* @__PURE__ */ jsxs129(Box13, { children: [
26406
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
26407
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: resourceArn })
26554
+ Boolean(resourceArn) && /* @__PURE__ */ jsxs130(Box14, { children: [
26555
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
26556
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: resourceArn })
26408
26557
  ] }),
26409
- /* @__PURE__ */ jsxs129(Box13, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
26410
- /* @__PURE__ */ jsxs129(Box13, { children: [
26411
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
26412
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.account_id })
26558
+ /* @__PURE__ */ jsxs130(Box14, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
26559
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26560
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
26561
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.account_id })
26413
26562
  ] }),
26414
- /* @__PURE__ */ jsxs129(Box13, { children: [
26415
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
26416
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.region })
26563
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26564
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
26565
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.region })
26417
26566
  ] })
26418
26567
  ] }),
26419
- /* @__PURE__ */ jsxs129(Box13, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
26420
- /* @__PURE__ */ jsxs129(Box13, { children: [
26421
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
26422
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
26568
+ /* @__PURE__ */ jsxs130(Box14, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
26569
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26570
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
26571
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
26423
26572
  ] }),
26424
- duration !== void 0 && /* @__PURE__ */ jsxs129(Box13, { children: [
26425
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
26426
- /* @__PURE__ */ jsxs129(Typography9, { variant: "body2", children: [
26573
+ duration !== void 0 && /* @__PURE__ */ jsxs130(Box14, { children: [
26574
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
26575
+ /* @__PURE__ */ jsxs130(Typography10, { variant: "body2", children: [
26427
26576
  duration,
26428
26577
  "ms"
26429
26578
  ] })
26430
26579
  ] })
26431
26580
  ] }),
26432
- /* @__PURE__ */ jsxs129(Box13, { children: [
26433
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
26434
- /* @__PURE__ */ jsx136(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx136(
26581
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26582
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
26583
+ /* @__PURE__ */ jsx137(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx137(
26435
26584
  Chip3,
26436
26585
  {
26437
26586
  color: selectedEvent.status_code === 2 ? "error" : selectedEvent.status_code === 1 ? "success" : "default",
@@ -26441,49 +26590,49 @@ var EventDetails = ({ onClose, selectedEvent }) => {
26441
26590
  ) })
26442
26591
  ] })
26443
26592
  ] }) }),
26444
- /* @__PURE__ */ jsx136(Divider2, {}),
26445
- /* @__PURE__ */ jsxs129(ToggleSection, { headline: "Permissions", children: [
26446
- !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx136(Typography9, { color: "text.secondary", variant: "body2", children: "There is no permission information available. Are IAM Policy Streams enabled?" }),
26447
- eventGroups.permissions && /* @__PURE__ */ jsx136(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
26448
- eventGroups.errors && /* @__PURE__ */ jsx136(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
26449
- eventGroups.warnings && /* @__PURE__ */ jsx136(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
26593
+ /* @__PURE__ */ jsx137(Divider3, {}),
26594
+ /* @__PURE__ */ jsxs130(ToggleSection, { headline: "Permissions", children: [
26595
+ !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx137(Typography10, { color: "text.secondary", variant: "body2", children: "There is no permission information available. Are IAM Policy Streams enabled?" }),
26596
+ eventGroups.permissions && /* @__PURE__ */ jsx137(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
26597
+ eventGroups.errors && /* @__PURE__ */ jsx137(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
26598
+ eventGroups.warnings && /* @__PURE__ */ jsx137(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
26450
26599
  ] }),
26451
- hasPayloads && /* @__PURE__ */ jsxs129(Fragment7, { children: [
26452
- /* @__PURE__ */ jsx136(Divider2, {}),
26453
- /* @__PURE__ */ jsx136(
26600
+ hasPayloads && /* @__PURE__ */ jsxs130(Fragment8, { children: [
26601
+ /* @__PURE__ */ jsx137(Divider3, {}),
26602
+ /* @__PURE__ */ jsx137(
26454
26603
  ToggleSection,
26455
26604
  {
26456
- action: /* @__PURE__ */ jsx136(
26605
+ action: /* @__PURE__ */ jsx137(
26457
26606
  FormControlLabel2,
26458
26607
  {
26459
- control: /* @__PURE__ */ jsx136(Switch, { checked: !parseNestedJson, onChange: (event) => {
26608
+ control: /* @__PURE__ */ jsx137(Switch, { checked: !parseNestedJson, onChange: (event) => {
26460
26609
  setParseNestedJson(!event.target.checked);
26461
26610
  }, size: "small" }),
26462
- label: /* @__PURE__ */ jsx136(Typography9, { variant: "caption", children: "View raw data" }),
26611
+ label: /* @__PURE__ */ jsx137(Typography10, { variant: "caption", children: "View raw data" }),
26463
26612
  sx: { mr: 0 }
26464
26613
  }
26465
26614
  ),
26466
26615
  headline: "Payloads",
26467
- children: /* @__PURE__ */ jsxs129(Stack2, { spacing: 2, children: [
26468
- requestPayload !== void 0 && /* @__PURE__ */ jsxs129(Box13, { children: [
26469
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
26470
- /* @__PURE__ */ jsx136(PayloadViewer, { value: requestPayload })
26616
+ children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 2, children: [
26617
+ requestPayload !== void 0 && /* @__PURE__ */ jsxs130(Box14, { children: [
26618
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
26619
+ /* @__PURE__ */ jsx137(PayloadViewer, { value: requestPayload })
26471
26620
  ] }),
26472
- responsePayload !== void 0 && /* @__PURE__ */ jsxs129(Box13, { children: [
26473
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
26474
- /* @__PURE__ */ jsx136(PayloadViewer, { value: responsePayload })
26621
+ responsePayload !== void 0 && /* @__PURE__ */ jsxs130(Box14, { children: [
26622
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
26623
+ /* @__PURE__ */ jsx137(PayloadViewer, { value: responsePayload })
26475
26624
  ] }),
26476
- exceptionPayload !== void 0 && /* @__PURE__ */ jsxs129(Box13, { children: [
26477
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
26478
- /* @__PURE__ */ jsx136(PayloadViewer, { value: exceptionPayload })
26625
+ exceptionPayload !== void 0 && /* @__PURE__ */ jsxs130(Box14, { children: [
26626
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
26627
+ /* @__PURE__ */ jsx137(PayloadViewer, { value: exceptionPayload })
26479
26628
  ] })
26480
26629
  ] })
26481
26630
  }
26482
26631
  )
26483
26632
  ] }),
26484
- isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs129(Fragment7, { children: [
26485
- /* @__PURE__ */ jsx136(Divider2, {}),
26486
- /* @__PURE__ */ jsx136(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx136(
26633
+ isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs130(Fragment8, { children: [
26634
+ /* @__PURE__ */ jsx137(Divider3, {}),
26635
+ /* @__PURE__ */ jsx137(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx137(
26487
26636
  LambdaInvokeLogsSection,
26488
26637
  {
26489
26638
  endTimeNano: selectedEvent.end_time_unix_nano ?? selectedEvent.start_time_unix_nano,
@@ -26494,28 +26643,28 @@ var EventDetails = ({ onClose, selectedEvent }) => {
26494
26643
  }
26495
26644
  ) })
26496
26645
  ] }),
26497
- /* @__PURE__ */ jsx136(Divider2, {}),
26498
- /* @__PURE__ */ jsx136(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs129(Stack2, { spacing: 1, children: [
26499
- /* @__PURE__ */ jsxs129(Box13, { children: [
26500
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
26501
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.span_id })
26646
+ /* @__PURE__ */ jsx137(Divider3, {}),
26647
+ /* @__PURE__ */ jsx137(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 1, children: [
26648
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26649
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
26650
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.span_id })
26502
26651
  ] }),
26503
- /* @__PURE__ */ jsxs129(Box13, { children: [
26504
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
26505
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: selectedEvent.trace_id })
26652
+ /* @__PURE__ */ jsxs130(Box14, { children: [
26653
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
26654
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: selectedEvent.trace_id })
26506
26655
  ] }),
26507
- requestId !== void 0 && /* @__PURE__ */ jsxs129(Box13, { children: [
26508
- /* @__PURE__ */ jsx136(Typography9, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
26509
- /* @__PURE__ */ jsx136(Typography9, { variant: "body2", children: requestId })
26656
+ requestId !== void 0 && /* @__PURE__ */ jsxs130(Box14, { children: [
26657
+ /* @__PURE__ */ jsx137(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
26658
+ /* @__PURE__ */ jsx137(Typography10, { variant: "body2", children: requestId })
26510
26659
  ] }),
26511
- eventGroups.info && /* @__PURE__ */ jsx136(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
26660
+ eventGroups.info && /* @__PURE__ */ jsx137(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
26512
26661
  ] }) })
26513
26662
  ] }) })
26514
26663
  ] });
26515
26664
  };
26516
26665
  var PayloadViewer = memo10(({ value }) => {
26517
26666
  const theme = useTheme3();
26518
- return /* @__PURE__ */ jsx136(Box13, { sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1 }, children: /* @__PURE__ */ jsx136(
26667
+ return /* @__PURE__ */ jsx137(Box14, { sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1 }, children: /* @__PURE__ */ jsx137(
26519
26668
  JsonViewer,
26520
26669
  {
26521
26670
  displayDataTypes: false,
@@ -26530,32 +26679,32 @@ var PayloadViewer = memo10(({ value }) => {
26530
26679
 
26531
26680
  // src/components/trace-graph/trace-graph.tsx
26532
26681
  import "@xyflow/react/dist/base.css";
26533
- import { Alert as Alert3, Button as Button4, useTheme as useTheme4 } from "@mui/material";
26682
+ import { Alert as Alert3, Button as Button5, useTheme as useTheme4 } from "@mui/material";
26534
26683
  import { Background, MarkerType, Position as Position2, ReactFlow, useEdgesState, useNodesState } from "@xyflow/react";
26535
26684
  import { useEffect as useEffect19 } from "react";
26536
26685
 
26537
26686
  // src/components/trace-graph/service-node.tsx
26538
- import { Box as Box15, Stack as Stack3, Typography as Typography10 } from "@mui/material";
26687
+ import { Box as Box16, Stack as Stack3, Typography as Typography11 } from "@mui/material";
26539
26688
  import "@xyflow/react/dist/style.css";
26540
26689
  import { Handle, Position } from "@xyflow/react";
26541
26690
  import { memo as memo11 } from "react";
26542
26691
 
26543
26692
  // src/components/trace-graph/problem-indicator.tsx
26544
26693
  import { Error as ErrorIcon2, Info as Info2, Warning as Warning2 } from "@mui/icons-material";
26545
- import { Box as Box14, Tooltip as Tooltip3 } from "@mui/material";
26694
+ import { Box as Box15, Tooltip as Tooltip4 } from "@mui/material";
26546
26695
  import { useMemo as useMemo12 } from "react";
26547
- import { jsx as jsx137 } from "react/jsx-runtime";
26696
+ import { jsx as jsx138 } from "react/jsx-runtime";
26548
26697
  var ProblemIndicator = ({ error }) => {
26549
26698
  const icon = useMemo12(() => {
26550
26699
  switch (error.level) {
26551
26700
  case "error": {
26552
- return /* @__PURE__ */ jsx137(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
26701
+ return /* @__PURE__ */ jsx138(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
26553
26702
  }
26554
26703
  case "warning": {
26555
- return /* @__PURE__ */ jsx137(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
26704
+ return /* @__PURE__ */ jsx138(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
26556
26705
  }
26557
26706
  default: {
26558
- return /* @__PURE__ */ jsx137(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
26707
+ return /* @__PURE__ */ jsx138(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
26559
26708
  }
26560
26709
  }
26561
26710
  }, [error.level]);
@@ -26572,8 +26721,8 @@ var ProblemIndicator = ({ error }) => {
26572
26721
  }
26573
26722
  }
26574
26723
  }, [error.level]);
26575
- return /* @__PURE__ */ jsx137(Tooltip3, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx137(
26576
- Box14,
26724
+ return /* @__PURE__ */ jsx138(Tooltip4, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx138(
26725
+ Box15,
26577
26726
  {
26578
26727
  sx: {
26579
26728
  alignItems: "center",
@@ -26592,7 +26741,7 @@ var ProblemIndicator = ({ error }) => {
26592
26741
  };
26593
26742
 
26594
26743
  // src/components/trace-graph/service-node.tsx
26595
- import { jsx as jsx138, jsxs as jsxs130 } from "react/jsx-runtime";
26744
+ import { jsx as jsx139, jsxs as jsxs131 } from "react/jsx-runtime";
26596
26745
  var handleStyle = {
26597
26746
  backgroundColor: "white",
26598
26747
  borderColor: "lightgray",
@@ -26600,9 +26749,9 @@ var handleStyle = {
26600
26749
  };
26601
26750
  var ServiceNode = memo11(({ data, selected }) => {
26602
26751
  const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false;
26603
- return /* @__PURE__ */ jsxs130(Box15, { sx: { maxWidth: 200 }, children: [
26604
- /* @__PURE__ */ jsxs130(
26605
- Box15,
26752
+ return /* @__PURE__ */ jsxs131(Box16, { sx: { maxWidth: 200 }, children: [
26753
+ /* @__PURE__ */ jsxs131(
26754
+ Box16,
26606
26755
  {
26607
26756
  role: "button",
26608
26757
  sx: {
@@ -26622,9 +26771,9 @@ var ServiceNode = memo11(({ data, selected }) => {
26622
26771
  },
26623
26772
  tabIndex: 0,
26624
26773
  children: [
26625
- /* @__PURE__ */ jsx138(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
26626
- /* @__PURE__ */ jsx138(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
26627
- /* @__PURE__ */ jsx138(
26774
+ /* @__PURE__ */ jsx139(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
26775
+ /* @__PURE__ */ jsx139(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
26776
+ /* @__PURE__ */ jsx139(
26628
26777
  ServiceCell,
26629
26778
  {
26630
26779
  height: "32px",
@@ -26637,7 +26786,7 @@ var ServiceNode = memo11(({ data, selected }) => {
26637
26786
  ]
26638
26787
  }
26639
26788
  ),
26640
- /* @__PURE__ */ jsxs130(
26789
+ /* @__PURE__ */ jsxs131(
26641
26790
  Stack3,
26642
26791
  {
26643
26792
  alignItems: "center",
@@ -26648,7 +26797,7 @@ var ServiceNode = memo11(({ data, selected }) => {
26648
26797
  mt: 0.5
26649
26798
  },
26650
26799
  children: [
26651
- hasErrors && /* @__PURE__ */ jsx138(
26800
+ hasErrors && /* @__PURE__ */ jsx139(
26652
26801
  Stack3,
26653
26802
  {
26654
26803
  direction: "row",
@@ -26657,11 +26806,11 @@ var ServiceNode = memo11(({ data, selected }) => {
26657
26806
  flexWrap: "wrap",
26658
26807
  gap: "2px"
26659
26808
  },
26660
- children: data.event.errors?.map((error) => /* @__PURE__ */ jsx138(ProblemIndicator, { error }, error.span_id))
26809
+ children: data.event.errors?.map((error) => /* @__PURE__ */ jsx139(ProblemIndicator, { error }, error.span_id))
26661
26810
  }
26662
26811
  ),
26663
- /* @__PURE__ */ jsx138(
26664
- Typography10,
26812
+ /* @__PURE__ */ jsx139(
26813
+ Typography11,
26665
26814
  {
26666
26815
  sx: {
26667
26816
  fontSize: "0.9rem",
@@ -26712,11 +26861,11 @@ var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
26712
26861
 
26713
26862
  // src/components/trace-graph/xyflow/controls.tsx
26714
26863
  import { Add, FitScreen, Remove } from "@mui/icons-material";
26715
- import { Box as Box16, IconButton as IconButton4 } from "@mui/material";
26864
+ import { Box as Box17, IconButton as IconButton5 } from "@mui/material";
26716
26865
  import { useReactFlow, useStore as useStore2 } from "@xyflow/react";
26717
26866
  import { memo as memo12 } from "react";
26718
26867
  import { shallow } from "zustand/shallow";
26719
- import { jsx as jsx139, jsxs as jsxs131 } from "react/jsx-runtime";
26868
+ import { jsx as jsx140, jsxs as jsxs132 } from "react/jsx-runtime";
26720
26869
  var selector = (s2) => ({
26721
26870
  isInteractive: s2.nodesDraggable || s2.nodesConnectable || s2.elementsSelectable,
26722
26871
  maxZoomReached: s2.transform[2] >= s2.maxZoom,
@@ -26734,8 +26883,8 @@ var Controls = memo12(() => {
26734
26883
  const onFitViewHandler = () => {
26735
26884
  void fitView();
26736
26885
  };
26737
- return /* @__PURE__ */ jsxs131(
26738
- Box16,
26886
+ return /* @__PURE__ */ jsxs132(
26887
+ Box17,
26739
26888
  {
26740
26889
  sx: {
26741
26890
  bottom: 0,
@@ -26748,33 +26897,33 @@ var Controls = memo12(() => {
26748
26897
  zIndex: 5
26749
26898
  },
26750
26899
  children: [
26751
- /* @__PURE__ */ jsx139(
26752
- IconButton4,
26900
+ /* @__PURE__ */ jsx140(
26901
+ IconButton5,
26753
26902
  {
26754
26903
  className: "react-flow__controls-zoomin",
26755
26904
  disabled: maxZoomReached,
26756
26905
  onClick: onZoomInHandler,
26757
26906
  size: "small",
26758
- children: /* @__PURE__ */ jsx139(Add, {})
26907
+ children: /* @__PURE__ */ jsx140(Add, {})
26759
26908
  }
26760
26909
  ),
26761
- /* @__PURE__ */ jsx139(
26762
- IconButton4,
26910
+ /* @__PURE__ */ jsx140(
26911
+ IconButton5,
26763
26912
  {
26764
26913
  className: "react-flow__controls-zoomout",
26765
26914
  disabled: minZoomReached,
26766
26915
  onClick: onZoomOutHandler,
26767
26916
  size: "small",
26768
- children: /* @__PURE__ */ jsx139(Remove, {})
26917
+ children: /* @__PURE__ */ jsx140(Remove, {})
26769
26918
  }
26770
26919
  ),
26771
- /* @__PURE__ */ jsx139(
26772
- IconButton4,
26920
+ /* @__PURE__ */ jsx140(
26921
+ IconButton5,
26773
26922
  {
26774
26923
  className: "react-flow__controls-fitview",
26775
26924
  onClick: onFitViewHandler,
26776
26925
  size: "small",
26777
- children: /* @__PURE__ */ jsx139(FitScreen, {})
26926
+ children: /* @__PURE__ */ jsx140(FitScreen, {})
26778
26927
  }
26779
26928
  )
26780
26929
  ]
@@ -26783,7 +26932,7 @@ var Controls = memo12(() => {
26783
26932
  });
26784
26933
 
26785
26934
  // src/components/trace-graph/trace-graph.tsx
26786
- import { Fragment as Fragment8, jsx as jsx140, jsxs as jsxs132 } from "react/jsx-runtime";
26935
+ import { Fragment as Fragment9, jsx as jsx141, jsxs as jsxs133 } from "react/jsx-runtime";
26787
26936
  var nodeTypes = {
26788
26937
  service: ServiceNode
26789
26938
  };
@@ -26846,11 +26995,11 @@ var TraceGraph = ({
26846
26995
  setEdges(layoutedEdges);
26847
26996
  }, [spans.data, initialFocusEventId, setNodes, setEdges]);
26848
26997
  const theme = useTheme4();
26849
- return /* @__PURE__ */ jsxs132(Fragment8, { children: [
26850
- spans.error && /* @__PURE__ */ jsxs132(
26998
+ return /* @__PURE__ */ jsxs133(Fragment9, { children: [
26999
+ spans.error && /* @__PURE__ */ jsxs133(
26851
27000
  Alert3,
26852
27001
  {
26853
- action: /* @__PURE__ */ jsx140(Button4, { onClick: () => {
27002
+ action: /* @__PURE__ */ jsx141(Button5, { onClick: () => {
26854
27003
  onRefresh();
26855
27004
  }, children: "Retry" }),
26856
27005
  severity: "error",
@@ -26861,7 +27010,7 @@ var TraceGraph = ({
26861
27010
  ]
26862
27011
  }
26863
27012
  ),
26864
- /* @__PURE__ */ jsxs132(
27013
+ /* @__PURE__ */ jsxs133(
26865
27014
  ReactFlow,
26866
27015
  {
26867
27016
  "data-testid": "trace-graph",
@@ -26879,8 +27028,8 @@ var TraceGraph = ({
26879
27028
  onNodesChange,
26880
27029
  selectNodesOnDrag: false,
26881
27030
  children: [
26882
- /* @__PURE__ */ jsx140(Controls, {}),
26883
- /* @__PURE__ */ jsx140(
27031
+ /* @__PURE__ */ jsx141(Controls, {}),
27032
+ /* @__PURE__ */ jsx141(
26884
27033
  Background,
26885
27034
  {
26886
27035
  bgColor: theme.palette.background.paper,
@@ -26894,7 +27043,7 @@ var TraceGraph = ({
26894
27043
  };
26895
27044
 
26896
27045
  // src/pages/trace-graph-page.tsx
26897
- import { Fragment as Fragment9, jsx as jsx141, jsxs as jsxs133 } from "react/jsx-runtime";
27046
+ import { Fragment as Fragment10, jsx as jsx142, jsxs as jsxs134 } from "react/jsx-runtime";
26898
27047
  var HEADER_HEIGHT = 56;
26899
27048
  var DRAWER_WIDTH = "35%";
26900
27049
  var Main = styled("main", { shouldForwardProp: (property) => property !== "open" })(({ open, theme }) => ({
@@ -26942,8 +27091,8 @@ var TraceGraphView = ({
26942
27091
  traceId
26943
27092
  }) => {
26944
27093
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
26945
- return /* @__PURE__ */ jsxs133(
26946
- Box17,
27094
+ return /* @__PURE__ */ jsxs134(
27095
+ Box18,
26947
27096
  {
26948
27097
  "data-testid": "trace-graph-page",
26949
27098
  sx: {
@@ -26955,13 +27104,13 @@ var TraceGraphView = ({
26955
27104
  overflow: "hidden"
26956
27105
  },
26957
27106
  children: [
26958
- /* @__PURE__ */ jsxs133(Box17, { sx: { display: "flex", width: "100%" }, children: [
26959
- /* @__PURE__ */ jsx141(Button5, { onClick: () => {
27107
+ /* @__PURE__ */ jsxs134(Box18, { sx: { display: "flex", width: "100%" }, children: [
27108
+ /* @__PURE__ */ jsx142(Button6, { onClick: () => {
26960
27109
  navigateToSpansList();
26961
- }, startIcon: /* @__PURE__ */ jsx141(ArrowBack, {}), children: "Go back" }),
26962
- /* @__PURE__ */ jsx141(Box17, { sx: { flexGrow: 1 } })
27110
+ }, startIcon: /* @__PURE__ */ jsx142(ArrowBack, {}), children: "Go back" }),
27111
+ /* @__PURE__ */ jsx142(Box18, { sx: { flexGrow: 1 } })
26963
27112
  ] }),
26964
- /* @__PURE__ */ jsx141(
27113
+ /* @__PURE__ */ jsx142(
26965
27114
  Paper3,
26966
27115
  {
26967
27116
  sx: {
@@ -26971,22 +27120,22 @@ var TraceGraphView = ({
26971
27120
  position: "relative",
26972
27121
  width: "100%"
26973
27122
  },
26974
- children: shouldShowStatusMessage ? /* @__PURE__ */ jsx141(
27123
+ children: shouldShowStatusMessage ? /* @__PURE__ */ jsx142(
26975
27124
  StatusMessage,
26976
27125
  {
26977
27126
  error: statusError,
26978
27127
  onRetry: handleRetry,
26979
27128
  status
26980
27129
  }
26981
- ) : /* @__PURE__ */ jsxs133(Fragment9, { children: [
26982
- /* @__PURE__ */ jsx141(Main, { open, children: /* @__PURE__ */ jsx141(
26983
- Box17,
27130
+ ) : /* @__PURE__ */ jsxs134(Fragment10, { children: [
27131
+ /* @__PURE__ */ jsx142(Main, { open, children: /* @__PURE__ */ jsx142(
27132
+ Box18,
26984
27133
  {
26985
27134
  sx: {
26986
27135
  height: "100%",
26987
27136
  overflow: "auto"
26988
27137
  },
26989
- children: traceId !== void 0 && /* @__PURE__ */ jsx141(ReactFlowProvider, { children: /* @__PURE__ */ jsx141(
27138
+ children: traceId !== void 0 && /* @__PURE__ */ jsx142(ReactFlowProvider, { children: /* @__PURE__ */ jsx142(
26990
27139
  TraceGraph,
26991
27140
  {
26992
27141
  initialFocusEventId: spanId,
@@ -27003,7 +27152,7 @@ var TraceGraphView = ({
27003
27152
  ) })
27004
27153
  }
27005
27154
  ) }),
27006
- /* @__PURE__ */ jsx141(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx141(EventDetails, { onClose: handleClose, selectedEvent }) })
27155
+ /* @__PURE__ */ jsx142(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx142(EventDetails, { onClose: handleClose, selectedEvent }) })
27007
27156
  ] })
27008
27157
  }
27009
27158
  )
@@ -27047,9 +27196,9 @@ async function fetchConnectedTraces(api, traceIds, allSpans = /* @__PURE__ */ ne
27047
27196
  }
27048
27197
  var TraceGraphPage = ({ onClose, spanId, traceId }) => {
27049
27198
  const api = useAppInspectorApi();
27050
- const [spans, setSpans] = useState15();
27051
- const [loading, setLoading] = useState15(false);
27052
- const [fetchError, setFetchError] = useState15();
27199
+ const [spans, setSpans] = useState16();
27200
+ const [loading, setLoading] = useState16(false);
27201
+ const [fetchError, setFetchError] = useState16();
27053
27202
  const fetchSpans = useCallback9(async () => {
27054
27203
  setLoading(true);
27055
27204
  try {
@@ -27066,8 +27215,8 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
27066
27215
  useEffect20(() => {
27067
27216
  void fetchSpans();
27068
27217
  }, [fetchSpans]);
27069
- const [open, setOpen] = useState15(true);
27070
- const [selectedEvent, setSelectedEvent] = useState15(() => spans?.find((span) => span.span_id === spanId));
27218
+ const [open, setOpen] = useState16(true);
27219
+ const [selectedEvent, setSelectedEvent] = useState16(() => spans?.find((span) => span.span_id === spanId));
27071
27220
  const spansReference = useRef15();
27072
27221
  useEffect20(() => {
27073
27222
  if (!spansReference.current && spans) {
@@ -27087,7 +27236,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
27087
27236
  const navigateToSpansList = useCallback9(() => {
27088
27237
  onClose?.();
27089
27238
  }, [onClose]);
27090
- return /* @__PURE__ */ jsx141(
27239
+ return /* @__PURE__ */ jsx142(
27091
27240
  TraceGraphView,
27092
27241
  {
27093
27242
  fetchError,
@@ -27111,7 +27260,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
27111
27260
  };
27112
27261
 
27113
27262
  // src/pages/spans-list-page.tsx
27114
- import { Fragment as Fragment10, jsx as jsx142, jsxs as jsxs134 } from "react/jsx-runtime";
27263
+ import { Fragment as Fragment11, jsx as jsx143, jsxs as jsxs135 } from "react/jsx-runtime";
27115
27264
  var SpansListPage = () => {
27116
27265
  const {
27117
27266
  checkStatus,
@@ -27124,18 +27273,21 @@ var SpansListPage = () => {
27124
27273
  fetchingForward,
27125
27274
  hasMoreBackward,
27126
27275
  hasMoreForward,
27276
+ licenseLimit,
27127
27277
  spans,
27128
27278
  status,
27129
27279
  statusError,
27130
27280
  streamPaused,
27131
- toggleStream
27281
+ systemLimit,
27282
+ toggleStream,
27283
+ totalCount
27132
27284
  } = useSpans();
27133
27285
  const clearSpansSync = useCallback10(() => {
27134
27286
  void clearSpans();
27135
27287
  }, [clearSpans]);
27136
27288
  const [order2, setOrder] = useLocalStorage("spans-order", "oldest_first");
27137
- const [selectedTraceId, setSelectedTraceId] = useState16();
27138
- const [selectedSpanId, setSelectedSpanId] = useState16();
27289
+ const [selectedTraceId, setSelectedTraceId] = useState17();
27290
+ const [selectedSpanId, setSelectedSpanId] = useState17();
27139
27291
  const navigateToSpan = useCallback10((span) => {
27140
27292
  setSelectedTraceId(span.trace_id);
27141
27293
  setSelectedSpanId(span.span_id);
@@ -27144,9 +27296,9 @@ var SpansListPage = () => {
27144
27296
  void checkStatus();
27145
27297
  }, [checkStatus]);
27146
27298
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
27147
- return /* @__PURE__ */ jsxs134(Fragment10, { children: [
27148
- /* @__PURE__ */ jsx142(
27149
- Box18,
27299
+ return /* @__PURE__ */ jsxs135(Fragment11, { children: [
27300
+ /* @__PURE__ */ jsx143(
27301
+ Box19,
27150
27302
  {
27151
27303
  "data-testid": "spans-list-page",
27152
27304
  sx: {
@@ -27160,14 +27312,14 @@ var SpansListPage = () => {
27160
27312
  visibility: selectedTraceId === void 0 ? "visible" : "hidden",
27161
27313
  width: "100%"
27162
27314
  },
27163
- children: shouldShowStatusMessage ? /* @__PURE__ */ jsx142(
27315
+ children: shouldShowStatusMessage ? /* @__PURE__ */ jsx143(
27164
27316
  StatusMessage,
27165
27317
  {
27166
27318
  error: statusError,
27167
27319
  onRetry: handleRetry,
27168
27320
  status
27169
27321
  }
27170
- ) : /* @__PURE__ */ jsx142(
27322
+ ) : /* @__PURE__ */ jsx143(
27171
27323
  SpansList,
27172
27324
  {
27173
27325
  clearingSpans,
@@ -27176,6 +27328,7 @@ var SpansListPage = () => {
27176
27328
  fetchingForward,
27177
27329
  hasMoreBackward,
27178
27330
  hasMoreForward,
27331
+ licenseLimit,
27179
27332
  onClearSpans: clearSpansSync,
27180
27333
  onFetchBackward: fetchBackward,
27181
27334
  onFetchForward: fetchForward,
@@ -27184,12 +27337,14 @@ var SpansListPage = () => {
27184
27337
  onToggleStream: toggleStream,
27185
27338
  order: order2,
27186
27339
  spans,
27187
- streamPaused
27340
+ streamPaused,
27341
+ systemLimit,
27342
+ totalCount
27188
27343
  }
27189
27344
  )
27190
27345
  }
27191
27346
  ),
27192
- selectedTraceId !== void 0 && /* @__PURE__ */ jsx142(TraceGraphPage, { onClose: () => {
27347
+ selectedTraceId !== void 0 && /* @__PURE__ */ jsx143(TraceGraphPage, { onClose: () => {
27193
27348
  setSelectedTraceId(void 0);
27194
27349
  }, spanId: selectedSpanId, traceId: selectedTraceId })
27195
27350
  ] });