@localstack/appinspector-ui 1.0.113 → 1.0.115

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
@@ -2413,7 +2413,7 @@ var init_event_streams = __esm({
2413
2413
  });
2414
2414
 
2415
2415
  // src/pages/spans-list-page.tsx
2416
- import { Box as Box20 } from "@mui/material";
2416
+ import { Box as Box21 } from "@mui/material";
2417
2417
  import { useCallback as useCallback12, useState as useState18 } from "react";
2418
2418
 
2419
2419
  // src/api/errors.ts
@@ -2572,12 +2572,12 @@ var EmulatorVersionBanner = ({
2572
2572
  };
2573
2573
 
2574
2574
  // src/components/spans-list/spans-list.tsx
2575
- import { Alert as Alert2, Box as Box5, Button as Button3 } from "@mui/material";
2575
+ import { Alert as Alert2, Box as Box6, Button as Button3 } from "@mui/material";
2576
2576
 
2577
2577
  // src/components/spans-list/spans-data-grid.tsx
2578
2578
  import { DeleteForeverOutlined, PauseOutlined, PlayArrowOutlined } from "@mui/icons-material";
2579
2579
  import {
2580
- Box as Box4,
2580
+ Box as Box5,
2581
2581
  Button as Button2,
2582
2582
  CircularProgress,
2583
2583
  FormControlLabel,
@@ -2590,8 +2590,8 @@ import {
2590
2590
  TableHead,
2591
2591
  TableRow,
2592
2592
  TableSortLabel,
2593
- Tooltip as Tooltip3,
2594
- Typography as Typography3,
2593
+ Tooltip as Tooltip4,
2594
+ Typography as Typography4,
2595
2595
  useTheme as useTheme2
2596
2596
  } from "@mui/material";
2597
2597
 
@@ -14881,11 +14881,182 @@ var ServiceCell = memo7(({
14881
14881
  });
14882
14882
  ServiceCell.displayName = "ServiceCell";
14883
14883
 
14884
+ // src/components/cells/status-cell.tsx
14885
+ import { Cancel, Error as Error2, GppBad } from "@mui/icons-material";
14886
+ import { Box as Box3, Divider as Divider2, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
14887
+
14888
+ // src/types/error-levels.ts
14889
+ var ErrorLevel = {
14890
+ ERROR: 3,
14891
+ // General error
14892
+ IAM_PERMISSION: 5,
14893
+ // IAM permission issues
14894
+ OK: 2,
14895
+ // OK
14896
+ // Standard OTEL status codes
14897
+ UNSET: 1,
14898
+ // Unset
14899
+ // Extended custom levels
14900
+ WARNING: 4
14901
+ // Warning
14902
+ };
14903
+
14904
+ // src/utils/iam-utils.ts
14905
+ function determinePermissionStatus(payload) {
14906
+ if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {
14907
+ return "explicitly_denied";
14908
+ }
14909
+ if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {
14910
+ return "explicitly_allowed";
14911
+ }
14912
+ if (payload.is_allowed) {
14913
+ return "implicitly_allowed";
14914
+ }
14915
+ return "implicitly_denied";
14916
+ }
14917
+ function formatPermissionStatus(status) {
14918
+ switch (status) {
14919
+ case "explicitly_allowed": {
14920
+ return "Explicitly Allowed";
14921
+ }
14922
+ case "explicitly_denied": {
14923
+ return "Explicitly Denied";
14924
+ }
14925
+ case "implicitly_allowed": {
14926
+ return "Implicitly Allowed";
14927
+ }
14928
+ case "implicitly_denied": {
14929
+ return "Implicitly Denied";
14930
+ }
14931
+ }
14932
+ }
14933
+ function getPermissionStatusColor(status) {
14934
+ switch (status) {
14935
+ case "explicitly_allowed":
14936
+ case "implicitly_allowed": {
14937
+ return "success.main";
14938
+ }
14939
+ case "explicitly_denied": {
14940
+ return "error.main";
14941
+ }
14942
+ case "implicitly_denied": {
14943
+ return "warning.main";
14944
+ }
14945
+ }
14946
+ }
14947
+ function parseIAMEvent(payloadString) {
14948
+ try {
14949
+ const payload = JSON.parse(payloadString);
14950
+ const permission = determinePermissionStatus(payload);
14951
+ const actions = [];
14952
+ const resources = [];
14953
+ if (payload.explicit_allows) {
14954
+ for (const allow of payload.explicit_allows) {
14955
+ if (!actions.includes(allow.action)) actions.push(allow.action);
14956
+ if (!resources.includes(allow.resource)) resources.push(allow.resource);
14957
+ }
14958
+ }
14959
+ if (payload.explicit_denies) {
14960
+ for (const deny of payload.explicit_denies) {
14961
+ if (!actions.includes(deny.action)) actions.push(deny.action);
14962
+ if (!resources.includes(deny.resource)) resources.push(deny.resource);
14963
+ }
14964
+ }
14965
+ if (payload.implicit_denies) {
14966
+ for (const deny of payload.implicit_denies) {
14967
+ if (!actions.includes(deny.action)) actions.push(deny.action);
14968
+ if (!resources.includes(deny.resource)) resources.push(deny.resource);
14969
+ }
14970
+ }
14971
+ return {
14972
+ details: {
14973
+ actions,
14974
+ explicitAllows: payload.explicit_allow_count,
14975
+ explicitDenies: payload.explicit_deny_count,
14976
+ implicitDenies: payload.implicit_deny_count,
14977
+ resources
14978
+ },
14979
+ operation: payload.operation,
14980
+ permission,
14981
+ principal: payload.principal_arn,
14982
+ service: payload.service
14983
+ };
14984
+ } catch (error) {
14985
+ console.error("Error parsing IAM event payload:", error);
14986
+ return void 0;
14987
+ }
14988
+ }
14989
+
14990
+ // src/components/cells/status-cell.tsx
14991
+ import { Fragment as Fragment4, jsx as jsx126, jsxs as jsxs120 } from "react/jsx-runtime";
14992
+ var StatusIcon = ({ errorLevel, spanStatusCode }) => {
14993
+ switch (errorLevel) {
14994
+ case ErrorLevel.ERROR: {
14995
+ return /* @__PURE__ */ jsx126(Cancel, { sx: { color: "red" } });
14996
+ }
14997
+ case ErrorLevel.IAM_PERMISSION: {
14998
+ return /* @__PURE__ */ jsx126(GppBad, { sx: { color: spanStatusCode === 2 ? "red" : "warning.main" } });
14999
+ }
15000
+ case ErrorLevel.WARNING: {
15001
+ return /* @__PURE__ */ jsx126(Error2, { sx: { color: "orange" } });
15002
+ }
15003
+ default: {
15004
+ return /* @__PURE__ */ jsx126(Fragment4, {});
15005
+ }
15006
+ }
15007
+ };
15008
+ var calculateHighestErrorLevel = (span) => {
15009
+ const hasIamDenial = span.events.some((event) => {
15010
+ if (!event.event_type?.toLowerCase().includes("iam")) return false;
15011
+ if (typeof event.attributes?.payload !== "string") return false;
15012
+ const parsed = parseIAMEvent(event.attributes.payload);
15013
+ return parsed?.permission === "explicitly_denied" || parsed?.permission === "implicitly_denied";
15014
+ });
15015
+ if (hasIamDenial) return ErrorLevel.IAM_PERMISSION;
15016
+ if (span.status_code === 2) return ErrorLevel.ERROR;
15017
+ const hasErrorInErrors = span.errors?.some((error) => error.level === "error");
15018
+ if (hasErrorInErrors) return ErrorLevel.ERROR;
15019
+ const hasWarning = span.errors?.some((error) => error.level === "warning");
15020
+ if (hasWarning) return ErrorLevel.WARNING;
15021
+ return span.status_code || ErrorLevel.UNSET;
15022
+ };
15023
+ var SPAN_STATUS_LABELS = {
15024
+ 0: "Unset",
15025
+ 1: "OK",
15026
+ 2: "Error"
15027
+ };
15028
+ var buildTooltipContent = (span) => {
15029
+ const messages = [];
15030
+ if (span.status_message) messages.push(span.status_message);
15031
+ for (const error of span.errors ?? []) {
15032
+ if (error.message) messages.push(error.message);
15033
+ }
15034
+ const spanStatusLabel = SPAN_STATUS_LABELS[span.status_code] ?? `Unknown (${span.status_code.toString()})`;
15035
+ const iamDenials = span.events.filter((event) => event.event_type?.toLowerCase().includes("iam") && typeof event.attributes?.payload === "string").map((event) => parseIAMEvent(event.attributes.payload)).filter((parsed) => parsed?.permission === "explicitly_denied" || parsed?.permission === "implicitly_denied").filter(Boolean);
15036
+ return /* @__PURE__ */ jsxs120(Box3, { children: [
15037
+ /* @__PURE__ */ jsxs120(Typography2, { color: "inherit", display: "block", fontWeight: "bold", variant: "caption", children: [
15038
+ "Status: ",
15039
+ spanStatusLabel
15040
+ ] }),
15041
+ messages.map((message, index) => /* @__PURE__ */ jsx126(Typography2, { color: "inherit", display: "block", variant: "caption", children: message }, index)),
15042
+ iamDenials.length > 0 && /* @__PURE__ */ jsxs120(Fragment4, { children: [
15043
+ /* @__PURE__ */ jsx126(Divider2, { sx: { borderColor: "rgba(255,255,255,0.2)", my: 0.5 } }),
15044
+ /* @__PURE__ */ jsx126(Typography2, { color: "inherit", display: "block", fontWeight: "bold", variant: "caption", children: "Permissions" }),
15045
+ iamDenials.map((denial, index) => denial !== void 0 && /* @__PURE__ */ jsx126(Typography2, { color: "inherit", display: "block", variant: "caption", children: `${formatPermissionStatus(denial.permission)}: ${denial.service}.${denial.operation}` }, index))
15046
+ ] })
15047
+ ] });
15048
+ };
15049
+ var StatusIconWithTooltip = ({ span }) => {
15050
+ const errorLevel = calculateHighestErrorLevel(span);
15051
+ if (errorLevel !== ErrorLevel.ERROR && errorLevel !== ErrorLevel.IAM_PERMISSION) return /* @__PURE__ */ jsx126(Fragment4, {});
15052
+ return /* @__PURE__ */ jsx126(Tooltip2, { title: buildTooltipContent(span), children: /* @__PURE__ */ jsx126(Box3, { sx: { alignItems: "center", cursor: "default", display: "flex" }, children: /* @__PURE__ */ jsx126(StatusIcon, { errorLevel, spanStatusCode: span.status_code }) }) });
15053
+ };
15054
+
14884
15055
  // src/components/spans-list/span-count-badge.tsx
14885
15056
  import { InfoOutlined, WarningAmberOutlined } from "@mui/icons-material";
14886
- import { Box as Box3, Button, Divider as Divider2, IconButton, Popover, Skeleton, Tooltip as Tooltip2, Typography as Typography2 } from "@mui/material";
15057
+ import { Box as Box4, Button, Divider as Divider3, IconButton, Popover, Skeleton, Tooltip as Tooltip3, Typography as Typography3 } from "@mui/material";
14887
15058
  import { useState as useState4 } from "react";
14888
- import { Fragment as Fragment4, jsx as jsx126, jsxs as jsxs120 } from "react/jsx-runtime";
15059
+ import { Fragment as Fragment5, jsx as jsx127, jsxs as jsxs121 } from "react/jsx-runtime";
14889
15060
  var resolveBindingLimit = (systemLimit, licenseLimit) => {
14890
15061
  const numericLimits = [systemLimit, licenseLimit].filter((l2) => typeof l2 === "number");
14891
15062
  if (numericLimits.length > 0) return Math.min(...numericLimits);
@@ -14898,28 +15069,28 @@ var fmtLimit = (value) => {
14898
15069
  if (value === "unlimited") return "Unlimited";
14899
15070
  return fmt(value);
14900
15071
  };
14901
- var StatRow = ({ label, value }) => /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
14902
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
14903
- /* @__PURE__ */ jsx126(Typography2, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
15072
+ var StatRow = ({ label, value }) => /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
15073
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
15074
+ /* @__PURE__ */ jsx127(Typography3, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
14904
15075
  ] });
14905
15076
  var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) => {
14906
15077
  const [anchorElement, setAnchorElement] = useState4();
14907
15078
  const bindingLimit = resolveBindingLimit(systemLimit, licenseLimit);
14908
15079
  if (totalCount === void 0 && bindingLimit === void 0) {
14909
- return /* @__PURE__ */ jsx126(Fragment4, {});
15080
+ return /* @__PURE__ */ jsx127(Fragment5, {});
14910
15081
  }
14911
15082
  if (visibleCount !== void 0) totalCount = Math.max(totalCount ?? 0, visibleCount);
14912
15083
  const isLoading = totalCount === void 0;
14913
15084
  const isOpen = anchorElement !== void 0;
14914
15085
  const systemLimitReached = typeof systemLimit === "number" && totalCount !== void 0 && totalCount >= systemLimit;
14915
15086
  const licenseLimitReached = typeof licenseLimit === "number" && totalCount !== void 0 && totalCount >= licenseLimit;
14916
- return /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
14917
- isLoading ? /* @__PURE__ */ jsx126(Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
14918
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", variant: "caption", children: "Showing" }),
14919
- /* @__PURE__ */ jsx126(Typography2, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
14920
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
15087
+ return /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
15088
+ isLoading ? /* @__PURE__ */ jsx127(Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
15089
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", variant: "caption", children: "Showing" }),
15090
+ /* @__PURE__ */ jsx127(Typography3, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
15091
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
14921
15092
  ] }),
14922
- /* @__PURE__ */ jsx126(Tooltip2, { title: "Operation count details", children: /* @__PURE__ */ jsx126(
15093
+ /* @__PURE__ */ jsx127(Tooltip3, { title: "Operation count details", children: /* @__PURE__ */ jsx127(
14923
15094
  IconButton,
14924
15095
  {
14925
15096
  "aria-describedby": isOpen ? "operation-count-popover" : void 0,
@@ -14928,10 +15099,10 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14928
15099
  },
14929
15100
  size: "small",
14930
15101
  sx: { color: systemLimitReached || licenseLimitReached ? "warning.main" : "text.disabled" },
14931
- children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ jsx126(WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ jsx126(InfoOutlined, { sx: { fontSize: 14 } })
15102
+ children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ jsx127(WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ jsx127(InfoOutlined, { sx: { fontSize: 14 } })
14932
15103
  }
14933
15104
  ) }),
14934
- /* @__PURE__ */ jsx126(
15105
+ /* @__PURE__ */ jsx127(
14935
15106
  Popover,
14936
15107
  {
14937
15108
  anchorEl: anchorElement,
@@ -14942,54 +15113,54 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14942
15113
  },
14943
15114
  open: isOpen,
14944
15115
  transformOrigin: { horizontal: "right", vertical: "top" },
14945
- children: /* @__PURE__ */ jsxs120(Box3, { sx: { minWidth: 240, p: 2 }, children: [
14946
- /* @__PURE__ */ jsx126(Typography2, { fontWeight: 700, variant: "body2", children: "Storage" }),
14947
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
14948
- /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
14949
- /* @__PURE__ */ jsx126(
15116
+ children: /* @__PURE__ */ jsxs121(Box4, { sx: { minWidth: 240, p: 2 }, children: [
15117
+ /* @__PURE__ */ jsx127(Typography3, { fontWeight: 700, variant: "body2", children: "Storage" }),
15118
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
15119
+ /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
15120
+ /* @__PURE__ */ jsx127(
14950
15121
  StatRow,
14951
15122
  {
14952
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
15123
+ label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
14953
15124
  value: visibleCount
14954
15125
  }
14955
15126
  ),
14956
- /* @__PURE__ */ jsx126(
15127
+ /* @__PURE__ */ jsx127(
14957
15128
  StatRow,
14958
15129
  {
14959
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
15130
+ label: /* @__PURE__ */ jsx127(Tooltip3, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ jsx127(Box4, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
14960
15131
  value: totalCount
14961
15132
  }
14962
15133
  )
14963
15134
  ] }),
14964
- (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ jsxs120(Fragment4, { children: [
14965
- /* @__PURE__ */ jsx126(Divider2, { sx: { my: 1.5 } }),
14966
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
14967
- /* @__PURE__ */ jsx126(Typography2, { color: "text.secondary", sx: { display: "block", mb: 1.5, mt: 0.25 }, variant: "caption", children: "Limits restrict the total number of operations that can be stored." }),
14968
- /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
14969
- licenseLimit !== void 0 && /* @__PURE__ */ jsx126(
15135
+ (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15136
+ /* @__PURE__ */ jsx127(Divider3, { sx: { my: 1.5 } }),
15137
+ /* @__PURE__ */ jsx127(Typography3, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
15138
+ /* @__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." }),
15139
+ /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
15140
+ licenseLimit !== void 0 && /* @__PURE__ */ jsx127(
14970
15141
  StatRow,
14971
15142
  {
14972
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
15143
+ 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" }) }),
14973
15144
  value: licenseLimit
14974
15145
  }
14975
15146
  ),
14976
- systemLimit !== void 0 && /* @__PURE__ */ jsx126(
15147
+ systemLimit !== void 0 && /* @__PURE__ */ jsx127(
14977
15148
  StatRow,
14978
15149
  {
14979
- label: /* @__PURE__ */ jsx126(Tooltip2, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ jsx126(Box3, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
15150
+ 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" }) }),
14980
15151
  value: systemLimit
14981
15152
  }
14982
15153
  )
14983
15154
  ] })
14984
15155
  ] }),
14985
- (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ jsxs120(Box3, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
14986
- licenseLimitReached && /* @__PURE__ */ jsxs120(Box3, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
14987
- /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
14988
- /* @__PURE__ */ jsx126(WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
14989
- /* @__PURE__ */ jsx126(Typography2, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
15156
+ (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ jsxs121(Box4, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
15157
+ licenseLimitReached && /* @__PURE__ */ jsxs121(Box4, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
15158
+ /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
15159
+ /* @__PURE__ */ jsx127(WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
15160
+ /* @__PURE__ */ jsx127(Typography3, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
14990
15161
  ] }),
14991
- /* @__PURE__ */ jsx126(Typography2, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
14992
- /* @__PURE__ */ jsx126(
15162
+ /* @__PURE__ */ jsx127(Typography3, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
15163
+ /* @__PURE__ */ jsx127(
14993
15164
  Button,
14994
15165
  {
14995
15166
  color: "inherit",
@@ -15002,9 +15173,9 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
15002
15173
  }
15003
15174
  )
15004
15175
  ] }),
15005
- systemLimitReached && !licenseLimitReached && /* @__PURE__ */ jsxs120(Box3, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
15006
- /* @__PURE__ */ jsx126(WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
15007
- /* @__PURE__ */ jsx126(Typography2, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
15176
+ systemLimitReached && !licenseLimitReached && /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
15177
+ /* @__PURE__ */ jsx127(WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
15178
+ /* @__PURE__ */ jsx127(Typography3, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
15008
15179
  ] })
15009
15180
  ] })
15010
15181
  ] })
@@ -15014,7 +15185,7 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
15014
15185
  };
15015
15186
 
15016
15187
  // src/components/spans-list/spans-data-grid.tsx
15017
- import { Fragment as Fragment5, jsx as jsx127, jsxs as jsxs121 } from "react/jsx-runtime";
15188
+ import { Fragment as Fragment6, jsx as jsx128, jsxs as jsxs122 } from "react/jsx-runtime";
15018
15189
  var columnHelper = createColumnHelper();
15019
15190
  var newSpanBackgroundColor = {
15020
15191
  dark: { from: "rgba(136, 123, 2, 1)", to: "rgba(136, 123, 2, 0)" },
@@ -15026,15 +15197,15 @@ var LABEL_NO_SPANS = "There are no operations";
15026
15197
  var LABEL_LOAD_OLDER = "Load older operations";
15027
15198
  var LABEL_LOAD_NEWER = "Load newer operations";
15028
15199
  var STICK_TO_EDGE_THRESHOLD_PX = 4;
15029
- var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ jsx127(TableRow, { children: /* @__PURE__ */ jsx127(TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx127("span", { children: label }) }) });
15030
- var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ jsx127(TableRow, { children: /* @__PURE__ */ jsxs121(TableCell, { colSpan, sx: { textAlign: "center" }, children: [
15031
- !fetching && /* @__PURE__ */ jsx127(Button2, { onClick: onFetch, sx: { my: 1 }, children: label }),
15032
- fetching && /* @__PURE__ */ jsx127(CircularProgress, { size: 24, sx: { m: 2 } })
15200
+ var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ jsx128(TableRow, { children: /* @__PURE__ */ jsx128(TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx128("span", { children: label }) }) });
15201
+ var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ jsx128(TableRow, { children: /* @__PURE__ */ jsxs122(TableCell, { colSpan, sx: { textAlign: "center" }, children: [
15202
+ !fetching && /* @__PURE__ */ jsx128(Button2, { onClick: onFetch, sx: { my: 1 }, children: label }),
15203
+ fetching && /* @__PURE__ */ jsx128(CircularProgress, { size: 24, sx: { m: 2 } })
15033
15204
  ] }) });
15034
15205
  var SpansDataGridRow = memo8(
15035
- ({ row }) => {
15206
+ ({ onSpanClick, row }) => {
15036
15207
  const theme = useTheme2();
15037
- return /* @__PURE__ */ jsx127(
15208
+ return /* @__PURE__ */ jsx128(
15038
15209
  TableRow,
15039
15210
  {
15040
15211
  animate: {
@@ -15045,11 +15216,15 @@ var SpansDataGridRow = memo8(
15045
15216
  initial: {
15046
15217
  backgroundColor: theme.palette.mode === "light" ? newSpanBackgroundColor.light.from : newSpanBackgroundColor.dark.from
15047
15218
  },
15219
+ onClick: () => {
15220
+ onSpanClick(row.original);
15221
+ },
15048
15222
  sx: {
15223
+ cursor: "pointer",
15049
15224
  transition: "background-color 1200ms ease-in"
15050
15225
  },
15051
15226
  children: row.getVisibleCells().map((cell) => {
15052
- return /* @__PURE__ */ jsx127(
15227
+ return /* @__PURE__ */ jsx128(
15053
15228
  TableCell,
15054
15229
  {
15055
15230
  sx: {
@@ -15057,8 +15232,8 @@ var SpansDataGridRow = memo8(
15057
15232
  maxWidth: `${cell.column.getSize().toString()}px`,
15058
15233
  minWidth: `${cell.column.getSize().toString()}px`
15059
15234
  },
15060
- children: /* @__PURE__ */ jsx127(
15061
- Box4,
15235
+ children: /* @__PURE__ */ jsx128(
15236
+ Box5,
15062
15237
  {
15063
15238
  sx: {
15064
15239
  "alignItems": "center",
@@ -15070,7 +15245,7 @@ var SpansDataGridRow = memo8(
15070
15245
  },
15071
15246
  "width": "100%"
15072
15247
  },
15073
- children: /* @__PURE__ */ jsx127(Box4, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
15248
+ children: /* @__PURE__ */ jsx128(Box5, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
15074
15249
  }
15075
15250
  )
15076
15251
  },
@@ -15107,8 +15282,8 @@ var SpansDataGrid = ({
15107
15282
  }) => {
15108
15283
  const columns = useMemo5(() => [
15109
15284
  columnHelper.accessor("startTime", {
15110
- cell: (props) => /* @__PURE__ */ jsx127(ResponsiveTimestampCell, { date: props.getValue() }),
15111
- header: () => /* @__PURE__ */ jsx127(
15285
+ cell: (props) => /* @__PURE__ */ jsx128(ResponsiveTimestampCell, { date: props.getValue() }),
15286
+ header: () => /* @__PURE__ */ jsx128(
15112
15287
  TableSortLabel,
15113
15288
  {
15114
15289
  active: true,
@@ -15125,23 +15300,23 @@ var SpansDataGrid = ({
15125
15300
  columnHelper.display({
15126
15301
  cell: (props) => {
15127
15302
  if (!props.row.original.parent_service_name || !props.row.original.parent_resource_name) {
15128
- return /* @__PURE__ */ jsx127(Typography3, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
15303
+ return /* @__PURE__ */ jsx128(Typography4, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
15129
15304
  }
15130
- return /* @__PURE__ */ jsx127(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
15305
+ return /* @__PURE__ */ jsx128(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
15131
15306
  },
15132
15307
  header: "Producer",
15133
15308
  id: "producer",
15134
15309
  size: 180
15135
15310
  }),
15136
15311
  columnHelper.accessor("operation_name", {
15137
- cell: (props) => /* @__PURE__ */ jsx127(
15138
- Box4,
15312
+ cell: (props) => /* @__PURE__ */ jsx128(
15313
+ Box5,
15139
15314
  {
15140
15315
  sx: {
15141
15316
  overflow: "hidden",
15142
15317
  textOverflow: "ellipsis"
15143
15318
  },
15144
- children: /* @__PURE__ */ jsx127("span", { title: props.getValue(), children: props.getValue() })
15319
+ children: /* @__PURE__ */ jsx128("span", { title: props.getValue(), children: props.getValue() })
15145
15320
  }
15146
15321
  ),
15147
15322
  header: "Action",
@@ -15150,7 +15325,7 @@ var SpansDataGrid = ({
15150
15325
  }),
15151
15326
  columnHelper.display({
15152
15327
  cell: (props) => {
15153
- return /* @__PURE__ */ jsx127(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
15328
+ return /* @__PURE__ */ jsx128(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
15154
15329
  },
15155
15330
  header: "Consumer",
15156
15331
  id: "consumer",
@@ -15158,23 +15333,26 @@ var SpansDataGrid = ({
15158
15333
  }),
15159
15334
  columnHelper.display({
15160
15335
  cell: (props) => {
15161
- return /* @__PURE__ */ jsx127(Box4, { sx: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ jsx127(
15162
- Button2,
15163
- {
15164
- "data-testid": VIEW_SPAN_DETAILS_TEST_ID,
15165
- onClick: () => {
15166
- onSpanClick(props.row.original);
15167
- },
15168
- size: "small",
15169
- sx: { px: 1 },
15170
- variant: "text",
15171
- children: "View Details"
15172
- }
15173
- ) });
15336
+ return /* @__PURE__ */ jsxs122(Box5, { sx: { alignItems: "center", display: "flex", gap: 0.5, justifyContent: "flex-end" }, children: [
15337
+ /* @__PURE__ */ jsx128(StatusIconWithTooltip, { span: props.row.original }),
15338
+ /* @__PURE__ */ jsx128(
15339
+ Button2,
15340
+ {
15341
+ "data-testid": VIEW_SPAN_DETAILS_TEST_ID,
15342
+ onClick: (event) => {
15343
+ event.stopPropagation();
15344
+ onSpanClick(props.row.original);
15345
+ },
15346
+ size: "small",
15347
+ sx: { px: 1 },
15348
+ variant: "text",
15349
+ children: "View Details"
15350
+ }
15351
+ )
15352
+ ] });
15174
15353
  },
15175
15354
  id: "actions",
15176
- // The actions column doesn't need more space
15177
- size: 96
15355
+ size: 128
15178
15356
  })
15179
15357
  ], [onSpanClick, onOrderChange, order2]);
15180
15358
  const table = useReactTable({
@@ -15207,46 +15385,46 @@ var SpansDataGrid = ({
15207
15385
  if (!element || !isAtLiveEdgeRef.current) return;
15208
15386
  element.scrollTop = element.scrollHeight;
15209
15387
  }, [order2, spans?.length, lastSpanId]);
15210
- return /* @__PURE__ */ jsxs121(Fragment5, { children: [
15211
- /* @__PURE__ */ jsx127(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs121(Box4, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
15212
- /* @__PURE__ */ jsx127(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
15213
- errorCount !== void 0 && errorCount > 0 && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15214
- /* @__PURE__ */ jsx127(Typography3, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15215
- /* @__PURE__ */ jsx127(Tooltip3, { title: "Number of errors detected across all operations", children: /* @__PURE__ */ jsxs121(
15216
- Box4,
15388
+ return /* @__PURE__ */ jsxs122(Fragment6, { children: [
15389
+ /* @__PURE__ */ jsx128(Grid, { item: true, xs: 12, children: /* @__PURE__ */ jsxs122(Box5, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
15390
+ /* @__PURE__ */ jsx128(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
15391
+ errorCount !== void 0 && errorCount > 0 && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15392
+ /* @__PURE__ */ jsx128(Typography4, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15393
+ /* @__PURE__ */ jsx128(Tooltip4, { title: "Number of errors detected across all operations", children: /* @__PURE__ */ jsxs122(
15394
+ Box5,
15217
15395
  {
15218
15396
  "data-testid": ERROR_COUNT_TEST_ID,
15219
15397
  sx: { alignItems: "center", borderBottom: "1px dotted", borderColor: "error.main", cursor: "default", display: "flex", gap: 0.5, mb: "-1px" },
15220
15398
  children: [
15221
- /* @__PURE__ */ jsx127(Typography3, { color: "error", variant: "body2", children: errorCount.toLocaleString() }),
15222
- /* @__PURE__ */ jsx127(Typography3, { color: "error", variant: "caption", children: errorCount === 1 ? "error" : "errors" })
15399
+ /* @__PURE__ */ jsx128(Typography4, { color: "error", variant: "body2", children: errorCount.toLocaleString() }),
15400
+ /* @__PURE__ */ jsx128(Typography4, { color: "error", variant: "caption", children: errorCount === 1 ? "error" : "errors" })
15223
15401
  ]
15224
15402
  }
15225
15403
  ) })
15226
15404
  ] }),
15227
- warningCount !== void 0 && warningCount > 0 && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15228
- /* @__PURE__ */ jsx127(Typography3, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15229
- /* @__PURE__ */ jsx127(Tooltip3, { title: "Number of warnings detected across all operations", children: /* @__PURE__ */ jsxs121(
15230
- Box4,
15405
+ warningCount !== void 0 && warningCount > 0 && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15406
+ /* @__PURE__ */ jsx128(Typography4, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15407
+ /* @__PURE__ */ jsx128(Tooltip4, { title: "Number of warnings detected across all operations", children: /* @__PURE__ */ jsxs122(
15408
+ Box5,
15231
15409
  {
15232
15410
  "data-testid": WARNING_COUNT_TEST_ID,
15233
15411
  sx: { alignItems: "center", borderBottom: "1px dotted", borderColor: "warning.main", cursor: "default", display: "flex", gap: 0.5, mb: "-1px" },
15234
15412
  children: [
15235
- /* @__PURE__ */ jsx127(Typography3, { color: "warning.main", variant: "body2", children: warningCount.toLocaleString() }),
15236
- /* @__PURE__ */ jsx127(Typography3, { color: "warning.main", variant: "caption", children: warningCount === 1 ? "warning" : "warnings" })
15413
+ /* @__PURE__ */ jsx128(Typography4, { color: "warning.main", variant: "body2", children: warningCount.toLocaleString() }),
15414
+ /* @__PURE__ */ jsx128(Typography4, { color: "warning.main", variant: "caption", children: warningCount === 1 ? "warning" : "warnings" })
15237
15415
  ]
15238
15416
  }
15239
15417
  ) })
15240
15418
  ] }),
15241
- /* @__PURE__ */ jsx127(Box4, { sx: { flexGrow: 1 } }),
15242
- /* @__PURE__ */ jsx127(
15419
+ /* @__PURE__ */ jsx128(Box5, { sx: { flexGrow: 1 } }),
15420
+ /* @__PURE__ */ jsx128(
15243
15421
  FormControlLabel,
15244
15422
  {
15245
- control: /* @__PURE__ */ jsx127(
15423
+ control: /* @__PURE__ */ jsx128(
15246
15424
  Button2,
15247
15425
  {
15248
15426
  onClick: onToggleStream,
15249
- startIcon: streamPaused ? /* @__PURE__ */ jsx127(PlayArrowOutlined, {}) : /* @__PURE__ */ jsx127(PauseOutlined, {}),
15427
+ startIcon: streamPaused ? /* @__PURE__ */ jsx128(PlayArrowOutlined, {}) : /* @__PURE__ */ jsx128(PauseOutlined, {}),
15250
15428
  variant: "text",
15251
15429
  children: streamPaused ? "Resume Stream" : "Pause Stream"
15252
15430
  }
@@ -15254,15 +15432,15 @@ var SpansDataGrid = ({
15254
15432
  label: ""
15255
15433
  }
15256
15434
  ),
15257
- /* @__PURE__ */ jsx127(
15435
+ /* @__PURE__ */ jsx128(
15258
15436
  FormControlLabel,
15259
15437
  {
15260
- control: /* @__PURE__ */ jsx127(
15438
+ control: /* @__PURE__ */ jsx128(
15261
15439
  Button2,
15262
15440
  {
15263
15441
  "data-testid": CLEAR_SPANS_TEST_ID,
15264
15442
  onClick: onClearSpans,
15265
- startIcon: /* @__PURE__ */ jsx127(DeleteForeverOutlined, {}),
15443
+ startIcon: /* @__PURE__ */ jsx128(DeleteForeverOutlined, {}),
15266
15444
  children: "Clear Operations"
15267
15445
  }
15268
15446
  ),
@@ -15271,7 +15449,7 @@ var SpansDataGrid = ({
15271
15449
  }
15272
15450
  )
15273
15451
  ] }) }),
15274
- /* @__PURE__ */ jsx127(Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ jsx127(
15452
+ /* @__PURE__ */ jsx128(Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ jsx128(
15275
15453
  TableContainer,
15276
15454
  {
15277
15455
  onScroll: handleScroll,
@@ -15284,7 +15462,7 @@ var SpansDataGrid = ({
15284
15462
  right: 0,
15285
15463
  top: 0
15286
15464
  },
15287
- children: /* @__PURE__ */ jsxs121(
15465
+ children: /* @__PURE__ */ jsxs122(
15288
15466
  Table,
15289
15467
  {
15290
15468
  stickyHeader: true,
@@ -15296,8 +15474,8 @@ var SpansDataGrid = ({
15296
15474
  "th+th": { pl: "8px !important" }
15297
15475
  },
15298
15476
  children: [
15299
- /* @__PURE__ */ jsx127(TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
15300
- return /* @__PURE__ */ jsx127(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx127(
15477
+ /* @__PURE__ */ jsx128(TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
15478
+ return /* @__PURE__ */ jsx128(TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ jsx128(
15301
15479
  TableCell,
15302
15480
  {
15303
15481
  colSpan: header.colSpan,
@@ -15312,31 +15490,31 @@ var SpansDataGrid = ({
15312
15490
  header.id
15313
15491
  )) }, headerGroup.id);
15314
15492
  }) }),
15315
- /* @__PURE__ */ jsxs121(TableBody, { children: [
15316
- (spans === void 0 || clearingSpans) && /* @__PURE__ */ jsx127(TableRow, { children: /* @__PURE__ */ jsx127(TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx127(CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
15317
- !clearingSpans && spans?.length === 0 && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
15318
- !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15319
- hasRows && hasMoreForward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15320
- hasRows && !hasMoreForward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
15321
- hasRows && /* @__PURE__ */ jsx127(AnimatePresence, { initial: false, children: (() => {
15493
+ /* @__PURE__ */ jsxs122(TableBody, { children: [
15494
+ (spans === void 0 || clearingSpans) && /* @__PURE__ */ jsx128(TableRow, { children: /* @__PURE__ */ jsx128(TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ jsx128(CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
15495
+ !clearingSpans && spans?.length === 0 && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
15496
+ !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15497
+ hasRows && hasMoreForward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15498
+ hasRows && !hasMoreForward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
15499
+ hasRows && /* @__PURE__ */ jsx128(AnimatePresence, { initial: false, children: (() => {
15322
15500
  const reversed = [];
15323
15501
  for (let index = rows.length - 1; index >= 0; index--) {
15324
15502
  const row = rows.at(index);
15325
15503
  reversed.push(
15326
- /* @__PURE__ */ jsx127(SpansDataGridRow, { row }, row.original.span_id)
15504
+ /* @__PURE__ */ jsx128(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)
15327
15505
  );
15328
15506
  }
15329
15507
  return reversed;
15330
15508
  })() }),
15331
- hasRows && hasMoreBackward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15332
- hasRows && !hasMoreBackward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
15509
+ hasRows && hasMoreBackward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15510
+ hasRows && !hasMoreBackward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
15333
15511
  ] }),
15334
- !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ jsxs121(Fragment5, { children: [
15335
- hasRows && !hasMoreBackward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
15336
- hasRows && hasMoreBackward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15337
- hasRows && /* @__PURE__ */ jsx127(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ jsx127(SpansDataGridRow, { row }, row.original.span_id)) }),
15338
- hasRows && hasMoreForward && /* @__PURE__ */ jsx127(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15339
- hasRows && !hasMoreForward && /* @__PURE__ */ jsx127(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
15512
+ !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ jsxs122(Fragment6, { children: [
15513
+ hasRows && !hasMoreBackward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
15514
+ hasRows && hasMoreBackward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15515
+ hasRows && /* @__PURE__ */ jsx128(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ jsx128(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)) }),
15516
+ hasRows && hasMoreForward && /* @__PURE__ */ jsx128(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15517
+ hasRows && !hasMoreForward && /* @__PURE__ */ jsx128(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
15340
15518
  ] })
15341
15519
  ] })
15342
15520
  ]
@@ -15348,13 +15526,13 @@ var SpansDataGrid = ({
15348
15526
  };
15349
15527
 
15350
15528
  // src/components/spans-list/spans-list.tsx
15351
- import { jsx as jsx128, jsxs as jsxs122 } from "react/jsx-runtime";
15529
+ import { jsx as jsx129, jsxs as jsxs123 } from "react/jsx-runtime";
15352
15530
  var SpansList = (props) => {
15353
- return /* @__PURE__ */ jsxs122(Box5, { "data-testid": SPANS_DATA_GRID_TEST_ID, sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
15354
- props.fetchError && /* @__PURE__ */ jsxs122(
15531
+ return /* @__PURE__ */ jsxs123(Box6, { "data-testid": SPANS_DATA_GRID_TEST_ID, sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
15532
+ props.fetchError && /* @__PURE__ */ jsxs123(
15355
15533
  Alert2,
15356
15534
  {
15357
- action: /* @__PURE__ */ jsx128(Button3, { onClick: props.onFetchForward, children: "Retry" }),
15535
+ action: /* @__PURE__ */ jsx129(Button3, { onClick: props.onFetchForward, children: "Retry" }),
15358
15536
  severity: "error",
15359
15537
  children: [
15360
15538
  "Unexpected error:",
@@ -15363,7 +15541,7 @@ var SpansList = (props) => {
15363
15541
  ]
15364
15542
  }
15365
15543
  ),
15366
- /* @__PURE__ */ jsx128(
15544
+ /* @__PURE__ */ jsx129(
15367
15545
  SpansDataGrid,
15368
15546
  {
15369
15547
  clearingSpans: props.clearingSpans,
@@ -15392,9 +15570,9 @@ var SpansList = (props) => {
15392
15570
 
15393
15571
  // src/components/status-message/status-message.tsx
15394
15572
  import { ErrorOutline, InfoOutlined as InfoOutlined2 } from "@mui/icons-material";
15395
- import { Alert as Alert3, AlertTitle, Box as Box6, Button as Button4, CircularProgress as CircularProgress2, Link, Typography as Typography4 } from "@mui/material";
15573
+ import { Alert as Alert3, AlertTitle, Box as Box7, Button as Button4, CircularProgress as CircularProgress2, Link, Typography as Typography5 } from "@mui/material";
15396
15574
  import { useState as useState5 } from "react";
15397
- import { Fragment as Fragment6, jsx as jsx129, jsxs as jsxs123 } from "react/jsx-runtime";
15575
+ import { Fragment as Fragment7, jsx as jsx130, jsxs as jsxs124 } from "react/jsx-runtime";
15398
15576
  var StatusMessage = ({
15399
15577
  error,
15400
15578
  localstackVersion,
@@ -15418,8 +15596,8 @@ var StatusMessage = ({
15418
15596
  };
15419
15597
  if (error instanceof AppInspectorNotFoundError) {
15420
15598
  const isBelowMinimum = localstackVersion !== void 0 && checkEmulatorVersion(localstackVersion) === "below-minimum";
15421
- return /* @__PURE__ */ jsx129(
15422
- Box6,
15599
+ return /* @__PURE__ */ jsx130(
15600
+ Box7,
15423
15601
  {
15424
15602
  sx: {
15425
15603
  alignItems: "center",
@@ -15429,18 +15607,18 @@ var StatusMessage = ({
15429
15607
  justifyContent: "center",
15430
15608
  p: 4
15431
15609
  },
15432
- children: /* @__PURE__ */ jsxs123(
15610
+ children: /* @__PURE__ */ jsxs124(
15433
15611
  Alert3,
15434
15612
  {
15435
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15613
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15436
15614
  severity: "error",
15437
15615
  sx: { maxWidth: 600, width: "100%" },
15438
15616
  children: [
15439
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
15440
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 2 }, variant: "body2", children: isBelowMinimum ? `App Inspector requires LocalStack ${MINIMUM_EMULATOR_VERSION} or later. You are running version ${localstackVersion}. Please update LocalStack.` : "App Inspector is not available in LocalStack. Ensure LocalStack is up-to-date." }),
15441
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx129("strong", { children: "Update LocalStack:" }) }),
15442
- /* @__PURE__ */ jsx129(
15443
- Box6,
15617
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
15618
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: isBelowMinimum ? `App Inspector requires LocalStack ${MINIMUM_EMULATOR_VERSION} or later. You are running version ${localstackVersion}. Please update LocalStack.` : "App Inspector is not available in LocalStack. Ensure LocalStack is up-to-date." }),
15619
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx130("strong", { children: "Update LocalStack:" }) }),
15620
+ /* @__PURE__ */ jsx130(
15621
+ Box7,
15444
15622
  {
15445
15623
  component: "pre",
15446
15624
  sx: {
@@ -15452,7 +15630,7 @@ var StatusMessage = ({
15452
15630
  children: "localstack update docker-images"
15453
15631
  }
15454
15632
  ),
15455
- /* @__PURE__ */ jsx129(Box6, { sx: { display: "flex", gap: 1, mt: 2 }, children: onRetry && /* @__PURE__ */ jsx129(
15633
+ /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", gap: 1, mt: 2 }, children: onRetry && /* @__PURE__ */ jsx130(
15456
15634
  Button4,
15457
15635
  {
15458
15636
  "aria-label": "Check App Inspector status again",
@@ -15469,8 +15647,8 @@ var StatusMessage = ({
15469
15647
  );
15470
15648
  }
15471
15649
  if (error instanceof ConnectionError) {
15472
- return /* @__PURE__ */ jsx129(
15473
- Box6,
15650
+ return /* @__PURE__ */ jsx130(
15651
+ Box7,
15474
15652
  {
15475
15653
  sx: {
15476
15654
  alignItems: "center",
@@ -15480,17 +15658,17 @@ var StatusMessage = ({
15480
15658
  justifyContent: "center",
15481
15659
  p: 4
15482
15660
  },
15483
- children: /* @__PURE__ */ jsxs123(
15661
+ children: /* @__PURE__ */ jsxs124(
15484
15662
  Alert3,
15485
15663
  {
15486
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15664
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15487
15665
  severity: "error",
15488
15666
  sx: { maxWidth: 600, width: "100%" },
15489
15667
  children: [
15490
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
15491
- /* @__PURE__ */ jsxs123(Typography4, { sx: { mb: 2 }, variant: "body2", children: [
15668
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
15669
+ /* @__PURE__ */ jsxs124(Typography5, { sx: { mb: 2 }, variant: "body2", children: [
15492
15670
  "Failed to connect to LocalStack. Ensure ",
15493
- /* @__PURE__ */ jsx129(
15671
+ /* @__PURE__ */ jsx130(
15494
15672
  Link,
15495
15673
  {
15496
15674
  href: "https://docs.localstack.cloud/aws/getting-started/installation/",
@@ -15501,9 +15679,9 @@ var StatusMessage = ({
15501
15679
  ),
15502
15680
  " is running and accessible."
15503
15681
  ] }),
15504
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx129("strong", { children: "Start LocalStack:" }) }),
15505
- /* @__PURE__ */ jsx129(
15506
- Box6,
15682
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ jsx130("strong", { children: "Start LocalStack:" }) }),
15683
+ /* @__PURE__ */ jsx130(
15684
+ Box7,
15507
15685
  {
15508
15686
  component: "pre",
15509
15687
  sx: {
@@ -15515,7 +15693,7 @@ var StatusMessage = ({
15515
15693
  children: "localstack start"
15516
15694
  }
15517
15695
  ),
15518
- onRetry && /* @__PURE__ */ jsx129(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx129(
15696
+ onRetry && /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx130(
15519
15697
  Button4,
15520
15698
  {
15521
15699
  "aria-label": "Retry connection to LocalStack",
@@ -15531,8 +15709,8 @@ var StatusMessage = ({
15531
15709
  );
15532
15710
  }
15533
15711
  if (error instanceof AppInspectorDisabledError || status?.status === "DISABLED") {
15534
- return /* @__PURE__ */ jsx129(
15535
- Box6,
15712
+ return /* @__PURE__ */ jsx130(
15713
+ Box7,
15536
15714
  {
15537
15715
  sx: {
15538
15716
  alignItems: "center",
@@ -15542,17 +15720,17 @@ var StatusMessage = ({
15542
15720
  justifyContent: "center",
15543
15721
  p: 4
15544
15722
  },
15545
- children: /* @__PURE__ */ jsxs123(
15723
+ children: /* @__PURE__ */ jsxs124(
15546
15724
  Alert3,
15547
15725
  {
15548
- icon: /* @__PURE__ */ jsx129(InfoOutlined2, { fontSize: "large" }),
15726
+ icon: /* @__PURE__ */ jsx130(InfoOutlined2, { fontSize: "large" }),
15549
15727
  severity: "warning",
15550
15728
  sx: { maxWidth: 600, width: "100%" },
15551
15729
  children: [
15552
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Is Not Enabled" }),
15553
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is not currently enabled in LocalStack. You can enable it now, or at startup." }),
15554
- /* @__PURE__ */ jsxs123(Box6, { sx: { display: "flex", gap: 1, mb: 2 }, children: [
15555
- onEnable && /* @__PURE__ */ jsx129(
15730
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Is Not Enabled" }),
15731
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is not currently enabled in LocalStack. You can enable it now, or at startup." }),
15732
+ /* @__PURE__ */ jsxs124(Box7, { sx: { display: "flex", gap: 1, mb: 2 }, children: [
15733
+ onEnable && /* @__PURE__ */ jsx130(
15556
15734
  Button4,
15557
15735
  {
15558
15736
  "aria-label": "Enable App Inspector Now",
@@ -15560,12 +15738,12 @@ var StatusMessage = ({
15560
15738
  onClick: () => {
15561
15739
  void handleEnable();
15562
15740
  },
15563
- startIcon: enabling ? /* @__PURE__ */ jsx129(CircularProgress2, { size: 16 }) : void 0,
15741
+ startIcon: enabling ? /* @__PURE__ */ jsx130(CircularProgress2, { size: 16 }) : void 0,
15564
15742
  variant: "contained",
15565
15743
  children: "Enable App Inspector Now"
15566
15744
  }
15567
15745
  ),
15568
- onRetry && /* @__PURE__ */ jsx129(
15746
+ onRetry && /* @__PURE__ */ jsx130(
15569
15747
  Button4,
15570
15748
  {
15571
15749
  "aria-label": "Check if App Inspector is enabled",
@@ -15576,9 +15754,9 @@ var StatusMessage = ({
15576
15754
  }
15577
15755
  )
15578
15756
  ] }),
15579
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15580
- /* @__PURE__ */ jsx129(
15581
- Box6,
15757
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15758
+ /* @__PURE__ */ jsx130(
15759
+ Box7,
15582
15760
  {
15583
15761
  component: "pre",
15584
15762
  sx: {
@@ -15590,7 +15768,7 @@ var StatusMessage = ({
15590
15768
  children: "LOCALSTACK_APP_INSPECTOR=1 localstack start"
15591
15769
  }
15592
15770
  ),
15593
- Boolean(enableError) && /* @__PURE__ */ jsx129(Typography4, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15771
+ Boolean(enableError) && /* @__PURE__ */ jsx130(Typography5, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15594
15772
  ]
15595
15773
  }
15596
15774
  )
@@ -15598,8 +15776,8 @@ var StatusMessage = ({
15598
15776
  );
15599
15777
  }
15600
15778
  if (error) {
15601
- return /* @__PURE__ */ jsx129(
15602
- Box6,
15779
+ return /* @__PURE__ */ jsx130(
15780
+ Box7,
15603
15781
  {
15604
15782
  sx: {
15605
15783
  alignItems: "center",
@@ -15609,16 +15787,16 @@ var StatusMessage = ({
15609
15787
  justifyContent: "center",
15610
15788
  p: 4
15611
15789
  },
15612
- children: /* @__PURE__ */ jsxs123(
15790
+ children: /* @__PURE__ */ jsxs124(
15613
15791
  Alert3,
15614
15792
  {
15615
- icon: /* @__PURE__ */ jsx129(ErrorOutline, { fontSize: "large" }),
15793
+ icon: /* @__PURE__ */ jsx130(ErrorOutline, { fontSize: "large" }),
15616
15794
  severity: "error",
15617
15795
  sx: { maxWidth: 600, width: "100%" },
15618
15796
  children: [
15619
- /* @__PURE__ */ jsx129(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15620
- /* @__PURE__ */ jsx129(Typography4, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15621
- onRetry && /* @__PURE__ */ jsx129(Box6, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx129(
15797
+ /* @__PURE__ */ jsx130(AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15798
+ /* @__PURE__ */ jsx130(Typography5, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15799
+ onRetry && /* @__PURE__ */ jsx130(Box7, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ jsx130(
15622
15800
  Button4,
15623
15801
  {
15624
15802
  "aria-label": "Retry operation",
@@ -15633,7 +15811,7 @@ var StatusMessage = ({
15633
15811
  }
15634
15812
  );
15635
15813
  }
15636
- return /* @__PURE__ */ jsx129(Fragment6, {});
15814
+ return /* @__PURE__ */ jsx130(Fragment7, {});
15637
15815
  };
15638
15816
 
15639
15817
  // src/hooks/status-provider.tsx
@@ -15682,7 +15860,7 @@ var useStatus = () => {
15682
15860
  };
15683
15861
 
15684
15862
  // src/hooks/status-provider.tsx
15685
- import { jsx as jsx130 } from "react/jsx-runtime";
15863
+ import { jsx as jsx131 } from "react/jsx-runtime";
15686
15864
  var AppInspectorStatusContext = createContext8(void 0);
15687
15865
  var StatusProvider = ({ children }) => {
15688
15866
  const { checking, checkStatus, error, status } = useStatus();
@@ -15693,7 +15871,7 @@ var StatusProvider = ({ children }) => {
15693
15871
  () => ({ checking, checkStatus, reportDisabled, status, statusError: error }),
15694
15872
  [checking, checkStatus, reportDisabled, status, error]
15695
15873
  );
15696
- return /* @__PURE__ */ jsx130(AppInspectorStatusContext.Provider, { value, children });
15874
+ return /* @__PURE__ */ jsx131(AppInspectorStatusContext.Provider, { value, children });
15697
15875
  };
15698
15876
  var useAppInspectorStatus = () => {
15699
15877
  const value = useContext15(AppInspectorStatusContext);
@@ -18112,7 +18290,7 @@ var useAppInspectorOpenAnalytics = () => {
18112
18290
  };
18113
18291
 
18114
18292
  // src/context.tsx
18115
- import { Fragment as Fragment7, jsx as jsx131 } from "react/jsx-runtime";
18293
+ import { Fragment as Fragment8, jsx as jsx132 } from "react/jsx-runtime";
18116
18294
  var AppInspectorContext = createContext9(void 0);
18117
18295
  var useAppInspector = () => {
18118
18296
  const context = useContext16(AppInspectorContext);
@@ -18123,7 +18301,7 @@ var useAppInspector = () => {
18123
18301
  };
18124
18302
  var AppInspectorAnalyticsBoundary = ({ children }) => {
18125
18303
  useAppInspectorOpenAnalytics();
18126
- return /* @__PURE__ */ jsx131(Fragment7, { children });
18304
+ return /* @__PURE__ */ jsx132(Fragment8, { children });
18127
18305
  };
18128
18306
  var AppInspectorContextProvider = (props) => {
18129
18307
  const api = useMemo7(
@@ -18155,7 +18333,7 @@ var AppInspectorContextProvider = (props) => {
18155
18333
  }),
18156
18334
  [deploymentContainer, props.linkComponent, props.localstackEndpoint, resolveLink]
18157
18335
  );
18158
- return /* @__PURE__ */ jsx131(ApiProvider, { api, children: /* @__PURE__ */ jsx131(StatusProvider, { children: /* @__PURE__ */ jsx131(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx131(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18336
+ return /* @__PURE__ */ jsx132(ApiProvider, { api, children: /* @__PURE__ */ jsx132(StatusProvider, { children: /* @__PURE__ */ jsx132(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ jsx132(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18159
18337
  };
18160
18338
 
18161
18339
  // src/hooks/use-spans-ws.tsx
@@ -18442,102 +18620,16 @@ var useSpans = () => {
18442
18620
 
18443
18621
  // src/pages/trace-graph-page.tsx
18444
18622
  import { ArrowBack } from "@mui/icons-material";
18445
- import { Box as Box19, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18623
+ import { Box as Box20, Button as Button6, Drawer, Paper as Paper3 } from "@mui/material";
18446
18624
  import { styled } from "@mui/material/styles";
18447
18625
  import { ReactFlowProvider } from "@xyflow/react";
18448
18626
  import { useCallback as useCallback11, useEffect as useEffect21, useRef as useRef17, useState as useState17 } from "react";
18449
18627
 
18450
18628
  // src/components/event-details/event-details.tsx
18451
18629
  import { Close as Close2 } from "@mui/icons-material";
18452
- import { Alert as Alert4, Box as Box15, Chip as Chip3, Divider as Divider3, FormControlLabel as FormControlLabel2, IconButton as IconButton4, Stack as Stack2, Switch, Typography as Typography10 } from "@mui/material";
18630
+ import { Alert as Alert4, Box as Box16, Chip as Chip3, Divider as Divider4, FormControlLabel as FormControlLabel2, IconButton as IconButton4, Stack as Stack2, Switch, Typography as Typography11 } from "@mui/material";
18453
18631
  import { useMemo as useMemo12, useState as useState16 } from "react";
18454
18632
 
18455
- // src/utils/iam-utils.ts
18456
- function determinePermissionStatus(payload) {
18457
- if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {
18458
- return "explicitly_denied";
18459
- }
18460
- if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {
18461
- return "explicitly_allowed";
18462
- }
18463
- if (payload.is_allowed) {
18464
- return "implicitly_allowed";
18465
- }
18466
- return "implicitly_denied";
18467
- }
18468
- function formatPermissionStatus(status) {
18469
- switch (status) {
18470
- case "explicitly_allowed": {
18471
- return "Explicitly Allowed";
18472
- }
18473
- case "explicitly_denied": {
18474
- return "Explicitly Denied";
18475
- }
18476
- case "implicitly_allowed": {
18477
- return "Implicitly Allowed";
18478
- }
18479
- case "implicitly_denied": {
18480
- return "Implicitly Denied";
18481
- }
18482
- }
18483
- }
18484
- function getPermissionStatusColor(status) {
18485
- switch (status) {
18486
- case "explicitly_allowed":
18487
- case "implicitly_allowed": {
18488
- return "success.main";
18489
- }
18490
- case "explicitly_denied": {
18491
- return "error.main";
18492
- }
18493
- case "implicitly_denied": {
18494
- return "warning.main";
18495
- }
18496
- }
18497
- }
18498
- function parseIAMEvent(payloadString) {
18499
- try {
18500
- const payload = JSON.parse(payloadString);
18501
- const permission = determinePermissionStatus(payload);
18502
- const actions = [];
18503
- const resources = [];
18504
- if (payload.explicit_allows) {
18505
- for (const allow of payload.explicit_allows) {
18506
- if (!actions.includes(allow.action)) actions.push(allow.action);
18507
- if (!resources.includes(allow.resource)) resources.push(allow.resource);
18508
- }
18509
- }
18510
- if (payload.explicit_denies) {
18511
- for (const deny of payload.explicit_denies) {
18512
- if (!actions.includes(deny.action)) actions.push(deny.action);
18513
- if (!resources.includes(deny.resource)) resources.push(deny.resource);
18514
- }
18515
- }
18516
- if (payload.implicit_denies) {
18517
- for (const deny of payload.implicit_denies) {
18518
- if (!actions.includes(deny.action)) actions.push(deny.action);
18519
- if (!resources.includes(deny.resource)) resources.push(deny.resource);
18520
- }
18521
- }
18522
- return {
18523
- details: {
18524
- actions,
18525
- explicitAllows: payload.explicit_allow_count,
18526
- explicitDenies: payload.explicit_deny_count,
18527
- implicitDenies: payload.implicit_deny_count,
18528
- resources
18529
- },
18530
- operation: payload.operation,
18531
- permission,
18532
- principal: payload.principal_arn,
18533
- service: payload.service
18534
- };
18535
- } catch (error) {
18536
- console.error("Error parsing IAM event payload:", error);
18537
- return void 0;
18538
- }
18539
- }
18540
-
18541
18633
  // src/utils/event-utils.ts
18542
18634
  var iamEventParser = (eventName, attributes) => {
18543
18635
  if (attributes?.payload && typeof attributes.payload === "string") {
@@ -18648,69 +18740,69 @@ var getEventGroupsByType = (events) => {
18648
18740
 
18649
18741
  // src/components/event-details/event-detail.tsx
18650
18742
  import { KeyboardArrowDown as KeyboardArrowDown2, KeyboardArrowRight as KeyboardArrowRight2 } from "@mui/icons-material";
18651
- import { Box as Box12, IconButton as IconButton3, Typography as Typography7 } from "@mui/material";
18743
+ import { Box as Box13, IconButton as IconButton3, Typography as Typography8 } from "@mui/material";
18652
18744
  import { useEffect as useEffect18, useMemo as useMemo10, useRef as useRef15, useState as useState13 } from "react";
18653
18745
 
18654
18746
  // src/components/status-icon.tsx
18655
- import { Cancel, CheckCircle, Error as Error2, Info, RemoveCircle } from "@mui/icons-material";
18656
- import { Box as Box7 } from "@mui/material";
18657
- import { jsx as jsx132 } from "react/jsx-runtime";
18658
- var StatusIcon = ({ errorLevel }) => {
18747
+ import { Cancel as Cancel2, CheckCircle, Error as Error3, Info, RemoveCircle } from "@mui/icons-material";
18748
+ import { Box as Box8 } from "@mui/material";
18749
+ import { jsx as jsx133 } from "react/jsx-runtime";
18750
+ var StatusIcon2 = ({ errorLevel }) => {
18659
18751
  switch (errorLevel) {
18660
18752
  case EventLevel.LevelError: {
18661
- return /* @__PURE__ */ jsx132(Cancel, { sx: { color: "red" } });
18753
+ return /* @__PURE__ */ jsx133(Cancel2, { sx: { color: "red" } });
18662
18754
  }
18663
18755
  case EventLevel.LevelInfo: {
18664
- return /* @__PURE__ */ jsx132(Info, { sx: { color: "gray" } });
18756
+ return /* @__PURE__ */ jsx133(Info, { sx: { color: "gray" } });
18665
18757
  }
18666
18758
  case EventLevel.LevelPermission: {
18667
- return /* @__PURE__ */ jsx132(RemoveCircle, { sx: { color: "blue" } });
18759
+ return /* @__PURE__ */ jsx133(RemoveCircle, { sx: { color: "blue" } });
18668
18760
  }
18669
18761
  case EventLevel.LevelWarning: {
18670
- return /* @__PURE__ */ jsx132(Error2, { sx: { color: "orange" } });
18762
+ return /* @__PURE__ */ jsx133(Error3, { sx: { color: "orange" } });
18671
18763
  }
18672
18764
  default: {
18673
- return /* @__PURE__ */ jsx132(CheckCircle, { sx: { color: "lightgray" } });
18765
+ return /* @__PURE__ */ jsx133(CheckCircle, { sx: { color: "lightgray" } });
18674
18766
  }
18675
18767
  }
18676
18768
  };
18677
18769
 
18678
18770
  // src/components/event-details/iam-event-detail.tsx
18679
18771
  import { CheckCircle as CheckCircle2, Error as ErrorIcon, Warning } from "@mui/icons-material";
18680
- import { Box as Box8, Chip, Typography as Typography5 } from "@mui/material";
18681
- import { jsx as jsx133, jsxs as jsxs124 } from "react/jsx-runtime";
18682
- var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs124(Box8, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18683
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18684
- /* @__PURE__ */ jsx133(Box8, { children: typeof content === "string" ? /* @__PURE__ */ jsx133(Typography5, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18772
+ import { Box as Box9, Chip, Typography as Typography6 } from "@mui/material";
18773
+ import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18774
+ var DetailRow = ({ content, label }) => /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18775
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18776
+ /* @__PURE__ */ jsx134(Box9, { children: typeof content === "string" ? /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18685
18777
  ] });
18686
18778
  var PermissionIcon = ({ status }) => {
18687
18779
  switch (status) {
18688
18780
  case "explicitly_allowed":
18689
18781
  case "implicitly_allowed": {
18690
- return /* @__PURE__ */ jsx133(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18782
+ return /* @__PURE__ */ jsx134(CheckCircle2, { sx: { color: "success.main", fontSize: "1rem" } });
18691
18783
  }
18692
18784
  case "explicitly_denied": {
18693
- return /* @__PURE__ */ jsx133(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18785
+ return /* @__PURE__ */ jsx134(ErrorIcon, { sx: { color: "error.main", fontSize: "1rem" } });
18694
18786
  }
18695
18787
  case "implicitly_denied": {
18696
- return /* @__PURE__ */ jsx133(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18788
+ return /* @__PURE__ */ jsx134(Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18697
18789
  }
18698
18790
  }
18699
18791
  };
18700
18792
  var IAMEventDetail = ({ event }) => {
18701
18793
  const payloadString = event.attributes?.payload;
18702
18794
  if (!payloadString) {
18703
- return /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18795
+ return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18704
18796
  }
18705
18797
  const parsedIAM = parseIAMEvent(payloadString);
18706
18798
  if (!parsedIAM) {
18707
- return /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18799
+ return /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18708
18800
  }
18709
- return /* @__PURE__ */ jsxs124(Box8, { children: [
18710
- /* @__PURE__ */ jsx133(Box8, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx133(
18801
+ return /* @__PURE__ */ jsxs125(Box9, { children: [
18802
+ /* @__PURE__ */ jsx134(Box9, { sx: { mb: 1.5 }, children: /* @__PURE__ */ jsx134(
18711
18803
  Chip,
18712
18804
  {
18713
- icon: /* @__PURE__ */ jsx133(PermissionIcon, { status: parsedIAM.permission }),
18805
+ icon: /* @__PURE__ */ jsx134(PermissionIcon, { status: parsedIAM.permission }),
18714
18806
  label: formatPermissionStatus(parsedIAM.permission),
18715
18807
  size: "small",
18716
18808
  sx: {
@@ -18720,36 +18812,36 @@ var IAMEventDetail = ({ event }) => {
18720
18812
  variant: "outlined"
18721
18813
  }
18722
18814
  ) }),
18723
- /* @__PURE__ */ jsx133(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18724
- /* @__PURE__ */ jsx133(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18725
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx133(
18815
+ /* @__PURE__ */ jsx134(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18816
+ /* @__PURE__ */ jsx134(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18817
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsx134(
18726
18818
  DetailRow,
18727
18819
  {
18728
- content: /* @__PURE__ */ jsx133(Box8, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx133(Typography5, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18820
+ content: /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx134(Typography6, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18729
18821
  label: "Actions"
18730
18822
  }
18731
18823
  ),
18732
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx133(
18824
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsx134(
18733
18825
  DetailRow,
18734
18826
  {
18735
- content: /* @__PURE__ */ jsx133(Box8, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx133(Typography5, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18827
+ 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)) }),
18736
18828
  label: "Resources"
18737
18829
  }
18738
18830
  ),
18739
- (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ jsxs124(Box8, { sx: { mt: 1.5 }, children: [
18740
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18741
- /* @__PURE__ */ jsxs124(Box8, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18742
- parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
18743
- /* @__PURE__ */ jsx133(Typography5, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18744
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18831
+ (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ jsxs125(Box9, { sx: { mt: 1.5 }, children: [
18832
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18833
+ /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18834
+ parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18835
+ /* @__PURE__ */ jsx134(Typography6, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18836
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18745
18837
  ] }),
18746
- parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
18747
- /* @__PURE__ */ jsx133(Typography5, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18748
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18838
+ parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18839
+ /* @__PURE__ */ jsx134(Typography6, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18840
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18749
18841
  ] }),
18750
- parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsxs124(Box8, { sx: { textAlign: "center" }, children: [
18751
- /* @__PURE__ */ jsx133(Typography5, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18752
- /* @__PURE__ */ jsx133(Typography5, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18842
+ parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { textAlign: "center" }, children: [
18843
+ /* @__PURE__ */ jsx134(Typography6, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18844
+ /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18753
18845
  ] })
18754
18846
  ] })
18755
18847
  ] })
@@ -18758,16 +18850,16 @@ var IAMEventDetail = ({ event }) => {
18758
18850
 
18759
18851
  // src/components/event-details/iam-permission-detail.tsx
18760
18852
  import { KeyboardArrowDown, KeyboardArrowRight } from "@mui/icons-material";
18761
- import { Box as Box9, Chip as Chip2, IconButton as IconButton2, Typography as Typography6 } from "@mui/material";
18853
+ import { Box as Box10, Chip as Chip2, IconButton as IconButton2, Typography as Typography7 } from "@mui/material";
18762
18854
  import { useMemo as useMemo8, useState as useState11 } from "react";
18763
- import { jsx as jsx134, jsxs as jsxs125 } from "react/jsx-runtime";
18855
+ import { jsx as jsx135, jsxs as jsxs126 } from "react/jsx-runtime";
18764
18856
  var getChipColors = (status) => ({
18765
18857
  backgroundColor: getPermissionStatusColor(status),
18766
18858
  color: "white"
18767
18859
  });
18768
- var LabelValue = ({ label, value }) => /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18769
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18770
- /* @__PURE__ */ jsx134(Typography6, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18860
+ var LabelValue = ({ label, value }) => /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18861
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18862
+ /* @__PURE__ */ jsx135(Typography7, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18771
18863
  ] });
18772
18864
  var IAMPermissionItem = ({ event }) => {
18773
18865
  const [isOpen, setIsOpen] = useState11(false);
@@ -18782,40 +18874,40 @@ var IAMPermissionItem = ({ event }) => {
18782
18874
  return null;
18783
18875
  }
18784
18876
  const { chipColors, parsedIAM } = parsedData;
18785
- return /* @__PURE__ */ jsxs125(Box9, { sx: { mb: 0.5 }, children: [
18786
- /* @__PURE__ */ jsxs125(Box9, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18787
- /* @__PURE__ */ jsx134(IconButton2, { onClick: () => {
18877
+ return /* @__PURE__ */ jsxs126(Box10, { sx: { mb: 0.5 }, children: [
18878
+ /* @__PURE__ */ jsxs126(Box10, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18879
+ /* @__PURE__ */ jsx135(IconButton2, { onClick: () => {
18788
18880
  setIsOpen(!isOpen);
18789
- }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ jsx134(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx134(KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18790
- /* @__PURE__ */ jsx134(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18791
- /* @__PURE__ */ jsxs125(Typography6, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18881
+ }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ jsx135(KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx135(KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18882
+ /* @__PURE__ */ jsx135(Chip2, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18883
+ /* @__PURE__ */ jsxs126(Typography7, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18792
18884
  parsedIAM.service,
18793
18885
  ":",
18794
18886
  parsedIAM.operation
18795
18887
  ] })
18796
18888
  ] }),
18797
- isOpen && /* @__PURE__ */ jsxs125(Box9, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18798
- /* @__PURE__ */ jsx134(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18799
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18800
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18801
- /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx134(Typography6, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18889
+ isOpen && /* @__PURE__ */ jsxs126(Box10, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18890
+ /* @__PURE__ */ jsx135(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18891
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18892
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18893
+ /* @__PURE__ */ jsx135(Box10, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18802
18894
  ] }),
18803
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsxs125(Box9, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18804
- /* @__PURE__ */ jsx134(Typography6, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18805
- /* @__PURE__ */ jsx134(Box9, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx134(Typography6, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18895
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ jsxs126(Box10, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18896
+ /* @__PURE__ */ jsx135(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18897
+ /* @__PURE__ */ jsx135(Box10, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ jsx135(Typography7, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18806
18898
  ] })
18807
18899
  ] })
18808
18900
  ] });
18809
18901
  };
18810
- var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx134(Box9, { children: events.map((event) => /* @__PURE__ */ jsx134(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18902
+ var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ jsx135(Box10, { children: events.map((event) => /* @__PURE__ */ jsx135(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18811
18903
 
18812
18904
  // src/components/event-details/payload-viewer.tsx
18813
- import { Box as Box11, useTheme as useTheme3 } from "@mui/material";
18905
+ import { Box as Box12, useTheme as useTheme3 } from "@mui/material";
18814
18906
 
18815
18907
  // node_modules/@textea/json-viewer/dist/index.mjs
18816
18908
  var import_copy_to_clipboard = __toESM(require_copy_to_clipboard(), 1);
18817
- import { jsx as jsx135, jsxs as jsxs126, Fragment as Fragment8 } from "react/jsx-runtime";
18818
- import { Box as Box10, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
18909
+ import { jsx as jsx136, jsxs as jsxs127, Fragment as Fragment9 } from "react/jsx-runtime";
18910
+ import { Box as Box11, InputBase, NoSsr, SvgIcon, createTheme, ThemeProvider, Paper as Paper2 } from "@mui/material";
18819
18911
  import { createContext as createContext10, useContext as useContext17, useState as useState12, useRef as useRef14, useCallback as useCallback10, useMemo as useMemo9, useEffect as useEffect17, memo as memo9 } from "react";
18820
18912
  import { create, useStore, createStore } from "zustand";
18821
18913
  function r(e2) {
@@ -19169,7 +19261,7 @@ function useInspect(path, value, nestedIndex) {
19169
19261
  setInspect
19170
19262
  ];
19171
19263
  }
19172
- var DataBox = (props) => /* @__PURE__ */ jsx135(Box10, {
19264
+ var DataBox = (props) => /* @__PURE__ */ jsx136(Box11, {
19173
19265
  component: "div",
19174
19266
  ...props,
19175
19267
  sx: {
@@ -19180,7 +19272,7 @@ var DataBox = (props) => /* @__PURE__ */ jsx135(Box10, {
19180
19272
  var DataTypeLabel = (param) => {
19181
19273
  let { dataType, enable = true } = param;
19182
19274
  if (!enable) return null;
19183
- return /* @__PURE__ */ jsx135(DataBox, {
19275
+ return /* @__PURE__ */ jsx136(DataBox, {
19184
19276
  className: "data-type-label",
19185
19277
  sx: {
19186
19278
  mx: 0.5,
@@ -19198,18 +19290,18 @@ function defineEasyType(param) {
19198
19290
  const storeDisplayDataTypes = useJsonViewerStore((store) => store.displayDataTypes);
19199
19291
  const color2 = useJsonViewerStore((store) => store.colorspace[colorKey]);
19200
19292
  const onSelect = useJsonViewerStore((store) => store.onSelect);
19201
- return /* @__PURE__ */ jsxs126(DataBox, {
19293
+ return /* @__PURE__ */ jsxs127(DataBox, {
19202
19294
  onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(props.path, props.value),
19203
19295
  sx: {
19204
19296
  color: color2
19205
19297
  },
19206
19298
  children: [
19207
- displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx135(DataTypeLabel, {
19299
+ displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ jsx136(DataTypeLabel, {
19208
19300
  dataType: type
19209
19301
  }),
19210
- /* @__PURE__ */ jsx135(DataBox, {
19302
+ /* @__PURE__ */ jsx136(DataBox, {
19211
19303
  className: "".concat(type, "-value"),
19212
- children: /* @__PURE__ */ jsx135(Render, {
19304
+ children: /* @__PURE__ */ jsx136(Render, {
19213
19305
  path: props.path,
19214
19306
  inspect: props.inspect,
19215
19307
  setInspect: props.setInspect,
@@ -19249,7 +19341,7 @@ function defineEasyType(param) {
19249
19341
  }, [
19250
19342
  setValue
19251
19343
  ]);
19252
- return /* @__PURE__ */ jsx135(InputBase, {
19344
+ return /* @__PURE__ */ jsx136(InputBase, {
19253
19345
  autoFocus: true,
19254
19346
  value,
19255
19347
  onChange: handleChange,
@@ -19289,7 +19381,7 @@ var booleanType = defineEasyType({
19289
19381
  },
19290
19382
  Renderer: (param) => {
19291
19383
  let { value } = param;
19292
- return /* @__PURE__ */ jsx135(Fragment8, {
19384
+ return /* @__PURE__ */ jsx136(Fragment9, {
19293
19385
  children: value ? "true" : "false"
19294
19386
  });
19295
19387
  }
@@ -19308,7 +19400,7 @@ var dateType = defineEasyType({
19308
19400
  colorKey: "base0D",
19309
19401
  Renderer: (param) => {
19310
19402
  let { value } = param;
19311
- return /* @__PURE__ */ jsx135(Fragment8, {
19403
+ return /* @__PURE__ */ jsx136(Fragment9, {
19312
19404
  children: value.toLocaleTimeString("en-us", displayOptions)
19313
19405
  });
19314
19406
  }
@@ -19337,12 +19429,12 @@ var functionName = (func) => {
19337
19429
  var lb = "{";
19338
19430
  var rb = "}";
19339
19431
  var PreFunctionType = (props) => {
19340
- return /* @__PURE__ */ jsxs126(NoSsr, {
19432
+ return /* @__PURE__ */ jsxs127(NoSsr, {
19341
19433
  children: [
19342
- /* @__PURE__ */ jsx135(DataTypeLabel, {
19434
+ /* @__PURE__ */ jsx136(DataTypeLabel, {
19343
19435
  dataType: "function"
19344
19436
  }),
19345
- /* @__PURE__ */ jsxs126(Box10, {
19437
+ /* @__PURE__ */ jsxs127(Box11, {
19346
19438
  component: "span",
19347
19439
  className: "data-function-start",
19348
19440
  sx: {
@@ -19358,8 +19450,8 @@ var PreFunctionType = (props) => {
19358
19450
  });
19359
19451
  };
19360
19452
  var PostFunctionType = () => {
19361
- return /* @__PURE__ */ jsx135(NoSsr, {
19362
- children: /* @__PURE__ */ jsx135(Box10, {
19453
+ return /* @__PURE__ */ jsx136(NoSsr, {
19454
+ children: /* @__PURE__ */ jsx136(Box11, {
19363
19455
  component: "span",
19364
19456
  className: "data-function-end",
19365
19457
  children: rb
@@ -19368,15 +19460,15 @@ var PostFunctionType = () => {
19368
19460
  };
19369
19461
  var FunctionType = (props) => {
19370
19462
  const functionColor = useJsonViewerStore((store) => store.colorspace.base05);
19371
- return /* @__PURE__ */ jsx135(NoSsr, {
19372
- children: /* @__PURE__ */ jsx135(Box10, {
19463
+ return /* @__PURE__ */ jsx136(NoSsr, {
19464
+ children: /* @__PURE__ */ jsx136(Box11, {
19373
19465
  className: "data-function",
19374
19466
  sx: {
19375
19467
  display: props.inspect ? "block" : "inline-block",
19376
19468
  pl: props.inspect ? 2 : 0,
19377
19469
  color: functionColor
19378
19470
  },
19379
- children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx135(Box10, {
19471
+ children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ jsx136(Box11, {
19380
19472
  component: "span",
19381
19473
  className: "data-function-body",
19382
19474
  onClick: () => props.setInspect(true),
@@ -19404,7 +19496,7 @@ var nullType = defineEasyType({
19404
19496
  displayTypeLabel: false,
19405
19497
  Renderer: () => {
19406
19498
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19407
- return /* @__PURE__ */ jsx135(Box10, {
19499
+ return /* @__PURE__ */ jsx136(Box11, {
19408
19500
  sx: {
19409
19501
  fontSize: "0.8rem",
19410
19502
  backgroundColor,
@@ -19427,7 +19519,7 @@ var nanType = defineEasyType({
19427
19519
  deserialize: (value) => parseFloat(value),
19428
19520
  Renderer: () => {
19429
19521
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19430
- return /* @__PURE__ */ jsx135(Box10, {
19522
+ return /* @__PURE__ */ jsx136(Box11, {
19431
19523
  sx: {
19432
19524
  backgroundColor,
19433
19525
  fontSize: "0.8rem",
@@ -19447,7 +19539,7 @@ var floatType = defineEasyType({
19447
19539
  deserialize: (value) => parseFloat(value),
19448
19540
  Renderer: (param) => {
19449
19541
  let { value } = param;
19450
- return /* @__PURE__ */ jsx135(Fragment8, {
19542
+ return /* @__PURE__ */ jsx136(Fragment9, {
19451
19543
  children: value
19452
19544
  });
19453
19545
  }
@@ -19461,7 +19553,7 @@ var intType = defineEasyType({
19461
19553
  deserialize: (value) => parseFloat(value),
19462
19554
  Renderer: (param) => {
19463
19555
  let { value } = param;
19464
- return /* @__PURE__ */ jsx135(Fragment8, {
19556
+ return /* @__PURE__ */ jsx136(Fragment9, {
19465
19557
  children: value
19466
19558
  });
19467
19559
  }
@@ -19474,16 +19566,16 @@ var bigIntType = defineEasyType({
19474
19566
  deserialize: (value) => BigInt(value.replace(/\D/g, "")),
19475
19567
  Renderer: (param) => {
19476
19568
  let { value } = param;
19477
- return /* @__PURE__ */ jsx135(Fragment8, {
19569
+ return /* @__PURE__ */ jsx136(Fragment9, {
19478
19570
  children: "".concat(value, "n")
19479
19571
  });
19480
19572
  }
19481
19573
  });
19482
19574
  var BaseIcon = (param) => {
19483
19575
  let { d: d2, ...props } = param;
19484
- return /* @__PURE__ */ jsx135(SvgIcon, {
19576
+ return /* @__PURE__ */ jsx136(SvgIcon, {
19485
19577
  ...props,
19486
- children: /* @__PURE__ */ jsx135("path", {
19578
+ children: /* @__PURE__ */ jsx136("path", {
19487
19579
  d: d2
19488
19580
  })
19489
19581
  });
@@ -19498,55 +19590,55 @@ var Edit = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.3
19498
19590
  var ExpandMore = "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z";
19499
19591
  var Delete = "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5l-1-1h-5l-1 1H5v2h14V4z";
19500
19592
  var AddBoxIcon = (props) => {
19501
- return /* @__PURE__ */ jsx135(BaseIcon, {
19593
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19502
19594
  d: AddBox,
19503
19595
  ...props
19504
19596
  });
19505
19597
  };
19506
19598
  var CheckIcon = (props) => {
19507
- return /* @__PURE__ */ jsx135(BaseIcon, {
19599
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19508
19600
  d: Check,
19509
19601
  ...props
19510
19602
  });
19511
19603
  };
19512
19604
  var ChevronRightIcon = (props) => {
19513
- return /* @__PURE__ */ jsx135(BaseIcon, {
19605
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19514
19606
  d: ChevronRight,
19515
19607
  ...props
19516
19608
  });
19517
19609
  };
19518
19610
  var CircularArrowsIcon = (props) => {
19519
- return /* @__PURE__ */ jsx135(BaseIcon, {
19611
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19520
19612
  d: CircularArrows,
19521
19613
  ...props
19522
19614
  });
19523
19615
  };
19524
19616
  var CloseIcon = (props) => {
19525
- return /* @__PURE__ */ jsx135(BaseIcon, {
19617
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19526
19618
  d: Close,
19527
19619
  ...props
19528
19620
  });
19529
19621
  };
19530
19622
  var ContentCopyIcon = (props) => {
19531
- return /* @__PURE__ */ jsx135(BaseIcon, {
19623
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19532
19624
  d: ContentCopy,
19533
19625
  ...props
19534
19626
  });
19535
19627
  };
19536
19628
  var EditIcon = (props) => {
19537
- return /* @__PURE__ */ jsx135(BaseIcon, {
19629
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19538
19630
  d: Edit,
19539
19631
  ...props
19540
19632
  });
19541
19633
  };
19542
19634
  var ExpandMoreIcon = (props) => {
19543
- return /* @__PURE__ */ jsx135(BaseIcon, {
19635
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19544
19636
  d: ExpandMore,
19545
19637
  ...props
19546
19638
  });
19547
19639
  };
19548
19640
  var DeleteIcon = (props) => {
19549
- return /* @__PURE__ */ jsx135(BaseIcon, {
19641
+ return /* @__PURE__ */ jsx136(BaseIcon, {
19550
19642
  d: Delete,
19551
19643
  ...props
19552
19644
  });
@@ -19585,7 +19677,7 @@ var PreObjectType = (props) => {
19585
19677
  props.value
19586
19678
  ]);
19587
19679
  const isTrap = useIsCycleReference(props.path, props.value);
19588
- return /* @__PURE__ */ jsxs126(Box10, {
19680
+ return /* @__PURE__ */ jsxs127(Box11, {
19589
19681
  component: "span",
19590
19682
  className: "data-object-start",
19591
19683
  sx: {
@@ -19593,7 +19685,7 @@ var PreObjectType = (props) => {
19593
19685
  },
19594
19686
  children: [
19595
19687
  isArrayLike ? arrayLb : objectLb,
19596
- shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx135(Box10, {
19688
+ shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ jsx136(Box11, {
19597
19689
  component: "span",
19598
19690
  sx: {
19599
19691
  pl: 0.5,
@@ -19603,16 +19695,16 @@ var PreObjectType = (props) => {
19603
19695
  },
19604
19696
  children: sizeOfValue
19605
19697
  }),
19606
- isTrap && !props.inspect && /* @__PURE__ */ jsxs126(Fragment8, {
19698
+ isTrap && !props.inspect && /* @__PURE__ */ jsxs127(Fragment9, {
19607
19699
  children: [
19608
- /* @__PURE__ */ jsx135(CircularArrowsIcon, {
19700
+ /* @__PURE__ */ jsx136(CircularArrowsIcon, {
19609
19701
  sx: {
19610
19702
  fontSize: 12,
19611
19703
  color: textColor,
19612
19704
  mx: 0.5
19613
19705
  }
19614
19706
  }),
19615
- /* @__PURE__ */ jsx135(DataBox, {
19707
+ /* @__PURE__ */ jsx136(DataBox, {
19616
19708
  sx: {
19617
19709
  cursor: "pointer",
19618
19710
  userSelect: "none"
@@ -19642,7 +19734,7 @@ var PostObjectType = (props) => {
19642
19734
  props.path,
19643
19735
  props.value
19644
19736
  ]);
19645
- return /* @__PURE__ */ jsxs126(Box10, {
19737
+ return /* @__PURE__ */ jsxs127(Box11, {
19646
19738
  component: "span",
19647
19739
  className: "data-object-end",
19648
19740
  sx: {
@@ -19653,7 +19745,7 @@ var PostObjectType = (props) => {
19653
19745
  },
19654
19746
  children: [
19655
19747
  isArrayLike ? arrayRb : objectRb,
19656
- shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx135(Box10, {
19748
+ shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ jsx136(Box11, {
19657
19749
  component: "span",
19658
19750
  sx: {
19659
19751
  pl: 0.5,
@@ -19693,7 +19785,7 @@ var ObjectType = (props) => {
19693
19785
  ...props.path,
19694
19786
  key
19695
19787
  ];
19696
- elements3.push(/* @__PURE__ */ jsx135(DataKeyPair, {
19788
+ elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19697
19789
  path,
19698
19790
  value: value2,
19699
19791
  prevValue: props.prevValue instanceof Map ? props.prevValue.get(k2) : void 0,
@@ -19709,7 +19801,7 @@ var ObjectType = (props) => {
19709
19801
  while (true) {
19710
19802
  const nextResult = iterator2.next();
19711
19803
  var _nextResult_done;
19712
- elements3.push(/* @__PURE__ */ jsx135(DataKeyPair, {
19804
+ elements3.push(/* @__PURE__ */ jsx136(DataKeyPair, {
19713
19805
  path: [
19714
19806
  ...props.path,
19715
19807
  "iterator:".concat(count2)
@@ -19737,7 +19829,7 @@ var ObjectType = (props) => {
19737
19829
  ...props.path,
19738
19830
  index
19739
19831
  ];
19740
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19832
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19741
19833
  path,
19742
19834
  value: value2,
19743
19835
  prevValue: Array.isArray(props.prevValue) ? props.prevValue[index] : void 0,
@@ -19746,7 +19838,7 @@ var ObjectType = (props) => {
19746
19838
  });
19747
19839
  if (value.length > displayLength) {
19748
19840
  const rest = value.length - displayLength;
19749
- elements4.push(/* @__PURE__ */ jsxs126(DataBox, {
19841
+ elements4.push(/* @__PURE__ */ jsxs127(DataBox, {
19750
19842
  sx: {
19751
19843
  cursor: "pointer",
19752
19844
  lineHeight: 1.5,
@@ -19769,7 +19861,7 @@ var ObjectType = (props) => {
19769
19861
  const prevElements = Array.isArray(props.prevValue) ? segmentArray(props.prevValue, groupArraysAfterLength) : void 0;
19770
19862
  const elementsLastIndex = elements3.length - 1;
19771
19863
  return elements3.map((list, index) => {
19772
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19864
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19773
19865
  path: props.path,
19774
19866
  value: list,
19775
19867
  nestedIndex: index,
@@ -19796,7 +19888,7 @@ var ObjectType = (props) => {
19796
19888
  ...props.path,
19797
19889
  key
19798
19890
  ];
19799
- return /* @__PURE__ */ jsx135(DataKeyPair, {
19891
+ return /* @__PURE__ */ jsx136(DataKeyPair, {
19800
19892
  path,
19801
19893
  value: value2,
19802
19894
  prevValue: (_props_prevValue = props.prevValue) === null || _props_prevValue === void 0 ? void 0 : _props_prevValue[key],
@@ -19805,7 +19897,7 @@ var ObjectType = (props) => {
19805
19897
  });
19806
19898
  if (entries.length > displayLength) {
19807
19899
  const rest = entries.length - displayLength;
19808
- elements2.push(/* @__PURE__ */ jsxs126(DataBox, {
19900
+ elements2.push(/* @__PURE__ */ jsxs127(DataBox, {
19809
19901
  sx: {
19810
19902
  cursor: "pointer",
19811
19903
  lineHeight: 1.5,
@@ -19843,7 +19935,7 @@ var ObjectType = (props) => {
19843
19935
  if (isEmptyValue) {
19844
19936
  return null;
19845
19937
  }
19846
- return /* @__PURE__ */ jsx135(Box10, {
19938
+ return /* @__PURE__ */ jsx136(Box11, {
19847
19939
  className: "data-object",
19848
19940
  sx: {
19849
19941
  display: props.inspect ? "block" : "inline-block",
@@ -19852,7 +19944,7 @@ var ObjectType = (props) => {
19852
19944
  color: keyColor,
19853
19945
  borderLeft: props.inspect ? "1px solid ".concat(borderColor) : "none"
19854
19946
  },
19855
- children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx135(Box10, {
19947
+ children: props.inspect ? elements : !isTrap && /* @__PURE__ */ jsx136(Box11, {
19856
19948
  component: "span",
19857
19949
  className: "data-object-body",
19858
19950
  onClick: () => props.setInspect(true),
@@ -19884,7 +19976,7 @@ var stringType = defineEasyType({
19884
19976
  const collapseStringsAfterLength = useJsonViewerStore((store) => store.collapseStringsAfterLength);
19885
19977
  const value = showRest ? props.value : props.value.slice(0, collapseStringsAfterLength);
19886
19978
  const hasRest = props.value.length > collapseStringsAfterLength;
19887
- return /* @__PURE__ */ jsxs126(Box10, {
19979
+ return /* @__PURE__ */ jsxs127(Box11, {
19888
19980
  component: "span",
19889
19981
  sx: {
19890
19982
  overflowWrap: "anywhere",
@@ -19902,7 +19994,7 @@ var stringType = defineEasyType({
19902
19994
  children: [
19903
19995
  '"',
19904
19996
  value,
19905
- hasRest && !showRest && /* @__PURE__ */ jsx135(Box10, {
19997
+ hasRest && !showRest && /* @__PURE__ */ jsx136(Box11, {
19906
19998
  component: "span",
19907
19999
  sx: {
19908
20000
  padding: 0.5
@@ -19921,7 +20013,7 @@ var undefinedType = defineEasyType({
19921
20013
  displayTypeLabel: false,
19922
20014
  Renderer: () => {
19923
20015
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19924
- return /* @__PURE__ */ jsx135(Box10, {
20016
+ return /* @__PURE__ */ jsx136(Box11, {
19925
20017
  sx: {
19926
20018
  fontSize: "0.7rem",
19927
20019
  backgroundColor,
@@ -20002,7 +20094,7 @@ function useTypeComponents(value, path) {
20002
20094
  registry
20003
20095
  ]);
20004
20096
  }
20005
- var IconBox = (props) => /* @__PURE__ */ jsx135(Box10, {
20097
+ var IconBox = (props) => /* @__PURE__ */ jsx136(Box11, {
20006
20098
  component: "span",
20007
20099
  ...props,
20008
20100
  sx: {
@@ -20188,18 +20280,18 @@ var DataKeyPair = (props) => {
20188
20280
  ]);
20189
20281
  const actionIcons = useMemo9(() => {
20190
20282
  if (editing) {
20191
- return /* @__PURE__ */ jsxs126(Fragment8, {
20283
+ return /* @__PURE__ */ jsxs127(Fragment9, {
20192
20284
  children: [
20193
- /* @__PURE__ */ jsx135(IconBox, {
20194
- children: /* @__PURE__ */ jsx135(CloseIcon, {
20285
+ /* @__PURE__ */ jsx136(IconBox, {
20286
+ children: /* @__PURE__ */ jsx136(CloseIcon, {
20195
20287
  sx: {
20196
20288
  fontSize: ".8rem"
20197
20289
  },
20198
20290
  onClick: abortEditing
20199
20291
  })
20200
20292
  }),
20201
- /* @__PURE__ */ jsx135(IconBox, {
20202
- children: /* @__PURE__ */ jsx135(CheckIcon, {
20293
+ /* @__PURE__ */ jsx136(IconBox, {
20294
+ children: /* @__PURE__ */ jsx136(CheckIcon, {
20203
20295
  sx: {
20204
20296
  fontSize: ".8rem"
20205
20297
  },
@@ -20209,9 +20301,9 @@ var DataKeyPair = (props) => {
20209
20301
  ]
20210
20302
  });
20211
20303
  }
20212
- return /* @__PURE__ */ jsxs126(Fragment8, {
20304
+ return /* @__PURE__ */ jsxs127(Fragment9, {
20213
20305
  children: [
20214
- enableClipboard && /* @__PURE__ */ jsx135(IconBox, {
20306
+ enableClipboard && /* @__PURE__ */ jsx136(IconBox, {
20215
20307
  onClick: (event) => {
20216
20308
  event.preventDefault();
20217
20309
  try {
@@ -20220,41 +20312,41 @@ var DataKeyPair = (props) => {
20220
20312
  console.error(e2);
20221
20313
  }
20222
20314
  },
20223
- children: copied ? /* @__PURE__ */ jsx135(CheckIcon, {
20315
+ children: copied ? /* @__PURE__ */ jsx136(CheckIcon, {
20224
20316
  sx: {
20225
20317
  fontSize: ".8rem"
20226
20318
  }
20227
- }) : /* @__PURE__ */ jsx135(ContentCopyIcon, {
20319
+ }) : /* @__PURE__ */ jsx136(ContentCopyIcon, {
20228
20320
  sx: {
20229
20321
  fontSize: ".8rem"
20230
20322
  }
20231
20323
  })
20232
20324
  }),
20233
- Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx135(IconBox, {
20325
+ Editor && editable && serialize && deserialize && /* @__PURE__ */ jsx136(IconBox, {
20234
20326
  onClick: startEditing,
20235
- children: /* @__PURE__ */ jsx135(EditIcon, {
20327
+ children: /* @__PURE__ */ jsx136(EditIcon, {
20236
20328
  sx: {
20237
20329
  fontSize: ".8rem"
20238
20330
  }
20239
20331
  })
20240
20332
  }),
20241
- enableAdd && /* @__PURE__ */ jsx135(IconBox, {
20333
+ enableAdd && /* @__PURE__ */ jsx136(IconBox, {
20242
20334
  onClick: (event) => {
20243
20335
  event.preventDefault();
20244
20336
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(path);
20245
20337
  },
20246
- children: /* @__PURE__ */ jsx135(AddBoxIcon, {
20338
+ children: /* @__PURE__ */ jsx136(AddBoxIcon, {
20247
20339
  sx: {
20248
20340
  fontSize: ".8rem"
20249
20341
  }
20250
20342
  })
20251
20343
  }),
20252
- enableDelete && /* @__PURE__ */ jsx135(IconBox, {
20344
+ enableDelete && /* @__PURE__ */ jsx136(IconBox, {
20253
20345
  onClick: (event) => {
20254
20346
  event.preventDefault();
20255
20347
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(path, value);
20256
20348
  },
20257
- children: /* @__PURE__ */ jsx135(DeleteIcon, {
20349
+ children: /* @__PURE__ */ jsx136(DeleteIcon, {
20258
20350
  sx: {
20259
20351
  fontSize: ".9rem"
20260
20352
  }
@@ -20302,7 +20394,7 @@ var DataKeyPair = (props) => {
20302
20394
  prevValue,
20303
20395
  nestedIndex
20304
20396
  ]);
20305
- return /* @__PURE__ */ jsxs126(Box10, {
20397
+ return /* @__PURE__ */ jsxs127(Box11, {
20306
20398
  className: "data-key-pair",
20307
20399
  "data-testid": "data-key-pair" + path.join("."),
20308
20400
  sx: {
@@ -20314,7 +20406,7 @@ var DataKeyPair = (props) => {
20314
20406
  nestedIndex
20315
20407
  ]),
20316
20408
  children: [
20317
- /* @__PURE__ */ jsxs126(DataBox, {
20409
+ /* @__PURE__ */ jsxs127(DataBox, {
20318
20410
  component: "span",
20319
20411
  className: "data-key",
20320
20412
  sx: {
@@ -20335,7 +20427,7 @@ var DataKeyPair = (props) => {
20335
20427
  setInspect
20336
20428
  ]),
20337
20429
  children: [
20338
- expandable ? inspect ? /* @__PURE__ */ jsx135(ExpandMoreIcon, {
20430
+ expandable ? inspect ? /* @__PURE__ */ jsx136(ExpandMoreIcon, {
20339
20431
  className: "data-key-toggle-expanded",
20340
20432
  sx: {
20341
20433
  fontSize: ".8rem",
@@ -20343,7 +20435,7 @@ var DataKeyPair = (props) => {
20343
20435
  cursor: "pointer"
20344
20436
  }
20345
20437
  }
20346
- }) : /* @__PURE__ */ jsx135(ChevronRightIcon, {
20438
+ }) : /* @__PURE__ */ jsx136(ChevronRightIcon, {
20347
20439
  className: "data-key-toggle-collapsed",
20348
20440
  sx: {
20349
20441
  fontSize: ".8rem",
@@ -20352,44 +20444,44 @@ var DataKeyPair = (props) => {
20352
20444
  }
20353
20445
  }
20354
20446
  }) : null,
20355
- /* @__PURE__ */ jsx135(Box10, {
20447
+ /* @__PURE__ */ jsx136(Box11, {
20356
20448
  ref: highlightContainer,
20357
20449
  className: "data-key-key",
20358
20450
  component: "span",
20359
- children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs126(Fragment8, {
20451
+ children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ jsxs127(Fragment9, {
20360
20452
  children: [
20361
20453
  '"',
20362
20454
  rootName,
20363
20455
  '"'
20364
20456
  ]
20365
- }) : /* @__PURE__ */ jsx135(Fragment8, {
20457
+ }) : /* @__PURE__ */ jsx136(Fragment9, {
20366
20458
  children: rootName
20367
- }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx135(KeyRenderer, {
20459
+ }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ jsx136(KeyRenderer, {
20368
20460
  ...downstreamProps
20369
- }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx135(Box10, {
20461
+ }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ jsx136(Box11, {
20370
20462
  component: "span",
20371
20463
  style: {
20372
20464
  color: numberKeyColor,
20373
20465
  userSelect: isNumberKey ? "none" : "auto"
20374
20466
  },
20375
20467
  children: key
20376
- }) : quotesOnKeys ? /* @__PURE__ */ jsxs126(Fragment8, {
20468
+ }) : quotesOnKeys ? /* @__PURE__ */ jsxs127(Fragment9, {
20377
20469
  children: [
20378
20470
  '"',
20379
20471
  key,
20380
20472
  '"'
20381
20473
  ]
20382
- }) : /* @__PURE__ */ jsx135(Fragment8, {
20474
+ }) : /* @__PURE__ */ jsx136(Fragment9, {
20383
20475
  children: key
20384
20476
  }))
20385
20477
  }),
20386
- isRoot ? rootName !== false && /* @__PURE__ */ jsx135(DataBox, {
20478
+ isRoot ? rootName !== false && /* @__PURE__ */ jsx136(DataBox, {
20387
20479
  className: "data-key-colon",
20388
20480
  sx: {
20389
20481
  mr: 0.5
20390
20482
  },
20391
20483
  children: ":"
20392
- }) : nestedIndex === void 0 && /* @__PURE__ */ jsx135(DataBox, {
20484
+ }) : nestedIndex === void 0 && /* @__PURE__ */ jsx136(DataBox, {
20393
20485
  className: "data-key-colon",
20394
20486
  sx: {
20395
20487
  mr: 0.5,
@@ -20400,29 +20492,29 @@ var DataKeyPair = (props) => {
20400
20492
  },
20401
20493
  children: ":"
20402
20494
  }),
20403
- PreComponent && /* @__PURE__ */ jsx135(PreComponent, {
20495
+ PreComponent && /* @__PURE__ */ jsx136(PreComponent, {
20404
20496
  ...downstreamProps
20405
20497
  }),
20406
20498
  isHover && expandable && inspect && actionIcons
20407
20499
  ]
20408
20500
  }),
20409
- editing && editable ? Editor && /* @__PURE__ */ jsx135(Editor, {
20501
+ editing && editable ? Editor && /* @__PURE__ */ jsx136(Editor, {
20410
20502
  path,
20411
20503
  value: tempValue,
20412
20504
  setValue: setTempValue,
20413
20505
  abortEditing,
20414
20506
  commitEditing
20415
- }) : Component ? /* @__PURE__ */ jsx135(Component, {
20507
+ }) : Component ? /* @__PURE__ */ jsx136(Component, {
20416
20508
  ...downstreamProps
20417
- }) : /* @__PURE__ */ jsx135(Box10, {
20509
+ }) : /* @__PURE__ */ jsx136(Box11, {
20418
20510
  component: "span",
20419
20511
  className: "data-value-fallback",
20420
20512
  children: "fallback: ".concat(value)
20421
20513
  }),
20422
- PostComponent && /* @__PURE__ */ jsx135(PostComponent, {
20514
+ PostComponent && /* @__PURE__ */ jsx136(PostComponent, {
20423
20515
  ...downstreamProps
20424
20516
  }),
20425
- !last && displayComma && /* @__PURE__ */ jsx135(DataBox, {
20517
+ !last && displayComma && /* @__PURE__ */ jsx136(DataBox, {
20426
20518
  children: ","
20427
20519
  }),
20428
20520
  isHover && expandable && !inspect && actionIcons,
@@ -20542,7 +20634,7 @@ var JsonViewerInner = (props) => {
20542
20634
  const onMouseLeave = useCallback10(() => setHover(null), [
20543
20635
  setHover
20544
20636
  ]);
20545
- return /* @__PURE__ */ jsx135(Paper2, {
20637
+ return /* @__PURE__ */ jsx136(Paper2, {
20546
20638
  elevation: 0,
20547
20639
  className: clsx(themeCls, props.className),
20548
20640
  style: props.style,
@@ -20553,7 +20645,7 @@ var JsonViewerInner = (props) => {
20553
20645
  ...props.sx
20554
20646
  },
20555
20647
  onMouseLeave,
20556
- children: /* @__PURE__ */ jsx135(DataKeyPair, {
20648
+ children: /* @__PURE__ */ jsx136(DataKeyPair, {
20557
20649
  value,
20558
20650
  prevValue,
20559
20651
  path: emptyPath,
@@ -20605,13 +20697,13 @@ var JsonViewer = function JsonViewer2(props) {
20605
20697
  };
20606
20698
  const jsonViewerStore = useMemo9(() => createJsonViewerStore(props), []);
20607
20699
  const typeRegistryStore = useMemo9(() => createTypeRegistryStore(), []);
20608
- return /* @__PURE__ */ jsx135(ThemeProvider, {
20700
+ return /* @__PURE__ */ jsx136(ThemeProvider, {
20609
20701
  theme,
20610
- children: /* @__PURE__ */ jsx135(TypeRegistryStoreContext.Provider, {
20702
+ children: /* @__PURE__ */ jsx136(TypeRegistryStoreContext.Provider, {
20611
20703
  value: typeRegistryStore,
20612
- children: /* @__PURE__ */ jsx135(JsonViewerStoreContext.Provider, {
20704
+ children: /* @__PURE__ */ jsx136(JsonViewerStoreContext.Provider, {
20613
20705
  value: jsonViewerStore,
20614
- children: /* @__PURE__ */ jsx135(JsonViewerInner, {
20706
+ children: /* @__PURE__ */ jsx136(JsonViewerInner, {
20615
20707
  ...mixedProps
20616
20708
  })
20617
20709
  })
@@ -20621,7 +20713,7 @@ var JsonViewer = function JsonViewer2(props) {
20621
20713
 
20622
20714
  // src/components/event-details/payload-viewer.tsx
20623
20715
  import { memo as memo10 } from "react";
20624
- import { jsx as jsx136 } from "react/jsx-runtime";
20716
+ import { jsx as jsx137 } from "react/jsx-runtime";
20625
20717
  function tryParseJson(value) {
20626
20718
  if (typeof value !== "string") {
20627
20719
  return value;
@@ -20634,7 +20726,7 @@ function tryParseJson(value) {
20634
20726
  }
20635
20727
  var PayloadViewer = memo10(({ sx, testId, value }) => {
20636
20728
  const theme = useTheme3();
20637
- return /* @__PURE__ */ jsx136(Box11, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx136(
20729
+ return /* @__PURE__ */ jsx137(Box12, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ jsx137(
20638
20730
  JsonViewer,
20639
20731
  {
20640
20732
  displayDataTypes: false,
@@ -20648,10 +20740,10 @@ var PayloadViewer = memo10(({ sx, testId, value }) => {
20648
20740
  });
20649
20741
 
20650
20742
  // src/components/event-details/event-detail.tsx
20651
- import { Fragment as Fragment9, jsx as jsx137, jsxs as jsxs127 } from "react/jsx-runtime";
20652
- var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs127(Box12, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20653
- /* @__PURE__ */ jsx137(Typography7, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20654
- /* @__PURE__ */ jsx137(Box12, { children: typeof content === "string" ? /* @__PURE__ */ jsx137(Typography7, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20743
+ import { Fragment as Fragment10, jsx as jsx138, jsxs as jsxs128 } from "react/jsx-runtime";
20744
+ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ jsxs128(Box13, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20745
+ /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20746
+ /* @__PURE__ */ jsx138(Box13, { children: typeof content === "string" ? /* @__PURE__ */ jsx138(Typography8, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20655
20747
  ] });
20656
20748
  var EventMessage = ({ event }) => {
20657
20749
  const [isOpen, setIsOpen] = useState13(false);
@@ -20683,9 +20775,9 @@ var EventMessage = ({ event }) => {
20683
20775
  () => isOverflowing || hasAdditionalContent,
20684
20776
  [isOverflowing, hasAdditionalContent]
20685
20777
  );
20686
- return /* @__PURE__ */ jsxs127(Box12, { sx: { display: "flex", flexDirection: "column" }, children: [
20687
- /* @__PURE__ */ jsxs127(Box12, { sx: { alignItems: "center", display: "flex" }, children: [
20688
- Boolean(shouldShowToggle) && /* @__PURE__ */ jsx137(
20778
+ return /* @__PURE__ */ jsxs128(Box13, { sx: { display: "flex", flexDirection: "column" }, children: [
20779
+ /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex" }, children: [
20780
+ Boolean(shouldShowToggle) && /* @__PURE__ */ jsx138(
20689
20781
  IconButton3,
20690
20782
  {
20691
20783
  onClick: () => {
@@ -20693,11 +20785,11 @@ var EventMessage = ({ event }) => {
20693
20785
  },
20694
20786
  size: "small",
20695
20787
  sx: { mr: 1, p: 0 },
20696
- children: isOpen ? /* @__PURE__ */ jsx137(KeyboardArrowDown2, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx137(KeyboardArrowRight2, { sx: { fontSize: 16 } })
20788
+ children: isOpen ? /* @__PURE__ */ jsx138(KeyboardArrowDown2, { sx: { fontSize: 16 } }) : /* @__PURE__ */ jsx138(KeyboardArrowRight2, { sx: { fontSize: 16 } })
20697
20789
  }
20698
20790
  ),
20699
- /* @__PURE__ */ jsx137(
20700
- Typography7,
20791
+ /* @__PURE__ */ jsx138(
20792
+ Typography8,
20701
20793
  {
20702
20794
  ref: textReference,
20703
20795
  sx: {
@@ -20714,12 +20806,12 @@ var EventMessage = ({ event }) => {
20714
20806
  }
20715
20807
  )
20716
20808
  ] }),
20717
- isOpen && /* @__PURE__ */ jsx137(Box12, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ jsx137(IAMEventDetail, { event }) : /* @__PURE__ */ jsxs127(Fragment9, { children: [
20718
- Boolean(parsedMessage.message) && /* @__PURE__ */ jsx137(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20719
- Boolean(parsedMessage.details) && /* @__PURE__ */ jsx137(
20809
+ 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: [
20810
+ Boolean(parsedMessage.message) && /* @__PURE__ */ jsx138(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20811
+ Boolean(parsedMessage.details) && /* @__PURE__ */ jsx138(
20720
20812
  DetailRow2,
20721
20813
  {
20722
- content: /* @__PURE__ */ jsx137(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20814
+ content: /* @__PURE__ */ jsx138(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20723
20815
  label: "Details"
20724
20816
  }
20725
20817
  )
@@ -20751,15 +20843,15 @@ var EventDetail = ({
20751
20843
  type
20752
20844
  }) => {
20753
20845
  if (type === "permission") {
20754
- return /* @__PURE__ */ jsx137(IAMPermissionDetail, { events });
20846
+ return /* @__PURE__ */ jsx138(IAMPermissionDetail, { events });
20755
20847
  }
20756
20848
  const eventLevel = getEventLevelFromGroup(type);
20757
- return /* @__PURE__ */ jsxs127(Box12, { children: [
20758
- /* @__PURE__ */ jsxs127(Box12, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20759
- /* @__PURE__ */ jsx137(StatusIcon, { errorLevel: eventLevel }),
20760
- /* @__PURE__ */ jsx137(Typography7, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20849
+ return /* @__PURE__ */ jsxs128(Box13, { children: [
20850
+ /* @__PURE__ */ jsxs128(Box13, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20851
+ /* @__PURE__ */ jsx138(StatusIcon2, { errorLevel: eventLevel }),
20852
+ /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20761
20853
  ] }),
20762
- /* @__PURE__ */ jsx137(Box12, { children: events.map((event) => /* @__PURE__ */ jsx137(Box12, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ jsx137(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20854
+ /* @__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}`)) })
20763
20855
  ] });
20764
20856
  };
20765
20857
 
@@ -25141,16 +25233,16 @@ var ProtocolLib = class {
25141
25233
  if (output !== void 0 && queryErrorHeader != null) {
25142
25234
  const [Code, Type] = queryErrorHeader.split(";");
25143
25235
  const entries = Object.entries(output);
25144
- const Error3 = {
25236
+ const Error4 = {
25145
25237
  Code,
25146
25238
  Type
25147
25239
  };
25148
- Object.assign(output, Error3);
25240
+ Object.assign(output, Error4);
25149
25241
  for (const [k2, v2] of entries) {
25150
- Error3[k2 === "message" ? "Message" : k2] = v2;
25242
+ Error4[k2 === "message" ? "Message" : k2] = v2;
25151
25243
  }
25152
- delete Error3.__type;
25153
- output.Error = Error3;
25244
+ delete Error4.__type;
25245
+ output.Error = Error4;
25154
25246
  }
25155
25247
  }
25156
25248
  queryCompatOutput(queryCompatErrorData, errorData) {
@@ -30450,9 +30542,9 @@ var QueryStatus = {
30450
30542
  };
30451
30543
 
30452
30544
  // src/components/event-details/lambda-invoke-logs-section.tsx
30453
- import { Box as Box13, CircularProgress as CircularProgress3, Stack, Typography as Typography8 } from "@mui/material";
30545
+ import { Box as Box14, CircularProgress as CircularProgress3, Stack, Typography as Typography9 } from "@mui/material";
30454
30546
  import { useEffect as useEffect19, useMemo as useMemo11, useRef as useRef16, useState as useState14 } from "react";
30455
- import { jsx as jsx138, jsxs as jsxs128 } from "react/jsx-runtime";
30547
+ import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30456
30548
  var POLL_INTERVAL_MS = 1e3;
30457
30549
  async function pollQueryResults(client, queryId) {
30458
30550
  return client.send(new GetQueryResultsCommand({ queryId }));
@@ -30542,30 +30634,30 @@ function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, en
30542
30634
  var LambdaInvokeLogsSection = ({ endTimeNano, functionName: functionName2, region, requestId, startTimeNano }) => {
30543
30635
  const { error, loading, logs } = useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano);
30544
30636
  if (loading) {
30545
- return /* @__PURE__ */ jsxs128(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30546
- /* @__PURE__ */ jsx138(CircularProgress3, { size: 14 }),
30547
- /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30637
+ return /* @__PURE__ */ jsxs129(Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30638
+ /* @__PURE__ */ jsx139(CircularProgress3, { size: 14 }),
30639
+ /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30548
30640
  ] });
30549
30641
  }
30550
30642
  if (error !== void 0) {
30551
- return /* @__PURE__ */ jsx138(Typography8, { color: "error", variant: "body2", children: error.message });
30643
+ return /* @__PURE__ */ jsx139(Typography9, { color: "error", variant: "body2", children: error.message });
30552
30644
  }
30553
30645
  if (logs.length === 0) {
30554
- return /* @__PURE__ */ jsx138(Typography8, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30646
+ return /* @__PURE__ */ jsx139(Typography9, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30555
30647
  }
30556
- return /* @__PURE__ */ jsx138(Box13, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ jsx138("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ jsx138(Typography8, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30648
+ 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)) }) });
30557
30649
  };
30558
30650
 
30559
30651
  // src/components/event-details/toggle-section.tsx
30560
30652
  import { KeyboardArrowDown as KeyboardArrowDown3, KeyboardArrowRight as KeyboardArrowRight3 } from "@mui/icons-material";
30561
- import { Box as Box14, Typography as Typography9 } from "@mui/material";
30653
+ import { Box as Box15, Typography as Typography10 } from "@mui/material";
30562
30654
  import { useState as useState15 } from "react";
30563
- import { jsx as jsx139, jsxs as jsxs129 } from "react/jsx-runtime";
30655
+ import { jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30564
30656
  var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30565
30657
  const [isOpen, setIsOpen] = useState15(initialOpen);
30566
- return /* @__PURE__ */ jsxs129(Box14, { sx: { mt: 4 }, children: [
30567
- /* @__PURE__ */ jsxs129(
30568
- Box14,
30658
+ return /* @__PURE__ */ jsxs130(Box15, { sx: { mt: 4 }, children: [
30659
+ /* @__PURE__ */ jsxs130(
30660
+ Box15,
30569
30661
  {
30570
30662
  onClick: () => {
30571
30663
  setIsOpen(!isOpen);
@@ -30578,8 +30670,8 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30578
30670
  mb: 1
30579
30671
  },
30580
30672
  children: [
30581
- /* @__PURE__ */ jsxs129(
30582
- Box14,
30673
+ /* @__PURE__ */ jsxs130(
30674
+ Box15,
30583
30675
  {
30584
30676
  role: "button",
30585
30677
  sx: {
@@ -30588,23 +30680,23 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30588
30680
  gap: 1
30589
30681
  },
30590
30682
  children: [
30591
- /* @__PURE__ */ jsx139(Typography9, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30592
- isOpen ? /* @__PURE__ */ jsx139(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx139(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
30683
+ /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30684
+ isOpen ? /* @__PURE__ */ jsx140(KeyboardArrowDown3, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ jsx140(KeyboardArrowRight3, { sx: { color: "text.secondary", height: 20, width: 20 } })
30593
30685
  ]
30594
30686
  }
30595
30687
  ),
30596
- action !== false && /* @__PURE__ */ jsx139(Box14, { onClick: (event) => {
30688
+ action !== false && /* @__PURE__ */ jsx140(Box15, { onClick: (event) => {
30597
30689
  event.stopPropagation();
30598
30690
  }, children: action })
30599
30691
  ]
30600
30692
  }
30601
30693
  ),
30602
- isOpen && /* @__PURE__ */ jsx139(Box14, { children })
30694
+ isOpen && /* @__PURE__ */ jsx140(Box15, { children })
30603
30695
  ] });
30604
30696
  };
30605
30697
 
30606
30698
  // src/components/event-details/event-details.tsx
30607
- import { Fragment as Fragment10, jsx as jsx140, jsxs as jsxs130 } from "react/jsx-runtime";
30699
+ import { Fragment as Fragment11, jsx as jsx141, jsxs as jsxs131 } from "react/jsx-runtime";
30608
30700
  var checkIsLambdaInvoke = (span) => {
30609
30701
  if (span.service_name !== "lambda") {
30610
30702
  return false;
@@ -30625,7 +30717,7 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30625
30717
  );
30626
30718
  const [parseNestedJson, setParseNestedJson] = useState16(true);
30627
30719
  if (!selectedEvent) {
30628
- return /* @__PURE__ */ jsx140(Box15, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx140(Typography10, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
30720
+ return /* @__PURE__ */ jsx141(Box16, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ jsx141(Typography11, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
30629
30721
  }
30630
30722
  const isLambdaInvoke = checkIsLambdaInvoke(selectedEvent);
30631
30723
  const isSqsSendMessage = checkIsSqsSendMessage(selectedEvent);
@@ -30648,9 +30740,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30648
30740
  const exceptionPayload = tryParseJson(selectedEvent.attributes?.["localstack.aws.service.exception"]);
30649
30741
  const hasPayloads = requestPayload !== void 0 || responsePayload !== void 0 || exceptionPayload !== void 0 || isResponseSuppressed;
30650
30742
  const duration = selectedEvent.end_time_unix_nano ? ((BigInt(selectedEvent.end_time_unix_nano) - BigInt(selectedEvent.start_time_unix_nano)) / BigInt("1000000")).toString() : void 0;
30651
- return /* @__PURE__ */ jsxs130(Box15, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30652
- /* @__PURE__ */ jsxs130(
30653
- Box15,
30743
+ return /* @__PURE__ */ jsxs131(Box16, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30744
+ /* @__PURE__ */ jsxs131(
30745
+ Box16,
30654
30746
  {
30655
30747
  sx: {
30656
30748
  alignItems: "center",
@@ -30662,63 +30754,63 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30662
30754
  py: 1
30663
30755
  },
30664
30756
  children: [
30665
- /* @__PURE__ */ jsx140(Box15, { children: /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30666
- onClose && /* @__PURE__ */ jsx140(IconButton4, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx140(Close2, {}) })
30757
+ /* @__PURE__ */ jsx141(Box16, { children: /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30758
+ onClose && /* @__PURE__ */ jsx141(IconButton4, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ jsx141(Close2, {}) })
30667
30759
  ]
30668
30760
  }
30669
30761
  ),
30670
- /* @__PURE__ */ jsx140(Box15, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 2, children: [
30671
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs130(Stack2, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30672
- /* @__PURE__ */ jsxs130(Box15, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30673
- /* @__PURE__ */ jsxs130(Box15, { children: [
30674
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30675
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30762
+ /* @__PURE__ */ jsx141(Box16, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 2, children: [
30763
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ jsxs131(Stack2, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30764
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30765
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30766
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30767
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30676
30768
  ] }),
30677
- /* @__PURE__ */ jsxs130(Box15, { children: [
30678
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30679
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30769
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30770
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30771
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30680
30772
  ] })
30681
30773
  ] }),
30682
- /* @__PURE__ */ jsxs130(Box15, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30683
- /* @__PURE__ */ jsxs130(Box15, { children: [
30684
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30685
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30774
+ /* @__PURE__ */ jsxs131(Box16, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30775
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30776
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30777
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30686
30778
  ] }),
30687
- Boolean(cfnResourceType) && /* @__PURE__ */ jsxs130(Box15, { children: [
30688
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30689
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30779
+ Boolean(cfnResourceType) && /* @__PURE__ */ jsxs131(Box16, { children: [
30780
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30781
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30690
30782
  ] })
30691
30783
  ] }),
30692
- Boolean(resourceArn) && /* @__PURE__ */ jsxs130(Box15, { children: [
30693
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30694
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30784
+ Boolean(resourceArn) && /* @__PURE__ */ jsxs131(Box16, { children: [
30785
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30786
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30695
30787
  ] }),
30696
- /* @__PURE__ */ jsxs130(Box15, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30697
- /* @__PURE__ */ jsxs130(Box15, { children: [
30698
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30699
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30788
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30789
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30790
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30791
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30700
30792
  ] }),
30701
- /* @__PURE__ */ jsxs130(Box15, { children: [
30702
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30703
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30793
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30794
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30795
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30704
30796
  ] })
30705
30797
  ] }),
30706
- /* @__PURE__ */ jsxs130(Box15, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30707
- /* @__PURE__ */ jsxs130(Box15, { children: [
30708
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30709
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30798
+ /* @__PURE__ */ jsxs131(Box16, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30799
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30800
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30801
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30710
30802
  ] }),
30711
- duration !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30712
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30713
- /* @__PURE__ */ jsxs130(Typography10, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30803
+ duration !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30804
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30805
+ /* @__PURE__ */ jsxs131(Typography11, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30714
30806
  duration,
30715
30807
  "ms"
30716
30808
  ] })
30717
30809
  ] })
30718
30810
  ] }),
30719
- /* @__PURE__ */ jsxs130(Box15, { children: [
30720
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30721
- /* @__PURE__ */ jsx140(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx140(
30811
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30812
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30813
+ /* @__PURE__ */ jsx141(Stack2, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ jsx141(
30722
30814
  Chip3,
30723
30815
  {
30724
30816
  color: selectedEvent.status_code === 2 ? "error" : selectedEvent.status_code === 1 ? "success" : "default",
@@ -30729,50 +30821,50 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30729
30821
  ) })
30730
30822
  ] })
30731
30823
  ] }) }),
30732
- /* @__PURE__ */ jsx140(Divider3, {}),
30733
- /* @__PURE__ */ jsxs130(ToggleSection, { headline: "Permissions", children: [
30734
- selectedEvent.iam_errors_suppressed && /* @__PURE__ */ jsx140(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" }),
30735
- !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ jsx140(Typography10, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30736
- eventGroups.permissions && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30737
- eventGroups.errors && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30738
- eventGroups.warnings && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30824
+ /* @__PURE__ */ jsx141(Divider4, {}),
30825
+ /* @__PURE__ */ jsxs131(ToggleSection, { headline: "Permissions", children: [
30826
+ 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" }),
30827
+ !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." }),
30828
+ eventGroups.permissions && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30829
+ eventGroups.errors && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30830
+ eventGroups.warnings && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30739
30831
  ] }),
30740
- hasPayloads && /* @__PURE__ */ jsxs130(Fragment10, { children: [
30741
- /* @__PURE__ */ jsx140(Divider3, {}),
30742
- /* @__PURE__ */ jsx140(
30832
+ hasPayloads && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30833
+ /* @__PURE__ */ jsx141(Divider4, {}),
30834
+ /* @__PURE__ */ jsx141(
30743
30835
  ToggleSection,
30744
30836
  {
30745
- action: /* @__PURE__ */ jsx140(
30837
+ action: /* @__PURE__ */ jsx141(
30746
30838
  FormControlLabel2,
30747
30839
  {
30748
- control: /* @__PURE__ */ jsx140(Switch, { checked: !parseNestedJson, onChange: (event) => {
30840
+ control: /* @__PURE__ */ jsx141(Switch, { checked: !parseNestedJson, onChange: (event) => {
30749
30841
  setParseNestedJson(!event.target.checked);
30750
30842
  }, size: "small" }),
30751
- label: /* @__PURE__ */ jsx140(Typography10, { variant: "caption", children: "View raw data" }),
30843
+ label: /* @__PURE__ */ jsx141(Typography11, { variant: "caption", children: "View raw data" }),
30752
30844
  sx: { mr: 0 }
30753
30845
  }
30754
30846
  ),
30755
30847
  headline: "Payloads",
30756
- children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 2, children: [
30757
- requestPayload !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30758
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30759
- /* @__PURE__ */ jsx140(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30848
+ children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 2, children: [
30849
+ requestPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30850
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30851
+ /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30760
30852
  ] }),
30761
- (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ jsxs130(Box15, { children: [
30762
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30763
- isResponseSuppressed ? /* @__PURE__ */ jsx140(Box15, { sx: { py: 1 }, children: /* @__PURE__ */ jsx140(Alert4, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ jsx140(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30853
+ (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ jsxs131(Box16, { children: [
30854
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30855
+ 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 })
30764
30856
  ] }),
30765
- exceptionPayload !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30766
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30767
- /* @__PURE__ */ jsx140(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30857
+ exceptionPayload !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30858
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30859
+ /* @__PURE__ */ jsx141(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30768
30860
  ] })
30769
30861
  ] })
30770
30862
  }
30771
30863
  )
30772
30864
  ] }),
30773
- isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs130(Fragment10, { children: [
30774
- /* @__PURE__ */ jsx140(Divider3, {}),
30775
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx140(
30865
+ isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ jsxs131(Fragment11, { children: [
30866
+ /* @__PURE__ */ jsx141(Divider4, {}),
30867
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ jsx141(
30776
30868
  LambdaInvokeLogsSection,
30777
30869
  {
30778
30870
  endTimeNano: selectedEvent.end_time_unix_nano ?? selectedEvent.start_time_unix_nano,
@@ -30783,21 +30875,21 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30783
30875
  }
30784
30876
  ) })
30785
30877
  ] }),
30786
- /* @__PURE__ */ jsx140(Divider3, {}),
30787
- /* @__PURE__ */ jsx140(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs130(Stack2, { spacing: 1, children: [
30788
- /* @__PURE__ */ jsxs130(Box15, { children: [
30789
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30790
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30878
+ /* @__PURE__ */ jsx141(Divider4, {}),
30879
+ /* @__PURE__ */ jsx141(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ jsxs131(Stack2, { spacing: 1, children: [
30880
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30881
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30882
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30791
30883
  ] }),
30792
- /* @__PURE__ */ jsxs130(Box15, { children: [
30793
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30794
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30884
+ /* @__PURE__ */ jsxs131(Box16, { children: [
30885
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30886
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30795
30887
  ] }),
30796
- requestId !== void 0 && /* @__PURE__ */ jsxs130(Box15, { children: [
30797
- /* @__PURE__ */ jsx140(Typography10, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30798
- /* @__PURE__ */ jsx140(Typography10, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30888
+ requestId !== void 0 && /* @__PURE__ */ jsxs131(Box16, { children: [
30889
+ /* @__PURE__ */ jsx141(Typography11, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30890
+ /* @__PURE__ */ jsx141(Typography11, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30799
30891
  ] }),
30800
- eventGroups.info && /* @__PURE__ */ jsx140(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30892
+ eventGroups.info && /* @__PURE__ */ jsx141(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30801
30893
  ] }) })
30802
30894
  ] }) })
30803
30895
  ] });
@@ -30810,27 +30902,27 @@ import { Background, MarkerType, Position as Position2, ReactFlow, useEdgesState
30810
30902
  import { useEffect as useEffect20 } from "react";
30811
30903
 
30812
30904
  // src/components/trace-graph/service-node.tsx
30813
- import { Box as Box17, Divider as Divider4, Stack as Stack3, Typography as Typography11, useTheme as useTheme4 } from "@mui/material";
30905
+ import { Box as Box18, Divider as Divider5, Stack as Stack3, Typography as Typography12, useTheme as useTheme4 } from "@mui/material";
30814
30906
  import "@xyflow/react/dist/style.css";
30815
30907
  import { Handle, Position } from "@xyflow/react";
30816
30908
  import { memo as memo11 } from "react";
30817
30909
 
30818
30910
  // src/components/trace-graph/problem-indicator.tsx
30819
30911
  import { Error as ErrorIcon2, Info as Info2, Warning as Warning2 } from "@mui/icons-material";
30820
- import { Box as Box16, Tooltip as Tooltip4 } from "@mui/material";
30912
+ import { Box as Box17, Tooltip as Tooltip5 } from "@mui/material";
30821
30913
  import { useMemo as useMemo13 } from "react";
30822
- import { jsx as jsx141 } from "react/jsx-runtime";
30914
+ import { jsx as jsx142 } from "react/jsx-runtime";
30823
30915
  var ProblemIndicator = ({ error }) => {
30824
30916
  const icon = useMemo13(() => {
30825
30917
  switch (error.level) {
30826
30918
  case "error": {
30827
- return /* @__PURE__ */ jsx141(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
30919
+ return /* @__PURE__ */ jsx142(ErrorIcon2, { sx: { color: "#d32f2f", fontSize: "14px" } });
30828
30920
  }
30829
30921
  case "warning": {
30830
- return /* @__PURE__ */ jsx141(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
30922
+ return /* @__PURE__ */ jsx142(Warning2, { sx: { color: "#ff9800", fontSize: "14px" } });
30831
30923
  }
30832
30924
  default: {
30833
- return /* @__PURE__ */ jsx141(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
30925
+ return /* @__PURE__ */ jsx142(Info2, { sx: { color: "#2196f3", fontSize: "14px" } });
30834
30926
  }
30835
30927
  }
30836
30928
  }, [error.level]);
@@ -30847,8 +30939,8 @@ var ProblemIndicator = ({ error }) => {
30847
30939
  }
30848
30940
  }
30849
30941
  }, [error.level]);
30850
- return /* @__PURE__ */ jsx141(Tooltip4, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx141(
30851
- Box16,
30942
+ return /* @__PURE__ */ jsx142(Tooltip5, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ jsx142(
30943
+ Box17,
30852
30944
  {
30853
30945
  sx: {
30854
30946
  alignItems: "center",
@@ -30867,7 +30959,7 @@ var ProblemIndicator = ({ error }) => {
30867
30959
  };
30868
30960
 
30869
30961
  // src/components/trace-graph/service-node.tsx
30870
- import { jsx as jsx142, jsxs as jsxs131 } from "react/jsx-runtime";
30962
+ import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
30871
30963
  var handleStyle = {
30872
30964
  backgroundColor: "white",
30873
30965
  borderColor: "lightgray",
@@ -30876,8 +30968,8 @@ var handleStyle = {
30876
30968
  var ServiceNode = memo11(({ data, selected }) => {
30877
30969
  const theme = useTheme4();
30878
30970
  const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false;
30879
- return /* @__PURE__ */ jsxs131(
30880
- Box17,
30971
+ return /* @__PURE__ */ jsxs132(
30972
+ Box18,
30881
30973
  {
30882
30974
  "data-testid": SERVICE_NODE_TEST_ID,
30883
30975
  role: "button",
@@ -30899,19 +30991,19 @@ var ServiceNode = memo11(({ data, selected }) => {
30899
30991
  },
30900
30992
  tabIndex: 0,
30901
30993
  children: [
30902
- /* @__PURE__ */ jsx142(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
30903
- /* @__PURE__ */ jsx142(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
30904
- /* @__PURE__ */ jsxs131(
30994
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Left, style: handleStyle, type: "target" }),
30995
+ /* @__PURE__ */ jsx143(Handle, { position: Position.Right, style: handleStyle, type: "source" }),
30996
+ /* @__PURE__ */ jsxs132(
30905
30997
  Stack3,
30906
30998
  {
30907
30999
  alignItems: "center",
30908
31000
  direction: "row",
30909
31001
  sx: { gap: "8px", pb: "2px", pt: "6px", px: "8px" },
30910
31002
  children: [
30911
- /* @__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" }) }),
30912
- /* @__PURE__ */ jsxs131(Stack3, { sx: { minWidth: 0 }, children: [
30913
- /* @__PURE__ */ jsx142(
30914
- Typography11,
31003
+ /* @__PURE__ */ jsx143(Box18, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ jsx143(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
31004
+ /* @__PURE__ */ jsxs132(Stack3, { sx: { minWidth: 0 }, children: [
31005
+ /* @__PURE__ */ jsx143(
31006
+ Typography12,
30915
31007
  {
30916
31008
  noWrap: true,
30917
31009
  sx: { fontWeight: 700, lineHeight: 1.25 },
@@ -30919,8 +31011,8 @@ var ServiceNode = memo11(({ data, selected }) => {
30919
31011
  children: getServiceDisplayName(data.event.service_name)
30920
31012
  }
30921
31013
  ),
30922
- data.event.resource_name != "" && /* @__PURE__ */ jsx142(
30923
- Typography11,
31014
+ data.event.resource_name != "" && /* @__PURE__ */ jsx143(
31015
+ Typography12,
30924
31016
  {
30925
31017
  color: "text.secondary",
30926
31018
  noWrap: true,
@@ -30933,16 +31025,16 @@ var ServiceNode = memo11(({ data, selected }) => {
30933
31025
  ]
30934
31026
  }
30935
31027
  ),
30936
- /* @__PURE__ */ jsx142(Divider4, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
30937
- /* @__PURE__ */ jsxs131(
31028
+ /* @__PURE__ */ jsx143(Divider5, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
31029
+ /* @__PURE__ */ jsxs132(
30938
31030
  Stack3,
30939
31031
  {
30940
31032
  alignItems: "center",
30941
31033
  direction: "row",
30942
31034
  sx: { minWidth: 0, pb: "5px", pr: "8px", pt: "1px" },
30943
31035
  children: [
30944
- /* @__PURE__ */ jsx142(
30945
- Box17,
31036
+ /* @__PURE__ */ jsx143(
31037
+ Box18,
30946
31038
  {
30947
31039
  sx: {
30948
31040
  alignItems: "center",
@@ -30951,11 +31043,11 @@ var ServiceNode = memo11(({ data, selected }) => {
30951
31043
  justifyContent: "center",
30952
31044
  width: "38px"
30953
31045
  },
30954
- children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ jsx142(ProblemIndicator, { error }, error.span_id))
31046
+ children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ jsx143(ProblemIndicator, { error }, error.span_id))
30955
31047
  }
30956
31048
  ),
30957
- /* @__PURE__ */ jsx142(
30958
- Typography11,
31049
+ /* @__PURE__ */ jsx143(
31050
+ Typography12,
30959
31051
  {
30960
31052
  "data-testid": SERVICE_NODE_OPERATION_NAME_TEST_ID,
30961
31053
  noWrap: true,
@@ -31028,11 +31120,11 @@ var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
31028
31120
 
31029
31121
  // src/components/trace-graph/xyflow/controls.tsx
31030
31122
  import { Add, FitScreen, Remove } from "@mui/icons-material";
31031
- import { Box as Box18, IconButton as IconButton5 } from "@mui/material";
31123
+ import { Box as Box19, IconButton as IconButton5 } from "@mui/material";
31032
31124
  import { useReactFlow, useStore as useStore2 } from "@xyflow/react";
31033
31125
  import { memo as memo12 } from "react";
31034
31126
  import { shallow } from "zustand/shallow";
31035
- import { jsx as jsx143, jsxs as jsxs132 } from "react/jsx-runtime";
31127
+ import { jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31036
31128
  var selector = (s2) => ({
31037
31129
  isInteractive: s2.nodesDraggable || s2.nodesConnectable || s2.elementsSelectable,
31038
31130
  maxZoomReached: s2.transform[2] >= s2.maxZoom,
@@ -31050,8 +31142,8 @@ var Controls = memo12(() => {
31050
31142
  const onFitViewHandler = () => {
31051
31143
  void fitView();
31052
31144
  };
31053
- return /* @__PURE__ */ jsxs132(
31054
- Box18,
31145
+ return /* @__PURE__ */ jsxs133(
31146
+ Box19,
31055
31147
  {
31056
31148
  sx: {
31057
31149
  bottom: 0,
@@ -31064,33 +31156,33 @@ var Controls = memo12(() => {
31064
31156
  zIndex: 5
31065
31157
  },
31066
31158
  children: [
31067
- /* @__PURE__ */ jsx143(
31159
+ /* @__PURE__ */ jsx144(
31068
31160
  IconButton5,
31069
31161
  {
31070
31162
  className: "react-flow__controls-zoomin",
31071
31163
  disabled: maxZoomReached,
31072
31164
  onClick: onZoomInHandler,
31073
31165
  size: "small",
31074
- children: /* @__PURE__ */ jsx143(Add, {})
31166
+ children: /* @__PURE__ */ jsx144(Add, {})
31075
31167
  }
31076
31168
  ),
31077
- /* @__PURE__ */ jsx143(
31169
+ /* @__PURE__ */ jsx144(
31078
31170
  IconButton5,
31079
31171
  {
31080
31172
  className: "react-flow__controls-zoomout",
31081
31173
  disabled: minZoomReached,
31082
31174
  onClick: onZoomOutHandler,
31083
31175
  size: "small",
31084
- children: /* @__PURE__ */ jsx143(Remove, {})
31176
+ children: /* @__PURE__ */ jsx144(Remove, {})
31085
31177
  }
31086
31178
  ),
31087
- /* @__PURE__ */ jsx143(
31179
+ /* @__PURE__ */ jsx144(
31088
31180
  IconButton5,
31089
31181
  {
31090
31182
  className: "react-flow__controls-fitview",
31091
31183
  onClick: onFitViewHandler,
31092
31184
  size: "small",
31093
- children: /* @__PURE__ */ jsx143(FitScreen, {})
31185
+ children: /* @__PURE__ */ jsx144(FitScreen, {})
31094
31186
  }
31095
31187
  )
31096
31188
  ]
@@ -31099,7 +31191,7 @@ var Controls = memo12(() => {
31099
31191
  });
31100
31192
 
31101
31193
  // src/components/trace-graph/trace-graph.tsx
31102
- import { Fragment as Fragment11, jsx as jsx144, jsxs as jsxs133 } from "react/jsx-runtime";
31194
+ import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31103
31195
  var nodeTypes = {
31104
31196
  service: ServiceNode
31105
31197
  };
@@ -31162,11 +31254,11 @@ var TraceGraph = ({
31162
31254
  setEdges(layoutedEdges);
31163
31255
  }, [spans.data, initialFocusEventId, setNodes, setEdges]);
31164
31256
  const theme = useTheme5();
31165
- return /* @__PURE__ */ jsxs133(Fragment11, { children: [
31166
- spans.error && /* @__PURE__ */ jsxs133(
31257
+ return /* @__PURE__ */ jsxs134(Fragment12, { children: [
31258
+ spans.error && /* @__PURE__ */ jsxs134(
31167
31259
  Alert5,
31168
31260
  {
31169
- action: /* @__PURE__ */ jsx144(Button5, { onClick: () => {
31261
+ action: /* @__PURE__ */ jsx145(Button5, { onClick: () => {
31170
31262
  onRefresh();
31171
31263
  }, children: "Retry" }),
31172
31264
  severity: "error",
@@ -31177,7 +31269,7 @@ var TraceGraph = ({
31177
31269
  ]
31178
31270
  }
31179
31271
  ),
31180
- /* @__PURE__ */ jsxs133(
31272
+ /* @__PURE__ */ jsxs134(
31181
31273
  ReactFlow,
31182
31274
  {
31183
31275
  "data-testid": TRACE_GRAPH_TEST_ID,
@@ -31195,8 +31287,8 @@ var TraceGraph = ({
31195
31287
  onNodesChange,
31196
31288
  selectNodesOnDrag: false,
31197
31289
  children: [
31198
- /* @__PURE__ */ jsx144(Controls, {}),
31199
- /* @__PURE__ */ jsx144(
31290
+ /* @__PURE__ */ jsx145(Controls, {}),
31291
+ /* @__PURE__ */ jsx145(
31200
31292
  Background,
31201
31293
  {
31202
31294
  bgColor: theme.palette.background.default,
@@ -31210,7 +31302,7 @@ var TraceGraph = ({
31210
31302
  };
31211
31303
 
31212
31304
  // src/pages/trace-graph-page.tsx
31213
- import { Fragment as Fragment12, jsx as jsx145, jsxs as jsxs134 } from "react/jsx-runtime";
31305
+ import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31214
31306
  var HEADER_HEIGHT = 56;
31215
31307
  var DRAWER_WIDTH = "35%";
31216
31308
  var Main = styled("main", { shouldForwardProp: (property) => property !== "open" })(({ open, theme }) => ({
@@ -31259,8 +31351,8 @@ var TraceGraphView = ({
31259
31351
  traceId
31260
31352
  }) => {
31261
31353
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31262
- return /* @__PURE__ */ jsxs134(
31263
- Box19,
31354
+ return /* @__PURE__ */ jsxs135(
31355
+ Box20,
31264
31356
  {
31265
31357
  "data-testid": TRACE_GRAPH_PAGE_TEST_ID,
31266
31358
  sx: {
@@ -31272,13 +31364,13 @@ var TraceGraphView = ({
31272
31364
  overflow: "hidden"
31273
31365
  },
31274
31366
  children: [
31275
- /* @__PURE__ */ jsxs134(Box19, { sx: { display: "flex", width: "100%" }, children: [
31276
- /* @__PURE__ */ jsx145(Button6, { onClick: () => {
31367
+ /* @__PURE__ */ jsxs135(Box20, { sx: { display: "flex", width: "100%" }, children: [
31368
+ /* @__PURE__ */ jsx146(Button6, { onClick: () => {
31277
31369
  navigateToSpansList();
31278
- }, startIcon: /* @__PURE__ */ jsx145(ArrowBack, {}), children: "Go back" }),
31279
- /* @__PURE__ */ jsx145(Box19, { sx: { flexGrow: 1 } })
31370
+ }, startIcon: /* @__PURE__ */ jsx146(ArrowBack, {}), children: "Go back" }),
31371
+ /* @__PURE__ */ jsx146(Box20, { sx: { flexGrow: 1 } })
31280
31372
  ] }),
31281
- /* @__PURE__ */ jsx145(
31373
+ /* @__PURE__ */ jsx146(
31282
31374
  Paper3,
31283
31375
  {
31284
31376
  sx: {
@@ -31288,7 +31380,7 @@ var TraceGraphView = ({
31288
31380
  position: "relative",
31289
31381
  width: "100%"
31290
31382
  },
31291
- children: shouldShowStatusMessage ? /* @__PURE__ */ jsx145(
31383
+ children: shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31292
31384
  StatusMessage,
31293
31385
  {
31294
31386
  error: statusError,
@@ -31296,15 +31388,15 @@ var TraceGraphView = ({
31296
31388
  onRetry: handleRetry,
31297
31389
  status
31298
31390
  }
31299
- ) : /* @__PURE__ */ jsxs134(Fragment12, { children: [
31300
- /* @__PURE__ */ jsx145(Main, { open, children: /* @__PURE__ */ jsx145(
31301
- Box19,
31391
+ ) : /* @__PURE__ */ jsxs135(Fragment13, { children: [
31392
+ /* @__PURE__ */ jsx146(Main, { open, children: /* @__PURE__ */ jsx146(
31393
+ Box20,
31302
31394
  {
31303
31395
  sx: {
31304
31396
  height: "100%",
31305
31397
  overflow: "auto"
31306
31398
  },
31307
- children: traceId !== void 0 && /* @__PURE__ */ jsx145(ReactFlowProvider, { children: /* @__PURE__ */ jsx145(
31399
+ children: traceId !== void 0 && /* @__PURE__ */ jsx146(ReactFlowProvider, { children: /* @__PURE__ */ jsx146(
31308
31400
  TraceGraph,
31309
31401
  {
31310
31402
  initialFocusEventId: spanId,
@@ -31321,7 +31413,7 @@ var TraceGraphView = ({
31321
31413
  ) })
31322
31414
  }
31323
31415
  ) }),
31324
- /* @__PURE__ */ jsx145(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx145(EventDetails, { onClose: handleClose, selectedEvent }) })
31416
+ /* @__PURE__ */ jsx146(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ jsx146(EventDetails, { onClose: handleClose, selectedEvent }) })
31325
31417
  ] })
31326
31418
  }
31327
31419
  )
@@ -31414,7 +31506,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31414
31506
  const navigateToSpansList = useCallback11(() => {
31415
31507
  onClose?.();
31416
31508
  }, [onClose]);
31417
- return /* @__PURE__ */ jsx145(
31509
+ return /* @__PURE__ */ jsx146(
31418
31510
  TraceGraphView,
31419
31511
  {
31420
31512
  fetchError,
@@ -31439,7 +31531,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31439
31531
  };
31440
31532
 
31441
31533
  // src/pages/spans-list-page.tsx
31442
- import { Fragment as Fragment13, jsx as jsx146, jsxs as jsxs135 } from "react/jsx-runtime";
31534
+ import { Fragment as Fragment14, jsx as jsx147, jsxs as jsxs136 } from "react/jsx-runtime";
31443
31535
  var SpansListPage = () => {
31444
31536
  const api = useAppInspectorApi();
31445
31537
  const {
@@ -31486,9 +31578,9 @@ var SpansListPage = () => {
31486
31578
  void checkStatus();
31487
31579
  }, [api, checkStatus, clearFetchError]);
31488
31580
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31489
- return /* @__PURE__ */ jsxs135(Fragment13, { children: [
31490
- /* @__PURE__ */ jsxs135(
31491
- Box20,
31581
+ return /* @__PURE__ */ jsxs136(Fragment14, { children: [
31582
+ /* @__PURE__ */ jsxs136(
31583
+ Box21,
31492
31584
  {
31493
31585
  "data-testid": SPANS_LIST_PAGE_TEST_ID,
31494
31586
  sx: {
@@ -31503,7 +31595,7 @@ var SpansListPage = () => {
31503
31595
  width: "100%"
31504
31596
  },
31505
31597
  children: [
31506
- !checking && !shouldShowStatusMessage && /* @__PURE__ */ jsx146(
31598
+ !checking && !shouldShowStatusMessage && /* @__PURE__ */ jsx147(
31507
31599
  EmulatorVersionBanner,
31508
31600
  {
31509
31601
  compatibility: bannerDismissed && versionCompatibility === "warning" ? "ok" : versionCompatibility,
@@ -31513,7 +31605,7 @@ var SpansListPage = () => {
31513
31605
  } : void 0
31514
31606
  }
31515
31607
  ),
31516
- shouldShowStatusMessage ? /* @__PURE__ */ jsx146(
31608
+ shouldShowStatusMessage ? /* @__PURE__ */ jsx147(
31517
31609
  StatusMessage,
31518
31610
  {
31519
31611
  error: statusError,
@@ -31522,7 +31614,7 @@ var SpansListPage = () => {
31522
31614
  onRetry: handleRetry,
31523
31615
  status
31524
31616
  }
31525
- ) : /* @__PURE__ */ jsx146(
31617
+ ) : /* @__PURE__ */ jsx147(
31526
31618
  SpansList,
31527
31619
  {
31528
31620
  clearingSpans,
@@ -31550,7 +31642,7 @@ var SpansListPage = () => {
31550
31642
  ]
31551
31643
  }
31552
31644
  ),
31553
- selectedTraceId !== void 0 && /* @__PURE__ */ jsx146(TraceGraphPage, { onClose: () => {
31645
+ selectedTraceId !== void 0 && /* @__PURE__ */ jsx147(TraceGraphPage, { onClose: () => {
31554
31646
  setSelectedTraceId(void 0);
31555
31647
  }, spanId: selectedSpanId, traceId: selectedTraceId })
31556
31648
  ] });