@localstack/appinspector-ui 1.0.125 → 1.0.127

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
@@ -2414,7 +2414,7 @@ var init_event_streams = __esm({
2414
2414
 
2415
2415
  // src/pages/spans-list-page.tsx
2416
2416
  import { Box as Box20 } from "@mui/material";
2417
- import { useCallback as useCallback12, useEffect as useEffect22, useRef as useRef18, useState as useState17 } from "react";
2417
+ import { useCallback as useCallback13, useEffect as useEffect22, useRef as useRef18, useState as useState18 } from "react";
2418
2418
 
2419
2419
  // src/api/errors.ts
2420
2420
  var AppInspectorDisabledError = class extends Error {
@@ -15135,19 +15135,19 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
15135
15135
  }
15136
15136
  )
15137
15137
  ] }),
15138
- (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15138
+ (systemLimitReached || licenseLimit !== void 0 && licenseLimit !== "unlimited") && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15139
15139
  /* @__PURE__ */ jsx127(Divider3, { sx: { my: 1.5 } }),
15140
15140
  /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
15141
15141
  /* @__PURE__ */ jsx127(Typography3, { 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." }),
15142
15142
  /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
15143
- licenseLimit !== void 0 && /* @__PURE__ */ jsx127(
15143
+ licenseLimit !== void 0 && licenseLimit !== "unlimited" && /* @__PURE__ */ jsx127(
15144
15144
  StatRow,
15145
15145
  {
15146
15146
  label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
15147
15147
  value: licenseLimit
15148
15148
  }
15149
15149
  ),
15150
- systemLimit !== void 0 && /* @__PURE__ */ jsx127(
15150
+ systemLimitReached && /* @__PURE__ */ jsx127(
15151
15151
  StatRow,
15152
15152
  {
15153
15153
  label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
@@ -18614,12 +18614,12 @@ import { ArrowBack } from "@mui/icons-material";
18614
18614
  import { Box as Box19, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18615
18615
  import { styled } from "@mui/material/styles";
18616
18616
  import { ReactFlowProvider } from "@xyflow/react";
18617
- import { useCallback as useCallback11, useEffect as useEffect21, useRef as useRef17, useState as useState16 } from "react";
18617
+ import { useCallback as useCallback12, useEffect as useEffect21, useRef as useRef17, useState as useState17 } from "react";
18618
18618
 
18619
18619
  // src/components/event-details/event-details.tsx
18620
18620
  import { Close as Close2 } from "@mui/icons-material";
18621
- import { Alert as Alert4, Box as Box16, Chip as Chip3, Divider as Divider4, FormControlLabel as FormControlLabel2, IconButton as IconButton3, Stack as Stack3, Switch, Typography as Typography11 } from "@mui/material";
18622
- import { useMemo as useMemo12, useState as useState15 } from "react";
18621
+ import { Alert as Alert4, Box as Box16, Chip as Chip3, Divider as Divider4, FormControlLabel as FormControlLabel2, IconButton as IconButton4, Stack as Stack3, Switch, Typography as Typography11 } from "@mui/material";
18622
+ import { useMemo as useMemo12, useState as useState16 } from "react";
18623
18623
 
18624
18624
  // src/utils/event-utils.ts
18625
18625
  var iamEventParser = (eventName, attributes) => {
@@ -18729,31 +18729,59 @@ var getEventGroupsByType = (events) => {
18729
18729
  return groups;
18730
18730
  };
18731
18731
 
18732
+ // src/components/event-details/copy-button.tsx
18733
+ import { Check, ContentCopy } from "@mui/icons-material";
18734
+ import { IconButton as IconButton2, Tooltip as Tooltip5 } from "@mui/material";
18735
+ import { useCallback as useCallback10, useState as useState11 } from "react";
18736
+ import { jsx as jsx133 } from "react/jsx-runtime";
18737
+ var CopyButton = ({ value }) => {
18738
+ const [copied, setCopied] = useState11(false);
18739
+ const handleCopy = useCallback10(() => {
18740
+ const text2 = typeof value === "string" ? value : JSON.stringify(value, void 0, 2);
18741
+ void navigator.clipboard.writeText(text2).then(() => {
18742
+ setCopied(true);
18743
+ setTimeout(() => {
18744
+ setCopied(false);
18745
+ }, 1500);
18746
+ });
18747
+ }, [value]);
18748
+ return /* @__PURE__ */ jsx133(Tooltip5, { title: copied ? "Copied!" : "Copy", children: /* @__PURE__ */ jsx133(
18749
+ IconButton2,
18750
+ {
18751
+ className: "copy-btn",
18752
+ onClick: handleCopy,
18753
+ size: "small",
18754
+ sx: { ml: 0.5, opacity: copied ? 1 : 0, p: 0.25, transition: "opacity 0.15s" },
18755
+ children: copied ? /* @__PURE__ */ jsx133(Check, { sx: { fontSize: 14 } }) : /* @__PURE__ */ jsx133(ContentCopy, { sx: { fontSize: 14 } })
18756
+ }
18757
+ ) });
18758
+ };
18759
+
18732
18760
  // src/components/event-details/event-detail.tsx
18733
18761
  import { KeyboardArrowDown, KeyboardArrowRight } from "@mui/icons-material";
18734
- import { Box as Box13, IconButton as IconButton2, Typography as Typography8 } from "@mui/material";
18735
- import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef15, useState as useState12 } from "react";
18762
+ import { Box as Box13, IconButton as IconButton3, Typography as Typography8 } from "@mui/material";
18763
+ import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef15, useState as useState13 } from "react";
18736
18764
 
18737
18765
  // src/components/status-icon.tsx
18738
18766
  import { Cancel as Cancel2, CheckCircle, Error as Error3, Info, RemoveCircle } from "@mui/icons-material";
18739
18767
  import { Box as Box8 } from "@mui/material";
18740
- import { jsx as jsx133 } from "react/jsx-runtime";
18768
+ import { jsx as jsx134 } from "react/jsx-runtime";
18741
18769
  var StatusIcon2 = ({ errorLevel }) => {
18742
18770
  switch (errorLevel) {
18743
18771
  case EventLevel.LevelError: {
18744
- return /* @__PURE__ */ jsx133(Cancel2, { sx: { color: "red" } });
18772
+ return /* @__PURE__ */ jsx134(Cancel2, { sx: { color: "red" } });
18745
18773
  }
18746
18774
  case EventLevel.LevelInfo: {
18747
- return /* @__PURE__ */ jsx133(Info, { sx: { color: "gray" } });
18775
+ return /* @__PURE__ */ jsx134(Info, { sx: { color: "gray" } });
18748
18776
  }
18749
18777
  case EventLevel.LevelPermission: {
18750
- return /* @__PURE__ */ jsx133(RemoveCircle, { sx: { color: "blue" } });
18778
+ return /* @__PURE__ */ jsx134(RemoveCircle, { sx: { color: "blue" } });
18751
18779
  }
18752
18780
  case EventLevel.LevelWarning: {
18753
- return /* @__PURE__ */ jsx133(Error3, { sx: { color: "orange" } });
18781
+ return /* @__PURE__ */ jsx134(Error3, { sx: { color: "orange" } });
18754
18782
  }
18755
18783
  default: {
18756
- return /* @__PURE__ */ jsx133(CheckCircle, { sx: { color: "lightgray" } });
18784
+ return /* @__PURE__ */ jsx134(CheckCircle, { sx: { color: "lightgray" } });
18757
18785
  }
18758
18786
  }
18759
18787
  };
@@ -18761,39 +18789,39 @@ var StatusIcon2 = ({ errorLevel }) => {
18761
18789
  // src/components/event-details/iam-event-detail.tsx
18762
18790
  import { CheckCircle as CheckCircle2, Error as ErrorIcon, Warning } from "@mui/icons-material";
18763
18791
  import { Box as Box9, Chip, Typography as Typography6 } from "@mui/material";
18764
- import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18792
+ import { jsx as jsx135, jsxs as jsxs125 } from "react/jsx-runtime";
18765
18793
  var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18766
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18767
- /* @__PURE__ */ jsx134(Box9, { children: typeof content === "string" ? /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18794
+ /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18795
+ /* @__PURE__ */ jsx135(Box9, { children: typeof content === "string" ? /* @__PURE__ */ jsx135(Typography6, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18768
18796
  ] });
18769
18797
  var PermissionIcon = ({ status }) => {
18770
18798
  switch (status) {
18771
18799
  case "explicitly_allowed":
18772
18800
  case "implicitly_allowed": {
18773
- return /* @__PURE__ */ jsx134(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18801
+ return /* @__PURE__ */ jsx135(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18774
18802
  }
18775
18803
  case "explicitly_denied": {
18776
- return /* @__PURE__ */ jsx134(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18804
+ return /* @__PURE__ */ jsx135(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18777
18805
  }
18778
18806
  case "implicitly_denied": {
18779
- return /* @__PURE__ */ jsx134(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18807
+ return /* @__PURE__ */ jsx135(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18780
18808
  }
18781
18809
  }
18782
18810
  };
18783
18811
  var IAMEventDetail = ({ event }) => {
18784
18812
  const payloadString = event.attributes?.payload;
18785
18813
  if (!payloadString) {
18786
- return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18814
+ return /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18787
18815
  }
18788
18816
  const parsedIAM = parseIAMEvent(payloadString);
18789
18817
  if (!parsedIAM) {
18790
- return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18818
+ return /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18791
18819
  }
18792
18820
  return /* @__PURE__ */ jsxs125(Box9, { children: [
18793
- /* @__PURE__ */ jsx134(Box9, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx134(
18821
+ /* @__PURE__ */ jsx135(Box9, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx135(
18794
18822
  Chip,
18795
18823
  {
18796
- icon: /* @__PURE__ */ jsx134(PermissionIcon, { status: parsedIAM.permission }),
18824
+ icon: /* @__PURE__ */ jsx135(PermissionIcon, { status: parsedIAM.permission }),
18797
18825
  label: formatPermissionStatus(parsedIAM.permission),
18798
18826
  size: "small",
18799
18827
  sx: {
@@ -18803,36 +18831,36 @@ var IAMEventDetail = ({ event }) => {
18803
18831
  variant: "outlined"
18804
18832
  }
18805
18833
  ) }),
18806
- /* @__PURE__ */ jsx134(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18807
- /* @__PURE__ */ jsx134(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18808
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx134(
18834
+ /* @__PURE__ */ jsx135(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18835
+ /* @__PURE__ */ jsx135(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18836
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx135(
18809
18837
  DetailRow,
18810
18838
  {
18811
- content: /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18839
+ content: /* @__PURE__ */ jsx135(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx135(Typography6, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18812
18840
  label: "Actions"
18813
18841
  }
18814
18842
  ),
18815
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx134(
18843
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx135(
18816
18844
  DetailRow,
18817
18845
  {
18818
- content: /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18846
+ content: /* @__PURE__ */ jsx135(Box9, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx135(Typography6, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18819
18847
  label: "Resources"
18820
18848
  }
18821
18849
  ),
18822
18850
  (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ jsxs125(Box9, { sx: { mt: 1.5 }, children: [
18823
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18851
+ /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18824
18852
  /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18825
18853
  parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18826
- /* @__PURE__ */ jsx134(Typography6, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18827
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18854
+ /* @__PURE__ */ jsx135(Typography6, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18855
+ /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18828
18856
  ] }),
18829
18857
  parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18830
- /* @__PURE__ */ jsx134(Typography6, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18831
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18858
+ /* @__PURE__ */ jsx135(Typography6, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18859
+ /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18832
18860
  ] }),
18833
18861
  parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18834
- /* @__PURE__ */ jsx134(Typography6, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18835
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18862
+ /* @__PURE__ */ jsx135(Typography6, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18863
+ /* @__PURE__ */ jsx135(Typography6, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18836
18864
  ] })
18837
18865
  ] })
18838
18866
  ] })
@@ -18842,16 +18870,12 @@ var IAMEventDetail = ({ event }) => {
18842
18870
  // src/components/event-details/iam-permission-detail.tsx
18843
18871
  import { Box as Box10, Chip as Chip2, Stack, Typography as Typography7 } from "@mui/material";
18844
18872
  import { useMemo as useMemo8 } from "react";
18845
- import { jsx as jsx135, jsxs as jsxs126 } from "react/jsx-runtime";
18873
+ import { jsx as jsx136, jsxs as jsxs126 } from "react/jsx-runtime";
18846
18874
  var getChipColor = (isAllowed, spanStatusCode) => {
18847
18875
  if (isAllowed) return "success.main";
18848
18876
  if (spanStatusCode === 2) return "error.main";
18849
18877
  return "warning.main";
18850
18878
  };
18851
- var LabelValue = ({ label, value }) => /* @__PURE__ */ jsxs126(Box10, { children: [
18852
- /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", fontWeight: 600 }, variant: "caption", children: label }),
18853
- /* @__PURE__ */ jsx135(Typography7, { sx: { wordBreak: "break-all" }, variant: "body2", children: value })
18854
- ] });
18855
18879
  var IAMPermissionItem = ({ event, spanStatusCode }) => {
18856
18880
  const parsedData = useMemo8(() => {
18857
18881
  const payloadString = event.attributes?.payload;
@@ -18867,30 +18891,42 @@ var IAMPermissionItem = ({ event, spanStatusCode }) => {
18867
18891
  const isAllowed = parsedIAM.permission === "explicitly_allowed" || parsedIAM.permission === "implicitly_allowed";
18868
18892
  const chipColors = { backgroundColor: getChipColor(isAllowed, spanStatusCode), color: "white" };
18869
18893
  return /* @__PURE__ */ jsxs126(Box10, { sx: { mb: 0.5 }, children: [
18870
- /* @__PURE__ */ jsx135(Box10, { sx: { alignItems: "center", display: "flex", gap: 1, mb: 0.5 }, children: /* @__PURE__ */ jsx135(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }) }),
18894
+ /* @__PURE__ */ jsx136(Box10, { sx: { alignItems: "center", display: "flex", gap: 1, mb: 0.5 }, children: /* @__PURE__ */ jsx136(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }) }),
18871
18895
  /* @__PURE__ */ jsxs126(Stack, { spacing: 1, children: [
18872
- /* @__PURE__ */ jsx135(Box10, { "data-testid": EVENT_DETAILS_IAM_PRINCIPAL_TEST_ID, children: /* @__PURE__ */ jsx135(LabelValue, { label: "Principal", value: parsedIAM.principal }) }),
18896
+ /* @__PURE__ */ jsxs126(Box10, { "data-testid": EVENT_DETAILS_IAM_PRINCIPAL_TEST_ID, children: [
18897
+ /* @__PURE__ */ jsx136(Typography7, { sx: { display: "block", fontWeight: 600 }, variant: "caption", children: "Principal" }),
18898
+ /* @__PURE__ */ jsxs126(Stack, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
18899
+ /* @__PURE__ */ jsx136(Typography7, { sx: { wordBreak: "break-all" }, variant: "body2", children: parsedIAM.principal }),
18900
+ /* @__PURE__ */ jsx136(CopyButton, { value: parsedIAM.principal })
18901
+ ] })
18902
+ ] }),
18873
18903
  parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsxs126(Box10, { "data-testid": EVENT_DETAILS_IAM_ACTIONS_TEST_ID, children: [
18874
- /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", fontWeight: 600 }, variant: "caption", children: "Actions" }),
18875
- parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block" }, variant: "body2", children: action }, action))
18904
+ /* @__PURE__ */ jsx136(Typography7, { sx: { display: "block", fontWeight: 600 }, variant: "caption", children: "Actions" }),
18905
+ parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsxs126(Stack, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
18906
+ /* @__PURE__ */ jsx136(Typography7, { sx: { display: "block" }, variant: "body2", children: action }),
18907
+ /* @__PURE__ */ jsx136(CopyButton, { value: action })
18908
+ ] }, action))
18876
18909
  ] }),
18877
18910
  parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsxs126(Box10, { "data-testid": EVENT_DETAILS_IAM_RESOURCES_TEST_ID, children: [
18878
- /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", fontWeight: 600 }, variant: "caption", children: "Resources" }),
18879
- parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", wordBreak: "break-all" }, variant: "body2", children: resource }, resource))
18911
+ /* @__PURE__ */ jsx136(Typography7, { sx: { display: "block", fontWeight: 600 }, variant: "caption", children: "Resources" }),
18912
+ parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsxs126(Stack, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
18913
+ /* @__PURE__ */ jsx136(Typography7, { sx: { display: "block", wordBreak: "break-all" }, variant: "body2", children: resource }),
18914
+ /* @__PURE__ */ jsx136(CopyButton, { value: resource })
18915
+ ] }, resource))
18880
18916
  ] })
18881
18917
  ] })
18882
18918
  ] });
18883
18919
  };
18884
- var IAMPermissionDetail = ({ events, spanStatusCode }) => /* @__PURE__ */ jsx135(Box10, { children: events.map((event) => /* @__PURE__ */ jsx135(IAMPermissionItem, { event, spanStatusCode }, `${event.span_id}-${event.event_id}`)) });
18920
+ var IAMPermissionDetail = ({ events, spanStatusCode }) => /* @__PURE__ */ jsx136(Box10, { children: events.map((event) => /* @__PURE__ */ jsx136(IAMPermissionItem, { event, spanStatusCode }, `${event.span_id}-${event.event_id}`)) });
18885
18921
 
18886
18922
  // src/components/event-details/payload-viewer.tsx
18887
18923
  import { Box as Box12, useTheme as useTheme3 } from "@mui/material";
18888
18924
 
18889
18925
  // node_modules/@textea/json-viewer/dist/index.mjs
18890
18926
  var import_copy_to_clipboard = __toESM(require_copy_to_clipboard(), 1);
18891
- import { jsx as jsx136, jsxs as jsxs127, Fragment as Fragment9 } from "react/jsx-runtime";
18927
+ import { jsx as jsx137, jsxs as jsxs127, Fragment as Fragment9 } from "react/jsx-runtime";
18892
18928
  import { Box as Box11, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
18893
- import { createContext as createContext10, useContext as useContext17, useState as useState11, useRef as useRef14, useCallback as useCallback10, useMemo as useMemo9, useEffect as useEffect17, memo as memo9 } from "react";
18929
+ import { createContext as createContext10, useContext as useContext17, useState as useState12, useRef as useRef14, useCallback as useCallback11, useMemo as useMemo9, useEffect as useEffect17, memo as memo9 } from "react";
18894
18930
  import { create, useStore, createStore } from "zustand";
18895
18931
  function r(e2) {
18896
18932
  var t2, f2, n2 = "";
@@ -19134,9 +19170,9 @@ async function copyString(value) {
19134
19170
  }
19135
19171
  function useClipboard() {
19136
19172
  let { timeout = 2e3 } = arguments.length > 0 && arguments[0] !== void 0 ? arguments[0] : {};
19137
- const [copied, setCopied] = useState11(false);
19173
+ const [copied, setCopied] = useState12(false);
19138
19174
  const copyTimeout = useRef14(null);
19139
- const handleCopyResult = useCallback10((value) => {
19175
+ const handleCopyResult = useCallback11((value) => {
19140
19176
  const current = copyTimeout.current;
19141
19177
  if (current) {
19142
19178
  window.clearTimeout(current);
@@ -19147,7 +19183,7 @@ function useClipboard() {
19147
19183
  timeout
19148
19184
  ]);
19149
19185
  const onCopy = useJsonViewerStore((store) => store.onCopy);
19150
- const copy = useCallback10(async (path, value) => {
19186
+ const copy = useCallback11(async (path, value) => {
19151
19187
  if (typeof onCopy === "function") {
19152
19188
  try {
19153
19189
  await onCopy(path, value, copyString);
@@ -19168,7 +19204,7 @@ function useClipboard() {
19168
19204
  handleCopyResult,
19169
19205
  onCopy
19170
19206
  ]);
19171
- const reset = useCallback10(() => {
19207
+ const reset = useCallback11(() => {
19172
19208
  setCopied(false);
19173
19209
  if (copyTimeout.current) {
19174
19210
  clearTimeout(copyTimeout.current);
@@ -19217,7 +19253,7 @@ function useInspect(path, value, nestedIndex) {
19217
19253
  value,
19218
19254
  setInspectCache
19219
19255
  ]);
19220
- const [inspect, set] = useState11(() => {
19256
+ const [inspect, set] = useState12(() => {
19221
19257
  const shouldInspect = getInspectCache(path, nestedIndex);
19222
19258
  if (shouldInspect !== void 0) {
19223
19259
  return shouldInspect;
@@ -19227,7 +19263,7 @@ function useInspect(path, value, nestedIndex) {
19227
19263
  }
19228
19264
  return isTrap ? false : typeof defaultInspectControl === "function" ? defaultInspectControl(path, value) : depth < defaultInspectDepth;
19229
19265
  });
19230
- const setInspect = useCallback10((apply) => {
19266
+ const setInspect = useCallback11((apply) => {
19231
19267
  set((oldState) => {
19232
19268
  const newState = typeof apply === "boolean" ? apply : apply(oldState);
19233
19269
  setInspectCache(path, newState, nestedIndex);
@@ -19243,7 +19279,7 @@ function useInspect(path, value, nestedIndex) {
19243
19279
  setInspect
19244
19280
  ];
19245
19281
  }
19246
- var DataBox = (props) => /* @__PURE__ */ jsx136(Box11, {
19282
+ var DataBox = (props) => /* @__PURE__ */ jsx137(Box11, {
19247
19283
  component: "div",
19248
19284
  ...props,
19249
19285
  sx: {
@@ -19254,7 +19290,7 @@ var DataBox = (props) => /* @__PURE__ */ jsx136(Box11, {
19254
19290
  var DataTypeLabel = (param) => {
19255
19291
  let { dataType, enable = true } = param;
19256
19292
  if (!enable) return null;
19257
- return /* @__PURE__ */ jsx136(DataBox, {
19293
+ return /* @__PURE__ */ jsx137(DataBox, {
19258
19294
  className: "data-type-label",
19259
19295
  sx: {
19260
19296
  mx: 0.5,
@@ -19278,12 +19314,12 @@ function defineEasyType(param) {
19278
19314
  color: color2
19279
19315
  },
19280
19316
  children: [
19281
- displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx136(DataTypeLabel, {
19317
+ displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx137(DataTypeLabel, {
19282
19318
  dataType: type
19283
19319
  }),
19284
- /* @__PURE__ */ jsx136(DataBox, {
19320
+ /* @__PURE__ */ jsx137(DataBox, {
19285
19321
  className: "".concat(type, "-value"),
19286
- children: /* @__PURE__ */ jsx136(Render, {
19322
+ children: /* @__PURE__ */ jsx137(Render, {
19287
19323
  path: props.path,
19288
19324
  inspect: props.inspect,
19289
19325
  setInspect: props.setInspect,
@@ -19304,7 +19340,7 @@ function defineEasyType(param) {
19304
19340
  const EasyTypeEditor = (param2) => {
19305
19341
  let { value, setValue, abortEditing, commitEditing } = param2;
19306
19342
  const color2 = useJsonViewerStore((store) => store.colorspace[colorKey]);
19307
- const handleKeyDown = useCallback10((event) => {
19343
+ const handleKeyDown = useCallback11((event) => {
19308
19344
  if (event.key === "Enter") {
19309
19345
  event.preventDefault();
19310
19346
  commitEditing(value);
@@ -19318,12 +19354,12 @@ function defineEasyType(param) {
19318
19354
  commitEditing,
19319
19355
  value
19320
19356
  ]);
19321
- const handleChange = useCallback10((event) => {
19357
+ const handleChange = useCallback11((event) => {
19322
19358
  setValue(event.target.value);
19323
19359
  }, [
19324
19360
  setValue
19325
19361
  ]);
19326
- return /* @__PURE__ */ jsx136(InputBase, {
19362
+ return /* @__PURE__ */ jsx137(InputBase, {
19327
19363
  autoFocus: true,
19328
19364
  value,
19329
19365
  onChange: handleChange,
@@ -19363,7 +19399,7 @@ var booleanType = defineEasyType({
19363
19399
  },
19364
19400
  Renderer: (param) => {
19365
19401
  let { value } = param;
19366
- return /* @__PURE__ */ jsx136(Fragment9, {
19402
+ return /* @__PURE__ */ jsx137(Fragment9, {
19367
19403
  children: value ? "true" : "false"
19368
19404
  });
19369
19405
  }
@@ -19382,7 +19418,7 @@ var dateType = defineEasyType({
19382
19418
  colorKey: "base0D",
19383
19419
  Renderer: (param) => {
19384
19420
  let { value } = param;
19385
- return /* @__PURE__ */ jsx136(Fragment9, {
19421
+ return /* @__PURE__ */ jsx137(Fragment9, {
19386
19422
  children: value.toLocaleTimeString("en-us", displayOptions)
19387
19423
  });
19388
19424
  }
@@ -19413,7 +19449,7 @@ var rb = "}";
19413
19449
  var PreFunctionType = (props) => {
19414
19450
  return /* @__PURE__ */ jsxs127(NoSsr, {
19415
19451
  children: [
19416
- /* @__PURE__ */ jsx136(DataTypeLabel, {
19452
+ /* @__PURE__ */ jsx137(DataTypeLabel, {
19417
19453
  dataType: "function"
19418
19454
  }),
19419
19455
  /* @__PURE__ */ jsxs127(Box11, {
@@ -19432,8 +19468,8 @@ var PreFunctionType = (props) => {
19432
19468
  });
19433
19469
  };
19434
19470
  var PostFunctionType = () => {
19435
- return /* @__PURE__ */ jsx136(NoSsr, {
19436
- children: /* @__PURE__ */ jsx136(Box11, {
19471
+ return /* @__PURE__ */ jsx137(NoSsr, {
19472
+ children: /* @__PURE__ */ jsx137(Box11, {
19437
19473
  component: "span",
19438
19474
  className: "data-function-end",
19439
19475
  children: rb
@@ -19442,15 +19478,15 @@ var PostFunctionType = () => {
19442
19478
  };
19443
19479
  var FunctionType = (props) => {
19444
19480
  const functionColor = useJsonViewerStore((store) => store.colorspace.base05);
19445
- return /* @__PURE__ */ jsx136(NoSsr, {
19446
- children: /* @__PURE__ */ jsx136(Box11, {
19481
+ return /* @__PURE__ */ jsx137(NoSsr, {
19482
+ children: /* @__PURE__ */ jsx137(Box11, {
19447
19483
  className: "data-function",
19448
19484
  sx: {
19449
19485
  display: props.inspect ? "block" : "inline-block",
19450
19486
  pl: props.inspect ? 2 : 0,
19451
19487
  color: functionColor
19452
19488
  },
19453
- children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx136(Box11, {
19489
+ children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx137(Box11, {
19454
19490
  component: "span",
19455
19491
  className: "data-function-body",
19456
19492
  onClick: () => props.setInspect(true),
@@ -19478,7 +19514,7 @@ var nullType = defineEasyType({
19478
19514
  displayTypeLabel: false,
19479
19515
  Renderer: () => {
19480
19516
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19481
- return /* @__PURE__ */ jsx136(Box11, {
19517
+ return /* @__PURE__ */ jsx137(Box11, {
19482
19518
  sx: {
19483
19519
  fontSize: "0.8rem",
19484
19520
  backgroundColor,
@@ -19501,7 +19537,7 @@ var nanType = defineEasyType({
19501
19537
  deserialize: (value) => parseFloat(value),
19502
19538
  Renderer: () => {
19503
19539
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19504
- return /* @__PURE__ */ jsx136(Box11, {
19540
+ return /* @__PURE__ */ jsx137(Box11, {
19505
19541
  sx: {
19506
19542
  backgroundColor,
19507
19543
  fontSize: "0.8rem",
@@ -19521,7 +19557,7 @@ var floatType = defineEasyType({
19521
19557
  deserialize: (value) => parseFloat(value),
19522
19558
  Renderer: (param) => {
19523
19559
  let { value } = param;
19524
- return /* @__PURE__ */ jsx136(Fragment9, {
19560
+ return /* @__PURE__ */ jsx137(Fragment9, {
19525
19561
  children: value
19526
19562
  });
19527
19563
  }
@@ -19535,7 +19571,7 @@ var intType = defineEasyType({
19535
19571
  deserialize: (value) => parseFloat(value),
19536
19572
  Renderer: (param) => {
19537
19573
  let { value } = param;
19538
- return /* @__PURE__ */ jsx136(Fragment9, {
19574
+ return /* @__PURE__ */ jsx137(Fragment9, {
19539
19575
  children: value
19540
19576
  });
19541
19577
  }
@@ -19548,79 +19584,79 @@ var bigIntType = defineEasyType({
19548
19584
  deserialize: (value) => BigInt(value.replace(/\D/g, "")),
19549
19585
  Renderer: (param) => {
19550
19586
  let { value } = param;
19551
- return /* @__PURE__ */ jsx136(Fragment9, {
19587
+ return /* @__PURE__ */ jsx137(Fragment9, {
19552
19588
  children: "".concat(value, "n")
19553
19589
  });
19554
19590
  }
19555
19591
  });
19556
19592
  var BaseIcon = (param) => {
19557
19593
  let { d: d2, ...props } = param;
19558
- return /* @__PURE__ */ jsx136(SvgIcon, {
19594
+ return /* @__PURE__ */ jsx137(SvgIcon, {
19559
19595
  ...props,
19560
- children: /* @__PURE__ */ jsx136("path", {
19596
+ children: /* @__PURE__ */ jsx137("path", {
19561
19597
  d: d2
19562
19598
  })
19563
19599
  });
19564
19600
  };
19565
19601
  var AddBox = "M19 3H5a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14c1.1 0 2-.9 2-2V5c0-1.1-.9-2-2-2m0 16H5V5h14zm-8-2h2v-4h4v-2h-4V7h-2v4H7v2h4z";
19566
- var Check = "M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z";
19602
+ var Check2 = "M9 16.17 4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z";
19567
19603
  var ChevronRight = "M10 6 8.59 7.41 13.17 12l-4.58 4.59L10 18l6-6z";
19568
19604
  var CircularArrows = "M 12 2 C 10.615 1.998 9.214625 2.2867656 7.890625 2.8847656 L 8.9003906 4.6328125 C 9.9043906 4.2098125 10.957 3.998 12 4 C 15.080783 4 17.738521 5.7633175 19.074219 8.3222656 L 17.125 9 L 21.25 11 L 22.875 7 L 20.998047 7.6523438 C 19.377701 4.3110398 15.95585 2 12 2 z M 6.5097656 4.4882812 L 2.2324219 5.0820312 L 3.734375 6.3808594 C 1.6515335 9.4550558 1.3615962 13.574578 3.3398438 17 C 4.0308437 18.201 4.9801562 19.268234 6.1601562 20.115234 L 7.1699219 18.367188 C 6.3019219 17.710187 5.5922656 16.904 5.0722656 16 C 3.5320014 13.332354 3.729203 10.148679 5.2773438 7.7128906 L 6.8398438 9.0625 L 6.5097656 4.4882812 z M 19.929688 13 C 19.794687 14.08 19.450734 15.098 18.927734 16 C 17.386985 18.668487 14.531361 20.090637 11.646484 19.966797 L 12.035156 17.9375 L 8.2402344 20.511719 L 10.892578 23.917969 L 11.265625 21.966797 C 14.968963 22.233766 18.681899 20.426323 20.660156 17 C 21.355156 15.801 21.805219 14.445 21.949219 13 L 19.929688 13 z";
19569
19605
  var Close = "M19 6.41 17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z";
19570
- var ContentCopy = "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z";
19606
+ var ContentCopy2 = "M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z";
19571
19607
  var Edit = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.39-1.02 0-1.41l-2.34-2.34a.9959.9959 0 0 0-1.41 0l-1.83 1.83 3.75 3.75 1.83-1.83z";
19572
19608
  var ExpandMore = "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z";
19573
19609
  var Delete = "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5l-1-1h-5l-1 1H5v2h14V4z";
19574
19610
  var AddBoxIcon = (props) => {
19575
- return /* @__PURE__ */ jsx136(BaseIcon, {
19611
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19576
19612
  d: AddBox,
19577
19613
  ...props
19578
19614
  });
19579
19615
  };
19580
19616
  var CheckIcon = (props) => {
19581
- return /* @__PURE__ */ jsx136(BaseIcon, {
19582
- d: Check,
19617
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19618
+ d: Check2,
19583
19619
  ...props
19584
19620
  });
19585
19621
  };
19586
19622
  var ChevronRightIcon = (props) => {
19587
- return /* @__PURE__ */ jsx136(BaseIcon, {
19623
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19588
19624
  d: ChevronRight,
19589
19625
  ...props
19590
19626
  });
19591
19627
  };
19592
19628
  var CircularArrowsIcon = (props) => {
19593
- return /* @__PURE__ */ jsx136(BaseIcon, {
19629
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19594
19630
  d: CircularArrows,
19595
19631
  ...props
19596
19632
  });
19597
19633
  };
19598
19634
  var CloseIcon = (props) => {
19599
- return /* @__PURE__ */ jsx136(BaseIcon, {
19635
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19600
19636
  d: Close,
19601
19637
  ...props
19602
19638
  });
19603
19639
  };
19604
19640
  var ContentCopyIcon = (props) => {
19605
- return /* @__PURE__ */ jsx136(BaseIcon, {
19606
- d: ContentCopy,
19641
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19642
+ d: ContentCopy2,
19607
19643
  ...props
19608
19644
  });
19609
19645
  };
19610
19646
  var EditIcon = (props) => {
19611
- return /* @__PURE__ */ jsx136(BaseIcon, {
19647
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19612
19648
  d: Edit,
19613
19649
  ...props
19614
19650
  });
19615
19651
  };
19616
19652
  var ExpandMoreIcon = (props) => {
19617
- return /* @__PURE__ */ jsx136(BaseIcon, {
19653
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19618
19654
  d: ExpandMore,
19619
19655
  ...props
19620
19656
  });
19621
19657
  };
19622
19658
  var DeleteIcon = (props) => {
19623
- return /* @__PURE__ */ jsx136(BaseIcon, {
19659
+ return /* @__PURE__ */ jsx137(BaseIcon, {
19624
19660
  d: Delete,
19625
19661
  ...props
19626
19662
  });
@@ -19667,7 +19703,7 @@ var PreObjectType = (props) => {
19667
19703
  },
19668
19704
  children: [
19669
19705
  isArrayLike ? arrayLb : objectLb,
19670
- shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx136(Box11, {
19706
+ shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx137(Box11, {
19671
19707
  component: "span",
19672
19708
  sx: {
19673
19709
  pl: 0.5,
@@ -19679,14 +19715,14 @@ var PreObjectType = (props) => {
19679
19715
  }),
19680
19716
  isTrap && !props.inspect && /* @__PURE__ */ jsxs127(Fragment9, {
19681
19717
  children: [
19682
- /* @__PURE__ */ jsx136(CircularArrowsIcon, {
19718
+ /* @__PURE__ */ jsx137(CircularArrowsIcon, {
19683
19719
  sx: {
19684
19720
  fontSize: 12,
19685
19721
  color: textColor,
19686
19722
  mx: 0.5
19687
19723
  }
19688
19724
  }),
19689
- /* @__PURE__ */ jsx136(DataBox, {
19725
+ /* @__PURE__ */ jsx137(DataBox, {
19690
19726
  sx: {
19691
19727
  cursor: "pointer",
19692
19728
  userSelect: "none"
@@ -19727,7 +19763,7 @@ var PostObjectType = (props) => {
19727
19763
  },
19728
19764
  children: [
19729
19765
  isArrayLike ? arrayRb : objectRb,
19730
- shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx136(Box11, {
19766
+ shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx137(Box11, {
19731
19767
  component: "span",
19732
19768
  sx: {
19733
19769
  pl: 0.5,
@@ -19748,7 +19784,7 @@ var ObjectType = (props) => {
19748
19784
  const borderColor = useJsonViewerStore((store) => store.colorspace.base02);
19749
19785
  const groupArraysAfterLength = useJsonViewerStore((store) => store.groupArraysAfterLength);
19750
19786
  const isTrap = useIsCycleReference(props.path, props.value);
19751
- const [displayLength, setDisplayLength] = useState11(useJsonViewerStore((store) => store.maxDisplayLength));
19787
+ const [displayLength, setDisplayLength] = useState12(useJsonViewerStore((store) => store.maxDisplayLength));
19752
19788
  const objectSortKeys = useJsonViewerStore((store) => store.objectSortKeys);
19753
19789
  const elements = useMemo9(() => {
19754
19790
  if (!props.inspect) {
@@ -19767,7 +19803,7 @@ var ObjectType = (props) => {
19767
19803
  ...props.path,
19768
19804
  key
19769
19805
  ];
19770
- elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19806
+ elements3.push(/* @__PURE__ */ jsx137(DataKeyPair, {
19771
19807
  path,
19772
19808
  value: value2,
19773
19809
  prevValue: props.prevValue instanceof Map ? props.prevValue.get(k2) : void 0,
@@ -19783,7 +19819,7 @@ var ObjectType = (props) => {
19783
19819
  while (true) {
19784
19820
  const nextResult = iterator2.next();
19785
19821
  var _nextResult_done;
19786
- elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19822
+ elements3.push(/* @__PURE__ */ jsx137(DataKeyPair, {
19787
19823
  path: [
19788
19824
  ...props.path,
19789
19825
  "iterator:".concat(count2)
@@ -19811,7 +19847,7 @@ var ObjectType = (props) => {
19811
19847
  ...props.path,
19812
19848
  index
19813
19849
  ];
19814
- return /* @__PURE__ */ jsx136(DataKeyPair, {
19850
+ return /* @__PURE__ */ jsx137(DataKeyPair, {
19815
19851
  path,
19816
19852
  value: value2,
19817
19853
  prevValue: Array.isArray(props.prevValue) ? props.prevValue[index] : void 0,
@@ -19843,7 +19879,7 @@ var ObjectType = (props) => {
19843
19879
  const prevElements = Array.isArray(props.prevValue) ? segmentArray(props.prevValue, groupArraysAfterLength) : void 0;
19844
19880
  const elementsLastIndex = elements3.length - 1;
19845
19881
  return elements3.map((list, index) => {
19846
- return /* @__PURE__ */ jsx136(DataKeyPair, {
19882
+ return /* @__PURE__ */ jsx137(DataKeyPair, {
19847
19883
  path: props.path,
19848
19884
  value: list,
19849
19885
  nestedIndex: index,
@@ -19870,7 +19906,7 @@ var ObjectType = (props) => {
19870
19906
  ...props.path,
19871
19907
  key
19872
19908
  ];
19873
- return /* @__PURE__ */ jsx136(DataKeyPair, {
19909
+ return /* @__PURE__ */ jsx137(DataKeyPair, {
19874
19910
  path,
19875
19911
  value: value2,
19876
19912
  prevValue: (_props_prevValue = props.prevValue) === null || _props_prevValue === void 0 ? void 0 : _props_prevValue[key],
@@ -19917,7 +19953,7 @@ var ObjectType = (props) => {
19917
19953
  if (isEmptyValue) {
19918
19954
  return null;
19919
19955
  }
19920
- return /* @__PURE__ */ jsx136(Box11, {
19956
+ return /* @__PURE__ */ jsx137(Box11, {
19921
19957
  className: "data-object",
19922
19958
  sx: {
19923
19959
  display: props.inspect ? "block" : "inline-block",
@@ -19926,7 +19962,7 @@ var ObjectType = (props) => {
19926
19962
  color: keyColor,
19927
19963
  borderLeft: props.inspect ? "1px solid ".concat(borderColor) : "none"
19928
19964
  },
19929
- children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx136(Box11, {
19965
+ children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx137(Box11, {
19930
19966
  component: "span",
19931
19967
  className: "data-object-body",
19932
19968
  onClick: () => props.setInspect(true),
@@ -19954,7 +19990,7 @@ var stringType = defineEasyType({
19954
19990
  serialize: (value) => value,
19955
19991
  deserialize: (value) => value,
19956
19992
  Renderer: (props) => {
19957
- const [showRest, setShowRest] = useState11(false);
19993
+ const [showRest, setShowRest] = useState12(false);
19958
19994
  const collapseStringsAfterLength = useJsonViewerStore((store) => store.collapseStringsAfterLength);
19959
19995
  const value = showRest ? props.value : props.value.slice(0, collapseStringsAfterLength);
19960
19996
  const hasRest = props.value.length > collapseStringsAfterLength;
@@ -19976,7 +20012,7 @@ var stringType = defineEasyType({
19976
20012
  children: [
19977
20013
  '"',
19978
20014
  value,
19979
- hasRest && !showRest && /* @__PURE__ */ jsx136(Box11, {
20015
+ hasRest && !showRest && /* @__PURE__ */ jsx137(Box11, {
19980
20016
  component: "span",
19981
20017
  sx: {
19982
20018
  padding: 0.5
@@ -19995,7 +20031,7 @@ var undefinedType = defineEasyType({
19995
20031
  displayTypeLabel: false,
19996
20032
  Renderer: () => {
19997
20033
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19998
- return /* @__PURE__ */ jsx136(Box11, {
20034
+ return /* @__PURE__ */ jsx137(Box11, {
19999
20035
  sx: {
20000
20036
  fontSize: "0.7rem",
20001
20037
  backgroundColor,
@@ -20076,7 +20112,7 @@ function useTypeComponents(value, path) {
20076
20112
  registry
20077
20113
  ]);
20078
20114
  }
20079
- var IconBox = (props) => /* @__PURE__ */ jsx136(Box11, {
20115
+ var IconBox = (props) => /* @__PURE__ */ jsx137(Box11, {
20080
20116
  component: "span",
20081
20117
  ...props,
20082
20118
  sx: {
@@ -20108,7 +20144,7 @@ var DataKeyPair = (props) => {
20108
20144
  storeEditable,
20109
20145
  value
20110
20146
  ]);
20111
- const [tempValue, setTempValue] = useState11("");
20147
+ const [tempValue, setTempValue] = useState12("");
20112
20148
  const depth = path.length;
20113
20149
  const key = path[depth - 1];
20114
20150
  const hoverPath = useJsonViewerStore((store) => store.hoverPath);
@@ -20122,7 +20158,7 @@ var DataKeyPair = (props) => {
20122
20158
  const setHover = useJsonViewerStore((store) => store.setHover);
20123
20159
  const root = useJsonViewerStore((store) => store.value);
20124
20160
  const [inspect, setInspect] = useInspect(path, value, nestedIndex);
20125
- const [editing, setEditing] = useState11(false);
20161
+ const [editing, setEditing] = useState12(false);
20126
20162
  const onChange = useJsonViewerStore((store) => store.onChange);
20127
20163
  const keyColor = useTextColor();
20128
20164
  const numberKeyColor = useJsonViewerStore((store) => store.colorspace.base0C);
@@ -20231,7 +20267,7 @@ var DataKeyPair = (props) => {
20231
20267
  prevValue,
20232
20268
  value
20233
20269
  ]);
20234
- const startEditing = useCallback10((event) => {
20270
+ const startEditing = useCallback11((event) => {
20235
20271
  event.preventDefault();
20236
20272
  if (serialize) setTempValue(serialize(value));
20237
20273
  setEditing(true);
@@ -20239,14 +20275,14 @@ var DataKeyPair = (props) => {
20239
20275
  serialize,
20240
20276
  value
20241
20277
  ]);
20242
- const abortEditing = useCallback10(() => {
20278
+ const abortEditing = useCallback11(() => {
20243
20279
  setEditing(false);
20244
20280
  setTempValue("");
20245
20281
  }, [
20246
20282
  setEditing,
20247
20283
  setTempValue
20248
20284
  ]);
20249
- const commitEditing = useCallback10((newValue) => {
20285
+ const commitEditing = useCallback11((newValue) => {
20250
20286
  setEditing(false);
20251
20287
  if (!deserialize) return;
20252
20288
  try {
@@ -20264,16 +20300,16 @@ var DataKeyPair = (props) => {
20264
20300
  if (editing) {
20265
20301
  return /* @__PURE__ */ jsxs127(Fragment9, {
20266
20302
  children: [
20267
- /* @__PURE__ */ jsx136(IconBox, {
20268
- children: /* @__PURE__ */ jsx136(CloseIcon, {
20303
+ /* @__PURE__ */ jsx137(IconBox, {
20304
+ children: /* @__PURE__ */ jsx137(CloseIcon, {
20269
20305
  sx: {
20270
20306
  fontSize: ".8rem"
20271
20307
  },
20272
20308
  onClick: abortEditing
20273
20309
  })
20274
20310
  }),
20275
- /* @__PURE__ */ jsx136(IconBox, {
20276
- children: /* @__PURE__ */ jsx136(CheckIcon, {
20311
+ /* @__PURE__ */ jsx137(IconBox, {
20312
+ children: /* @__PURE__ */ jsx137(CheckIcon, {
20277
20313
  sx: {
20278
20314
  fontSize: ".8rem"
20279
20315
  },
@@ -20285,7 +20321,7 @@ var DataKeyPair = (props) => {
20285
20321
  }
20286
20322
  return /* @__PURE__ */ jsxs127(Fragment9, {
20287
20323
  children: [
20288
- enableClipboard && /* @__PURE__ */ jsx136(IconBox, {
20324
+ enableClipboard && /* @__PURE__ */ jsx137(IconBox, {
20289
20325
  onClick: (event) => {
20290
20326
  event.preventDefault();
20291
20327
  try {
@@ -20294,41 +20330,41 @@ var DataKeyPair = (props) => {
20294
20330
  console.error(e2);
20295
20331
  }
20296
20332
  },
20297
- children: copied ? /* @__PURE__ */ jsx136(CheckIcon, {
20333
+ children: copied ? /* @__PURE__ */ jsx137(CheckIcon, {
20298
20334
  sx: {
20299
20335
  fontSize: ".8rem"
20300
20336
  }
20301
- }) : /* @__PURE__ */ jsx136(ContentCopyIcon, {
20337
+ }) : /* @__PURE__ */ jsx137(ContentCopyIcon, {
20302
20338
  sx: {
20303
20339
  fontSize: ".8rem"
20304
20340
  }
20305
20341
  })
20306
20342
  }),
20307
- Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx136(IconBox, {
20343
+ Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx137(IconBox, {
20308
20344
  onClick: startEditing,
20309
- children: /* @__PURE__ */ jsx136(EditIcon, {
20345
+ children: /* @__PURE__ */ jsx137(EditIcon, {
20310
20346
  sx: {
20311
20347
  fontSize: ".8rem"
20312
20348
  }
20313
20349
  })
20314
20350
  }),
20315
- enableAdd && /* @__PURE__ */ jsx136(IconBox, {
20351
+ enableAdd && /* @__PURE__ */ jsx137(IconBox, {
20316
20352
  onClick: (event) => {
20317
20353
  event.preventDefault();
20318
20354
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(path);
20319
20355
  },
20320
- children: /* @__PURE__ */ jsx136(AddBoxIcon, {
20356
+ children: /* @__PURE__ */ jsx137(AddBoxIcon, {
20321
20357
  sx: {
20322
20358
  fontSize: ".8rem"
20323
20359
  }
20324
20360
  })
20325
20361
  }),
20326
- enableDelete && /* @__PURE__ */ jsx136(IconBox, {
20362
+ enableDelete && /* @__PURE__ */ jsx137(IconBox, {
20327
20363
  onClick: (event) => {
20328
20364
  event.preventDefault();
20329
20365
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(path, value);
20330
20366
  },
20331
- children: /* @__PURE__ */ jsx136(DeleteIcon, {
20367
+ children: /* @__PURE__ */ jsx137(DeleteIcon, {
20332
20368
  sx: {
20333
20369
  fontSize: ".9rem"
20334
20370
  }
@@ -20382,7 +20418,7 @@ var DataKeyPair = (props) => {
20382
20418
  sx: {
20383
20419
  userSelect: "text"
20384
20420
  },
20385
- onMouseEnter: useCallback10(() => setHover(path, nestedIndex), [
20421
+ onMouseEnter: useCallback11(() => setHover(path, nestedIndex), [
20386
20422
  setHover,
20387
20423
  path,
20388
20424
  nestedIndex
@@ -20397,7 +20433,7 @@ var DataKeyPair = (props) => {
20397
20433
  letterSpacing: 0.5,
20398
20434
  opacity: 0.8
20399
20435
  },
20400
- onClick: useCallback10((event) => {
20436
+ onClick: useCallback11((event) => {
20401
20437
  if (event.isDefaultPrevented()) {
20402
20438
  return;
20403
20439
  }
@@ -20409,7 +20445,7 @@ var DataKeyPair = (props) => {
20409
20445
  setInspect
20410
20446
  ]),
20411
20447
  children: [
20412
- expandable ? inspect ? /* @__PURE__ */ jsx136(ExpandMoreIcon, {
20448
+ expandable ? inspect ? /* @__PURE__ */ jsx137(ExpandMoreIcon, {
20413
20449
  className: "data-key-toggle-expanded",
20414
20450
  sx: {
20415
20451
  fontSize: ".8rem",
@@ -20417,7 +20453,7 @@ var DataKeyPair = (props) => {
20417
20453
  cursor: "pointer"
20418
20454
  }
20419
20455
  }
20420
- }) : /* @__PURE__ */ jsx136(ChevronRightIcon, {
20456
+ }) : /* @__PURE__ */ jsx137(ChevronRightIcon, {
20421
20457
  className: "data-key-toggle-collapsed",
20422
20458
  sx: {
20423
20459
  fontSize: ".8rem",
@@ -20426,7 +20462,7 @@ var DataKeyPair = (props) => {
20426
20462
  }
20427
20463
  }
20428
20464
  }) : null,
20429
- /* @__PURE__ */ jsx136(Box11, {
20465
+ /* @__PURE__ */ jsx137(Box11, {
20430
20466
  ref: highlightContainer,
20431
20467
  className: "data-key-key",
20432
20468
  component: "span",
@@ -20436,11 +20472,11 @@ var DataKeyPair = (props) => {
20436
20472
  rootName,
20437
20473
  '"'
20438
20474
  ]
20439
- }) : /* @__PURE__ */ jsx136(Fragment9, {
20475
+ }) : /* @__PURE__ */ jsx137(Fragment9, {
20440
20476
  children: rootName
20441
- }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx136(KeyRenderer, {
20477
+ }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx137(KeyRenderer, {
20442
20478
  ...downstreamProps
20443
- }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx136(Box11, {
20479
+ }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx137(Box11, {
20444
20480
  component: "span",
20445
20481
  style: {
20446
20482
  color: numberKeyColor,
@@ -20453,17 +20489,17 @@ var DataKeyPair = (props) => {
20453
20489
  key,
20454
20490
  '"'
20455
20491
  ]
20456
- }) : /* @__PURE__ */ jsx136(Fragment9, {
20492
+ }) : /* @__PURE__ */ jsx137(Fragment9, {
20457
20493
  children: key
20458
20494
  }))
20459
20495
  }),
20460
- isRoot ? rootName !== false && /* @__PURE__ */ jsx136(DataBox, {
20496
+ isRoot ? rootName !== false && /* @__PURE__ */ jsx137(DataBox, {
20461
20497
  className: "data-key-colon",
20462
20498
  sx: {
20463
20499
  mr: 0.5
20464
20500
  },
20465
20501
  children: ":"
20466
- }) : nestedIndex === void 0 && /* @__PURE__ */ jsx136(DataBox, {
20502
+ }) : nestedIndex === void 0 && /* @__PURE__ */ jsx137(DataBox, {
20467
20503
  className: "data-key-colon",
20468
20504
  sx: {
20469
20505
  mr: 0.5,
@@ -20474,29 +20510,29 @@ var DataKeyPair = (props) => {
20474
20510
  },
20475
20511
  children: ":"
20476
20512
  }),
20477
- PreComponent && /* @__PURE__ */ jsx136(PreComponent, {
20513
+ PreComponent && /* @__PURE__ */ jsx137(PreComponent, {
20478
20514
  ...downstreamProps
20479
20515
  }),
20480
20516
  isHover && expandable && inspect && actionIcons
20481
20517
  ]
20482
20518
  }),
20483
- editing && editable ? Editor && /* @__PURE__ */ jsx136(Editor, {
20519
+ editing && editable ? Editor && /* @__PURE__ */ jsx137(Editor, {
20484
20520
  path,
20485
20521
  value: tempValue,
20486
20522
  setValue: setTempValue,
20487
20523
  abortEditing,
20488
20524
  commitEditing
20489
- }) : Component ? /* @__PURE__ */ jsx136(Component, {
20525
+ }) : Component ? /* @__PURE__ */ jsx137(Component, {
20490
20526
  ...downstreamProps
20491
- }) : /* @__PURE__ */ jsx136(Box11, {
20527
+ }) : /* @__PURE__ */ jsx137(Box11, {
20492
20528
  component: "span",
20493
20529
  className: "data-value-fallback",
20494
20530
  children: "fallback: ".concat(value)
20495
20531
  }),
20496
- PostComponent && /* @__PURE__ */ jsx136(PostComponent, {
20532
+ PostComponent && /* @__PURE__ */ jsx137(PostComponent, {
20497
20533
  ...downstreamProps
20498
20534
  }),
20499
- !last && displayComma && /* @__PURE__ */ jsx136(DataBox, {
20535
+ !last && displayComma && /* @__PURE__ */ jsx137(DataBox, {
20500
20536
  children: ","
20501
20537
  }),
20502
20538
  isHover && expandable && !inspect && actionIcons,
@@ -20507,7 +20543,7 @@ var DataKeyPair = (props) => {
20507
20543
  };
20508
20544
  var query = "(prefers-color-scheme: dark)";
20509
20545
  function useThemeDetector() {
20510
- const [isDark, setIsDark] = useState11(false);
20546
+ const [isDark, setIsDark] = useState12(false);
20511
20547
  useEffect17(() => {
20512
20548
  const listener = (e2) => setIsDark(e2.matches);
20513
20549
  setIsDark(window.matchMedia(query).matches);
@@ -20613,10 +20649,10 @@ var JsonViewerInner = (props) => {
20613
20649
  const prevValue = useJsonViewerStore((store) => store.prevValue);
20614
20650
  const emptyPath = useMemo9(() => [], []);
20615
20651
  const setHover = useJsonViewerStore((store) => store.setHover);
20616
- const onMouseLeave = useCallback10(() => setHover(null), [
20652
+ const onMouseLeave = useCallback11(() => setHover(null), [
20617
20653
  setHover
20618
20654
  ]);
20619
- return /* @__PURE__ */ jsx136(Paper2, {
20655
+ return /* @__PURE__ */ jsx137(Paper2, {
20620
20656
  elevation: 0,
20621
20657
  className: clsx(themeCls, props.className),
20622
20658
  style: props.style,
@@ -20627,7 +20663,7 @@ var JsonViewerInner = (props) => {
20627
20663
  ...props.sx
20628
20664
  },
20629
20665
  onMouseLeave,
20630
- children: /* @__PURE__ */ jsx136(DataKeyPair, {
20666
+ children: /* @__PURE__ */ jsx137(DataKeyPair, {
20631
20667
  value,
20632
20668
  prevValue,
20633
20669
  path: emptyPath,
@@ -20679,13 +20715,13 @@ var JsonViewer = function JsonViewer2(props) {
20679
20715
  };
20680
20716
  const jsonViewerStore = useMemo9(() => createJsonViewerStore(props), []);
20681
20717
  const typeRegistryStore = useMemo9(() => createTypeRegistryStore(), []);
20682
- return /* @__PURE__ */ jsx136(ThemeProvider, {
20718
+ return /* @__PURE__ */ jsx137(ThemeProvider, {
20683
20719
  theme,
20684
- children: /* @__PURE__ */ jsx136(TypeRegistryStoreContext.Provider, {
20720
+ children: /* @__PURE__ */ jsx137(TypeRegistryStoreContext.Provider, {
20685
20721
  value: typeRegistryStore,
20686
- children: /* @__PURE__ */ jsx136(JsonViewerStoreContext.Provider, {
20722
+ children: /* @__PURE__ */ jsx137(JsonViewerStoreContext.Provider, {
20687
20723
  value: jsonViewerStore,
20688
- children: /* @__PURE__ */ jsx136(JsonViewerInner, {
20724
+ children: /* @__PURE__ */ jsx137(JsonViewerInner, {
20689
20725
  ...mixedProps
20690
20726
  })
20691
20727
  })
@@ -20695,7 +20731,7 @@ var JsonViewer = function JsonViewer2(props) {
20695
20731
 
20696
20732
  // src/components/event-details/payload-viewer.tsx
20697
20733
  import { memo as memo10 } from "react";
20698
- import { jsx as jsx137 } from "react/jsx-runtime";
20734
+ import { jsx as jsx138 } from "react/jsx-runtime";
20699
20735
  function tryParseJson(value) {
20700
20736
  if (typeof value !== "string") {
20701
20737
  return value;
@@ -20708,12 +20744,12 @@ function tryParseJson(value) {
20708
20744
  }
20709
20745
  var PayloadViewer = memo10(({ sx, testId, value }) => {
20710
20746
  const theme = useTheme3();
20711
- return /* @__PURE__ */ jsx137(Box12, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx137(
20747
+ return /* @__PURE__ */ jsx138(Box12, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx138(
20712
20748
  JsonViewer,
20713
20749
  {
20714
20750
  displayDataTypes: false,
20715
20751
  displaySize: false,
20716
- enableClipboard: false,
20752
+ enableClipboard: true,
20717
20753
  rootName: false,
20718
20754
  theme: theme.palette.mode,
20719
20755
  value
@@ -20722,14 +20758,14 @@ var PayloadViewer = memo10(({ sx, testId, value }) => {
20722
20758
  });
20723
20759
 
20724
20760
  // src/components/event-details/event-detail.tsx
20725
- import { Fragment as Fragment10, jsx as jsx138, jsxs as jsxs128 } from "react/jsx-runtime";
20761
+ import { Fragment as Fragment10, jsx as jsx139, jsxs as jsxs128 } from "react/jsx-runtime";
20726
20762
  var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs128(Box13, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20727
- /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20728
- /* @__PURE__ */ jsx138(Box13, { children: typeof content === "string" ? /* @__PURE__ */ jsx138(Typography8, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20763
+ /* @__PURE__ */ jsx139(Typography8, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20764
+ /* @__PURE__ */ jsx139(Box13, { children: typeof content === "string" ? /* @__PURE__ */ jsx139(Typography8, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20729
20765
  ] });
20730
20766
  var EventMessage = ({ event }) => {
20731
- const [isOpen, setIsOpen] = useState12(false);
20732
- const [isOverflowing, setIsOverflowing] = useState12(false);
20767
+ const [isOpen, setIsOpen] = useState13(false);
20768
+ const [isOverflowing, setIsOverflowing] = useState13(false);
20733
20769
  const textReference = useRef15(null);
20734
20770
  const parsedMessage = useMemo10(() => parseEventMessage(event), [event]);
20735
20771
  const isIAMPolicyEvent = useMemo10(
@@ -20759,18 +20795,18 @@ var EventMessage = ({ event }) => {
20759
20795
  );
20760
20796
  return /* @__PURE__ */ jsxs128(Box13, { sx: { display: "flex", flexDirection: "column" }, children: [
20761
20797
  /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex" }, children: [
20762
- Boolean(shouldShowToggle) && /* @__PURE__ */ jsx138(
20763
- IconButton2,
20798
+ Boolean(shouldShowToggle) && /* @__PURE__ */ jsx139(
20799
+ IconButton3,
20764
20800
  {
20765
20801
  onClick: () => {
20766
20802
  setIsOpen(!isOpen);
20767
20803
  },
20768
20804
  size: "small",
20769
20805
  sx: { mr: 1, p: 0 },
20770
- children: isOpen ? /* @__PURE__ */ jsx138(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx138(KeyboardArrowRight, { sx: { fontSize: 16 } })
20806
+ children: isOpen ? /* @__PURE__ */ jsx139(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx139(KeyboardArrowRight, { sx: { fontSize: 16 } })
20771
20807
  }
20772
20808
  ),
20773
- /* @__PURE__ */ jsx138(
20809
+ /* @__PURE__ */ jsx139(
20774
20810
  Typography8,
20775
20811
  {
20776
20812
  ref: textReference,
@@ -20788,12 +20824,12 @@ var EventMessage = ({ event }) => {
20788
20824
  }
20789
20825
  )
20790
20826
  ] }),
20791
- isOpen && /* @__PURE__ */ jsx138(Box13, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx138(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs128(Fragment10, { children: [
20792
- Boolean(parsedMessage.message) && /* @__PURE__ */ jsx138(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20793
- Boolean(parsedMessage.details) && /* @__PURE__ */ jsx138(
20827
+ isOpen && /* @__PURE__ */ jsx139(Box13, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx139(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs128(Fragment10, { children: [
20828
+ Boolean(parsedMessage.message) && /* @__PURE__ */ jsx139(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20829
+ Boolean(parsedMessage.details) && /* @__PURE__ */ jsx139(
20794
20830
  DetailRow2,
20795
20831
  {
20796
- content: /* @__PURE__ */ jsx138(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20832
+ content: /* @__PURE__ */ jsx139(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20797
20833
  label: "Details"
20798
20834
  }
20799
20835
  )
@@ -20826,15 +20862,15 @@ var EventDetail = ({
20826
20862
  type
20827
20863
  }) => {
20828
20864
  if (type === "permission") {
20829
- return /* @__PURE__ */ jsx138(IAMPermissionDetail, { events, spanStatusCode });
20865
+ return /* @__PURE__ */ jsx139(IAMPermissionDetail, { events, spanStatusCode });
20830
20866
  }
20831
20867
  const eventLevel = getEventLevelFromGroup(type);
20832
20868
  return /* @__PURE__ */ jsxs128(Box13, { children: [
20833
20869
  /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20834
- /* @__PURE__ */ jsx138(StatusIcon2, { errorLevel: eventLevel }),
20835
- /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20870
+ /* @__PURE__ */ jsx139(StatusIcon2, { errorLevel: eventLevel }),
20871
+ /* @__PURE__ */ jsx139(Typography8, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20836
20872
  ] }),
20837
- /* @__PURE__ */ jsx138(Box13, { children: events.map((event) => /* @__PURE__ */ jsx138(Box13, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ jsx138(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20873
+ /* @__PURE__ */ jsx139(Box13, { children: events.map((event) => /* @__PURE__ */ jsx139(Box13, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ jsx139(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20838
20874
  ] });
20839
20875
  };
20840
20876
 
@@ -30526,8 +30562,8 @@ var QueryStatus = {
30526
30562
 
30527
30563
  // src/components/event-details/lambda-invoke-logs-section.tsx
30528
30564
  import { Box as Box14, CircularProgress as CircularProgress3, Stack as Stack2, Typography as Typography9 } from "@mui/material";
30529
- import { useEffect as useEffect19, useMemo as useMemo11, useRef as useRef16, useState as useState13 } from "react";
30530
- import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30565
+ import { useEffect as useEffect19, useMemo as useMemo11, useRef as useRef16, useState as useState14 } from "react";
30566
+ import { jsx as jsx140, jsxs as jsxs129 } from "react/jsx-runtime";
30531
30567
  var POLL_INTERVAL_MS = 1e3;
30532
30568
  async function pollQueryResults(client, queryId) {
30533
30569
  return client.send(new GetQueryResultsCommand({ queryId }));
@@ -30555,9 +30591,9 @@ function useCloudWatchLogsClient(region) {
30555
30591
  return client;
30556
30592
  }
30557
30593
  function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano) {
30558
- const [loading, setLoading] = useState13(true);
30559
- const [logs, setLogs] = useState13([]);
30560
- const [error, setError] = useState13();
30594
+ const [loading, setLoading] = useState14(true);
30595
+ const [logs, setLogs] = useState14([]);
30596
+ const [error, setError] = useState14();
30561
30597
  const pollTimerRef = useRef16(null);
30562
30598
  const cloudWatchLogs = useCloudWatchLogsClient(region);
30563
30599
  useEffect19(() => {
@@ -30618,26 +30654,26 @@ var LambdaInvokeLogsSection = ({ endTimeNano, functionName: functionName2, regio
30618
30654
  const { error, loading, logs } = useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano);
30619
30655
  if (loading) {
30620
30656
  return /* @__PURE__ */ jsxs129(Stack2, { alignItems: "center", direction: "row", spacing: 1, children: [
30621
- /* @__PURE__ */ jsx139(CircularProgress3, { size: 14 }),
30622
- /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30657
+ /* @__PURE__ */ jsx140(CircularProgress3, { size: 14 }),
30658
+ /* @__PURE__ */ jsx140(Typography9, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30623
30659
  ] });
30624
30660
  }
30625
30661
  if (error !== void 0) {
30626
- return /* @__PURE__ */ jsx139(Typography9, { color: "error", variant: "body2", children: error.message });
30662
+ return /* @__PURE__ */ jsx140(Typography9, { color: "error", variant: "body2", children: error.message });
30627
30663
  }
30628
30664
  if (logs.length === 0) {
30629
- return /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30665
+ return /* @__PURE__ */ jsx140(Typography9, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30630
30666
  }
30631
- return /* @__PURE__ */ jsx139(Box14, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx139("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx139(Typography9, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30667
+ return /* @__PURE__ */ jsx140(Box14, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx140("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx140(Typography9, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30632
30668
  };
30633
30669
 
30634
30670
  // src/components/event-details/toggle-section.tsx
30635
30671
  import { KeyboardArrowDown as KeyboardArrowDown2, KeyboardArrowRight as KeyboardArrowRight2 } from "@mui/icons-material";
30636
30672
  import { Box as Box15, Typography as Typography10 } from "@mui/material";
30637
- import { useState as useState14 } from "react";
30638
- import { jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30673
+ import { useState as useState15 } from "react";
30674
+ import { jsx as jsx141, jsxs as jsxs130 } from "react/jsx-runtime";
30639
30675
  var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30640
- const [isOpen, setIsOpen] = useState14(initialOpen);
30676
+ const [isOpen, setIsOpen] = useState15(initialOpen);
30641
30677
  return /* @__PURE__ */ jsxs130(Box15, { sx: { mt: 4 }, children: [
30642
30678
  /* @__PURE__ */ jsxs130(
30643
30679
  Box15,
@@ -30663,23 +30699,23 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30663
30699
  gap: 1
30664
30700
  },
30665
30701
  children: [
30666
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30667
- isOpen ? /* @__PURE__ */ jsx140(KeyboardArrowDown2, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx140(KeyboardArrowRight2, { sx: { color: "text.secondary", height: 20, width: 20 } })
30702
+ /* @__PURE__ */ jsx141(Typography10, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30703
+ isOpen ? /* @__PURE__ */ jsx141(KeyboardArrowDown2, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx141(KeyboardArrowRight2, { sx: { color: "text.secondary", height: 20, width: 20 } })
30668
30704
  ]
30669
30705
  }
30670
30706
  ),
30671
- action !== false && /* @__PURE__ */ jsx140(Box15, { onClick: (event) => {
30707
+ action !== false && /* @__PURE__ */ jsx141(Box15, { onClick: (event) => {
30672
30708
  event.stopPropagation();
30673
30709
  }, children: action })
30674
30710
  ]
30675
30711
  }
30676
30712
  ),
30677
- isOpen && /* @__PURE__ */ jsx140(Box15, { children })
30713
+ isOpen && /* @__PURE__ */ jsx141(Box15, { children })
30678
30714
  ] });
30679
30715
  };
30680
30716
 
30681
30717
  // src/components/event-details/event-details.tsx
30682
- import { Fragment as Fragment11, jsx as jsx141, jsxs as jsxs131 } from "react/jsx-runtime";
30718
+ import { Fragment as Fragment11, jsx as jsx142, jsxs as jsxs131 } from "react/jsx-runtime";
30683
30719
  var checkIsLambdaInvoke = (span) => {
30684
30720
  if (span.service_name !== "lambda") {
30685
30721
  return false;
@@ -30698,9 +30734,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30698
30734
  () => getEventGroupsByType(selectedEvent?.events ?? []),
30699
30735
  [selectedEvent?.events]
30700
30736
  );
30701
- const [parseNestedJson, setParseNestedJson] = useState15(true);
30737
+ const [parseNestedJson, setParseNestedJson] = useState16(true);
30702
30738
  if (!selectedEvent) {
30703
- return /* @__PURE__ */ jsx141(Box16, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx141(Typography11, { color: "text.secondary", variant: "body2", children: "Select an operation to view graph" }) });
30739
+ return /* @__PURE__ */ jsx142(Box16, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx142(Typography11, { color: "text.secondary", variant: "body2", children: "Select an operation to view graph" }) });
30704
30740
  }
30705
30741
  const isLambdaInvoke = checkIsLambdaInvoke(selectedEvent);
30706
30742
  const isSqsSendMessage = checkIsSqsSendMessage(selectedEvent);
@@ -30737,63 +30773,90 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30737
30773
  py: 1
30738
30774
  },
30739
30775
  children: [
30740
- /* @__PURE__ */ jsx141(Box16, { children: /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30741
- onClose && /* @__PURE__ */ jsx141(IconButton3, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx141(Close2, {}) })
30776
+ /* @__PURE__ */ jsx142(Box16, { children: /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30777
+ onClose && /* @__PURE__ */ jsx142(IconButton4, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx142(Close2, {}) })
30742
30778
  ]
30743
30779
  }
30744
30780
  ),
30745
- /* @__PURE__ */ jsx141(Box16, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs131(Stack3, { spacing: 2, children: [
30746
- /* @__PURE__ */ jsx141(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs131(Stack3, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30781
+ /* @__PURE__ */ jsx142(Box16, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs131(Stack3, { spacing: 2, children: [
30782
+ /* @__PURE__ */ jsx142(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs131(Stack3, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30747
30783
  /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30748
30784
  /* @__PURE__ */ jsxs131(Box16, { children: [
30749
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30750
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30785
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30786
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30787
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) }),
30788
+ /* @__PURE__ */ jsx142(CopyButton, { value: getServiceDisplayName(selectedEvent.service_name) })
30789
+ ] })
30751
30790
  ] }),
30752
30791
  /* @__PURE__ */ jsxs131(Box16, { children: [
30753
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30754
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30792
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30793
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30794
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name }),
30795
+ /* @__PURE__ */ jsx142(CopyButton, { value: selectedEvent.operation_name })
30796
+ ] })
30755
30797
  ] })
30756
30798
  ] }),
30757
30799
  /* @__PURE__ */ jsxs131(Box16, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30758
30800
  /* @__PURE__ */ jsxs131(Box16, { children: [
30759
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30760
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30801
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30802
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30803
+ /* @__PURE__ */ jsx142(Typography11, { variant: "body2", children: selectedEvent.resource_name }),
30804
+ /* @__PURE__ */ jsx142(CopyButton, { value: selectedEvent.resource_name })
30805
+ ] })
30761
30806
  ] }),
30762
30807
  Boolean(cfnResourceType) && /* @__PURE__ */ jsxs131(Box16, { children: [
30763
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30764
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30808
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30809
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30810
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType }),
30811
+ /* @__PURE__ */ jsx142(CopyButton, { value: cfnResourceType })
30812
+ ] })
30765
30813
  ] })
30766
30814
  ] }),
30767
30815
  Boolean(resourceArn) && /* @__PURE__ */ jsxs131(Box16, { children: [
30768
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30769
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30816
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30817
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30818
+ /* @__PURE__ */ jsx142(Typography11, { variant: "body2", children: resourceArn }),
30819
+ /* @__PURE__ */ jsx142(CopyButton, { value: resourceArn })
30820
+ ] })
30770
30821
  ] }),
30771
30822
  /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30772
30823
  /* @__PURE__ */ jsxs131(Box16, { children: [
30773
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30774
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30824
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30825
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30826
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id }),
30827
+ /* @__PURE__ */ jsx142(CopyButton, { value: selectedEvent.account_id })
30828
+ ] })
30775
30829
  ] }),
30776
30830
  /* @__PURE__ */ jsxs131(Box16, { children: [
30777
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30778
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30831
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30832
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30833
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region }),
30834
+ /* @__PURE__ */ jsx142(CopyButton, { value: selectedEvent.region })
30835
+ ] })
30779
30836
  ] })
30780
30837
  ] }),
30781
30838
  /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30782
30839
  /* @__PURE__ */ jsxs131(Box16, { children: [
30783
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30784
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30840
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30841
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30842
+ /* @__PURE__ */ jsx142(Typography11, { variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() }),
30843
+ /* @__PURE__ */ jsx142(CopyButton, { value: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30844
+ ] })
30785
30845
  ] }),
30786
30846
  duration !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30787
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30788
- /* @__PURE__ */ jsxs131(Typography11, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30789
- duration,
30790
- "ms"
30847
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30848
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", "data-testid": EVENT_DETAILS_DURATION_TEST_ID, direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30849
+ /* @__PURE__ */ jsxs131(Typography11, { variant: "body2", children: [
30850
+ duration,
30851
+ "ms"
30852
+ ] }),
30853
+ /* @__PURE__ */ jsx142(CopyButton, { value: `${duration}ms` })
30791
30854
  ] })
30792
30855
  ] })
30793
30856
  ] }),
30794
30857
  /* @__PURE__ */ jsxs131(Box16, { children: [
30795
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30796
- /* @__PURE__ */ jsx141(Stack3, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx141(
30858
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30859
+ /* @__PURE__ */ jsx142(Stack3, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx142(
30797
30860
  Chip3,
30798
30861
  {
30799
30862
  color: selectedEvent.status_code === 2 ? "error" : selectedEvent.status_code === 1 ? "success" : "default",
@@ -30804,50 +30867,50 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30804
30867
  ) })
30805
30868
  ] })
30806
30869
  ] }) }),
30807
- /* @__PURE__ */ jsx141(Divider4, {}),
30870
+ /* @__PURE__ */ jsx142(Divider4, {}),
30808
30871
  /* @__PURE__ */ jsxs131(ToggleSection, { headline: "Permissions", children: [
30809
- selectedEvent.iam_errors_suppressed && /* @__PURE__ */ jsx141(Alert4, { "data-testid": EVENT_DETAILS_IAM_ERRORS_SUPPRESSED_TEST_ID, severity: "warning", sx: { mb: 1 }, children: "IAM errors are suppressed \u2014 upgrade your license to view" }),
30810
- !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx141(Typography11, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30811
- eventGroups.permissions && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, spanStatusCode: selectedEvent.status_code, type: "permission" }),
30812
- eventGroups.errors && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30813
- eventGroups.warnings && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30872
+ selectedEvent.iam_errors_suppressed && /* @__PURE__ */ jsx142(Alert4, { "data-testid": EVENT_DETAILS_IAM_ERRORS_SUPPRESSED_TEST_ID, severity: "warning", sx: { mb: 1 }, children: "IAM errors are suppressed \u2014 upgrade your license to view" }),
30873
+ !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx142(Typography11, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30874
+ eventGroups.permissions && /* @__PURE__ */ jsx142(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, spanStatusCode: selectedEvent.status_code, type: "permission" }),
30875
+ eventGroups.errors && /* @__PURE__ */ jsx142(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30876
+ eventGroups.warnings && /* @__PURE__ */ jsx142(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30814
30877
  ] }),
30815
30878
  hasPayloads && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30816
- /* @__PURE__ */ jsx141(Divider4, {}),
30817
- /* @__PURE__ */ jsx141(
30879
+ /* @__PURE__ */ jsx142(Divider4, {}),
30880
+ /* @__PURE__ */ jsx142(
30818
30881
  ToggleSection,
30819
30882
  {
30820
- action: /* @__PURE__ */ jsx141(
30883
+ action: /* @__PURE__ */ jsx142(
30821
30884
  FormControlLabel2,
30822
30885
  {
30823
- control: /* @__PURE__ */ jsx141(Switch, { checked: !parseNestedJson, onChange: (event) => {
30886
+ control: /* @__PURE__ */ jsx142(Switch, { checked: !parseNestedJson, onChange: (event) => {
30824
30887
  setParseNestedJson(!event.target.checked);
30825
30888
  }, size: "small" }),
30826
- label: /* @__PURE__ */ jsx141(Typography11, { variant: "caption", children: "View raw data" }),
30889
+ label: /* @__PURE__ */ jsx142(Typography11, { variant: "caption", children: "View raw data" }),
30827
30890
  sx: { mr: 0 }
30828
30891
  }
30829
30892
  ),
30830
30893
  headline: "Payloads",
30831
30894
  children: /* @__PURE__ */ jsxs131(Stack3, { spacing: 2, children: [
30832
30895
  requestPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30833
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30834
- /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30896
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Request" }),
30897
+ /* @__PURE__ */ jsx142(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30835
30898
  ] }),
30836
30899
  (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ jsxs131(Box16, { children: [
30837
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30838
- isResponseSuppressed ? /* @__PURE__ */ jsx141(Box16, { sx: { py: 1 }, children: /* @__PURE__ */ jsx141(Alert4, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30900
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Response" }),
30901
+ isResponseSuppressed ? /* @__PURE__ */ jsx142(Box16, { sx: { py: 1 }, children: /* @__PURE__ */ jsx142(Alert4, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ jsx142(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30839
30902
  ] }),
30840
30903
  exceptionPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30841
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30842
- /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30904
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Exception" }),
30905
+ /* @__PURE__ */ jsx142(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30843
30906
  ] })
30844
30907
  ] })
30845
30908
  }
30846
30909
  )
30847
30910
  ] }),
30848
30911
  isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30849
- /* @__PURE__ */ jsx141(Divider4, {}),
30850
- /* @__PURE__ */ jsx141(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx141(
30912
+ /* @__PURE__ */ jsx142(Divider4, {}),
30913
+ /* @__PURE__ */ jsx142(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx142(
30851
30914
  LambdaInvokeLogsSection,
30852
30915
  {
30853
30916
  endTimeNano: selectedEvent.end_time_unix_nano ?? selectedEvent.start_time_unix_nano,
@@ -30858,21 +30921,30 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30858
30921
  }
30859
30922
  ) })
30860
30923
  ] }),
30861
- /* @__PURE__ */ jsx141(Divider4, {}),
30862
- /* @__PURE__ */ jsx141(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs131(Stack3, { spacing: 1, children: [
30924
+ /* @__PURE__ */ jsx142(Divider4, {}),
30925
+ /* @__PURE__ */ jsx142(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs131(Stack3, { spacing: 1, children: [
30863
30926
  /* @__PURE__ */ jsxs131(Box16, { children: [
30864
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30865
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30927
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30928
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30929
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id }),
30930
+ /* @__PURE__ */ jsx142(CopyButton, { value: selectedEvent.span_id })
30931
+ ] })
30866
30932
  ] }),
30867
30933
  /* @__PURE__ */ jsxs131(Box16, { children: [
30868
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30869
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30934
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30935
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30936
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id }),
30937
+ /* @__PURE__ */ jsx142(CopyButton, { value: selectedEvent.trace_id })
30938
+ ] })
30870
30939
  ] }),
30871
30940
  requestId !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30872
- /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30873
- /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30941
+ /* @__PURE__ */ jsx142(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30942
+ /* @__PURE__ */ jsxs131(Stack3, { alignItems: "center", direction: "row", sx: { "&:hover .copy-btn": { opacity: 1 } }, children: [
30943
+ /* @__PURE__ */ jsx142(Typography11, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId }),
30944
+ /* @__PURE__ */ jsx142(CopyButton, { value: requestId })
30945
+ ] })
30874
30946
  ] }),
30875
- eventGroups.info && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30947
+ eventGroups.info && /* @__PURE__ */ jsx142(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30876
30948
  ] }) })
30877
30949
  ] }) })
30878
30950
  ] });
@@ -30886,11 +30958,11 @@ import { useEffect as useEffect20 } from "react";
30886
30958
 
30887
30959
  // src/components/trace-graph/service-node.tsx
30888
30960
  import { Cancel as Cancel3, GppBad as GppBad2 } from "@mui/icons-material";
30889
- import { Box as Box17, Divider as Divider5, Stack as Stack4, Tooltip as Tooltip5, Typography as Typography12, useTheme as useTheme4 } from "@mui/material";
30961
+ import { Box as Box17, Divider as Divider5, Stack as Stack4, Tooltip as Tooltip6, Typography as Typography12, useTheme as useTheme4 } from "@mui/material";
30890
30962
  import "@xyflow/react/dist/style.css";
30891
30963
  import { Handle, Position } from "@xyflow/react";
30892
30964
  import { memo as memo11, useMemo as useMemo13 } from "react";
30893
- import { jsx as jsx142, jsxs as jsxs132 } from "react/jsx-runtime";
30965
+ import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
30894
30966
  var handleStyle = {
30895
30967
  backgroundColor: "white",
30896
30968
  borderColor: "lightgray",
@@ -30930,8 +31002,8 @@ var ServiceNode = memo11(({ data, selected }) => {
30930
31002
  },
30931
31003
  tabIndex: 0,
30932
31004
  children: [
30933
- /* @__PURE__ */ jsx142(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
30934
- /* @__PURE__ */ jsx142(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
31005
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
31006
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
30935
31007
  /* @__PURE__ */ jsxs132(
30936
31008
  Stack4,
30937
31009
  {
@@ -30939,9 +31011,9 @@ var ServiceNode = memo11(({ data, selected }) => {
30939
31011
  direction: "row",
30940
31012
  sx: { gap: "8px", pb: "2px", pt: "6px", px: "8px" },
30941
31013
  children: [
30942
- /* @__PURE__ */ jsx142(Box17, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ jsx142(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
31014
+ /* @__PURE__ */ jsx143(Box17, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ jsx143(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
30943
31015
  /* @__PURE__ */ jsxs132(Stack4, { sx: { minWidth: 0 }, children: [
30944
- /* @__PURE__ */ jsx142(
31016
+ /* @__PURE__ */ jsx143(
30945
31017
  Typography12,
30946
31018
  {
30947
31019
  noWrap: true,
@@ -30950,7 +31022,7 @@ var ServiceNode = memo11(({ data, selected }) => {
30950
31022
  children: getServiceDisplayName(data.event.service_name)
30951
31023
  }
30952
31024
  ),
30953
- data.event.resource_name != "" && /* @__PURE__ */ jsx142(
31025
+ data.event.resource_name != "" && /* @__PURE__ */ jsx143(
30954
31026
  Typography12,
30955
31027
  {
30956
31028
  color: "text.secondary",
@@ -30964,7 +31036,7 @@ var ServiceNode = memo11(({ data, selected }) => {
30964
31036
  ]
30965
31037
  }
30966
31038
  ),
30967
- /* @__PURE__ */ jsx142(Divider5, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
31039
+ /* @__PURE__ */ jsx143(Divider5, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
30968
31040
  /* @__PURE__ */ jsxs132(
30969
31041
  Stack4,
30970
31042
  {
@@ -30983,12 +31055,12 @@ var ServiceNode = memo11(({ data, selected }) => {
30983
31055
  width: "38px"
30984
31056
  },
30985
31057
  children: [
30986
- (isError || isWarning) && hasPermissionEvents && /* @__PURE__ */ jsx142(Tooltip5, { arrow: true, title: "Permission denied", children: /* @__PURE__ */ jsx142(GppBad2, { sx: { color: isError ? theme.palette.error.main : theme.palette.warning.main, fontSize: "16px" } }) }),
30987
- isError && !hasPermissionEvents && /* @__PURE__ */ jsx142(Tooltip5, { arrow: true, title: "Error", children: /* @__PURE__ */ jsx142(Cancel3, { sx: { color: theme.palette.error.main, fontSize: "16px" } }) })
31058
+ (isError || isWarning) && hasPermissionEvents && /* @__PURE__ */ jsx143(Tooltip6, { arrow: true, title: "Permission denied", children: /* @__PURE__ */ jsx143(GppBad2, { sx: { color: isError ? theme.palette.error.main : theme.palette.warning.main, fontSize: "16px" } }) }),
31059
+ isError && !hasPermissionEvents && /* @__PURE__ */ jsx143(Tooltip6, { arrow: true, title: "Error", children: /* @__PURE__ */ jsx143(Cancel3, { sx: { color: theme.palette.error.main, fontSize: "16px" } }) })
30988
31060
  ]
30989
31061
  }
30990
31062
  ),
30991
- /* @__PURE__ */ jsx142(
31063
+ /* @__PURE__ */ jsx143(
30992
31064
  Typography12,
30993
31065
  {
30994
31066
  "data-testid": SERVICE_NODE_OPERATION_NAME_TEST_ID,
@@ -31062,11 +31134,11 @@ var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
31062
31134
 
31063
31135
  // src/components/trace-graph/xyflow/controls.tsx
31064
31136
  import { Add, FitScreen, Remove } from "@mui/icons-material";
31065
- import { Box as Box18, IconButton as IconButton4 } from "@mui/material";
31137
+ import { Box as Box18, IconButton as IconButton5 } from "@mui/material";
31066
31138
  import { useReactFlow, useStore as useStore2 } from "@xyflow/react";
31067
31139
  import { memo as memo12 } from "react";
31068
31140
  import { shallow } from "zustand/shallow";
31069
- import { jsx as jsx143, jsxs as jsxs133 } from "react/jsx-runtime";
31141
+ import { jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31070
31142
  var selector = (s2) => ({
31071
31143
  isInteractive: s2.nodesDraggable || s2.nodesConnectable || s2.elementsSelectable,
31072
31144
  maxZoomReached: s2.transform[2] >= s2.maxZoom,
@@ -31098,33 +31170,33 @@ var Controls = memo12(() => {
31098
31170
  zIndex: 5
31099
31171
  },
31100
31172
  children: [
31101
- /* @__PURE__ */ jsx143(
31102
- IconButton4,
31173
+ /* @__PURE__ */ jsx144(
31174
+ IconButton5,
31103
31175
  {
31104
31176
  className: "react-flow__controls-zoomin",
31105
31177
  disabled: maxZoomReached,
31106
31178
  onClick: onZoomInHandler,
31107
31179
  size: "small",
31108
- children: /* @__PURE__ */ jsx143(Add, {})
31180
+ children: /* @__PURE__ */ jsx144(Add, {})
31109
31181
  }
31110
31182
  ),
31111
- /* @__PURE__ */ jsx143(
31112
- IconButton4,
31183
+ /* @__PURE__ */ jsx144(
31184
+ IconButton5,
31113
31185
  {
31114
31186
  className: "react-flow__controls-zoomout",
31115
31187
  disabled: minZoomReached,
31116
31188
  onClick: onZoomOutHandler,
31117
31189
  size: "small",
31118
- children: /* @__PURE__ */ jsx143(Remove, {})
31190
+ children: /* @__PURE__ */ jsx144(Remove, {})
31119
31191
  }
31120
31192
  ),
31121
- /* @__PURE__ */ jsx143(
31122
- IconButton4,
31193
+ /* @__PURE__ */ jsx144(
31194
+ IconButton5,
31123
31195
  {
31124
31196
  className: "react-flow__controls-fitview",
31125
31197
  onClick: onFitViewHandler,
31126
31198
  size: "small",
31127
- children: /* @__PURE__ */ jsx143(FitScreen, {})
31199
+ children: /* @__PURE__ */ jsx144(FitScreen, {})
31128
31200
  }
31129
31201
  )
31130
31202
  ]
@@ -31133,7 +31205,7 @@ var Controls = memo12(() => {
31133
31205
  });
31134
31206
 
31135
31207
  // src/components/trace-graph/trace-graph.tsx
31136
- import { Fragment as Fragment12, jsx as jsx144, jsxs as jsxs134 } from "react/jsx-runtime";
31208
+ import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31137
31209
  var nodeTypes = {
31138
31210
  service: ServiceNode
31139
31211
  };
@@ -31200,7 +31272,7 @@ var TraceGraph = ({
31200
31272
  spans.error && /* @__PURE__ */ jsxs134(
31201
31273
  Alert5,
31202
31274
  {
31203
- action: /* @__PURE__ */ jsx144(Button5, { onClick: () => {
31275
+ action: /* @__PURE__ */ jsx145(Button5, { onClick: () => {
31204
31276
  onRefresh();
31205
31277
  }, children: "Retry" }),
31206
31278
  severity: "error",
@@ -31229,8 +31301,8 @@ var TraceGraph = ({
31229
31301
  onNodesChange,
31230
31302
  selectNodesOnDrag: false,
31231
31303
  children: [
31232
- /* @__PURE__ */ jsx144(Controls, {}),
31233
- /* @__PURE__ */ jsx144(
31304
+ /* @__PURE__ */ jsx145(Controls, {}),
31305
+ /* @__PURE__ */ jsx145(
31234
31306
  Background,
31235
31307
  {
31236
31308
  bgColor: theme.palette.background.default,
@@ -31244,7 +31316,7 @@ var TraceGraph = ({
31244
31316
  };
31245
31317
 
31246
31318
  // src/pages/trace-graph-page.tsx
31247
- import { Fragment as Fragment13, jsx as jsx145, jsxs as jsxs135 } from "react/jsx-runtime";
31319
+ import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31248
31320
  var HEADER_HEIGHT = 56;
31249
31321
  var DRAWER_WIDTH = "35%";
31250
31322
  var Main = styled("main", { shouldForwardProp: (property) => property !== "open" })(({ open, theme }) => ({
@@ -31307,12 +31379,12 @@ var TraceGraphView = ({
31307
31379
  },
31308
31380
  children: [
31309
31381
  /* @__PURE__ */ jsxs135(Box19, { sx: { display: "flex", width: "100%" }, children: [
31310
- /* @__PURE__ */ jsx145(Button6, { onClick: () => {
31382
+ /* @__PURE__ */ jsx146(Button6, { onClick: () => {
31311
31383
  navigateToSpansList();
31312
- }, startIcon: /* @__PURE__ */ jsx145(ArrowBack, {}), children: "Go back" }),
31313
- /* @__PURE__ */ jsx145(Box19, { sx: { flexGrow: 1 } })
31384
+ }, startIcon: /* @__PURE__ */ jsx146(ArrowBack, {}), children: "Go back" }),
31385
+ /* @__PURE__ */ jsx146(Box19, { sx: { flexGrow: 1 } })
31314
31386
  ] }),
31315
- /* @__PURE__ */ jsx145(
31387
+ /* @__PURE__ */ jsx146(
31316
31388
  Paper3,
31317
31389
  {
31318
31390
  sx: {
@@ -31322,7 +31394,7 @@ var TraceGraphView = ({
31322
31394
  position: "relative",
31323
31395
  width: "100%"
31324
31396
  },
31325
- children: shouldShowStatusMessage ? /* @__PURE__ */ jsx145(
31397
+ children: shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31326
31398
  StatusMessage,
31327
31399
  {
31328
31400
  error: statusError,
@@ -31331,14 +31403,14 @@ var TraceGraphView = ({
31331
31403
  status
31332
31404
  }
31333
31405
  ) : /* @__PURE__ */ jsxs135(Fragment13, { children: [
31334
- /* @__PURE__ */ jsx145(Main, { open, children: /* @__PURE__ */ jsx145(
31406
+ /* @__PURE__ */ jsx146(Main, { open, children: /* @__PURE__ */ jsx146(
31335
31407
  Box19,
31336
31408
  {
31337
31409
  sx: {
31338
31410
  height: "100%",
31339
31411
  overflow: "auto"
31340
31412
  },
31341
- children: traceId !== void 0 && /* @__PURE__ */ jsx145(ReactFlowProvider, { children: /* @__PURE__ */ jsx145(
31413
+ children: traceId !== void 0 && /* @__PURE__ */ jsx146(ReactFlowProvider, { children: /* @__PURE__ */ jsx146(
31342
31414
  TraceGraph,
31343
31415
  {
31344
31416
  initialFocusEventId: spanId,
@@ -31355,7 +31427,7 @@ var TraceGraphView = ({
31355
31427
  ) })
31356
31428
  }
31357
31429
  ) }),
31358
- /* @__PURE__ */ jsx145(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx145(EventDetails, { onClose: handleClose, selectedEvent }) })
31430
+ /* @__PURE__ */ jsx146(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx146(EventDetails, { onClose: handleClose, selectedEvent }) })
31359
31431
  ] })
31360
31432
  }
31361
31433
  )
@@ -31399,10 +31471,10 @@ async function fetchConnectedTraces(api, traceIds, allSpans = /* @__PURE__ */ ne
31399
31471
  }
31400
31472
  var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31401
31473
  const api = useAppInspectorApi();
31402
- const [spans, setSpans] = useState16();
31403
- const [loading, setLoading] = useState16(false);
31404
- const [fetchError, setFetchError] = useState16();
31405
- const fetchSpans = useCallback11(async () => {
31474
+ const [spans, setSpans] = useState17();
31475
+ const [loading, setLoading] = useState17(false);
31476
+ const [fetchError, setFetchError] = useState17();
31477
+ const fetchSpans = useCallback12(async () => {
31406
31478
  setLoading(true);
31407
31479
  try {
31408
31480
  const spans2 = await fetchConnectedTraces(api, [traceId]);
@@ -31418,8 +31490,8 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31418
31490
  useEffect21(() => {
31419
31491
  void fetchSpans();
31420
31492
  }, [fetchSpans]);
31421
- const [open, setOpen] = useState16(true);
31422
- const [selectedEvent, setSelectedEvent] = useState16(() => spans?.find((span) => span.span_id === spanId));
31493
+ const [open, setOpen] = useState17(true);
31494
+ const [selectedEvent, setSelectedEvent] = useState17(() => spans?.find((span) => span.span_id === spanId));
31423
31495
  const spansReference = useRef17();
31424
31496
  useEffect21(() => {
31425
31497
  if (!spansReference.current && spans) {
@@ -31433,22 +31505,22 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31433
31505
  reportDisabled();
31434
31506
  }
31435
31507
  }, [fetchError, reportDisabled]);
31436
- const handleEnable = useCallback11(async () => {
31508
+ const handleEnable = useCallback12(async () => {
31437
31509
  await api.setStatus({ status: "ENABLED" });
31438
31510
  void checkStatus();
31439
31511
  }, [api, checkStatus]);
31440
- const handleEventSelect = useCallback11((spanId2) => {
31512
+ const handleEventSelect = useCallback12((spanId2) => {
31441
31513
  const span = spans?.find((s2) => s2.span_id === spanId2);
31442
31514
  setSelectedEvent(span);
31443
31515
  setOpen(true);
31444
31516
  }, [spans]);
31445
- const handleRetry = useCallback11(() => {
31517
+ const handleRetry = useCallback12(() => {
31446
31518
  void checkStatus();
31447
31519
  }, [checkStatus]);
31448
- const navigateToSpansList = useCallback11(() => {
31520
+ const navigateToSpansList = useCallback12(() => {
31449
31521
  onClose?.();
31450
31522
  }, [onClose]);
31451
- return /* @__PURE__ */ jsx145(
31523
+ return /* @__PURE__ */ jsx146(
31452
31524
  TraceGraphView,
31453
31525
  {
31454
31526
  fetchError,
@@ -31473,7 +31545,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31473
31545
  };
31474
31546
 
31475
31547
  // src/pages/spans-list-page.tsx
31476
- import { Fragment as Fragment14, jsx as jsx146, jsxs as jsxs136 } from "react/jsx-runtime";
31548
+ import { Fragment as Fragment14, jsx as jsx147, jsxs as jsxs136 } from "react/jsx-runtime";
31477
31549
  var SpansListPage = () => {
31478
31550
  const api = useAppInspectorApi();
31479
31551
  const {
@@ -31497,24 +31569,24 @@ var SpansListPage = () => {
31497
31569
  warningCount
31498
31570
  } = useSpans();
31499
31571
  const { checking, checkStatus, status, statusError } = useAppInspectorStatus();
31500
- const clearSpansSync = useCallback12(() => {
31572
+ const clearSpansSync = useCallback13(() => {
31501
31573
  void clearSpans();
31502
31574
  }, [clearSpans]);
31503
31575
  const localstackVersion = status?.localstackVersion ?? (statusError instanceof AppInspectorNotFoundError ? statusError.localstackVersion : void 0);
31504
31576
  const versionCompatibility = checkEmulatorVersion(localstackVersion);
31505
- const [bannerDismissed, setBannerDismissed] = useState17(false);
31577
+ const [bannerDismissed, setBannerDismissed] = useState18(false);
31506
31578
  const [order2, setOrder] = useLocalStorage("spans-order", "oldest_first");
31507
- const [selectedTraceId, setSelectedTraceId] = useState17();
31508
- const [selectedSpanId, setSelectedSpanId] = useState17();
31509
- const navigateToSpan = useCallback12((span) => {
31579
+ const [selectedTraceId, setSelectedTraceId] = useState18();
31580
+ const [selectedSpanId, setSelectedSpanId] = useState18();
31581
+ const navigateToSpan = useCallback13((span) => {
31510
31582
  setSelectedTraceId(span.trace_id);
31511
31583
  setSelectedSpanId(span.span_id);
31512
31584
  }, []);
31513
- const handleRetry = useCallback12(() => {
31585
+ const handleRetry = useCallback13(() => {
31514
31586
  void checkStatus();
31515
31587
  fetchForward();
31516
31588
  }, [checkStatus, fetchForward]);
31517
- const handleEnable = useCallback12(async () => {
31589
+ const handleEnable = useCallback13(async () => {
31518
31590
  await api.setStatus({ status: "ENABLED" });
31519
31591
  clearFetchError();
31520
31592
  void checkStatus();
@@ -31542,7 +31614,7 @@ var SpansListPage = () => {
31542
31614
  }, [fetchingForward, fetchForward]);
31543
31615
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31544
31616
  if (versionCompatibility === "below-minimum") {
31545
- return /* @__PURE__ */ jsx146(
31617
+ return /* @__PURE__ */ jsx147(
31546
31618
  StatusMessage,
31547
31619
  {
31548
31620
  localstackVersion,
@@ -31551,7 +31623,7 @@ var SpansListPage = () => {
31551
31623
  );
31552
31624
  }
31553
31625
  if (shouldShowStatusMessage) {
31554
- return /* @__PURE__ */ jsx146(
31626
+ return /* @__PURE__ */ jsx147(
31555
31627
  StatusMessage,
31556
31628
  {
31557
31629
  error: statusError,
@@ -31579,7 +31651,7 @@ var SpansListPage = () => {
31579
31651
  width: "100%"
31580
31652
  },
31581
31653
  children: [
31582
- !checking && /* @__PURE__ */ jsx146(
31654
+ !checking && /* @__PURE__ */ jsx147(
31583
31655
  EmulatorVersionBanner,
31584
31656
  {
31585
31657
  compatibility: bannerDismissed && versionCompatibility === "warning" ? "ok" : versionCompatibility,
@@ -31589,7 +31661,7 @@ var SpansListPage = () => {
31589
31661
  } : void 0
31590
31662
  }
31591
31663
  ),
31592
- /* @__PURE__ */ jsx146(
31664
+ /* @__PURE__ */ jsx147(
31593
31665
  SpansList,
31594
31666
  {
31595
31667
  clearingSpans,
@@ -31617,7 +31689,7 @@ var SpansListPage = () => {
31617
31689
  ]
31618
31690
  }
31619
31691
  ),
31620
- selectedTraceId !== void 0 && /* @__PURE__ */ jsx146(TraceGraphPage, { onClose: () => {
31692
+ selectedTraceId !== void 0 && /* @__PURE__ */ jsx147(TraceGraphPage, { onClose: () => {
31621
31693
  setSelectedTraceId(void 0);
31622
31694
  }, spanId: selectedSpanId, traceId: selectedTraceId })
31623
31695
  ] });