@localstack/appinspector-ui 1.0.114 → 1.0.116

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.cjs CHANGED
@@ -2417,7 +2417,7 @@ __export(index_exports, {
2417
2417
  module.exports = __toCommonJS(index_exports);
2418
2418
 
2419
2419
  // src/pages/spans-list-page.tsx
2420
- var import_material23 = require("@mui/material");
2420
+ var import_material24 = require("@mui/material");
2421
2421
  var import_react69 = require("react");
2422
2422
 
2423
2423
  // src/api/errors.ts
@@ -2576,11 +2576,11 @@ var EmulatorVersionBanner = ({
2576
2576
  };
2577
2577
 
2578
2578
  // src/components/spans-list/spans-list.tsx
2579
- var import_material7 = require("@mui/material");
2579
+ var import_material8 = require("@mui/material");
2580
2580
 
2581
2581
  // src/components/spans-list/spans-data-grid.tsx
2582
- var import_icons_material2 = require("@mui/icons-material");
2583
- var import_material6 = require("@mui/material");
2582
+ var import_icons_material3 = require("@mui/icons-material");
2583
+ var import_material7 = require("@mui/material");
2584
2584
 
2585
2585
  // node_modules/@tanstack/react-table/build/lib/index.mjs
2586
2586
  var React = __toESM(require("react"), 1);
@@ -14868,11 +14868,182 @@ var ServiceCell = (0, import_react40.memo)(({
14868
14868
  });
14869
14869
  ServiceCell.displayName = "ServiceCell";
14870
14870
 
14871
- // src/components/spans-list/span-count-badge.tsx
14871
+ // src/components/cells/status-cell.tsx
14872
14872
  var import_icons_material = require("@mui/icons-material");
14873
14873
  var import_material5 = require("@mui/material");
14874
- var import_react41 = require("react");
14874
+
14875
+ // src/types/error-levels.ts
14876
+ var ErrorLevel = {
14877
+ ERROR: 3,
14878
+ // General error
14879
+ IAM_PERMISSION: 5,
14880
+ // IAM permission issues
14881
+ OK: 2,
14882
+ // OK
14883
+ // Standard OTEL status codes
14884
+ UNSET: 1,
14885
+ // Unset
14886
+ // Extended custom levels
14887
+ WARNING: 4
14888
+ // Warning
14889
+ };
14890
+
14891
+ // src/utils/iam-utils.ts
14892
+ function determinePermissionStatus(payload) {
14893
+ if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {
14894
+ return "explicitly_denied";
14895
+ }
14896
+ if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {
14897
+ return "explicitly_allowed";
14898
+ }
14899
+ if (payload.is_allowed) {
14900
+ return "implicitly_allowed";
14901
+ }
14902
+ return "implicitly_denied";
14903
+ }
14904
+ function formatPermissionStatus(status) {
14905
+ switch (status) {
14906
+ case "explicitly_allowed": {
14907
+ return "Explicitly Allowed";
14908
+ }
14909
+ case "explicitly_denied": {
14910
+ return "Explicitly Denied";
14911
+ }
14912
+ case "implicitly_allowed": {
14913
+ return "Implicitly Allowed";
14914
+ }
14915
+ case "implicitly_denied": {
14916
+ return "Implicitly Denied";
14917
+ }
14918
+ }
14919
+ }
14920
+ function getPermissionStatusColor(status) {
14921
+ switch (status) {
14922
+ case "explicitly_allowed":
14923
+ case "implicitly_allowed": {
14924
+ return "success.main";
14925
+ }
14926
+ case "explicitly_denied": {
14927
+ return "error.main";
14928
+ }
14929
+ case "implicitly_denied": {
14930
+ return "warning.main";
14931
+ }
14932
+ }
14933
+ }
14934
+ function parseIAMEvent(payloadString) {
14935
+ try {
14936
+ const payload = JSON.parse(payloadString);
14937
+ const permission = determinePermissionStatus(payload);
14938
+ const actions = [];
14939
+ const resources = [];
14940
+ if (payload.explicit_allows) {
14941
+ for (const allow of payload.explicit_allows) {
14942
+ if (!actions.includes(allow.action)) actions.push(allow.action);
14943
+ if (!resources.includes(allow.resource)) resources.push(allow.resource);
14944
+ }
14945
+ }
14946
+ if (payload.explicit_denies) {
14947
+ for (const deny of payload.explicit_denies) {
14948
+ if (!actions.includes(deny.action)) actions.push(deny.action);
14949
+ if (!resources.includes(deny.resource)) resources.push(deny.resource);
14950
+ }
14951
+ }
14952
+ if (payload.implicit_denies) {
14953
+ for (const deny of payload.implicit_denies) {
14954
+ if (!actions.includes(deny.action)) actions.push(deny.action);
14955
+ if (!resources.includes(deny.resource)) resources.push(deny.resource);
14956
+ }
14957
+ }
14958
+ return {
14959
+ details: {
14960
+ actions,
14961
+ explicitAllows: payload.explicit_allow_count,
14962
+ explicitDenies: payload.explicit_deny_count,
14963
+ implicitDenies: payload.implicit_deny_count,
14964
+ resources
14965
+ },
14966
+ operation: payload.operation,
14967
+ permission,
14968
+ principal: payload.principal_arn,
14969
+ service: payload.service
14970
+ };
14971
+ } catch (error) {
14972
+ console.error("Error parsing IAM event payload:", error);
14973
+ return void 0;
14974
+ }
14975
+ }
14976
+
14977
+ // src/components/cells/status-cell.tsx
14875
14978
  var import_jsx_runtime126 = require("react/jsx-runtime");
14979
+ var StatusIcon = ({ errorLevel, spanStatusCode }) => {
14980
+ switch (errorLevel) {
14981
+ case ErrorLevel.ERROR: {
14982
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.Cancel, { sx: { color: "red" } });
14983
+ }
14984
+ case ErrorLevel.IAM_PERMISSION: {
14985
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.GppBad, { sx: { color: spanStatusCode === 2 ? "red" : "warning.main" } });
14986
+ }
14987
+ case ErrorLevel.WARNING: {
14988
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.Error, { sx: { color: "orange" } });
14989
+ }
14990
+ default: {
14991
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_jsx_runtime126.Fragment, {});
14992
+ }
14993
+ }
14994
+ };
14995
+ var calculateHighestErrorLevel = (span) => {
14996
+ const hasIamDenial = span.events.some((event) => {
14997
+ if (!event.event_type?.toLowerCase().includes("iam")) return false;
14998
+ if (typeof event.attributes?.payload !== "string") return false;
14999
+ const parsed = parseIAMEvent(event.attributes.payload);
15000
+ return parsed?.permission === "explicitly_denied" || parsed?.permission === "implicitly_denied";
15001
+ });
15002
+ if (hasIamDenial) return ErrorLevel.IAM_PERMISSION;
15003
+ if (span.status_code === 2) return ErrorLevel.ERROR;
15004
+ const hasErrorInErrors = span.errors?.some((error) => error.level === "error");
15005
+ if (hasErrorInErrors) return ErrorLevel.ERROR;
15006
+ const hasWarning = span.errors?.some((error) => error.level === "warning");
15007
+ if (hasWarning) return ErrorLevel.WARNING;
15008
+ return span.status_code || ErrorLevel.UNSET;
15009
+ };
15010
+ var SPAN_STATUS_LABELS = {
15011
+ 0: "Unset",
15012
+ 1: "OK",
15013
+ 2: "Error"
15014
+ };
15015
+ var buildTooltipContent = (span) => {
15016
+ const messages = [];
15017
+ if (span.status_message) messages.push(span.status_message);
15018
+ for (const error of span.errors ?? []) {
15019
+ if (error.message) messages.push(error.message);
15020
+ }
15021
+ const spanStatusLabel = SPAN_STATUS_LABELS[span.status_code] ?? `Unknown (${span.status_code.toString()})`;
15022
+ 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);
15023
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { children: [
15024
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Typography, { color: "inherit", display: "block", fontWeight: "bold", variant: "caption", children: [
15025
+ "Status: ",
15026
+ spanStatusLabel
15027
+ ] }),
15028
+ messages.map((message, index) => /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "inherit", display: "block", variant: "caption", children: message }, index)),
15029
+ iamDenials.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_jsx_runtime126.Fragment, { children: [
15030
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Divider, { sx: { borderColor: "rgba(255,255,255,0.2)", my: 0.5 } }),
15031
+ /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "inherit", display: "block", fontWeight: "bold", variant: "caption", children: "Permissions" }),
15032
+ iamDenials.map((denial, index) => denial !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "inherit", display: "block", variant: "caption", children: `${formatPermissionStatus(denial.permission)}: ${denial.service}.${denial.operation}` }, index))
15033
+ ] })
15034
+ ] });
15035
+ };
15036
+ var StatusIconWithTooltip = ({ span }) => {
15037
+ const errorLevel = calculateHighestErrorLevel(span);
15038
+ if (errorLevel !== ErrorLevel.ERROR && errorLevel !== ErrorLevel.IAM_PERMISSION) return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_jsx_runtime126.Fragment, {});
15039
+ return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Tooltip, { title: buildTooltipContent(span), children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Box, { sx: { alignItems: "center", cursor: "default", display: "flex" }, children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(StatusIcon, { errorLevel, spanStatusCode: span.status_code }) }) });
15040
+ };
15041
+
15042
+ // src/components/spans-list/span-count-badge.tsx
15043
+ var import_icons_material2 = require("@mui/icons-material");
15044
+ var import_material6 = require("@mui/material");
15045
+ var import_react41 = require("react");
15046
+ var import_jsx_runtime127 = require("react/jsx-runtime");
14876
15047
  var resolveBindingLimit = (systemLimit, licenseLimit) => {
14877
15048
  const numericLimits = [systemLimit, licenseLimit].filter((l2) => typeof l2 === "number");
14878
15049
  if (numericLimits.length > 0) return Math.min(...numericLimits);
@@ -14885,29 +15056,29 @@ var fmtLimit = (value) => {
14885
15056
  if (value === "unlimited") return "Unlimited";
14886
15057
  return fmt(value);
14887
15058
  };
14888
- var StatRow = ({ label, value }) => /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
14889
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
14890
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
15059
+ var StatRow = ({ label, value }) => /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { alignItems: "baseline", display: "flex", justifyContent: "space-between", minWidth: 220 }, children: [
15060
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.secondary", sx: { mr: 4 }, variant: "caption", children: label }),
15061
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { fontWeight: 600, variant: "body2", children: fmtLimit(value) })
14891
15062
  ] });
14892
15063
  var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) => {
14893
15064
  const [anchorElement, setAnchorElement] = (0, import_react41.useState)();
14894
15065
  const bindingLimit = resolveBindingLimit(systemLimit, licenseLimit);
14895
15066
  if (totalCount === void 0 && bindingLimit === void 0) {
14896
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_jsx_runtime126.Fragment, {});
15067
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_jsx_runtime127.Fragment, {});
14897
15068
  }
14898
15069
  if (visibleCount !== void 0) totalCount = Math.max(totalCount ?? 0, visibleCount);
14899
15070
  const isLoading = totalCount === void 0;
14900
15071
  const isOpen = anchorElement !== void 0;
14901
15072
  const systemLimitReached = typeof systemLimit === "number" && totalCount !== void 0 && totalCount >= systemLimit;
14902
15073
  const licenseLimitReached = typeof licenseLimit === "number" && totalCount !== void 0 && totalCount >= licenseLimit;
14903
- return /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
14904
- isLoading ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
14905
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "text.secondary", variant: "caption", children: "Showing" }),
14906
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
14907
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
15074
+ return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { alignItems: "center", display: "flex", gap: 0.25 }, children: [
15075
+ isLoading ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Skeleton, { sx: { minWidth: 120 } }) : /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { alignItems: "baseline", display: "flex", gap: 0.5 }, children: [
15076
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.secondary", variant: "caption", children: "Showing" }),
15077
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { variant: "body2", children: visibleCount === void 0 ? "\u2014" : fmt(visibleCount) }),
15078
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.secondary", variant: "caption", children: `of ${totalCount === void 0 ? "-" : fmt(totalCount)} operations` })
14908
15079
  ] }),
14909
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Tooltip, { title: "Operation count details", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
14910
- import_material5.IconButton,
15080
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { title: "Operation count details", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15081
+ import_material6.IconButton,
14911
15082
  {
14912
15083
  "aria-describedby": isOpen ? "operation-count-popover" : void 0,
14913
15084
  onClick: (event) => {
@@ -14915,11 +15086,11 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14915
15086
  },
14916
15087
  size: "small",
14917
15088
  sx: { color: systemLimitReached || licenseLimitReached ? "warning.main" : "text.disabled" },
14918
- children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.InfoOutlined, { sx: { fontSize: 14 } })
15089
+ children: systemLimitReached || licenseLimitReached ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.WarningAmberOutlined, { sx: { fontSize: 14 } }) : /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.InfoOutlined, { sx: { fontSize: 14 } })
14919
15090
  }
14920
15091
  ) }),
14921
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
14922
- import_material5.Popover,
15092
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15093
+ import_material6.Popover,
14923
15094
  {
14924
15095
  anchorEl: anchorElement,
14925
15096
  anchorOrigin: { horizontal: "right", vertical: "bottom" },
@@ -14929,55 +15100,55 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14929
15100
  },
14930
15101
  open: isOpen,
14931
15102
  transformOrigin: { horizontal: "right", vertical: "top" },
14932
- children: /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { minWidth: 240, p: 2 }, children: [
14933
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { fontWeight: 700, variant: "body2", children: "Storage" }),
14934
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
14935
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
14936
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
15103
+ children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { minWidth: 240, p: 2 }, children: [
15104
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { fontWeight: 700, variant: "body2", children: "Storage" }),
15105
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.secondary", sx: { mt: 0.25 }, variant: "caption", children: "How many operations are currently stored." }),
15106
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { display: "flex", flexDirection: "column", gap: 0.75, mt: 1.5 }, children: [
15107
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
14937
15108
  StatRow,
14938
15109
  {
14939
- label: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Tooltip, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
15110
+ label: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { placement: "left", title: "The number of operations currently loaded in the UI.", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Currently visible" }) }),
14940
15111
  value: visibleCount
14941
15112
  }
14942
15113
  ),
14943
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
15114
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
14944
15115
  StatRow,
14945
15116
  {
14946
- label: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Tooltip, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
15117
+ label: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { placement: "left", title: "The total number of operations stored on the server.", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "Total stored" }) }),
14947
15118
  value: totalCount
14948
15119
  }
14949
15120
  )
14950
15121
  ] }),
14951
- (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_jsx_runtime126.Fragment, { children: [
14952
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Divider, { sx: { my: 1.5 } }),
14953
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
14954
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { 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." }),
14955
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
14956
- licenseLimit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
15122
+ (systemLimit !== void 0 || licenseLimit !== void 0) && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
15123
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Divider, { sx: { my: 1.5 } }),
15124
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.secondary", fontWeight: 600, variant: "caption", children: "Limits" }),
15125
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { 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." }),
15126
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { display: "flex", flexDirection: "column", gap: 0.75 }, children: [
15127
+ licenseLimit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
14957
15128
  StatRow,
14958
15129
  {
14959
- label: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Tooltip, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
15130
+ label: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { placement: "left", title: "The maximum number of operations allowed by your current license.", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "License limit" }) }),
14960
15131
  value: licenseLimit
14961
15132
  }
14962
15133
  ),
14963
- systemLimit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
15134
+ systemLimit !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
14964
15135
  StatRow,
14965
15136
  {
14966
- label: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Tooltip, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
15137
+ label: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { placement: "left", title: "The maximum number of operations that can be stored in the system.", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { component: "span", sx: { borderBottom: "1px dashed", borderColor: "text.secondary", cursor: "help" }, children: "System limit" }) }),
14967
15138
  value: systemLimit
14968
15139
  }
14969
15140
  )
14970
15141
  ] })
14971
15142
  ] }),
14972
- (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
14973
- licenseLimitReached && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
14974
- /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
14975
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
14976
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
15143
+ (systemLimitReached || licenseLimitReached) && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { display: "flex", flexDirection: "column", gap: 1, mt: 1.5 }, children: [
15144
+ licenseLimitReached && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { backgroundColor: "warning.main", borderRadius: 1, p: 1.5 }, children: [
15145
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75, mb: 0.75 }, children: [
15146
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.WarningAmberOutlined, { sx: { color: "warning.contrastText", fontSize: 14, mt: "1px" } }),
15147
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "warning.contrastText", fontWeight: 600, variant: "caption", children: "License limit reached" })
14977
15148
  ] }),
14978
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
14979
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(
14980
- import_material5.Button,
15149
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "warning.contrastText", sx: { display: "block", mb: 1 }, variant: "caption", children: "Newer operations are being dropped. Upgrade your license to increase the retention limit." }),
15150
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15151
+ import_material6.Button,
14981
15152
  {
14982
15153
  color: "inherit",
14983
15154
  href: "https://localstack.cloud/pricing",
@@ -14989,9 +15160,9 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
14989
15160
  }
14990
15161
  )
14991
15162
  ] }),
14992
- systemLimitReached && !licenseLimitReached && /* @__PURE__ */ (0, import_jsx_runtime126.jsxs)(import_material5.Box, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
14993
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_icons_material.WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
14994
- /* @__PURE__ */ (0, import_jsx_runtime126.jsx)(import_material5.Typography, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
15163
+ systemLimitReached && !licenseLimitReached && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { alignItems: "flex-start", display: "flex", gap: 0.75 }, children: [
15164
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.WarningAmberOutlined, { color: "warning", sx: { fontSize: 14, mt: "1px" } }),
15165
+ /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "warning.main", variant: "caption", children: "System limit reached \u2014 newer operations are being dropped." })
14995
15166
  ] })
14996
15167
  ] })
14997
15168
  ] })
@@ -15001,7 +15172,7 @@ var SpanCountBadge = ({ licenseLimit, systemLimit, totalCount, visibleCount }) =
15001
15172
  };
15002
15173
 
15003
15174
  // src/components/spans-list/spans-data-grid.tsx
15004
- var import_jsx_runtime127 = require("react/jsx-runtime");
15175
+ var import_jsx_runtime128 = require("react/jsx-runtime");
15005
15176
  var columnHelper = createColumnHelper();
15006
15177
  var newSpanBackgroundColor = {
15007
15178
  dark: { from: "rgba(136, 123, 2, 1)", to: "rgba(136, 123, 2, 0)" },
@@ -15013,16 +15184,16 @@ var LABEL_NO_SPANS = "There are no operations";
15013
15184
  var LABEL_LOAD_OLDER = "Load older operations";
15014
15185
  var LABEL_LOAD_NEWER = "Load newer operations";
15015
15186
  var STICK_TO_EDGE_THRESHOLD_PX = 4;
15016
- var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { children: label }) }) });
15017
- var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.TableCell, { colSpan, sx: { textAlign: "center" }, children: [
15018
- !fetching && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Button, { onClick: onFetch, sx: { my: 1 }, children: label }),
15019
- fetching && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.CircularProgress, { size: 24, sx: { m: 2 } })
15187
+ var StreamBoundaryRow = ({ colSpan, label }) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableCell, { colSpan, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { children: label }) }) });
15188
+ var LoadSpansRow = ({ colSpan, fetching, label, onFetch }) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_material7.TableCell, { colSpan, sx: { textAlign: "center" }, children: [
15189
+ !fetching && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Button, { onClick: onFetch, sx: { my: 1 }, children: label }),
15190
+ fetching && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.CircularProgress, { size: 24, sx: { m: 2 } })
15020
15191
  ] }) });
15021
15192
  var SpansDataGridRow = (0, import_react42.memo)(
15022
15193
  ({ onSpanClick, row }) => {
15023
- const theme = (0, import_material6.useTheme)();
15024
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15025
- import_material6.TableRow,
15194
+ const theme = (0, import_material7.useTheme)();
15195
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15196
+ import_material7.TableRow,
15026
15197
  {
15027
15198
  animate: {
15028
15199
  backgroundColor: theme.palette.mode === "light" ? newSpanBackgroundColor.light.to : newSpanBackgroundColor.dark.to
@@ -15040,16 +15211,16 @@ var SpansDataGridRow = (0, import_react42.memo)(
15040
15211
  transition: "background-color 1200ms ease-in"
15041
15212
  },
15042
15213
  children: row.getVisibleCells().map((cell) => {
15043
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15044
- import_material6.TableCell,
15214
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15215
+ import_material7.TableCell,
15045
15216
  {
15046
15217
  sx: {
15047
15218
  height: 36,
15048
15219
  maxWidth: `${cell.column.getSize().toString()}px`,
15049
15220
  minWidth: `${cell.column.getSize().toString()}px`
15050
15221
  },
15051
- children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15052
- import_material6.Box,
15222
+ children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15223
+ import_material7.Box,
15053
15224
  {
15054
15225
  sx: {
15055
15226
  "alignItems": "center",
@@ -15061,7 +15232,7 @@ var SpansDataGridRow = (0, import_react42.memo)(
15061
15232
  },
15062
15233
  "width": "100%"
15063
15234
  },
15064
- children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
15235
+ children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Box, { sx: { px: 1, width: "100%" }, children: flexRender(cell.column.columnDef.cell, cell.getContext()) })
15065
15236
  }
15066
15237
  )
15067
15238
  },
@@ -15098,9 +15269,9 @@ var SpansDataGrid = ({
15098
15269
  }) => {
15099
15270
  const columns = (0, import_react42.useMemo)(() => [
15100
15271
  columnHelper.accessor("startTime", {
15101
- cell: (props) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(ResponsiveTimestampCell, { date: props.getValue() }),
15102
- header: () => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15103
- import_material6.TableSortLabel,
15272
+ cell: (props) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(ResponsiveTimestampCell, { date: props.getValue() }),
15273
+ header: () => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15274
+ import_material7.TableSortLabel,
15104
15275
  {
15105
15276
  active: true,
15106
15277
  direction: order2 === "newest_first" ? "asc" : "desc",
@@ -15116,23 +15287,23 @@ var SpansDataGrid = ({
15116
15287
  columnHelper.display({
15117
15288
  cell: (props) => {
15118
15289
  if (!props.row.original.parent_service_name || !props.row.original.parent_resource_name) {
15119
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
15290
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { sx: { fontStyle: "italic" }, variant: "body2", children: "External producer" });
15120
15291
  }
15121
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
15292
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(ServiceCell, { resource: props.row.original.parent_resource_name, service: props.row.original.parent_service_name });
15122
15293
  },
15123
15294
  header: "Producer",
15124
15295
  id: "producer",
15125
15296
  size: 180
15126
15297
  }),
15127
15298
  columnHelper.accessor("operation_name", {
15128
- cell: (props) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15129
- import_material6.Box,
15299
+ cell: (props) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15300
+ import_material7.Box,
15130
15301
  {
15131
15302
  sx: {
15132
15303
  overflow: "hidden",
15133
15304
  textOverflow: "ellipsis"
15134
15305
  },
15135
- children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)("span", { title: props.getValue(), children: props.getValue() })
15306
+ children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)("span", { title: props.getValue(), children: props.getValue() })
15136
15307
  }
15137
15308
  ),
15138
15309
  header: "Action",
@@ -15141,7 +15312,7 @@ var SpansDataGrid = ({
15141
15312
  }),
15142
15313
  columnHelper.display({
15143
15314
  cell: (props) => {
15144
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
15315
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(ServiceCell, { resource: props.row.original.resource_name, service: props.row.original.service_name });
15145
15316
  },
15146
15317
  header: "Consumer",
15147
15318
  id: "consumer",
@@ -15149,24 +15320,26 @@ var SpansDataGrid = ({
15149
15320
  }),
15150
15321
  columnHelper.display({
15151
15322
  cell: (props) => {
15152
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { sx: { display: "flex", justifyContent: "flex-end" }, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15153
- import_material6.Button,
15154
- {
15155
- "data-testid": VIEW_SPAN_DETAILS_TEST_ID,
15156
- onClick: (event) => {
15157
- event.stopPropagation();
15158
- onSpanClick(props.row.original);
15159
- },
15160
- size: "small",
15161
- sx: { px: 1 },
15162
- variant: "text",
15163
- children: "View Details"
15164
- }
15165
- ) });
15323
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_material7.Box, { sx: { alignItems: "center", display: "flex", gap: 0.5, justifyContent: "flex-end" }, children: [
15324
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StatusIconWithTooltip, { span: props.row.original }),
15325
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15326
+ import_material7.Button,
15327
+ {
15328
+ "data-testid": VIEW_SPAN_DETAILS_TEST_ID,
15329
+ onClick: (event) => {
15330
+ event.stopPropagation();
15331
+ onSpanClick(props.row.original);
15332
+ },
15333
+ size: "small",
15334
+ sx: { px: 1 },
15335
+ variant: "text",
15336
+ children: "View Details"
15337
+ }
15338
+ )
15339
+ ] });
15166
15340
  },
15167
15341
  id: "actions",
15168
- // The actions column doesn't need more space
15169
- size: 96
15342
+ size: 128
15170
15343
  })
15171
15344
  ], [onSpanClick, onOrderChange, order2]);
15172
15345
  const table = useReactTable({
@@ -15199,46 +15372,46 @@ var SpansDataGrid = ({
15199
15372
  if (!element || !isAtLiveEdgeRef.current) return;
15200
15373
  element.scrollTop = element.scrollHeight;
15201
15374
  }, [order2, spans?.length, lastSpanId]);
15202
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
15203
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Grid, { item: true, xs: 12, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.Box, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
15204
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
15205
- errorCount !== void 0 && errorCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
15206
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15207
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { title: "Number of errors detected across all operations", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
15208
- import_material6.Box,
15375
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
15376
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Grid, { item: true, xs: 12, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_material7.Box, { sx: { alignItems: "center", display: "flex", gap: "0.5rem" }, children: [
15377
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SpanCountBadge, { licenseLimit, systemLimit, totalCount, visibleCount: spans?.length }),
15378
+ errorCount !== void 0 && errorCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
15379
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15380
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Tooltip, { title: "Number of errors detected across all operations", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
15381
+ import_material7.Box,
15209
15382
  {
15210
15383
  "data-testid": ERROR_COUNT_TEST_ID,
15211
15384
  sx: { alignItems: "center", borderBottom: "1px dotted", borderColor: "error.main", cursor: "default", display: "flex", gap: 0.5, mb: "-1px" },
15212
15385
  children: [
15213
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "error", variant: "body2", children: errorCount.toLocaleString() }),
15214
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "error", variant: "caption", children: errorCount === 1 ? "error" : "errors" })
15386
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { color: "error", variant: "body2", children: errorCount.toLocaleString() }),
15387
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { color: "error", variant: "caption", children: errorCount === 1 ? "error" : "errors" })
15215
15388
  ]
15216
15389
  }
15217
15390
  ) })
15218
15391
  ] }),
15219
- warningCount !== void 0 && warningCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
15220
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15221
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Tooltip, { title: "Number of warnings detected across all operations", children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
15222
- import_material6.Box,
15392
+ warningCount !== void 0 && warningCount > 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
15393
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { color: "text.disabled", sx: { mr: 0.5 }, variant: "body2", children: "\u2014" }),
15394
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Tooltip, { title: "Number of warnings detected across all operations", children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
15395
+ import_material7.Box,
15223
15396
  {
15224
15397
  "data-testid": WARNING_COUNT_TEST_ID,
15225
15398
  sx: { alignItems: "center", borderBottom: "1px dotted", borderColor: "warning.main", cursor: "default", display: "flex", gap: 0.5, mb: "-1px" },
15226
15399
  children: [
15227
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "warning.main", variant: "body2", children: warningCount.toLocaleString() }),
15228
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Typography, { color: "warning.main", variant: "caption", children: warningCount === 1 ? "warning" : "warnings" })
15400
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { color: "warning.main", variant: "body2", children: warningCount.toLocaleString() }),
15401
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Typography, { color: "warning.main", variant: "caption", children: warningCount === 1 ? "warning" : "warnings" })
15229
15402
  ]
15230
15403
  }
15231
15404
  ) })
15232
15405
  ] }),
15233
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Box, { sx: { flexGrow: 1 } }),
15234
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15235
- import_material6.FormControlLabel,
15406
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Box, { sx: { flexGrow: 1 } }),
15407
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15408
+ import_material7.FormControlLabel,
15236
15409
  {
15237
- control: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15238
- import_material6.Button,
15410
+ control: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15411
+ import_material7.Button,
15239
15412
  {
15240
15413
  onClick: onToggleStream,
15241
- startIcon: streamPaused ? /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.PlayArrowOutlined, {}) : /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.PauseOutlined, {}),
15414
+ startIcon: streamPaused ? /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_icons_material3.PlayArrowOutlined, {}) : /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_icons_material3.PauseOutlined, {}),
15242
15415
  variant: "text",
15243
15416
  children: streamPaused ? "Resume Stream" : "Pause Stream"
15244
15417
  }
@@ -15246,15 +15419,15 @@ var SpansDataGrid = ({
15246
15419
  label: ""
15247
15420
  }
15248
15421
  ),
15249
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15250
- import_material6.FormControlLabel,
15422
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15423
+ import_material7.FormControlLabel,
15251
15424
  {
15252
- control: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15253
- import_material6.Button,
15425
+ control: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15426
+ import_material7.Button,
15254
15427
  {
15255
15428
  "data-testid": CLEAR_SPANS_TEST_ID,
15256
15429
  onClick: onClearSpans,
15257
- startIcon: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_icons_material2.DeleteForeverOutlined, {}),
15430
+ startIcon: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_icons_material3.DeleteForeverOutlined, {}),
15258
15431
  children: "Clear Operations"
15259
15432
  }
15260
15433
  ),
@@ -15263,8 +15436,8 @@ var SpansDataGrid = ({
15263
15436
  }
15264
15437
  )
15265
15438
  ] }) }),
15266
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15267
- import_material6.TableContainer,
15439
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Paper, { sx: { flexGrow: 1, overflow: "hidden", position: "relative", width: "100%" }, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15440
+ import_material7.TableContainer,
15268
15441
  {
15269
15442
  onScroll: handleScroll,
15270
15443
  ref: containerRef,
@@ -15276,8 +15449,8 @@ var SpansDataGrid = ({
15276
15449
  right: 0,
15277
15450
  top: 0
15278
15451
  },
15279
- children: /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(
15280
- import_material6.Table,
15452
+ children: /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
15453
+ import_material7.Table,
15281
15454
  {
15282
15455
  stickyHeader: true,
15283
15456
  sx: {
@@ -15288,9 +15461,9 @@ var SpansDataGrid = ({
15288
15461
  "th+th": { pl: "8px !important" }
15289
15462
  },
15290
15463
  children: [
15291
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
15292
- return /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(
15293
- import_material6.TableCell,
15464
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableHead, { children: table.getHeaderGroups().map((headerGroup) => {
15465
+ return /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableRow, { children: headerGroup.headers.map((header) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15466
+ import_material7.TableCell,
15294
15467
  {
15295
15468
  colSpan: header.colSpan,
15296
15469
  sx: {
@@ -15304,31 +15477,31 @@ var SpansDataGrid = ({
15304
15477
  header.id
15305
15478
  )) }, headerGroup.id);
15306
15479
  }) }),
15307
- /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_material6.TableBody, { children: [
15308
- (spans === void 0 || clearingSpans) && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(import_material6.CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
15309
- !clearingSpans && spans?.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
15310
- !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
15311
- hasRows && hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15312
- hasRows && !hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
15313
- hasRows && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(AnimatePresence, { initial: false, children: (() => {
15480
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_material7.TableBody, { children: [
15481
+ (spans === void 0 || clearingSpans) && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableRow, { children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.TableCell, { colSpan: columnCount, sx: { fontStyle: "italic", textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.CircularProgress, { size: 48, sx: { m: 4 } }) }) }),
15482
+ !clearingSpans && spans?.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_NO_SPANS }),
15483
+ !clearingSpans && order2 === "newest_first" && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
15484
+ hasRows && hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15485
+ hasRows && !hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM }),
15486
+ hasRows && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(AnimatePresence, { initial: false, children: (() => {
15314
15487
  const reversed = [];
15315
15488
  for (let index = rows.length - 1; index >= 0; index--) {
15316
15489
  const row = rows.at(index);
15317
15490
  reversed.push(
15318
- /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)
15491
+ /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)
15319
15492
  );
15320
15493
  }
15321
15494
  return reversed;
15322
15495
  })() }),
15323
- hasRows && hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15324
- hasRows && !hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
15496
+ hasRows && hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15497
+ hasRows && !hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM })
15325
15498
  ] }),
15326
- !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ (0, import_jsx_runtime127.jsxs)(import_jsx_runtime127.Fragment, { children: [
15327
- hasRows && !hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
15328
- hasRows && hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15329
- hasRows && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)) }),
15330
- hasRows && hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15331
- hasRows && !hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime127.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
15499
+ !clearingSpans && order2 === "oldest_first" && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_jsx_runtime128.Fragment, { children: [
15500
+ hasRows && !hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_BEGINNING_OF_STREAM }),
15501
+ hasRows && hasMoreBackward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingBackward, label: LABEL_LOAD_OLDER, onFetch: onFetchBackward }),
15502
+ hasRows && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(AnimatePresence, { initial: false, children: rows.map((row) => /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(SpansDataGridRow, { onSpanClick, row }, row.original.span_id)) }),
15503
+ hasRows && hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(LoadSpansRow, { colSpan: columnCount, fetching: fetchingForward, label: LABEL_LOAD_NEWER, onFetch: onFetchForward }),
15504
+ hasRows && !hasMoreForward && /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(StreamBoundaryRow, { colSpan: columnCount, label: LABEL_END_OF_STREAM })
15332
15505
  ] })
15333
15506
  ] })
15334
15507
  ]
@@ -15340,13 +15513,13 @@ var SpansDataGrid = ({
15340
15513
  };
15341
15514
 
15342
15515
  // src/components/spans-list/spans-list.tsx
15343
- var import_jsx_runtime128 = require("react/jsx-runtime");
15516
+ var import_jsx_runtime129 = require("react/jsx-runtime");
15344
15517
  var SpansList = (props) => {
15345
- return /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(import_material7.Box, { "data-testid": SPANS_DATA_GRID_TEST_ID, sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
15346
- props.fetchError && /* @__PURE__ */ (0, import_jsx_runtime128.jsxs)(
15347
- import_material7.Alert,
15518
+ return /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_material8.Box, { "data-testid": SPANS_DATA_GRID_TEST_ID, sx: { display: "flex", flexDirection: "column", flexGrow: 1, gap: 2, width: "100%" }, children: [
15519
+ props.fetchError && /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
15520
+ import_material8.Alert,
15348
15521
  {
15349
- action: /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(import_material7.Button, { onClick: props.onFetchForward, children: "Retry" }),
15522
+ action: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Button, { onClick: props.onFetchForward, children: "Retry" }),
15350
15523
  severity: "error",
15351
15524
  children: [
15352
15525
  "Unexpected error:",
@@ -15355,7 +15528,7 @@ var SpansList = (props) => {
15355
15528
  ]
15356
15529
  }
15357
15530
  ),
15358
- /* @__PURE__ */ (0, import_jsx_runtime128.jsx)(
15531
+ /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15359
15532
  SpansDataGrid,
15360
15533
  {
15361
15534
  clearingSpans: props.clearingSpans,
@@ -15383,10 +15556,10 @@ var SpansList = (props) => {
15383
15556
  };
15384
15557
 
15385
15558
  // src/components/status-message/status-message.tsx
15386
- var import_icons_material3 = require("@mui/icons-material");
15387
- var import_material8 = require("@mui/material");
15559
+ var import_icons_material4 = require("@mui/icons-material");
15560
+ var import_material9 = require("@mui/material");
15388
15561
  var import_react43 = require("react");
15389
- var import_jsx_runtime129 = require("react/jsx-runtime");
15562
+ var import_jsx_runtime130 = require("react/jsx-runtime");
15390
15563
  var StatusMessage = ({
15391
15564
  error,
15392
15565
  localstackVersion,
@@ -15410,8 +15583,8 @@ var StatusMessage = ({
15410
15583
  };
15411
15584
  if (error instanceof AppInspectorNotFoundError) {
15412
15585
  const isBelowMinimum = localstackVersion !== void 0 && checkEmulatorVersion(localstackVersion) === "below-minimum";
15413
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15414
- import_material8.Box,
15586
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15587
+ import_material9.Box,
15415
15588
  {
15416
15589
  sx: {
15417
15590
  alignItems: "center",
@@ -15421,18 +15594,18 @@ var StatusMessage = ({
15421
15594
  justifyContent: "center",
15422
15595
  p: 4
15423
15596
  },
15424
- children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
15425
- import_material8.Alert,
15597
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
15598
+ import_material9.Alert,
15426
15599
  {
15427
- icon: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_icons_material3.ErrorOutline, { fontSize: "large" }),
15600
+ icon: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_icons_material4.ErrorOutline, { fontSize: "large" }),
15428
15601
  severity: "error",
15429
15602
  sx: { maxWidth: 600, width: "100%" },
15430
15603
  children: [
15431
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
15432
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { 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." }),
15433
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("strong", { children: "Update LocalStack:" }) }),
15434
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15435
- import_material8.Box,
15604
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Not Available" }),
15605
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { 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." }),
15606
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("strong", { children: "Update LocalStack:" }) }),
15607
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15608
+ import_material9.Box,
15436
15609
  {
15437
15610
  component: "pre",
15438
15611
  sx: {
@@ -15444,8 +15617,8 @@ var StatusMessage = ({
15444
15617
  children: "localstack update docker-images"
15445
15618
  }
15446
15619
  ),
15447
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Box, { sx: { display: "flex", gap: 1, mt: 2 }, children: onRetry && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15448
- import_material8.Button,
15620
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Box, { sx: { display: "flex", gap: 1, mt: 2 }, children: onRetry && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15621
+ import_material9.Button,
15449
15622
  {
15450
15623
  "aria-label": "Check App Inspector status again",
15451
15624
  disabled: enabling,
@@ -15461,8 +15634,8 @@ var StatusMessage = ({
15461
15634
  );
15462
15635
  }
15463
15636
  if (error instanceof ConnectionError) {
15464
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15465
- import_material8.Box,
15637
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15638
+ import_material9.Box,
15466
15639
  {
15467
15640
  sx: {
15468
15641
  alignItems: "center",
@@ -15472,18 +15645,18 @@ var StatusMessage = ({
15472
15645
  justifyContent: "center",
15473
15646
  p: 4
15474
15647
  },
15475
- children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
15476
- import_material8.Alert,
15648
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
15649
+ import_material9.Alert,
15477
15650
  {
15478
- icon: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_icons_material3.ErrorOutline, { fontSize: "large" }),
15651
+ icon: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_icons_material4.ErrorOutline, { fontSize: "large" }),
15479
15652
  severity: "error",
15480
15653
  sx: { maxWidth: 600, width: "100%" },
15481
15654
  children: [
15482
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
15483
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_material8.Typography, { sx: { mb: 2 }, variant: "body2", children: [
15655
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.AlertTitle, { sx: { fontWeight: "bold" }, children: "Connection Error" }),
15656
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(import_material9.Typography, { sx: { mb: 2 }, variant: "body2", children: [
15484
15657
  "Failed to connect to LocalStack. Ensure ",
15485
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15486
- import_material8.Link,
15658
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15659
+ import_material9.Link,
15487
15660
  {
15488
15661
  href: "https://docs.localstack.cloud/aws/getting-started/installation/",
15489
15662
  rel: "noopener noreferrer",
@@ -15493,9 +15666,9 @@ var StatusMessage = ({
15493
15666
  ),
15494
15667
  " is running and accessible."
15495
15668
  ] }),
15496
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)("strong", { children: "Start LocalStack:" }) }),
15497
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15498
- import_material8.Box,
15669
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { sx: { mb: 1 }, variant: "body2", children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)("strong", { children: "Start LocalStack:" }) }),
15670
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15671
+ import_material9.Box,
15499
15672
  {
15500
15673
  component: "pre",
15501
15674
  sx: {
@@ -15507,8 +15680,8 @@ var StatusMessage = ({
15507
15680
  children: "localstack start"
15508
15681
  }
15509
15682
  ),
15510
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Box, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15511
- import_material8.Button,
15683
+ onRetry && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Box, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15684
+ import_material9.Button,
15512
15685
  {
15513
15686
  "aria-label": "Retry connection to LocalStack",
15514
15687
  onClick: onRetry,
@@ -15523,8 +15696,8 @@ var StatusMessage = ({
15523
15696
  );
15524
15697
  }
15525
15698
  if (error instanceof AppInspectorDisabledError || status?.status === "DISABLED") {
15526
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15527
- import_material8.Box,
15699
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15700
+ import_material9.Box,
15528
15701
  {
15529
15702
  sx: {
15530
15703
  alignItems: "center",
@@ -15534,43 +15707,31 @@ var StatusMessage = ({
15534
15707
  justifyContent: "center",
15535
15708
  p: 4
15536
15709
  },
15537
- children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
15538
- import_material8.Alert,
15710
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
15711
+ import_material9.Alert,
15539
15712
  {
15540
- icon: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_icons_material3.InfoOutlined, { fontSize: "large" }),
15713
+ icon: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_icons_material4.InfoOutlined, { fontSize: "large" }),
15541
15714
  severity: "warning",
15542
15715
  sx: { maxWidth: 600, width: "100%" },
15543
15716
  children: [
15544
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Is Not Enabled" }),
15545
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is not currently enabled in LocalStack. You can enable it now, or at startup." }),
15546
- /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(import_material8.Box, { sx: { display: "flex", gap: 1, mb: 2 }, children: [
15547
- onEnable && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15548
- import_material8.Button,
15549
- {
15550
- "aria-label": "Enable App Inspector Now",
15551
- disabled: enabling,
15552
- onClick: () => {
15553
- void handleEnable();
15554
- },
15555
- startIcon: enabling ? /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.CircularProgress, { size: 16 }) : void 0,
15556
- variant: "contained",
15557
- children: "Enable App Inspector Now"
15558
- }
15559
- ),
15560
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15561
- import_material8.Button,
15562
- {
15563
- "aria-label": "Check if App Inspector is enabled",
15564
- disabled: enabling,
15565
- onClick: onRetry,
15566
- variant: "outlined",
15567
- children: "Check Again"
15568
- }
15569
- )
15570
- ] }),
15571
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15572
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15573
- import_material8.Box,
15717
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.AlertTitle, { sx: { fontWeight: "bold" }, children: "App Inspector Is Not Enabled" }),
15718
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { sx: { mb: 2 }, variant: "body2", children: "App Inspector is not currently enabled in LocalStack. You can enable it now, or at startup." }),
15719
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Box, { sx: { display: "flex", gap: 1, mb: 2 }, children: onEnable && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15720
+ import_material9.Button,
15721
+ {
15722
+ "aria-label": "Enable App Inspector Now",
15723
+ disabled: enabling,
15724
+ onClick: () => {
15725
+ void handleEnable();
15726
+ },
15727
+ startIcon: enabling ? /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.CircularProgress, { size: 16 }) : void 0,
15728
+ variant: "contained",
15729
+ children: "Enable App Inspector Now"
15730
+ }
15731
+ ) }),
15732
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { sx: { mb: 1 }, variant: "body2", children: "If you'd prefer to automatically enable App Inspector at start up, use:" }),
15733
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15734
+ import_material9.Box,
15574
15735
  {
15575
15736
  component: "pre",
15576
15737
  sx: {
@@ -15582,7 +15743,7 @@ var StatusMessage = ({
15582
15743
  children: "LOCALSTACK_APP_INSPECTOR=1 localstack start"
15583
15744
  }
15584
15745
  ),
15585
- Boolean(enableError) && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15746
+ Boolean(enableError) && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { color: "error", sx: { mt: 1 }, variant: "body2", children: enableError })
15586
15747
  ]
15587
15748
  }
15588
15749
  )
@@ -15590,8 +15751,8 @@ var StatusMessage = ({
15590
15751
  );
15591
15752
  }
15592
15753
  if (error) {
15593
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15594
- import_material8.Box,
15754
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15755
+ import_material9.Box,
15595
15756
  {
15596
15757
  sx: {
15597
15758
  alignItems: "center",
@@ -15601,17 +15762,17 @@ var StatusMessage = ({
15601
15762
  justifyContent: "center",
15602
15763
  p: 4
15603
15764
  },
15604
- children: /* @__PURE__ */ (0, import_jsx_runtime129.jsxs)(
15605
- import_material8.Alert,
15765
+ children: /* @__PURE__ */ (0, import_jsx_runtime130.jsxs)(
15766
+ import_material9.Alert,
15606
15767
  {
15607
- icon: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_icons_material3.ErrorOutline, { fontSize: "large" }),
15768
+ icon: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_icons_material4.ErrorOutline, { fontSize: "large" }),
15608
15769
  severity: "error",
15609
15770
  sx: { maxWidth: 600, width: "100%" },
15610
15771
  children: [
15611
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15612
- /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Typography, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15613
- onRetry && /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_material8.Box, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(
15614
- import_material8.Button,
15772
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.AlertTitle, { sx: { fontWeight: "bold" }, children: "Error" }),
15773
+ /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Typography, { sx: { mb: 2 }, variant: "body2", children: error.message }),
15774
+ onRetry && /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_material9.Box, { sx: { display: "flex", justifyContent: "flex-start", mt: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(
15775
+ import_material9.Button,
15615
15776
  {
15616
15777
  "aria-label": "Retry operation",
15617
15778
  onClick: onRetry,
@@ -15625,7 +15786,7 @@ var StatusMessage = ({
15625
15786
  }
15626
15787
  );
15627
15788
  }
15628
- return /* @__PURE__ */ (0, import_jsx_runtime129.jsx)(import_jsx_runtime129.Fragment, {});
15789
+ return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(import_jsx_runtime130.Fragment, {});
15629
15790
  };
15630
15791
 
15631
15792
  // src/hooks/status-provider.tsx
@@ -15674,7 +15835,7 @@ var useStatus = () => {
15674
15835
  };
15675
15836
 
15676
15837
  // src/hooks/status-provider.tsx
15677
- var import_jsx_runtime130 = require("react/jsx-runtime");
15838
+ var import_jsx_runtime131 = require("react/jsx-runtime");
15678
15839
  var AppInspectorStatusContext = (0, import_react45.createContext)(void 0);
15679
15840
  var StatusProvider = ({ children }) => {
15680
15841
  const { checking, checkStatus, error, status } = useStatus();
@@ -15685,7 +15846,7 @@ var StatusProvider = ({ children }) => {
15685
15846
  () => ({ checking, checkStatus, reportDisabled, status, statusError: error }),
15686
15847
  [checking, checkStatus, reportDisabled, status, error]
15687
15848
  );
15688
- return /* @__PURE__ */ (0, import_jsx_runtime130.jsx)(AppInspectorStatusContext.Provider, { value, children });
15849
+ return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(AppInspectorStatusContext.Provider, { value, children });
15689
15850
  };
15690
15851
  var useAppInspectorStatus = () => {
15691
15852
  const value = (0, import_react45.useContext)(AppInspectorStatusContext);
@@ -18104,7 +18265,7 @@ var useAppInspectorOpenAnalytics = () => {
18104
18265
  };
18105
18266
 
18106
18267
  // src/context.tsx
18107
- var import_jsx_runtime131 = require("react/jsx-runtime");
18268
+ var import_jsx_runtime132 = require("react/jsx-runtime");
18108
18269
  var AppInspectorContext = (0, import_react48.createContext)(void 0);
18109
18270
  var useAppInspector = () => {
18110
18271
  const context = (0, import_react48.useContext)(AppInspectorContext);
@@ -18115,7 +18276,7 @@ var useAppInspector = () => {
18115
18276
  };
18116
18277
  var AppInspectorAnalyticsBoundary = ({ children }) => {
18117
18278
  useAppInspectorOpenAnalytics();
18118
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(import_jsx_runtime131.Fragment, { children });
18279
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_jsx_runtime132.Fragment, { children });
18119
18280
  };
18120
18281
  var AppInspectorContextProvider = (props) => {
18121
18282
  const api = (0, import_react49.useMemo)(
@@ -18147,7 +18308,7 @@ var AppInspectorContextProvider = (props) => {
18147
18308
  }),
18148
18309
  [deploymentContainer, props.linkComponent, props.localstackEndpoint, resolveLink]
18149
18310
  );
18150
- return /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(ApiProvider, { api, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(StatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime131.jsx)(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18311
+ return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(ApiProvider, { api, children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(StatusProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(AppInspectorContext.Provider, { value: contextValue, children: /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(AppInspectorAnalyticsBoundary, { children: props.children }) }) }) });
18151
18312
  };
18152
18313
 
18153
18314
  // src/hooks/use-spans-ws.tsx
@@ -18433,103 +18594,17 @@ var useSpans = () => {
18433
18594
  };
18434
18595
 
18435
18596
  // src/pages/trace-graph-page.tsx
18436
- var import_icons_material12 = require("@mui/icons-material");
18437
- var import_material22 = require("@mui/material");
18597
+ var import_icons_material13 = require("@mui/icons-material");
18598
+ var import_material23 = require("@mui/material");
18438
18599
  var import_styles = require("@mui/material/styles");
18439
18600
  var import_react67 = require("@xyflow/react");
18440
18601
  var import_react68 = require("react");
18441
18602
 
18442
18603
  // src/components/event-details/event-details.tsx
18443
- var import_icons_material9 = require("@mui/icons-material");
18444
- var import_material17 = require("@mui/material");
18604
+ var import_icons_material10 = require("@mui/icons-material");
18605
+ var import_material18 = require("@mui/material");
18445
18606
  var import_react59 = require("react");
18446
18607
 
18447
- // src/utils/iam-utils.ts
18448
- function determinePermissionStatus(payload) {
18449
- if (payload.explicit_deny_count && payload.explicit_deny_count > 0) {
18450
- return "explicitly_denied";
18451
- }
18452
- if (payload.is_allowed && payload.explicit_allow_count && payload.explicit_allow_count > 0) {
18453
- return "explicitly_allowed";
18454
- }
18455
- if (payload.is_allowed) {
18456
- return "implicitly_allowed";
18457
- }
18458
- return "implicitly_denied";
18459
- }
18460
- function formatPermissionStatus(status) {
18461
- switch (status) {
18462
- case "explicitly_allowed": {
18463
- return "Explicitly Allowed";
18464
- }
18465
- case "explicitly_denied": {
18466
- return "Explicitly Denied";
18467
- }
18468
- case "implicitly_allowed": {
18469
- return "Implicitly Allowed";
18470
- }
18471
- case "implicitly_denied": {
18472
- return "Implicitly Denied";
18473
- }
18474
- }
18475
- }
18476
- function getPermissionStatusColor(status) {
18477
- switch (status) {
18478
- case "explicitly_allowed":
18479
- case "implicitly_allowed": {
18480
- return "success.main";
18481
- }
18482
- case "explicitly_denied": {
18483
- return "error.main";
18484
- }
18485
- case "implicitly_denied": {
18486
- return "warning.main";
18487
- }
18488
- }
18489
- }
18490
- function parseIAMEvent(payloadString) {
18491
- try {
18492
- const payload = JSON.parse(payloadString);
18493
- const permission = determinePermissionStatus(payload);
18494
- const actions = [];
18495
- const resources = [];
18496
- if (payload.explicit_allows) {
18497
- for (const allow of payload.explicit_allows) {
18498
- if (!actions.includes(allow.action)) actions.push(allow.action);
18499
- if (!resources.includes(allow.resource)) resources.push(allow.resource);
18500
- }
18501
- }
18502
- if (payload.explicit_denies) {
18503
- for (const deny of payload.explicit_denies) {
18504
- if (!actions.includes(deny.action)) actions.push(deny.action);
18505
- if (!resources.includes(deny.resource)) resources.push(deny.resource);
18506
- }
18507
- }
18508
- if (payload.implicit_denies) {
18509
- for (const deny of payload.implicit_denies) {
18510
- if (!actions.includes(deny.action)) actions.push(deny.action);
18511
- if (!resources.includes(deny.resource)) resources.push(deny.resource);
18512
- }
18513
- }
18514
- return {
18515
- details: {
18516
- actions,
18517
- explicitAllows: payload.explicit_allow_count,
18518
- explicitDenies: payload.explicit_deny_count,
18519
- implicitDenies: payload.implicit_deny_count,
18520
- resources
18521
- },
18522
- operation: payload.operation,
18523
- permission,
18524
- principal: payload.principal_arn,
18525
- service: payload.service
18526
- };
18527
- } catch (error) {
18528
- console.error("Error parsing IAM event payload:", error);
18529
- return void 0;
18530
- }
18531
- }
18532
-
18533
18608
  // src/utils/event-utils.ts
18534
18609
  var iamEventParser = (eventName, attributes) => {
18535
18610
  if (attributes?.payload && typeof attributes.payload === "string") {
@@ -18639,70 +18714,70 @@ var getEventGroupsByType = (events) => {
18639
18714
  };
18640
18715
 
18641
18716
  // src/components/event-details/event-detail.tsx
18642
- var import_icons_material7 = require("@mui/icons-material");
18643
- var import_material14 = require("@mui/material");
18717
+ var import_icons_material8 = require("@mui/icons-material");
18718
+ var import_material15 = require("@mui/material");
18644
18719
  var import_react56 = require("react");
18645
18720
 
18646
18721
  // src/components/status-icon.tsx
18647
- var import_icons_material4 = require("@mui/icons-material");
18648
- var import_material9 = require("@mui/material");
18649
- var import_jsx_runtime132 = require("react/jsx-runtime");
18650
- var StatusIcon = ({ errorLevel }) => {
18722
+ var import_icons_material5 = require("@mui/icons-material");
18723
+ var import_material10 = require("@mui/material");
18724
+ var import_jsx_runtime133 = require("react/jsx-runtime");
18725
+ var StatusIcon2 = ({ errorLevel }) => {
18651
18726
  switch (errorLevel) {
18652
18727
  case EventLevel.LevelError: {
18653
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_icons_material4.Cancel, { sx: { color: "red" } });
18728
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.Cancel, { sx: { color: "red" } });
18654
18729
  }
18655
18730
  case EventLevel.LevelInfo: {
18656
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_icons_material4.Info, { sx: { color: "gray" } });
18731
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.Info, { sx: { color: "gray" } });
18657
18732
  }
18658
18733
  case EventLevel.LevelPermission: {
18659
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_icons_material4.RemoveCircle, { sx: { color: "blue" } });
18734
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.RemoveCircle, { sx: { color: "blue" } });
18660
18735
  }
18661
18736
  case EventLevel.LevelWarning: {
18662
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_icons_material4.Error, { sx: { color: "orange" } });
18737
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.Error, { sx: { color: "orange" } });
18663
18738
  }
18664
18739
  default: {
18665
- return /* @__PURE__ */ (0, import_jsx_runtime132.jsx)(import_icons_material4.CheckCircle, { sx: { color: "lightgray" } });
18740
+ return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.CheckCircle, { sx: { color: "lightgray" } });
18666
18741
  }
18667
18742
  }
18668
18743
  };
18669
18744
 
18670
18745
  // src/components/event-details/iam-event-detail.tsx
18671
- var import_icons_material5 = require("@mui/icons-material");
18672
- var import_material10 = require("@mui/material");
18673
- var import_jsx_runtime133 = require("react/jsx-runtime");
18674
- var DetailRow = ({ content, label }) => /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18675
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18676
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Box, { children: typeof content === "string" ? /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18746
+ var import_icons_material6 = require("@mui/icons-material");
18747
+ var import_material11 = require("@mui/material");
18748
+ var import_jsx_runtime134 = require("react/jsx-runtime");
18749
+ var DetailRow = ({ content, label }) => /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18750
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18751
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { children: typeof content === "string" ? /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { sx: { color: "text.primary", wordBreak: "break-word" }, variant: "caption", children: content }) : content })
18677
18752
  ] });
18678
18753
  var PermissionIcon = ({ status }) => {
18679
18754
  switch (status) {
18680
18755
  case "explicitly_allowed":
18681
18756
  case "implicitly_allowed": {
18682
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.CheckCircle, { sx: { color: "success.main", fontSize: "1rem" } });
18757
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_icons_material6.CheckCircle, { sx: { color: "success.main", fontSize: "1rem" } });
18683
18758
  }
18684
18759
  case "explicitly_denied": {
18685
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.Error, { sx: { color: "error.main", fontSize: "1rem" } });
18760
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_icons_material6.Error, { sx: { color: "error.main", fontSize: "1rem" } });
18686
18761
  }
18687
18762
  case "implicitly_denied": {
18688
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_icons_material5.Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18763
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_icons_material6.Warning, { sx: { color: "warning.main", fontSize: "1rem" } });
18689
18764
  }
18690
18765
  }
18691
18766
  };
18692
18767
  var IAMEventDetail = ({ event }) => {
18693
18768
  const payloadString = event.attributes?.payload;
18694
18769
  if (!payloadString) {
18695
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18770
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", variant: "caption", children: "No IAM policy evaluation data available" });
18696
18771
  }
18697
18772
  const parsedIAM = parseIAMEvent(payloadString);
18698
18773
  if (!parsedIAM) {
18699
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18774
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", variant: "caption", children: "Failed to parse IAM event data" });
18700
18775
  }
18701
- return /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { children: [
18702
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Box, { sx: { mb: 1.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
18703
- import_material10.Chip,
18776
+ return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { children: [
18777
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { sx: { mb: 1.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
18778
+ import_material11.Chip,
18704
18779
  {
18705
- icon: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(PermissionIcon, { status: parsedIAM.permission }),
18780
+ icon: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(PermissionIcon, { status: parsedIAM.permission }),
18706
18781
  label: formatPermissionStatus(parsedIAM.permission),
18707
18782
  size: "small",
18708
18783
  sx: {
@@ -18712,36 +18787,36 @@ var IAMEventDetail = ({ event }) => {
18712
18787
  variant: "outlined"
18713
18788
  }
18714
18789
  ) }),
18715
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18716
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18717
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
18790
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(DetailRow, { content: `${parsedIAM.service}:${parsedIAM.operation}`, label: "Operation" }),
18791
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(DetailRow, { content: parsedIAM.principal, label: "Principal" }),
18792
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
18718
18793
  DetailRow,
18719
18794
  {
18720
- content: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Box, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18795
+ content: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { sx: { color: "text.primary", display: "block" }, variant: "caption", children: action }, action)) }),
18721
18796
  label: "Actions"
18722
18797
  }
18723
18798
  ),
18724
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(
18799
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(
18725
18800
  DetailRow,
18726
18801
  {
18727
- content: /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Box, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18802
+ content: /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { sx: { color: "text.primary", display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) }),
18728
18803
  label: "Resources"
18729
18804
  }
18730
18805
  ),
18731
- (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { sx: { mt: 1.5 }, children: [
18732
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18733
- /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18734
- parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { sx: { textAlign: "center" }, children: [
18735
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18736
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18806
+ (parsedIAM.details.explicitAllows !== void 0 || parsedIAM.details.explicitDenies !== void 0 || parsedIAM.details.implicitDenies !== void 0) && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { mt: 1.5 }, children: [
18807
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", sx: { display: "block", fontWeight: 600, mb: 0.5 }, variant: "caption", children: "Policy Evaluation" }),
18808
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "repeat(3, 1fr)" }, children: [
18809
+ parsedIAM.details.explicitAllows !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { textAlign: "center" }, children: [
18810
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "success.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitAllows }),
18811
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", variant: "caption", children: "Explicit Allows" })
18737
18812
  ] }),
18738
- parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { sx: { textAlign: "center" }, children: [
18739
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18740
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18813
+ parsedIAM.details.explicitDenies !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { textAlign: "center" }, children: [
18814
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "error.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.explicitDenies }),
18815
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", variant: "caption", children: "Explicit Denies" })
18741
18816
  ] }),
18742
- parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime133.jsxs)(import_material10.Box, { sx: { textAlign: "center" }, children: [
18743
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18744
- /* @__PURE__ */ (0, import_jsx_runtime133.jsx)(import_material10.Typography, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18817
+ parsedIAM.details.implicitDenies !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { textAlign: "center" }, children: [
18818
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "warning.main", sx: { display: "block", fontWeight: "bold" }, variant: "subtitle2", children: parsedIAM.details.implicitDenies }),
18819
+ /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", variant: "caption", children: "Implicit Denies" })
18745
18820
  ] })
18746
18821
  ] })
18747
18822
  ] })
@@ -18749,17 +18824,17 @@ var IAMEventDetail = ({ event }) => {
18749
18824
  };
18750
18825
 
18751
18826
  // src/components/event-details/iam-permission-detail.tsx
18752
- var import_icons_material6 = require("@mui/icons-material");
18753
- var import_material11 = require("@mui/material");
18827
+ var import_icons_material7 = require("@mui/icons-material");
18828
+ var import_material12 = require("@mui/material");
18754
18829
  var import_react53 = require("react");
18755
- var import_jsx_runtime134 = require("react/jsx-runtime");
18830
+ var import_jsx_runtime135 = require("react/jsx-runtime");
18756
18831
  var getChipColors = (status) => ({
18757
18832
  backgroundColor: getPermissionStatusColor(status),
18758
18833
  color: "white"
18759
18834
  });
18760
- var LabelValue = ({ label, value }) => /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18761
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18762
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18835
+ var LabelValue = ({ label, value }) => /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18836
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
18837
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Typography, { sx: { wordBreak: "break-all" }, variant: "caption", children: value })
18763
18838
  ] });
18764
18839
  var IAMPermissionItem = ({ event }) => {
18765
18840
  const [isOpen, setIsOpen] = (0, import_react53.useState)(false);
@@ -18774,39 +18849,39 @@ var IAMPermissionItem = ({ event }) => {
18774
18849
  return null;
18775
18850
  }
18776
18851
  const { chipColors, parsedIAM } = parsedData;
18777
- return /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { mb: 0.5 }, children: [
18778
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18779
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.IconButton, { onClick: () => {
18852
+ return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, { sx: { mb: 0.5 }, children: [
18853
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, { sx: { alignItems: "center", display: "flex", gap: 1 }, children: [
18854
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.IconButton, { onClick: () => {
18780
18855
  setIsOpen(!isOpen);
18781
- }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_icons_material6.KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_icons_material6.KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18782
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Chip, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18783
- /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Typography, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18856
+ }, size: "small", sx: { p: 0 }, children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_icons_material7.KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_icons_material7.KeyboardArrowRight, { sx: { fontSize: 16 } }) }),
18857
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Chip, { label: formatPermissionStatus(parsedIAM.permission), size: "small", sx: { ...chipColors, fontWeight: 500 } }),
18858
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Typography, { color: "text.secondary", noWrap: true, sx: { flex: 1, overflow: "hidden", textOverflow: "ellipsis" }, variant: "caption", children: [
18784
18859
  parsedIAM.service,
18785
18860
  ":",
18786
18861
  parsedIAM.operation
18787
18862
  ] })
18788
18863
  ] }),
18789
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18790
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18791
- parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18792
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18793
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18864
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: [
18865
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(LabelValue, { label: "Principal", value: parsedIAM.principal }),
18866
+ parsedIAM.details.actions && parsedIAM.details.actions.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
18867
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Actions" }),
18868
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, { children: parsedIAM.details.actions.map((action) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Typography, { sx: { display: "block" }, variant: "caption", children: action }, action)) })
18794
18869
  ] }),
18795
- parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime134.jsxs)(import_material11.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18796
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18797
- /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Typography, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18870
+ parsedIAM.details.resources && parsedIAM.details.resources.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr" }, children: [
18871
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: "Resources" }),
18872
+ /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, { children: parsedIAM.details.resources.map((resource) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Typography, { sx: { display: "block", wordBreak: "break-all" }, variant: "caption", children: resource }, resource)) })
18798
18873
  ] })
18799
18874
  ] })
18800
18875
  ] });
18801
18876
  };
18802
- var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(import_material11.Box, { children: events.map((event) => /* @__PURE__ */ (0, import_jsx_runtime134.jsx)(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18877
+ var IAMPermissionDetail = ({ events }) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, { children: events.map((event) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IAMPermissionItem, { event }, `${event.span_id}-${event.event_id}`)) });
18803
18878
 
18804
18879
  // src/components/event-details/payload-viewer.tsx
18805
- var import_material13 = require("@mui/material");
18880
+ var import_material14 = require("@mui/material");
18806
18881
 
18807
18882
  // node_modules/@textea/json-viewer/dist/index.mjs
18808
- var import_jsx_runtime135 = require("react/jsx-runtime");
18809
- var import_material12 = require("@mui/material");
18883
+ var import_jsx_runtime136 = require("react/jsx-runtime");
18884
+ var import_material13 = require("@mui/material");
18810
18885
  var import_react54 = require("react");
18811
18886
  var import_zustand = require("zustand");
18812
18887
  var import_copy_to_clipboard = __toESM(require_copy_to_clipboard(), 1);
@@ -19161,7 +19236,7 @@ function useInspect(path, value, nestedIndex) {
19161
19236
  setInspect
19162
19237
  ];
19163
19238
  }
19164
- var DataBox = (props) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19239
+ var DataBox = (props) => /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19165
19240
  component: "div",
19166
19241
  ...props,
19167
19242
  sx: {
@@ -19172,7 +19247,7 @@ var DataBox = (props) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_m
19172
19247
  var DataTypeLabel = (param) => {
19173
19248
  let { dataType, enable = true } = param;
19174
19249
  if (!enable) return null;
19175
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataBox, {
19250
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataBox, {
19176
19251
  className: "data-type-label",
19177
19252
  sx: {
19178
19253
  mx: 0.5,
@@ -19190,18 +19265,18 @@ function defineEasyType(param) {
19190
19265
  const storeDisplayDataTypes = useJsonViewerStore((store) => store.displayDataTypes);
19191
19266
  const color2 = useJsonViewerStore((store) => store.colorspace[colorKey]);
19192
19267
  const onSelect = useJsonViewerStore((store) => store.onSelect);
19193
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(DataBox, {
19268
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(DataBox, {
19194
19269
  onClick: () => onSelect === null || onSelect === void 0 ? void 0 : onSelect(props.path, props.value),
19195
19270
  sx: {
19196
19271
  color: color2
19197
19272
  },
19198
19273
  children: [
19199
- displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataTypeLabel, {
19274
+ displayTypeLabel && storeDisplayDataTypes && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataTypeLabel, {
19200
19275
  dataType: type
19201
19276
  }),
19202
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataBox, {
19277
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataBox, {
19203
19278
  className: "".concat(type, "-value"),
19204
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Render, {
19279
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Render, {
19205
19280
  path: props.path,
19206
19281
  inspect: props.inspect,
19207
19282
  setInspect: props.setInspect,
@@ -19241,7 +19316,7 @@ function defineEasyType(param) {
19241
19316
  }, [
19242
19317
  setValue
19243
19318
  ]);
19244
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.InputBase, {
19319
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.InputBase, {
19245
19320
  autoFocus: true,
19246
19321
  value,
19247
19322
  onChange: handleChange,
@@ -19281,7 +19356,7 @@ var booleanType = defineEasyType({
19281
19356
  },
19282
19357
  Renderer: (param) => {
19283
19358
  let { value } = param;
19284
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
19359
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
19285
19360
  children: value ? "true" : "false"
19286
19361
  });
19287
19362
  }
@@ -19300,7 +19375,7 @@ var dateType = defineEasyType({
19300
19375
  colorKey: "base0D",
19301
19376
  Renderer: (param) => {
19302
19377
  let { value } = param;
19303
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
19378
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
19304
19379
  children: value.toLocaleTimeString("en-us", displayOptions)
19305
19380
  });
19306
19381
  }
@@ -19329,12 +19404,12 @@ var functionName = (func) => {
19329
19404
  var lb = "{";
19330
19405
  var rb = "}";
19331
19406
  var PreFunctionType = (props) => {
19332
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.NoSsr, {
19407
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material13.NoSsr, {
19333
19408
  children: [
19334
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataTypeLabel, {
19409
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataTypeLabel, {
19335
19410
  dataType: "function"
19336
19411
  }),
19337
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, {
19412
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material13.Box, {
19338
19413
  component: "span",
19339
19414
  className: "data-function-start",
19340
19415
  sx: {
@@ -19350,8 +19425,8 @@ var PreFunctionType = (props) => {
19350
19425
  });
19351
19426
  };
19352
19427
  var PostFunctionType = () => {
19353
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.NoSsr, {
19354
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19428
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.NoSsr, {
19429
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19355
19430
  component: "span",
19356
19431
  className: "data-function-end",
19357
19432
  children: rb
@@ -19360,15 +19435,15 @@ var PostFunctionType = () => {
19360
19435
  };
19361
19436
  var FunctionType = (props) => {
19362
19437
  const functionColor = useJsonViewerStore((store) => store.colorspace.base05);
19363
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.NoSsr, {
19364
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19438
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.NoSsr, {
19439
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19365
19440
  className: "data-function",
19366
19441
  sx: {
19367
19442
  display: props.inspect ? "block" : "inline-block",
19368
19443
  pl: props.inspect ? 2 : 0,
19369
19444
  color: functionColor
19370
19445
  },
19371
- children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19446
+ children: props.inspect ? functionBody(props.value) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19372
19447
  component: "span",
19373
19448
  className: "data-function-body",
19374
19449
  onClick: () => props.setInspect(true),
@@ -19396,7 +19471,7 @@ var nullType = defineEasyType({
19396
19471
  displayTypeLabel: false,
19397
19472
  Renderer: () => {
19398
19473
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19399
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19474
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19400
19475
  sx: {
19401
19476
  fontSize: "0.8rem",
19402
19477
  backgroundColor,
@@ -19419,7 +19494,7 @@ var nanType = defineEasyType({
19419
19494
  deserialize: (value) => parseFloat(value),
19420
19495
  Renderer: () => {
19421
19496
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19422
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19497
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19423
19498
  sx: {
19424
19499
  backgroundColor,
19425
19500
  fontSize: "0.8rem",
@@ -19439,7 +19514,7 @@ var floatType = defineEasyType({
19439
19514
  deserialize: (value) => parseFloat(value),
19440
19515
  Renderer: (param) => {
19441
19516
  let { value } = param;
19442
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
19517
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
19443
19518
  children: value
19444
19519
  });
19445
19520
  }
@@ -19453,7 +19528,7 @@ var intType = defineEasyType({
19453
19528
  deserialize: (value) => parseFloat(value),
19454
19529
  Renderer: (param) => {
19455
19530
  let { value } = param;
19456
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
19531
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
19457
19532
  children: value
19458
19533
  });
19459
19534
  }
@@ -19466,16 +19541,16 @@ var bigIntType = defineEasyType({
19466
19541
  deserialize: (value) => BigInt(value.replace(/\D/g, "")),
19467
19542
  Renderer: (param) => {
19468
19543
  let { value } = param;
19469
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
19544
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
19470
19545
  children: "".concat(value, "n")
19471
19546
  });
19472
19547
  }
19473
19548
  });
19474
19549
  var BaseIcon = (param) => {
19475
19550
  let { d: d2, ...props } = param;
19476
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.SvgIcon, {
19551
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.SvgIcon, {
19477
19552
  ...props,
19478
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)("path", {
19553
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)("path", {
19479
19554
  d: d2
19480
19555
  })
19481
19556
  });
@@ -19490,55 +19565,55 @@ var Edit = "M3 17.25V21h3.75L17.81 9.94l-3.75-3.75L3 17.25zM20.71 7.04c.39-.39.3
19490
19565
  var ExpandMore = "M16.59 8.59 12 13.17 7.41 8.59 6 10l6 6 6-6z";
19491
19566
  var Delete = "M6 19c0 1.1.9 2 2 2h8c1.1 0 2-.9 2-2V7H6zM8 9h8v10H8zm7.5-5l-1-1h-5l-1 1H5v2h14V4z";
19492
19567
  var AddBoxIcon = (props) => {
19493
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19568
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19494
19569
  d: AddBox,
19495
19570
  ...props
19496
19571
  });
19497
19572
  };
19498
19573
  var CheckIcon = (props) => {
19499
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19574
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19500
19575
  d: Check,
19501
19576
  ...props
19502
19577
  });
19503
19578
  };
19504
19579
  var ChevronRightIcon = (props) => {
19505
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19580
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19506
19581
  d: ChevronRight,
19507
19582
  ...props
19508
19583
  });
19509
19584
  };
19510
19585
  var CircularArrowsIcon = (props) => {
19511
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19586
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19512
19587
  d: CircularArrows,
19513
19588
  ...props
19514
19589
  });
19515
19590
  };
19516
19591
  var CloseIcon = (props) => {
19517
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19592
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19518
19593
  d: Close,
19519
19594
  ...props
19520
19595
  });
19521
19596
  };
19522
19597
  var ContentCopyIcon = (props) => {
19523
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19598
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19524
19599
  d: ContentCopy,
19525
19600
  ...props
19526
19601
  });
19527
19602
  };
19528
19603
  var EditIcon = (props) => {
19529
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19604
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19530
19605
  d: Edit,
19531
19606
  ...props
19532
19607
  });
19533
19608
  };
19534
19609
  var ExpandMoreIcon = (props) => {
19535
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19610
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19536
19611
  d: ExpandMore,
19537
19612
  ...props
19538
19613
  });
19539
19614
  };
19540
19615
  var DeleteIcon = (props) => {
19541
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(BaseIcon, {
19616
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(BaseIcon, {
19542
19617
  d: Delete,
19543
19618
  ...props
19544
19619
  });
@@ -19577,7 +19652,7 @@ var PreObjectType = (props) => {
19577
19652
  props.value
19578
19653
  ]);
19579
19654
  const isTrap = useIsCycleReference(props.path, props.value);
19580
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, {
19655
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material13.Box, {
19581
19656
  component: "span",
19582
19657
  className: "data-object-start",
19583
19658
  sx: {
@@ -19585,7 +19660,7 @@ var PreObjectType = (props) => {
19585
19660
  },
19586
19661
  children: [
19587
19662
  isArrayLike ? arrayLb : objectLb,
19588
- shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19663
+ shouldDisplaySize && props.inspect && !isEmptyValue && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19589
19664
  component: "span",
19590
19665
  sx: {
19591
19666
  pl: 0.5,
@@ -19595,16 +19670,16 @@ var PreObjectType = (props) => {
19595
19670
  },
19596
19671
  children: sizeOfValue
19597
19672
  }),
19598
- isTrap && !props.inspect && /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, {
19673
+ isTrap && !props.inspect && /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_jsx_runtime136.Fragment, {
19599
19674
  children: [
19600
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CircularArrowsIcon, {
19675
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(CircularArrowsIcon, {
19601
19676
  sx: {
19602
19677
  fontSize: 12,
19603
19678
  color: textColor,
19604
19679
  mx: 0.5
19605
19680
  }
19606
19681
  }),
19607
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataBox, {
19682
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataBox, {
19608
19683
  sx: {
19609
19684
  cursor: "pointer",
19610
19685
  userSelect: "none"
@@ -19634,7 +19709,7 @@ var PostObjectType = (props) => {
19634
19709
  props.path,
19635
19710
  props.value
19636
19711
  ]);
19637
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, {
19712
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material13.Box, {
19638
19713
  component: "span",
19639
19714
  className: "data-object-end",
19640
19715
  sx: {
@@ -19645,7 +19720,7 @@ var PostObjectType = (props) => {
19645
19720
  },
19646
19721
  children: [
19647
19722
  isArrayLike ? arrayRb : objectRb,
19648
- shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19723
+ shouldDisplaySize && (isEmptyValue || !props.inspect) ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19649
19724
  component: "span",
19650
19725
  sx: {
19651
19726
  pl: 0.5,
@@ -19685,7 +19760,7 @@ var ObjectType = (props) => {
19685
19760
  ...props.path,
19686
19761
  key
19687
19762
  ];
19688
- elements3.push(/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataKeyPair, {
19763
+ elements3.push(/* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataKeyPair, {
19689
19764
  path,
19690
19765
  value: value2,
19691
19766
  prevValue: props.prevValue instanceof Map ? props.prevValue.get(k2) : void 0,
@@ -19701,7 +19776,7 @@ var ObjectType = (props) => {
19701
19776
  while (true) {
19702
19777
  const nextResult = iterator2.next();
19703
19778
  var _nextResult_done;
19704
- elements3.push(/* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataKeyPair, {
19779
+ elements3.push(/* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataKeyPair, {
19705
19780
  path: [
19706
19781
  ...props.path,
19707
19782
  "iterator:".concat(count2)
@@ -19729,7 +19804,7 @@ var ObjectType = (props) => {
19729
19804
  ...props.path,
19730
19805
  index
19731
19806
  ];
19732
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataKeyPair, {
19807
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataKeyPair, {
19733
19808
  path,
19734
19809
  value: value2,
19735
19810
  prevValue: Array.isArray(props.prevValue) ? props.prevValue[index] : void 0,
@@ -19738,7 +19813,7 @@ var ObjectType = (props) => {
19738
19813
  });
19739
19814
  if (value.length > displayLength) {
19740
19815
  const rest = value.length - displayLength;
19741
- elements4.push(/* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(DataBox, {
19816
+ elements4.push(/* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(DataBox, {
19742
19817
  sx: {
19743
19818
  cursor: "pointer",
19744
19819
  lineHeight: 1.5,
@@ -19761,7 +19836,7 @@ var ObjectType = (props) => {
19761
19836
  const prevElements = Array.isArray(props.prevValue) ? segmentArray(props.prevValue, groupArraysAfterLength) : void 0;
19762
19837
  const elementsLastIndex = elements3.length - 1;
19763
19838
  return elements3.map((list, index) => {
19764
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataKeyPair, {
19839
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataKeyPair, {
19765
19840
  path: props.path,
19766
19841
  value: list,
19767
19842
  nestedIndex: index,
@@ -19788,7 +19863,7 @@ var ObjectType = (props) => {
19788
19863
  ...props.path,
19789
19864
  key
19790
19865
  ];
19791
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataKeyPair, {
19866
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataKeyPair, {
19792
19867
  path,
19793
19868
  value: value2,
19794
19869
  prevValue: (_props_prevValue = props.prevValue) === null || _props_prevValue === void 0 ? void 0 : _props_prevValue[key],
@@ -19797,7 +19872,7 @@ var ObjectType = (props) => {
19797
19872
  });
19798
19873
  if (entries.length > displayLength) {
19799
19874
  const rest = entries.length - displayLength;
19800
- elements2.push(/* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(DataBox, {
19875
+ elements2.push(/* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(DataBox, {
19801
19876
  sx: {
19802
19877
  cursor: "pointer",
19803
19878
  lineHeight: 1.5,
@@ -19835,7 +19910,7 @@ var ObjectType = (props) => {
19835
19910
  if (isEmptyValue) {
19836
19911
  return null;
19837
19912
  }
19838
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19913
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19839
19914
  className: "data-object",
19840
19915
  sx: {
19841
19916
  display: props.inspect ? "block" : "inline-block",
@@ -19844,7 +19919,7 @@ var ObjectType = (props) => {
19844
19919
  color: keyColor,
19845
19920
  borderLeft: props.inspect ? "1px solid ".concat(borderColor) : "none"
19846
19921
  },
19847
- children: props.inspect ? elements : !isTrap && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19922
+ children: props.inspect ? elements : !isTrap && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19848
19923
  component: "span",
19849
19924
  className: "data-object-body",
19850
19925
  onClick: () => props.setInspect(true),
@@ -19876,7 +19951,7 @@ var stringType = defineEasyType({
19876
19951
  const collapseStringsAfterLength = useJsonViewerStore((store) => store.collapseStringsAfterLength);
19877
19952
  const value = showRest ? props.value : props.value.slice(0, collapseStringsAfterLength);
19878
19953
  const hasRest = props.value.length > collapseStringsAfterLength;
19879
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, {
19954
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material13.Box, {
19880
19955
  component: "span",
19881
19956
  sx: {
19882
19957
  overflowWrap: "anywhere",
@@ -19894,7 +19969,7 @@ var stringType = defineEasyType({
19894
19969
  children: [
19895
19970
  '"',
19896
19971
  value,
19897
- hasRest && !showRest && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19972
+ hasRest && !showRest && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19898
19973
  component: "span",
19899
19974
  sx: {
19900
19975
  padding: 0.5
@@ -19913,7 +19988,7 @@ var undefinedType = defineEasyType({
19913
19988
  displayTypeLabel: false,
19914
19989
  Renderer: () => {
19915
19990
  const backgroundColor = useJsonViewerStore((store) => store.colorspace.base02);
19916
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
19991
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19917
19992
  sx: {
19918
19993
  fontSize: "0.7rem",
19919
19994
  backgroundColor,
@@ -19994,7 +20069,7 @@ function useTypeComponents(value, path) {
19994
20069
  registry
19995
20070
  ]);
19996
20071
  }
19997
- var IconBox = (props) => /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
20072
+ var IconBox = (props) => /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
19998
20073
  component: "span",
19999
20074
  ...props,
20000
20075
  sx: {
@@ -20180,18 +20255,18 @@ var DataKeyPair = (props) => {
20180
20255
  ]);
20181
20256
  const actionIcons = (0, import_react54.useMemo)(() => {
20182
20257
  if (editing) {
20183
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, {
20258
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_jsx_runtime136.Fragment, {
20184
20259
  children: [
20185
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconBox, {
20186
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CloseIcon, {
20260
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconBox, {
20261
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(CloseIcon, {
20187
20262
  sx: {
20188
20263
  fontSize: ".8rem"
20189
20264
  },
20190
20265
  onClick: abortEditing
20191
20266
  })
20192
20267
  }),
20193
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconBox, {
20194
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CheckIcon, {
20268
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconBox, {
20269
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(CheckIcon, {
20195
20270
  sx: {
20196
20271
  fontSize: ".8rem"
20197
20272
  },
@@ -20201,9 +20276,9 @@ var DataKeyPair = (props) => {
20201
20276
  ]
20202
20277
  });
20203
20278
  }
20204
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, {
20279
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_jsx_runtime136.Fragment, {
20205
20280
  children: [
20206
- enableClipboard && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconBox, {
20281
+ enableClipboard && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconBox, {
20207
20282
  onClick: (event) => {
20208
20283
  event.preventDefault();
20209
20284
  try {
@@ -20212,41 +20287,41 @@ var DataKeyPair = (props) => {
20212
20287
  console.error(e2);
20213
20288
  }
20214
20289
  },
20215
- children: copied ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(CheckIcon, {
20290
+ children: copied ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(CheckIcon, {
20216
20291
  sx: {
20217
20292
  fontSize: ".8rem"
20218
20293
  }
20219
- }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(ContentCopyIcon, {
20294
+ }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(ContentCopyIcon, {
20220
20295
  sx: {
20221
20296
  fontSize: ".8rem"
20222
20297
  }
20223
20298
  })
20224
20299
  }),
20225
- Editor && editable && serialize && deserialize && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconBox, {
20300
+ Editor && editable && serialize && deserialize && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconBox, {
20226
20301
  onClick: startEditing,
20227
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(EditIcon, {
20302
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(EditIcon, {
20228
20303
  sx: {
20229
20304
  fontSize: ".8rem"
20230
20305
  }
20231
20306
  })
20232
20307
  }),
20233
- enableAdd && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconBox, {
20308
+ enableAdd && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconBox, {
20234
20309
  onClick: (event) => {
20235
20310
  event.preventDefault();
20236
20311
  onAdd === null || onAdd === void 0 ? void 0 : onAdd(path);
20237
20312
  },
20238
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(AddBoxIcon, {
20313
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(AddBoxIcon, {
20239
20314
  sx: {
20240
20315
  fontSize: ".8rem"
20241
20316
  }
20242
20317
  })
20243
20318
  }),
20244
- enableDelete && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(IconBox, {
20319
+ enableDelete && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(IconBox, {
20245
20320
  onClick: (event) => {
20246
20321
  event.preventDefault();
20247
20322
  onDelete === null || onDelete === void 0 ? void 0 : onDelete(path, value);
20248
20323
  },
20249
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DeleteIcon, {
20324
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DeleteIcon, {
20250
20325
  sx: {
20251
20326
  fontSize: ".9rem"
20252
20327
  }
@@ -20294,7 +20369,7 @@ var DataKeyPair = (props) => {
20294
20369
  prevValue,
20295
20370
  nestedIndex
20296
20371
  ]);
20297
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_material12.Box, {
20372
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_material13.Box, {
20298
20373
  className: "data-key-pair",
20299
20374
  "data-testid": "data-key-pair" + path.join("."),
20300
20375
  sx: {
@@ -20306,7 +20381,7 @@ var DataKeyPair = (props) => {
20306
20381
  nestedIndex
20307
20382
  ]),
20308
20383
  children: [
20309
- /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(DataBox, {
20384
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(DataBox, {
20310
20385
  component: "span",
20311
20386
  className: "data-key",
20312
20387
  sx: {
@@ -20327,7 +20402,7 @@ var DataKeyPair = (props) => {
20327
20402
  setInspect
20328
20403
  ]),
20329
20404
  children: [
20330
- expandable ? inspect ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(ExpandMoreIcon, {
20405
+ expandable ? inspect ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(ExpandMoreIcon, {
20331
20406
  className: "data-key-toggle-expanded",
20332
20407
  sx: {
20333
20408
  fontSize: ".8rem",
@@ -20335,7 +20410,7 @@ var DataKeyPair = (props) => {
20335
20410
  cursor: "pointer"
20336
20411
  }
20337
20412
  }
20338
- }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(ChevronRightIcon, {
20413
+ }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(ChevronRightIcon, {
20339
20414
  className: "data-key-toggle-collapsed",
20340
20415
  sx: {
20341
20416
  fontSize: ".8rem",
@@ -20344,44 +20419,44 @@ var DataKeyPair = (props) => {
20344
20419
  }
20345
20420
  }
20346
20421
  }) : null,
20347
- /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
20422
+ /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
20348
20423
  ref: highlightContainer,
20349
20424
  className: "data-key-key",
20350
20425
  component: "span",
20351
- children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, {
20426
+ children: isRoot && depth === 0 ? rootName !== false ? quotesOnKeys ? /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_jsx_runtime136.Fragment, {
20352
20427
  children: [
20353
20428
  '"',
20354
20429
  rootName,
20355
20430
  '"'
20356
20431
  ]
20357
- }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
20432
+ }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
20358
20433
  children: rootName
20359
- }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(KeyRenderer, {
20434
+ }) : null : KeyRenderer.when(downstreamProps) ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(KeyRenderer, {
20360
20435
  ...downstreamProps
20361
- }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
20436
+ }) : nestedIndex === void 0 && (isNumberKey ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
20362
20437
  component: "span",
20363
20438
  style: {
20364
20439
  color: numberKeyColor,
20365
20440
  userSelect: isNumberKey ? "none" : "auto"
20366
20441
  },
20367
20442
  children: key
20368
- }) : quotesOnKeys ? /* @__PURE__ */ (0, import_jsx_runtime135.jsxs)(import_jsx_runtime135.Fragment, {
20443
+ }) : quotesOnKeys ? /* @__PURE__ */ (0, import_jsx_runtime136.jsxs)(import_jsx_runtime136.Fragment, {
20369
20444
  children: [
20370
20445
  '"',
20371
20446
  key,
20372
20447
  '"'
20373
20448
  ]
20374
- }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_jsx_runtime135.Fragment, {
20449
+ }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_jsx_runtime136.Fragment, {
20375
20450
  children: key
20376
20451
  }))
20377
20452
  }),
20378
- isRoot ? rootName !== false && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataBox, {
20453
+ isRoot ? rootName !== false && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataBox, {
20379
20454
  className: "data-key-colon",
20380
20455
  sx: {
20381
20456
  mr: 0.5
20382
20457
  },
20383
20458
  children: ":"
20384
- }) : nestedIndex === void 0 && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataBox, {
20459
+ }) : nestedIndex === void 0 && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataBox, {
20385
20460
  className: "data-key-colon",
20386
20461
  sx: {
20387
20462
  mr: 0.5,
@@ -20392,29 +20467,29 @@ var DataKeyPair = (props) => {
20392
20467
  },
20393
20468
  children: ":"
20394
20469
  }),
20395
- PreComponent && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(PreComponent, {
20470
+ PreComponent && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(PreComponent, {
20396
20471
  ...downstreamProps
20397
20472
  }),
20398
20473
  isHover && expandable && inspect && actionIcons
20399
20474
  ]
20400
20475
  }),
20401
- editing && editable ? Editor && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Editor, {
20476
+ editing && editable ? Editor && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Editor, {
20402
20477
  path,
20403
20478
  value: tempValue,
20404
20479
  setValue: setTempValue,
20405
20480
  abortEditing,
20406
20481
  commitEditing
20407
- }) : Component ? /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(Component, {
20482
+ }) : Component ? /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(Component, {
20408
20483
  ...downstreamProps
20409
- }) : /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Box, {
20484
+ }) : /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, {
20410
20485
  component: "span",
20411
20486
  className: "data-value-fallback",
20412
20487
  children: "fallback: ".concat(value)
20413
20488
  }),
20414
- PostComponent && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(PostComponent, {
20489
+ PostComponent && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(PostComponent, {
20415
20490
  ...downstreamProps
20416
20491
  }),
20417
- !last && displayComma && /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataBox, {
20492
+ !last && displayComma && /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataBox, {
20418
20493
  children: ","
20419
20494
  }),
20420
20495
  isHover && expandable && !inspect && actionIcons,
@@ -20534,7 +20609,7 @@ var JsonViewerInner = (props) => {
20534
20609
  const onMouseLeave = (0, import_react54.useCallback)(() => setHover(null), [
20535
20610
  setHover
20536
20611
  ]);
20537
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.Paper, {
20612
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Paper, {
20538
20613
  elevation: 0,
20539
20614
  className: clsx(themeCls, props.className),
20540
20615
  style: props.style,
@@ -20545,7 +20620,7 @@ var JsonViewerInner = (props) => {
20545
20620
  ...props.sx
20546
20621
  },
20547
20622
  onMouseLeave,
20548
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(DataKeyPair, {
20623
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(DataKeyPair, {
20549
20624
  value,
20550
20625
  prevValue,
20551
20626
  path: emptyPath,
@@ -20570,7 +20645,7 @@ var JsonViewer = function JsonViewer2(props) {
20570
20645
  const theme = (0, import_react54.useMemo)(() => {
20571
20646
  const backgroundColor = typeof themeType === "object" ? themeType.base00 : themeType === "dark" ? darkColorspace.base00 : lightColorspace.base00;
20572
20647
  const foregroundColor = typeof themeType === "object" ? themeType.base07 : themeType === "dark" ? darkColorspace.base07 : lightColorspace.base07;
20573
- return (0, import_material12.createTheme)({
20648
+ return (0, import_material13.createTheme)({
20574
20649
  components: {
20575
20650
  MuiPaper: {
20576
20651
  styleOverrides: {
@@ -20597,13 +20672,13 @@ var JsonViewer = function JsonViewer2(props) {
20597
20672
  };
20598
20673
  const jsonViewerStore = (0, import_react54.useMemo)(() => createJsonViewerStore(props), []);
20599
20674
  const typeRegistryStore = (0, import_react54.useMemo)(() => createTypeRegistryStore(), []);
20600
- return /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(import_material12.ThemeProvider, {
20675
+ return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.ThemeProvider, {
20601
20676
  theme,
20602
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(TypeRegistryStoreContext.Provider, {
20677
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(TypeRegistryStoreContext.Provider, {
20603
20678
  value: typeRegistryStore,
20604
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(JsonViewerStoreContext.Provider, {
20679
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(JsonViewerStoreContext.Provider, {
20605
20680
  value: jsonViewerStore,
20606
- children: /* @__PURE__ */ (0, import_jsx_runtime135.jsx)(JsonViewerInner, {
20681
+ children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(JsonViewerInner, {
20607
20682
  ...mixedProps
20608
20683
  })
20609
20684
  })
@@ -20613,7 +20688,7 @@ var JsonViewer = function JsonViewer2(props) {
20613
20688
 
20614
20689
  // src/components/event-details/payload-viewer.tsx
20615
20690
  var import_react55 = require("react");
20616
- var import_jsx_runtime136 = require("react/jsx-runtime");
20691
+ var import_jsx_runtime137 = require("react/jsx-runtime");
20617
20692
  function tryParseJson(value) {
20618
20693
  if (typeof value !== "string") {
20619
20694
  return value;
@@ -20625,8 +20700,8 @@ function tryParseJson(value) {
20625
20700
  }
20626
20701
  }
20627
20702
  var PayloadViewer = (0, import_react55.memo)(({ sx, testId, value }) => {
20628
- const theme = (0, import_material13.useTheme)();
20629
- return /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(import_material13.Box, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ (0, import_jsx_runtime136.jsx)(
20703
+ const theme = (0, import_material14.useTheme)();
20704
+ return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Box, { "data-testid": testId, sx: { backgroundColor: "background.default", borderRadius: 1, fontSize: 12, overflow: "auto", p: 1, ...sx }, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
20630
20705
  JsonViewer,
20631
20706
  {
20632
20707
  displayDataTypes: false,
@@ -20640,10 +20715,10 @@ var PayloadViewer = (0, import_react55.memo)(({ sx, testId, value }) => {
20640
20715
  });
20641
20716
 
20642
20717
  // src/components/event-details/event-detail.tsx
20643
- var import_jsx_runtime137 = require("react/jsx-runtime");
20644
- var DetailRow2 = ({ content, label }) => /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_material14.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20645
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20646
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Box, { children: typeof content === "string" ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Typography, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20718
+ var import_jsx_runtime138 = require("react/jsx-runtime");
20719
+ var DetailRow2 = ({ content, label }) => /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_material15.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "72px 1fr", mb: 0.5 }, children: [
20720
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { color: "text.secondary", sx: { fontWeight: 600 }, variant: "caption", children: label }),
20721
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Box, { children: typeof content === "string" ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { sx: { color: "text.primary", whiteSpace: "pre-wrap" }, variant: "caption", children: content }) : content })
20647
20722
  ] });
20648
20723
  var EventMessage = ({ event }) => {
20649
20724
  const [isOpen, setIsOpen] = (0, import_react56.useState)(false);
@@ -20675,21 +20750,21 @@ var EventMessage = ({ event }) => {
20675
20750
  () => isOverflowing || hasAdditionalContent,
20676
20751
  [isOverflowing, hasAdditionalContent]
20677
20752
  );
20678
- return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_material14.Box, { sx: { display: "flex", flexDirection: "column" }, children: [
20679
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_material14.Box, { sx: { alignItems: "center", display: "flex" }, children: [
20680
- Boolean(shouldShowToggle) && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
20681
- import_material14.IconButton,
20753
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_material15.Box, { sx: { display: "flex", flexDirection: "column" }, children: [
20754
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_material15.Box, { sx: { alignItems: "center", display: "flex" }, children: [
20755
+ Boolean(shouldShowToggle) && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
20756
+ import_material15.IconButton,
20682
20757
  {
20683
20758
  onClick: () => {
20684
20759
  setIsOpen(!isOpen);
20685
20760
  },
20686
20761
  size: "small",
20687
20762
  sx: { mr: 1, p: 0 },
20688
- children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_icons_material7.KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_icons_material7.KeyboardArrowRight, { sx: { fontSize: 16 } })
20763
+ children: isOpen ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_icons_material8.KeyboardArrowDown, { sx: { fontSize: 16 } }) : /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_icons_material8.KeyboardArrowRight, { sx: { fontSize: 16 } })
20689
20764
  }
20690
20765
  ),
20691
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
20692
- import_material14.Typography,
20766
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
20767
+ import_material15.Typography,
20693
20768
  {
20694
20769
  ref: textReference,
20695
20770
  sx: {
@@ -20706,12 +20781,12 @@ var EventMessage = ({ event }) => {
20706
20781
  }
20707
20782
  )
20708
20783
  ] }),
20709
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Box, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IAMEventDetail, { event }) : /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_jsx_runtime137.Fragment, { children: [
20710
- Boolean(parsedMessage.message) && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20711
- Boolean(parsedMessage.details) && /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(
20784
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Box, { sx: { borderColor: "divider", borderLeft: "2px solid", ml: 1, mt: 0.5, pl: 1.5, py: 0.5 }, children: isIAMPolicyEvent ? /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IAMEventDetail, { event }) : /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_jsx_runtime138.Fragment, { children: [
20785
+ Boolean(parsedMessage.message) && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(DetailRow2, { content: parsedMessage.message, label: "Message" }),
20786
+ Boolean(parsedMessage.details) && /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(
20712
20787
  DetailRow2,
20713
20788
  {
20714
- content: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20789
+ content: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(PayloadViewer, { sx: { px: 0 }, value: tryParseJson(parsedMessage.details) }),
20715
20790
  label: "Details"
20716
20791
  }
20717
20792
  )
@@ -20743,15 +20818,15 @@ var EventDetail = ({
20743
20818
  type
20744
20819
  }) => {
20745
20820
  if (type === "permission") {
20746
- return /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(IAMPermissionDetail, { events });
20821
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(IAMPermissionDetail, { events });
20747
20822
  }
20748
20823
  const eventLevel = getEventLevelFromGroup(type);
20749
- return /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_material14.Box, { children: [
20750
- /* @__PURE__ */ (0, import_jsx_runtime137.jsxs)(import_material14.Box, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20751
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(StatusIcon, { errorLevel: eventLevel }),
20752
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Typography, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20824
+ return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_material15.Box, { children: [
20825
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_material15.Box, { sx: { alignItems: "center", display: "flex", mb: 0.5 }, children: [
20826
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(StatusIcon2, { errorLevel: eventLevel }),
20827
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { color: "text.secondary", sx: { fontWeight: 600, ml: 0.5 }, variant: "caption", children: displayText })
20753
20828
  ] }),
20754
- /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Box, { children: events.map((event) => /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(import_material14.Box, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime137.jsx)(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20829
+ /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Box, { children: events.map((event) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Box, { sx: { maxWidth: "100%", mb: 0.5 }, children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(EventMessage, { event }) }, `${event.span_id}-${event.event_id}`)) })
20755
20830
  ] });
20756
20831
  };
20757
20832
 
@@ -25133,16 +25208,16 @@ var ProtocolLib = class {
25133
25208
  if (output !== void 0 && queryErrorHeader != null) {
25134
25209
  const [Code, Type] = queryErrorHeader.split(";");
25135
25210
  const entries = Object.entries(output);
25136
- const Error3 = {
25211
+ const Error4 = {
25137
25212
  Code,
25138
25213
  Type
25139
25214
  };
25140
- Object.assign(output, Error3);
25215
+ Object.assign(output, Error4);
25141
25216
  for (const [k2, v2] of entries) {
25142
- Error3[k2 === "message" ? "Message" : k2] = v2;
25217
+ Error4[k2 === "message" ? "Message" : k2] = v2;
25143
25218
  }
25144
- delete Error3.__type;
25145
- output.Error = Error3;
25219
+ delete Error4.__type;
25220
+ output.Error = Error4;
25146
25221
  }
25147
25222
  }
25148
25223
  queryCompatOutput(queryCompatErrorData, errorData) {
@@ -30442,9 +30517,9 @@ var QueryStatus = {
30442
30517
  };
30443
30518
 
30444
30519
  // src/components/event-details/lambda-invoke-logs-section.tsx
30445
- var import_material15 = require("@mui/material");
30520
+ var import_material16 = require("@mui/material");
30446
30521
  var import_react57 = require("react");
30447
- var import_jsx_runtime138 = require("react/jsx-runtime");
30522
+ var import_jsx_runtime139 = require("react/jsx-runtime");
30448
30523
  var POLL_INTERVAL_MS = 1e3;
30449
30524
  async function pollQueryResults(client, queryId) {
30450
30525
  return client.send(new GetQueryResultsCommand({ queryId }));
@@ -30534,30 +30609,30 @@ function useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, en
30534
30609
  var LambdaInvokeLogsSection = ({ endTimeNano, functionName: functionName2, region, requestId, startTimeNano }) => {
30535
30610
  const { error, loading, logs } = useLambdaInvokeLogs(functionName2, requestId, region, startTimeNano, endTimeNano);
30536
30611
  if (loading) {
30537
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsxs)(import_material15.Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30538
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.CircularProgress, { size: 14 }),
30539
- /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30612
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(import_material16.Stack, { alignItems: "center", direction: "row", spacing: 1, children: [
30613
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.CircularProgress, { size: 14 }),
30614
+ /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Typography, { color: "text.secondary", variant: "body2", children: "Loading logs\u2026" })
30540
30615
  ] });
30541
30616
  }
30542
30617
  if (error !== void 0) {
30543
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { color: "error", variant: "body2", children: error.message });
30618
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Typography, { color: "error", variant: "body2", children: error.message });
30544
30619
  }
30545
30620
  if (logs.length === 0) {
30546
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30621
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Typography, { color: "text.secondary", variant: "body2", children: "No logs found for this invocation." });
30547
30622
  }
30548
- return /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Box, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime138.jsx)("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ (0, import_jsx_runtime138.jsx)(import_material15.Typography, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30623
+ return /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Box, { sx: { backgroundColor: (theme) => theme.palette.background.default, borderRadius: 1, p: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime139.jsx)("pre", { style: { margin: 0, overflow: "auto" }, children: logs.map((log) => /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Typography, { variant: "body2", children: `[${log.timestamp}] ${log.message}` }, log.ptr)) }) });
30549
30624
  };
30550
30625
 
30551
30626
  // src/components/event-details/toggle-section.tsx
30552
- var import_icons_material8 = require("@mui/icons-material");
30553
- var import_material16 = require("@mui/material");
30627
+ var import_icons_material9 = require("@mui/icons-material");
30628
+ var import_material17 = require("@mui/material");
30554
30629
  var import_react58 = require("react");
30555
- var import_jsx_runtime139 = require("react/jsx-runtime");
30630
+ var import_jsx_runtime140 = require("react/jsx-runtime");
30556
30631
  var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30557
30632
  const [isOpen, setIsOpen] = (0, import_react58.useState)(initialOpen);
30558
- return /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(import_material16.Box, { sx: { mt: 4 }, children: [
30559
- /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(
30560
- import_material16.Box,
30633
+ return /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { sx: { mt: 4 }, children: [
30634
+ /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(
30635
+ import_material17.Box,
30561
30636
  {
30562
30637
  onClick: () => {
30563
30638
  setIsOpen(!isOpen);
@@ -30570,8 +30645,8 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30570
30645
  mb: 1
30571
30646
  },
30572
30647
  children: [
30573
- /* @__PURE__ */ (0, import_jsx_runtime139.jsxs)(
30574
- import_material16.Box,
30648
+ /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(
30649
+ import_material17.Box,
30575
30650
  {
30576
30651
  role: "button",
30577
30652
  sx: {
@@ -30580,23 +30655,23 @@ var ToggleSection = ({ action, children, headline, initialOpen = true }) => {
30580
30655
  gap: 1
30581
30656
  },
30582
30657
  children: [
30583
- /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Typography, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30584
- isOpen ? /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_icons_material8.KeyboardArrowDown, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_icons_material8.KeyboardArrowRight, { sx: { color: "text.secondary", height: 20, width: 20 } })
30658
+ /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "subtitle2", children: headline }),
30659
+ isOpen ? /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_icons_material9.KeyboardArrowDown, { sx: { color: "text.secondary", height: 20, width: 20 } }) : /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_icons_material9.KeyboardArrowRight, { sx: { color: "text.secondary", height: 20, width: 20 } })
30585
30660
  ]
30586
30661
  }
30587
30662
  ),
30588
- action !== false && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Box, { onClick: (event) => {
30663
+ action !== false && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Box, { onClick: (event) => {
30589
30664
  event.stopPropagation();
30590
30665
  }, children: action })
30591
30666
  ]
30592
30667
  }
30593
30668
  ),
30594
- isOpen && /* @__PURE__ */ (0, import_jsx_runtime139.jsx)(import_material16.Box, { children })
30669
+ isOpen && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Box, { children })
30595
30670
  ] });
30596
30671
  };
30597
30672
 
30598
30673
  // src/components/event-details/event-details.tsx
30599
- var import_jsx_runtime140 = require("react/jsx-runtime");
30674
+ var import_jsx_runtime141 = require("react/jsx-runtime");
30600
30675
  var checkIsLambdaInvoke = (span) => {
30601
30676
  if (span.service_name !== "lambda") {
30602
30677
  return false;
@@ -30617,7 +30692,7 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30617
30692
  );
30618
30693
  const [parseNestedJson, setParseNestedJson] = (0, import_react59.useState)(true);
30619
30694
  if (!selectedEvent) {
30620
- return /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Box, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
30695
+ return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Box, { sx: { p: 3, textAlign: "center" }, children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { color: "text.secondary", variant: "body2", children: "Select an event to view details" }) });
30621
30696
  }
30622
30697
  const isLambdaInvoke = checkIsLambdaInvoke(selectedEvent);
30623
30698
  const isSqsSendMessage = checkIsSqsSendMessage(selectedEvent);
@@ -30640,9 +30715,9 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30640
30715
  const exceptionPayload = tryParseJson(selectedEvent.attributes?.["localstack.aws.service.exception"]);
30641
30716
  const hasPayloads = requestPayload !== void 0 || responsePayload !== void 0 || exceptionPayload !== void 0 || isResponseSuppressed;
30642
30717
  const duration = selectedEvent.end_time_unix_nano ? ((BigInt(selectedEvent.end_time_unix_nano) - BigInt(selectedEvent.start_time_unix_nano)) / BigInt("1000000")).toString() : void 0;
30643
- return /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30644
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(
30645
- import_material17.Box,
30718
+ return /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { "data-testid": EVENT_DETAILS_TEST_ID, sx: { display: "flex", flexDirection: "column", height: "100%" }, children: [
30719
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(
30720
+ import_material18.Box,
30646
30721
  {
30647
30722
  sx: {
30648
30723
  alignItems: "center",
@@ -30654,64 +30729,64 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30654
30729
  py: 1
30655
30730
  },
30656
30731
  children: [
30657
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30658
- onClose && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.IconButton, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_icons_material9.Close, {}) })
30732
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Box, { children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "h6", children: "Operation Details" }) }),
30733
+ onClose && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.IconButton, { "data-testid": EVENT_DETAILS_CLOSE_BUTTON_TEST_ID, onClick: onClose, size: "small", children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_icons_material10.Close, {}) })
30659
30734
  ]
30660
30735
  }
30661
30736
  ),
30662
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Box, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Stack, { spacing: 2, children: [
30663
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Stack, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30664
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30665
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30666
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30667
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30737
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Box, { sx: { flexGrow: 1, overflow: "auto", p: 2 }, children: /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Stack, { spacing: 2, children: [
30738
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(ToggleSection, { headline: "Basic Information", children: /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Stack, { "data-testid": EVENT_DETAILS_SECTION_BASIC_INFORMATION_TEST_ID, spacing: 1, children: [
30739
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { sx: { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" }, children: [
30740
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30741
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Service" }),
30742
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_SERVICE_NAME_TEST_ID, variant: "body2", children: getServiceDisplayName(selectedEvent.service_name) })
30668
30743
  ] }),
30669
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30670
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30671
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30744
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30745
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Action" }),
30746
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_OPERATION_NAME_TEST_ID, variant: "body2", children: selectedEvent.operation_name })
30672
30747
  ] })
30673
30748
  ] }),
30674
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30675
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30676
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30677
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30749
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { sx: cfnResourceType ? { display: "grid", gap: 2, gridTemplateColumns: "1.3fr 1fr" } : void 0, children: [
30750
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30751
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource" }),
30752
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_RESOURCE_NAME_TEST_ID, variant: "body2", children: selectedEvent.resource_name })
30678
30753
  ] }),
30679
- Boolean(cfnResourceType) && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30680
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30681
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30754
+ Boolean(cfnResourceType) && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30755
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource Type" }),
30756
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_CFN_RESOURCE_TYPE_TEST_ID, variant: "body2", children: cfnResourceType })
30682
30757
  ] })
30683
30758
  ] }),
30684
- Boolean(resourceArn) && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30685
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30686
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30759
+ Boolean(resourceArn) && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30760
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Resource ARN" }),
30761
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_RESOURCE_ARN_TEST_ID, variant: "body2", children: resourceArn })
30687
30762
  ] }),
30688
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30689
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30690
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30691
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30763
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: "1.3fr 1fr" }, children: [
30764
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30765
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Account" }),
30766
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_ACCOUNT_TEST_ID, variant: "body2", children: selectedEvent.account_id })
30692
30767
  ] }),
30693
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30694
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30695
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30768
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30769
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Region" }),
30770
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_REGION_TEST_ID, variant: "body2", children: selectedEvent.region })
30696
30771
  ] })
30697
30772
  ] }),
30698
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30699
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30700
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30701
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30773
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { sx: { display: "grid", gap: 1, gridTemplateColumns: duration === void 0 ? "1fr" : "1.3fr 1fr" }, children: [
30774
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30775
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Start Time" }),
30776
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_START_TIME_TEST_ID, variant: "body2", children: unixNanoToDate(selectedEvent.start_time_unix_nano)?.toISOString() })
30702
30777
  ] }),
30703
- duration !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30704
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30705
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Typography, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30778
+ duration !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30779
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Duration" }),
30780
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Typography, { "data-testid": EVENT_DETAILS_DURATION_TEST_ID, variant: "body2", children: [
30706
30781
  duration,
30707
30782
  "ms"
30708
30783
  ] })
30709
30784
  ] })
30710
30785
  ] }),
30711
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30712
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30713
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Stack, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
30714
- import_material17.Chip,
30786
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30787
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Status" }),
30788
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Stack, { alignItems: "center", direction: "row", flexWrap: "wrap", gap: 1, sx: { mb: eventGroups.errors || eventGroups.warnings ? 1 : 0 }, children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
30789
+ import_material18.Chip,
30715
30790
  {
30716
30791
  color: selectedEvent.status_code === 2 ? "error" : selectedEvent.status_code === 1 ? "success" : "default",
30717
30792
  "data-testid": EVENT_DETAILS_STATUS_TEST_ID,
@@ -30721,50 +30796,50 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30721
30796
  ) })
30722
30797
  ] })
30723
30798
  ] }) }),
30724
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Divider, {}),
30725
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(ToggleSection, { headline: "Permissions", children: [
30726
- selectedEvent.iam_errors_suppressed && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Alert, { "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" }),
30727
- !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30728
- eventGroups.permissions && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30729
- eventGroups.errors && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30730
- eventGroups.warnings && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30799
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Divider, {}),
30800
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(ToggleSection, { headline: "Permissions", children: [
30801
+ selectedEvent.iam_errors_suppressed && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Alert, { "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" }),
30802
+ !selectedEvent.iam_errors_suppressed && !eventGroups.permissions && !eventGroups.errors && !eventGroups.warnings && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { color: "text.secondary", variant: "body2", children: "There is no permission information available." }),
30803
+ eventGroups.permissions && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(EventDetail, { displayText: "Permissions", events: eventGroups.permissions, type: "permission" }),
30804
+ eventGroups.errors && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(EventDetail, { displayText: "Error", events: eventGroups.errors, type: "error" }),
30805
+ eventGroups.warnings && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(EventDetail, { displayText: "Warning", events: eventGroups.warnings, type: "warning" })
30731
30806
  ] }),
30732
- hasPayloads && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_jsx_runtime140.Fragment, { children: [
30733
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Divider, {}),
30734
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
30807
+ hasPayloads && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_jsx_runtime141.Fragment, { children: [
30808
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Divider, {}),
30809
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
30735
30810
  ToggleSection,
30736
30811
  {
30737
- action: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
30738
- import_material17.FormControlLabel,
30812
+ action: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
30813
+ import_material18.FormControlLabel,
30739
30814
  {
30740
- control: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Switch, { checked: !parseNestedJson, onChange: (event) => {
30815
+ control: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Switch, { checked: !parseNestedJson, onChange: (event) => {
30741
30816
  setParseNestedJson(!event.target.checked);
30742
30817
  }, size: "small" }),
30743
- label: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { variant: "caption", children: "View raw data" }),
30818
+ label: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { variant: "caption", children: "View raw data" }),
30744
30819
  sx: { mr: 0 }
30745
30820
  }
30746
30821
  ),
30747
30822
  headline: "Payloads",
30748
- children: /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Stack, { spacing: 2, children: [
30749
- requestPayload !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30750
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30751
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30823
+ children: /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Stack, { spacing: 2, children: [
30824
+ requestPayload !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30825
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Request" }),
30826
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(PayloadViewer, { testId: EVENT_DETAILS_REQUEST_PAYLOAD, value: requestPayload })
30752
30827
  ] }),
30753
- (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30754
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30755
- isResponseSuppressed ? /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Box, { sx: { py: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Alert, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30828
+ (responsePayload !== void 0 || isResponseSuppressed) && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30829
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Response" }),
30830
+ isResponseSuppressed ? /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Box, { sx: { py: 1 }, children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Alert, { severity: "warning", sx: { mb: 1 }, children: "Response payload is available \u2014 upgrade your license to view" }) }) : /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(PayloadViewer, { testId: EVENT_DETAILS_RESPONSE_PAYLOAD_TEST_ID, value: responsePayload })
30756
30831
  ] }),
30757
- exceptionPayload !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30758
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30759
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30832
+ exceptionPayload !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30833
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Exception" }),
30834
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(PayloadViewer, { testId: EVENT_DETAILS_EXCEPTION_PAYLOAD_TEST_ID, value: exceptionPayload })
30760
30835
  ] })
30761
30836
  ] })
30762
30837
  }
30763
30838
  )
30764
30839
  ] }),
30765
- isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_jsx_runtime140.Fragment, { children: [
30766
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Divider, {}),
30767
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(
30840
+ isLambdaInvoke && requestId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_jsx_runtime141.Fragment, { children: [
30841
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Divider, {}),
30842
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(ToggleSection, { headline: "Lambda Logs", children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
30768
30843
  LambdaInvokeLogsSection,
30769
30844
  {
30770
30845
  endTimeNano: selectedEvent.end_time_unix_nano ?? selectedEvent.start_time_unix_nano,
@@ -30775,21 +30850,21 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30775
30850
  }
30776
30851
  ) })
30777
30852
  ] }),
30778
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Divider, {}),
30779
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Stack, { spacing: 1, children: [
30780
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30781
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30782
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30853
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Divider, {}),
30854
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(ToggleSection, { headline: "Advanced Information", initialOpen: false, children: /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Stack, { spacing: 1, children: [
30855
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30856
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Span ID" }),
30857
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_SPAN_ID_TEST_ID, variant: "body2", children: selectedEvent.span_id })
30783
30858
  ] }),
30784
- /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30785
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30786
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30859
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30860
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Trace ID" }),
30861
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_TRACE_ID_TEST_ID, variant: "body2", children: selectedEvent.trace_id })
30787
30862
  ] }),
30788
- requestId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime140.jsxs)(import_material17.Box, { children: [
30789
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30790
- /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(import_material17.Typography, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30863
+ requestId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime141.jsxs)(import_material18.Box, { children: [
30864
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { sx: { fontWeight: 600 }, variant: "caption", children: "Request ID" }),
30865
+ /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Typography, { "data-testid": EVENT_DETAILS_REQUEST_ID_TEST_ID, variant: "body2", children: requestId })
30791
30866
  ] }),
30792
- eventGroups.info && /* @__PURE__ */ (0, import_jsx_runtime140.jsx)(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30867
+ eventGroups.info && /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(EventDetail, { displayText: "Info", events: eventGroups.info, type: "info" })
30793
30868
  ] }) })
30794
30869
  ] }) })
30795
30870
  ] });
@@ -30797,32 +30872,32 @@ var EventDetails = ({ onClose, selectedEvent }) => {
30797
30872
 
30798
30873
  // src/components/trace-graph/trace-graph.tsx
30799
30874
  var import_base = require("@xyflow/react/dist/base.css");
30800
- var import_material21 = require("@mui/material");
30875
+ var import_material22 = require("@mui/material");
30801
30876
  var import_react65 = require("@xyflow/react");
30802
30877
  var import_react66 = require("react");
30803
30878
 
30804
30879
  // src/components/trace-graph/service-node.tsx
30805
- var import_material19 = require("@mui/material");
30880
+ var import_material20 = require("@mui/material");
30806
30881
  var import_style = require("@xyflow/react/dist/style.css");
30807
30882
  var import_react61 = require("@xyflow/react");
30808
30883
  var import_react62 = require("react");
30809
30884
 
30810
30885
  // src/components/trace-graph/problem-indicator.tsx
30811
- var import_icons_material10 = require("@mui/icons-material");
30812
- var import_material18 = require("@mui/material");
30886
+ var import_icons_material11 = require("@mui/icons-material");
30887
+ var import_material19 = require("@mui/material");
30813
30888
  var import_react60 = require("react");
30814
- var import_jsx_runtime141 = require("react/jsx-runtime");
30889
+ var import_jsx_runtime142 = require("react/jsx-runtime");
30815
30890
  var ProblemIndicator = ({ error }) => {
30816
30891
  const icon = (0, import_react60.useMemo)(() => {
30817
30892
  switch (error.level) {
30818
30893
  case "error": {
30819
- return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_icons_material10.Error, { sx: { color: "#d32f2f", fontSize: "14px" } });
30894
+ return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_icons_material11.Error, { sx: { color: "#d32f2f", fontSize: "14px" } });
30820
30895
  }
30821
30896
  case "warning": {
30822
- return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_icons_material10.Warning, { sx: { color: "#ff9800", fontSize: "14px" } });
30897
+ return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_icons_material11.Warning, { sx: { color: "#ff9800", fontSize: "14px" } });
30823
30898
  }
30824
30899
  default: {
30825
- return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_icons_material10.Info, { sx: { color: "#2196f3", fontSize: "14px" } });
30900
+ return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_icons_material11.Info, { sx: { color: "#2196f3", fontSize: "14px" } });
30826
30901
  }
30827
30902
  }
30828
30903
  }, [error.level]);
@@ -30839,8 +30914,8 @@ var ProblemIndicator = ({ error }) => {
30839
30914
  }
30840
30915
  }
30841
30916
  }, [error.level]);
30842
- return /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(import_material18.Tooltip, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ (0, import_jsx_runtime141.jsx)(
30843
- import_material18.Box,
30917
+ return /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_material19.Tooltip, { arrow: true, title: error.message ?? "Issue detected", children: /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
30918
+ import_material19.Box,
30844
30919
  {
30845
30920
  sx: {
30846
30921
  alignItems: "center",
@@ -30859,17 +30934,17 @@ var ProblemIndicator = ({ error }) => {
30859
30934
  };
30860
30935
 
30861
30936
  // src/components/trace-graph/service-node.tsx
30862
- var import_jsx_runtime142 = require("react/jsx-runtime");
30937
+ var import_jsx_runtime143 = require("react/jsx-runtime");
30863
30938
  var handleStyle = {
30864
30939
  backgroundColor: "white",
30865
30940
  borderColor: "lightgray",
30866
30941
  opacity: 0
30867
30942
  };
30868
30943
  var ServiceNode = (0, import_react62.memo)(({ data, selected }) => {
30869
- const theme = (0, import_material19.useTheme)();
30944
+ const theme = (0, import_material20.useTheme)();
30870
30945
  const hasErrors = (data.event.errors && data.event.errors.length > 0) ?? false;
30871
- return /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(
30872
- import_material19.Box,
30946
+ return /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(
30947
+ import_material20.Box,
30873
30948
  {
30874
30949
  "data-testid": SERVICE_NODE_TEST_ID,
30875
30950
  role: "button",
@@ -30891,19 +30966,19 @@ var ServiceNode = (0, import_react62.memo)(({ data, selected }) => {
30891
30966
  },
30892
30967
  tabIndex: 0,
30893
30968
  children: [
30894
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_react61.Handle, { position: import_react61.Position.Left, style: handleStyle, type: "target" }),
30895
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_react61.Handle, { position: import_react61.Position.Right, style: handleStyle, type: "source" }),
30896
- /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(
30897
- import_material19.Stack,
30969
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_react61.Handle, { position: import_react61.Position.Left, style: handleStyle, type: "target" }),
30970
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_react61.Handle, { position: import_react61.Position.Right, style: handleStyle, type: "source" }),
30971
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(
30972
+ import_material20.Stack,
30898
30973
  {
30899
30974
  alignItems: "center",
30900
30975
  direction: "row",
30901
30976
  sx: { gap: "8px", pb: "2px", pt: "6px", px: "8px" },
30902
30977
  children: [
30903
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_material19.Box, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
30904
- /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(import_material19.Stack, { sx: { minWidth: 0 }, children: [
30905
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
30906
- import_material19.Typography,
30978
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_material20.Box, { sx: { borderRadius: "4px", flexShrink: 0, lineHeight: 0, overflow: "hidden" }, children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(AwsServiceIcon, { hideTooltip: true, service: data.event.service_name, size: "medium" }) }),
30979
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(import_material20.Stack, { sx: { minWidth: 0 }, children: [
30980
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
30981
+ import_material20.Typography,
30907
30982
  {
30908
30983
  noWrap: true,
30909
30984
  sx: { fontWeight: 700, lineHeight: 1.25 },
@@ -30911,8 +30986,8 @@ var ServiceNode = (0, import_react62.memo)(({ data, selected }) => {
30911
30986
  children: getServiceDisplayName(data.event.service_name)
30912
30987
  }
30913
30988
  ),
30914
- data.event.resource_name != "" && /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
30915
- import_material19.Typography,
30989
+ data.event.resource_name != "" && /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
30990
+ import_material20.Typography,
30916
30991
  {
30917
30992
  color: "text.secondary",
30918
30993
  noWrap: true,
@@ -30925,16 +31000,16 @@ var ServiceNode = (0, import_react62.memo)(({ data, selected }) => {
30925
31000
  ]
30926
31001
  }
30927
31002
  ),
30928
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(import_material19.Divider, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
30929
- /* @__PURE__ */ (0, import_jsx_runtime142.jsxs)(
30930
- import_material19.Stack,
31003
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_material20.Divider, { sx: { ml: "38px", mr: "8px", my: "5px" } }),
31004
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(
31005
+ import_material20.Stack,
30931
31006
  {
30932
31007
  alignItems: "center",
30933
31008
  direction: "row",
30934
31009
  sx: { minWidth: 0, pb: "5px", pr: "8px", pt: "1px" },
30935
31010
  children: [
30936
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
30937
- import_material19.Box,
31011
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
31012
+ import_material20.Box,
30938
31013
  {
30939
31014
  sx: {
30940
31015
  alignItems: "center",
@@ -30943,11 +31018,11 @@ var ServiceNode = (0, import_react62.memo)(({ data, selected }) => {
30943
31018
  justifyContent: "center",
30944
31019
  width: "38px"
30945
31020
  },
30946
- children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(ProblemIndicator, { error }, error.span_id))
31021
+ children: hasErrors && data.event.errors?.map((error) => /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(ProblemIndicator, { error }, error.span_id))
30947
31022
  }
30948
31023
  ),
30949
- /* @__PURE__ */ (0, import_jsx_runtime142.jsx)(
30950
- import_material19.Typography,
31024
+ /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
31025
+ import_material20.Typography,
30951
31026
  {
30952
31027
  "data-testid": SERVICE_NODE_OPERATION_NAME_TEST_ID,
30953
31028
  noWrap: true,
@@ -31019,12 +31094,12 @@ var getLayoutedNodesAndEdges = (inputNodes, inputEdges) => {
31019
31094
  };
31020
31095
 
31021
31096
  // src/components/trace-graph/xyflow/controls.tsx
31022
- var import_icons_material11 = require("@mui/icons-material");
31023
- var import_material20 = require("@mui/material");
31097
+ var import_icons_material12 = require("@mui/icons-material");
31098
+ var import_material21 = require("@mui/material");
31024
31099
  var import_react63 = require("@xyflow/react");
31025
31100
  var import_react64 = require("react");
31026
31101
  var import_shallow = require("zustand/shallow");
31027
- var import_jsx_runtime143 = require("react/jsx-runtime");
31102
+ var import_jsx_runtime144 = require("react/jsx-runtime");
31028
31103
  var selector = (s2) => ({
31029
31104
  isInteractive: s2.nodesDraggable || s2.nodesConnectable || s2.elementsSelectable,
31030
31105
  maxZoomReached: s2.transform[2] >= s2.maxZoom,
@@ -31042,8 +31117,8 @@ var Controls = (0, import_react64.memo)(() => {
31042
31117
  const onFitViewHandler = () => {
31043
31118
  void fitView();
31044
31119
  };
31045
- return /* @__PURE__ */ (0, import_jsx_runtime143.jsxs)(
31046
- import_material20.Box,
31120
+ return /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(
31121
+ import_material21.Box,
31047
31122
  {
31048
31123
  sx: {
31049
31124
  bottom: 0,
@@ -31056,33 +31131,33 @@ var Controls = (0, import_react64.memo)(() => {
31056
31131
  zIndex: 5
31057
31132
  },
31058
31133
  children: [
31059
- /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
31060
- import_material20.IconButton,
31134
+ /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
31135
+ import_material21.IconButton,
31061
31136
  {
31062
31137
  className: "react-flow__controls-zoomin",
31063
31138
  disabled: maxZoomReached,
31064
31139
  onClick: onZoomInHandler,
31065
31140
  size: "small",
31066
- children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_icons_material11.Add, {})
31141
+ children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_icons_material12.Add, {})
31067
31142
  }
31068
31143
  ),
31069
- /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
31070
- import_material20.IconButton,
31144
+ /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
31145
+ import_material21.IconButton,
31071
31146
  {
31072
31147
  className: "react-flow__controls-zoomout",
31073
31148
  disabled: minZoomReached,
31074
31149
  onClick: onZoomOutHandler,
31075
31150
  size: "small",
31076
- children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_icons_material11.Remove, {})
31151
+ children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_icons_material12.Remove, {})
31077
31152
  }
31078
31153
  ),
31079
- /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(
31080
- import_material20.IconButton,
31154
+ /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
31155
+ import_material21.IconButton,
31081
31156
  {
31082
31157
  className: "react-flow__controls-fitview",
31083
31158
  onClick: onFitViewHandler,
31084
31159
  size: "small",
31085
- children: /* @__PURE__ */ (0, import_jsx_runtime143.jsx)(import_icons_material11.FitScreen, {})
31160
+ children: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_icons_material12.FitScreen, {})
31086
31161
  }
31087
31162
  )
31088
31163
  ]
@@ -31091,7 +31166,7 @@ var Controls = (0, import_react64.memo)(() => {
31091
31166
  });
31092
31167
 
31093
31168
  // src/components/trace-graph/trace-graph.tsx
31094
- var import_jsx_runtime144 = require("react/jsx-runtime");
31169
+ var import_jsx_runtime145 = require("react/jsx-runtime");
31095
31170
  var nodeTypes = {
31096
31171
  service: ServiceNode
31097
31172
  };
@@ -31153,12 +31228,12 @@ var TraceGraph = ({
31153
31228
  setNodes(layoutedNodes);
31154
31229
  setEdges(layoutedEdges);
31155
31230
  }, [spans.data, initialFocusEventId, setNodes, setEdges]);
31156
- const theme = (0, import_material21.useTheme)();
31157
- return /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(import_jsx_runtime144.Fragment, { children: [
31158
- spans.error && /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(
31159
- import_material21.Alert,
31231
+ const theme = (0, import_material22.useTheme)();
31232
+ return /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(import_jsx_runtime145.Fragment, { children: [
31233
+ spans.error && /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(
31234
+ import_material22.Alert,
31160
31235
  {
31161
- action: /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(import_material21.Button, { onClick: () => {
31236
+ action: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(import_material22.Button, { onClick: () => {
31162
31237
  onRefresh();
31163
31238
  }, children: "Retry" }),
31164
31239
  severity: "error",
@@ -31169,7 +31244,7 @@ var TraceGraph = ({
31169
31244
  ]
31170
31245
  }
31171
31246
  ),
31172
- /* @__PURE__ */ (0, import_jsx_runtime144.jsxs)(
31247
+ /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(
31173
31248
  import_react65.ReactFlow,
31174
31249
  {
31175
31250
  "data-testid": TRACE_GRAPH_TEST_ID,
@@ -31187,8 +31262,8 @@ var TraceGraph = ({
31187
31262
  onNodesChange,
31188
31263
  selectNodesOnDrag: false,
31189
31264
  children: [
31190
- /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(Controls, {}),
31191
- /* @__PURE__ */ (0, import_jsx_runtime144.jsx)(
31265
+ /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Controls, {}),
31266
+ /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
31192
31267
  import_react65.Background,
31193
31268
  {
31194
31269
  bgColor: theme.palette.background.default,
@@ -31202,7 +31277,7 @@ var TraceGraph = ({
31202
31277
  };
31203
31278
 
31204
31279
  // src/pages/trace-graph-page.tsx
31205
- var import_jsx_runtime145 = require("react/jsx-runtime");
31280
+ var import_jsx_runtime146 = require("react/jsx-runtime");
31206
31281
  var HEADER_HEIGHT = 56;
31207
31282
  var DRAWER_WIDTH = "35%";
31208
31283
  var Main = (0, import_styles.styled)("main", { shouldForwardProp: (property) => property !== "open" })(({ open, theme }) => ({
@@ -31220,7 +31295,7 @@ var Main = (0, import_styles.styled)("main", { shouldForwardProp: (property) =>
31220
31295
  })
31221
31296
  }
31222
31297
  }));
31223
- var StyledDrawer = (0, import_styles.styled)(import_material22.Drawer)(() => ({
31298
+ var StyledDrawer = (0, import_styles.styled)(import_material23.Drawer)(() => ({
31224
31299
  "& .MuiDrawer-paper": {
31225
31300
  bottom: 0,
31226
31301
  boxSizing: "border-box",
@@ -31251,8 +31326,8 @@ var TraceGraphView = ({
31251
31326
  traceId
31252
31327
  }) => {
31253
31328
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31254
- return /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(
31255
- import_material22.Box,
31329
+ return /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(
31330
+ import_material23.Box,
31256
31331
  {
31257
31332
  "data-testid": TRACE_GRAPH_PAGE_TEST_ID,
31258
31333
  sx: {
@@ -31264,14 +31339,14 @@ var TraceGraphView = ({
31264
31339
  overflow: "hidden"
31265
31340
  },
31266
31341
  children: [
31267
- /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(import_material22.Box, { sx: { display: "flex", width: "100%" }, children: [
31268
- /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(import_material22.Button, { onClick: () => {
31342
+ /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(import_material23.Box, { sx: { display: "flex", width: "100%" }, children: [
31343
+ /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(import_material23.Button, { onClick: () => {
31269
31344
  navigateToSpansList();
31270
- }, startIcon: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(import_icons_material12.ArrowBack, {}), children: "Go back" }),
31271
- /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(import_material22.Box, { sx: { flexGrow: 1 } })
31345
+ }, startIcon: /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(import_icons_material13.ArrowBack, {}), children: "Go back" }),
31346
+ /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(import_material23.Box, { sx: { flexGrow: 1 } })
31272
31347
  ] }),
31273
- /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
31274
- import_material22.Paper,
31348
+ /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31349
+ import_material23.Paper,
31275
31350
  {
31276
31351
  sx: {
31277
31352
  display: "flex",
@@ -31280,7 +31355,7 @@ var TraceGraphView = ({
31280
31355
  position: "relative",
31281
31356
  width: "100%"
31282
31357
  },
31283
- children: shouldShowStatusMessage ? /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
31358
+ children: shouldShowStatusMessage ? /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31284
31359
  StatusMessage,
31285
31360
  {
31286
31361
  error: statusError,
@@ -31288,15 +31363,15 @@ var TraceGraphView = ({
31288
31363
  onRetry: handleRetry,
31289
31364
  status
31290
31365
  }
31291
- ) : /* @__PURE__ */ (0, import_jsx_runtime145.jsxs)(import_jsx_runtime145.Fragment, { children: [
31292
- /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(Main, { open, children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
31293
- import_material22.Box,
31366
+ ) : /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(import_jsx_runtime146.Fragment, { children: [
31367
+ /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(Main, { open, children: /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31368
+ import_material23.Box,
31294
31369
  {
31295
31370
  sx: {
31296
31371
  height: "100%",
31297
31372
  overflow: "auto"
31298
31373
  },
31299
- children: traceId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(import_react67.ReactFlowProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
31374
+ children: traceId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(import_react67.ReactFlowProvider, { children: /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31300
31375
  TraceGraph,
31301
31376
  {
31302
31377
  initialFocusEventId: spanId,
@@ -31313,7 +31388,7 @@ var TraceGraphView = ({
31313
31388
  ) })
31314
31389
  }
31315
31390
  ) }),
31316
- /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(EventDetails, { onClose: handleClose, selectedEvent }) })
31391
+ /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(StyledDrawer, { anchor: "right", open, variant: "persistent", children: /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(EventDetails, { onClose: handleClose, selectedEvent }) })
31317
31392
  ] })
31318
31393
  }
31319
31394
  )
@@ -31406,7 +31481,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31406
31481
  const navigateToSpansList = (0, import_react68.useCallback)(() => {
31407
31482
  onClose?.();
31408
31483
  }, [onClose]);
31409
- return /* @__PURE__ */ (0, import_jsx_runtime145.jsx)(
31484
+ return /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31410
31485
  TraceGraphView,
31411
31486
  {
31412
31487
  fetchError,
@@ -31431,7 +31506,7 @@ var TraceGraphPage = ({ onClose, spanId, traceId }) => {
31431
31506
  };
31432
31507
 
31433
31508
  // src/pages/spans-list-page.tsx
31434
- var import_jsx_runtime146 = require("react/jsx-runtime");
31509
+ var import_jsx_runtime147 = require("react/jsx-runtime");
31435
31510
  var SpansListPage = () => {
31436
31511
  const api = useAppInspectorApi();
31437
31512
  const {
@@ -31478,9 +31553,9 @@ var SpansListPage = () => {
31478
31553
  void checkStatus();
31479
31554
  }, [api, checkStatus, clearFetchError]);
31480
31555
  const shouldShowStatusMessage = Boolean(statusError) || status?.status === "DISABLED";
31481
- return /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(import_jsx_runtime146.Fragment, { children: [
31482
- /* @__PURE__ */ (0, import_jsx_runtime146.jsxs)(
31483
- import_material23.Box,
31556
+ return /* @__PURE__ */ (0, import_jsx_runtime147.jsxs)(import_jsx_runtime147.Fragment, { children: [
31557
+ /* @__PURE__ */ (0, import_jsx_runtime147.jsxs)(
31558
+ import_material24.Box,
31484
31559
  {
31485
31560
  "data-testid": SPANS_LIST_PAGE_TEST_ID,
31486
31561
  sx: {
@@ -31495,7 +31570,7 @@ var SpansListPage = () => {
31495
31570
  width: "100%"
31496
31571
  },
31497
31572
  children: [
31498
- !checking && !shouldShowStatusMessage && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31573
+ !checking && !shouldShowStatusMessage && /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
31499
31574
  EmulatorVersionBanner,
31500
31575
  {
31501
31576
  compatibility: bannerDismissed && versionCompatibility === "warning" ? "ok" : versionCompatibility,
@@ -31505,7 +31580,7 @@ var SpansListPage = () => {
31505
31580
  } : void 0
31506
31581
  }
31507
31582
  ),
31508
- shouldShowStatusMessage ? /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31583
+ shouldShowStatusMessage ? /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
31509
31584
  StatusMessage,
31510
31585
  {
31511
31586
  error: statusError,
@@ -31514,7 +31589,7 @@ var SpansListPage = () => {
31514
31589
  onRetry: handleRetry,
31515
31590
  status
31516
31591
  }
31517
- ) : /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(
31592
+ ) : /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(
31518
31593
  SpansList,
31519
31594
  {
31520
31595
  clearingSpans,
@@ -31542,7 +31617,7 @@ var SpansListPage = () => {
31542
31617
  ]
31543
31618
  }
31544
31619
  ),
31545
- selectedTraceId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime146.jsx)(TraceGraphPage, { onClose: () => {
31620
+ selectedTraceId !== void 0 && /* @__PURE__ */ (0, import_jsx_runtime147.jsx)(TraceGraphPage, { onClose: () => {
31546
31621
  setSelectedTraceId(void 0);
31547
31622
  }, spanId: selectedSpanId, traceId: selectedTraceId })
31548
31623
  ] });