@cccsaurora/clue-ui 1.2.4-patch.275 → 1.2.5-dev.298

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.
Files changed (188) hide show
  1. package/ActionForm-D6gYuFRR.js +5970 -0
  2. package/AnnotationDetails-Zx4pjBiN.js +175 -0
  3. package/AnnotationPreview-Dmz7taAU.js +188 -0
  4. package/ClueEnrichContext-CJEJxrgs.js +541 -0
  5. package/FlexOne-BSYAhhtG.js +9 -0
  6. package/_MapCache-WmuDdwuH.js +222 -0
  7. package/_Uint8Array-B7JqpgFX.js +128 -0
  8. package/_baseAssignValue-CGTuELqU.js +25 -0
  9. package/_baseClone-CkNrTyhm.js +283 -0
  10. package/_baseExtremum-kob8QXyt.js +18 -0
  11. package/_baseFlatten-jIR_sN_-.js +92 -0
  12. package/_baseGet-Bx3A4Qfp.js +108 -0
  13. package/_baseIsEqual-C5OTWzTk.js +208 -0
  14. package/_baseIteratee-avi7MX2o.js +126 -0
  15. package/_baseSlice-GAv_YFTT.js +20 -0
  16. package/_baseSum-D0WC1dN0.js +13 -0
  17. package/_baseUniq-BI9GIHMF.js +115 -0
  18. package/_commonjsHelpers-DWwsNxpa.js +8 -0
  19. package/_createAggregator-QD8MzKwe.js +63 -0
  20. package/_getPrototype-CU0j_POw.js +5 -0
  21. package/_getTag-Ckxxfr88.js +126 -0
  22. package/_isIterateeCall-Ds3sw2SF.js +17 -0
  23. package/_setToArray-CaPKQhcz.js +33 -0
  24. package/cloneDeep-DJrLSw8W.js +8 -0
  25. package/components/AnnotationBody.js +49 -35
  26. package/components/AnnotationDetailPopover.js +36 -30
  27. package/components/AnnotationDetails.js +7 -7
  28. package/components/AnnotationEntry.js +35 -35
  29. package/components/AnnotationPreview.js +5 -5
  30. package/components/ClassificationChip.js +44 -23
  31. package/components/CountBadge.js +31 -26
  32. package/components/EnrichedCard.js +110 -97
  33. package/components/EnrichedChip.js +130 -105
  34. package/components/EnrichedTypography.js +133 -107
  35. package/components/ErrorBoundary.js +28 -24
  36. package/components/RetryFailedEnrichments.js +10 -9
  37. package/components/SourcePicker.js +57 -49
  38. package/components/actions/ActionForm.js +4 -4
  39. package/components/actions/ExecutePopover.js +75 -59
  40. package/components/actions/ResultModal.js +4 -4
  41. package/components/actions/form/schemaAdapter.js +39 -23
  42. package/components/actions/formats/FileResult.js +86 -59
  43. package/components/actions/formats/index.js +21 -10
  44. package/components/display/graph/ExpandMoreButton.js +10 -10
  45. package/components/display/graph/elements/NodeCard.js +111 -91
  46. package/components/display/graph/elements/NodeTag.js +15 -13
  47. package/components/display/graph/index.js +261 -202
  48. package/components/display/graph/visualizations/Leaf.js +88 -69
  49. package/components/display/graph/visualizations/cloud/index.js +98 -81
  50. package/components/display/graph/visualizations/icons/BaseIcon.js +26 -21
  51. package/components/display/graph/visualizations/icons/BugIcon.js +12 -12
  52. package/components/display/graph/visualizations/icons/HostIcon.js +12 -12
  53. package/components/display/graph/visualizations/icons/NetworkIcon.js +12 -12
  54. package/components/display/graph/visualizations/icons/ProcessIcon.js +12 -12
  55. package/components/display/graph/visualizations/icons/TargetIcon.js +13 -13
  56. package/components/display/graph/visualizations/icons/index.js +14 -13
  57. package/components/display/graph/visualizations/panels/NodePanel.js +10 -8
  58. package/components/display/graph/visualizations/tree/BundleLine.js +108 -81
  59. package/components/display/graph/visualizations/tree/Triangle.js +13 -13
  60. package/components/display/graph/visualizations/tree/index.js +408 -306
  61. package/components/display/icons/Iconified.js +27 -12
  62. package/components/display/json/index.js +4 -4
  63. package/components/display/markdown/index.js +8678 -5770
  64. package/components/enrichment/EnrichPopover.js +54 -46
  65. package/components/fetchers/Fetcher.js +158 -119
  66. package/components/fetchers/PreviewModal.js +20 -17
  67. package/components/fetchers/StatusChip.js +21 -17
  68. package/components/group/Entry.js +13 -11
  69. package/components/group/Group.js +13 -10
  70. package/components/group/GroupControl.js +76 -65
  71. package/components/stats/QueryStatus.js +43 -33
  72. package/countBy-c6S3dvSW.js +14 -0
  73. package/data/event.js +6 -4
  74. package/database/index.js +2 -2
  75. package/debounce-bV0h5FC5.js +92 -0
  76. package/get-DSsNkRQs.js +8 -0
  77. package/groupBy-xqz-n0Vd.js +14 -0
  78. package/hooks/ClueActionContext.d.ts +10 -2
  79. package/hooks/ClueActionContext.js +6 -6
  80. package/hooks/ClueComponentContext.js +29 -23
  81. package/hooks/ClueConfigProvider.js +14 -12
  82. package/hooks/ClueDatabaseContext.js +19 -13
  83. package/hooks/ClueEnrichContext.js +8 -8
  84. package/hooks/ClueFetcherContext.js +83 -56
  85. package/hooks/ClueGroupContext.js +17 -14
  86. package/hooks/CluePopupContext.js +5 -5
  87. package/hooks/ClueProvider.js +12 -10
  88. package/hooks/selectors.js +7 -7
  89. package/hooks/useActionResult.d.ts +1 -0
  90. package/hooks/useActionResult.js +3 -3
  91. package/hooks/useAnnotations.js +47 -31
  92. package/hooks/useClue.js +6 -4
  93. package/hooks/useClueActions.js +3 -3
  94. package/hooks/useClueConfig.js +6 -4
  95. package/hooks/useClueTypeConfig.js +3 -3
  96. package/hooks/useComparator.js +722 -435
  97. package/hooks/useErrors.js +22 -18
  98. package/hooks/useFetcherResult.d.ts +1 -0
  99. package/hooks/useFetcherResult.js +33 -24
  100. package/hooks/useMyHighlights.js +66 -36
  101. package/hooks/useMyLocalStorage.js +66 -37
  102. package/iconify-CXMreGTg.js +1782 -0
  103. package/icons/Action.js +66 -49
  104. package/icons/Assessment.js +85 -69
  105. package/icons/Context.js +77 -63
  106. package/icons/Opinion.js +76 -60
  107. package/icons/iconMap.js +2 -2
  108. package/identity-CPGTqrE4.js +6 -0
  109. package/index-AMfoEg_6.js +696 -0
  110. package/index-B6C2a_Lg.js +1172 -0
  111. package/index-C12gPw2W.js +17698 -0
  112. package/index-DCKkHTvx.js +15750 -0
  113. package/index-JcKyZeoY.js +465 -0
  114. package/isNil-CIubwp4T.js +6 -0
  115. package/isObject-FTY-5JQX.js +7 -0
  116. package/isObjectLike-OAgjjZye.js +48 -0
  117. package/isSymbol-Xd2FsJyp.js +8 -0
  118. package/last-CUCl67Im.js +7 -0
  119. package/main.js +60 -60
  120. package/maxBy-IKHzFrCS.js +8 -0
  121. package/package.json +1 -1
  122. package/sortBy-DfSj8IoJ.js +96 -0
  123. package/sumBy-D-hb_NY-.js +8 -0
  124. package/text/Frequency.js +42 -23
  125. package/toFinite-Bc55msYj.js +16 -0
  126. package/toNumber-DPxy1FBy.js +39 -0
  127. package/types/RunningActionData.d.ts +1 -0
  128. package/types/WithActionData.d.ts +1 -0
  129. package/useClueTypeConfig-Z1LFp01b.js +3289 -0
  130. package/utils/chain.js +92 -65
  131. package/utils/classificationParser.js +519 -256
  132. package/utils/constants.js +35 -10
  133. package/utils/graph.js +72 -45
  134. package/utils/hashUtil.js +7 -7
  135. package/utils/line.js +131 -81
  136. package/utils/loggerUtil.js +5 -3
  137. package/utils/sessionStorage.js +41 -27
  138. package/utils/time.js +423 -423
  139. package/utils/utils.js +9 -9
  140. package/utils/window.js +21 -10
  141. package/utils-HmNPuoDB.js +199 -0
  142. package/ActionForm-CwsfB99X.js +0 -4458
  143. package/AnnotationDetails-Bw2JdtTL.js +0 -160
  144. package/AnnotationPreview-BO7rVnOP.js +0 -140
  145. package/ClueEnrichContext-KqRuuWNS.js +0 -418
  146. package/FlexOne-BXWFOd1T.js +0 -6
  147. package/_MapCache-BiTi0iqu.js +0 -180
  148. package/_Uint8Array-BQNOM9Rr.js +0 -101
  149. package/_baseAssignValue-CNMLQZco.js +0 -20
  150. package/_baseClone-BnT-6pyM.js +0 -207
  151. package/_baseExtremum-Ca2EHgy2.js +0 -16
  152. package/_baseFlatten-Bfr_Molw.js +0 -72
  153. package/_baseGet-DSZygzyq.js +0 -79
  154. package/_baseIsEqual-VgvaAFZG.js +0 -147
  155. package/_baseIteratee-Dbfsw5z8.js +0 -95
  156. package/_baseSlice-M5RKzt1A.js +0 -10
  157. package/_baseSum-wEbgNeUs.js +0 -10
  158. package/_baseUniq-BJcj69PL.js +0 -79
  159. package/_commonjsHelpers-DaMA6jEr.js +0 -8
  160. package/_createAggregator-k3TuAnxT.js +0 -53
  161. package/_getPrototype-Cr1Mk7BC.js +0 -5
  162. package/_getTag-CK2Sffaq.js +0 -90
  163. package/_isIterateeCall-DkJP7Rbx.js +0 -13
  164. package/_setToArray-C7yMOeww.js +0 -29
  165. package/cloneDeep-CF8TtLHr.js +0 -8
  166. package/countBy-CdYegFSu.js +0 -8
  167. package/debounce-DryYcbJ4.js +0 -56
  168. package/get-CH7kz5Ix.js +0 -8
  169. package/groupBy-br8xmD2R.js +0 -8
  170. package/iconify-BBckr5AQ.js +0 -1263
  171. package/identity-ByMq8VxU.js +0 -6
  172. package/index-BHAe_V9n.js +0 -12768
  173. package/index-BK-zfYhR.js +0 -358
  174. package/index-CA5CUNZO.js +0 -975
  175. package/index-Dj5C04IX.js +0 -568
  176. package/index-p5_wX7q1.js +0 -11729
  177. package/isNil-CjWwlQS3.js +0 -6
  178. package/isObject-B53jY8Qg.js +0 -7
  179. package/isObjectLike-BatpeCIi.js +0 -29
  180. package/isSymbol-C3_SC0Qp.js +0 -8
  181. package/last-7CdUxN0r.js +0 -7
  182. package/maxBy-Bc0dYHcO.js +0 -8
  183. package/sortBy-DY2JBf9n.js +0 -75
  184. package/sumBy-DuMASLPd.js +0 -8
  185. package/toFinite-BMy6GObD.js +0 -14
  186. package/toNumber-YVhnnJv4.js +0 -31
  187. package/useClueTypeConfig-Ct9Ygter.js +0 -2292
  188. package/utils-DmwSUrum.js +0 -129
@@ -1,85 +1,112 @@
1
- import { jsxs as c, jsx as n } from "react/jsx-runtime";
2
- import { Stack as v, Typography as u, Divider as A, Table as C, TableBody as S, TableRow as d, TableCell as l, Button as k } from "@mui/material";
3
- import M from "../../display/icons/Iconified.js";
4
- import { ClueComponentContext as R } from "../../../hooks/ClueComponentContext.js";
5
- import { useState as T, useMemo as U, useEffect as _ } from "react";
6
- import { u as j } from "../../../index-Dj5C04IX.js";
7
- const b = (t) => {
8
- const e = atob(t), o = new Uint8Array(new ArrayBuffer(e.length));
9
- for (let a = 0; a < e.length; a++)
10
- o[a] = e.charCodeAt(a);
11
- return o;
12
- }, H = (t) => {
13
- if (t === 0)
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Stack, Typography, Divider, Table, TableBody, TableRow, TableCell, Button } from "@mui/material";
3
+ import Iconified from "../../display/icons/Iconified.js";
4
+ import { ClueComponentContext } from "../../../hooks/ClueComponentContext.js";
5
+ import { useState, useMemo, useEffect } from "react";
6
+ import { u as useContextSelector } from "../../../index-AMfoEg_6.js";
7
+ const decodeBase64ToBytes = (base64Data) => {
8
+ const byteCharacters = atob(base64Data);
9
+ const byteArray = new Uint8Array(new ArrayBuffer(byteCharacters.length));
10
+ for (let i = 0; i < byteCharacters.length; i++) {
11
+ byteArray[i] = byteCharacters.charCodeAt(i);
12
+ }
13
+ return byteArray;
14
+ };
15
+ const formatBytes = (bytes) => {
16
+ if (bytes === 0) {
14
17
  return "0 B";
15
- const e = ["B", "KB", "MB", "GB"], o = Math.min(Math.floor(Math.log(t) / Math.log(1024)), e.length - 1);
16
- return `${(t / 1024 ** o).toFixed(o === 0 ? 0 : 2)} ${e[o]}`;
17
- }, F = (t) => {
18
- const e = b(t.data), o = new Blob([e], { type: t.mime_type || "application/octet-stream" }), a = URL.createObjectURL(o), i = document.createElement("a");
19
- i.href = a, i.download = t.file_name || "result.txt", document.body.appendChild(i), i.click(), document.body.removeChild(i), URL.revokeObjectURL(a);
20
- }, D = ({ result: t }) => {
21
- var h, f, m, p, y;
22
- const { t: e } = j(R, (r) => r == null ? void 0 : r.i18next), [o, a] = T(""), i = ((h = t.action) == null ? void 0 : h.name) ?? e("actions.result.file.unknown"), s = U(() => {
23
- var r;
24
- if (!((r = t.output) != null && r.data))
18
+ }
19
+ const units = ["B", "KB", "MB", "GB"];
20
+ const unitIndex = Math.min(Math.floor(Math.log(bytes) / Math.log(1024)), units.length - 1);
21
+ const value = bytes / 1024 ** unitIndex;
22
+ return `${value.toFixed(unitIndex === 0 ? 0 : 2)} ${units[unitIndex]}`;
23
+ };
24
+ const saveFileFromServer = (output) => {
25
+ const byteArray = decodeBase64ToBytes(output.data);
26
+ const blob = new Blob([byteArray], { type: output.mime_type || "application/octet-stream" });
27
+ const url = URL.createObjectURL(blob);
28
+ const link = document.createElement("a");
29
+ link.href = url;
30
+ link.download = output.file_name || "result.txt";
31
+ document.body.appendChild(link);
32
+ link.click();
33
+ document.body.removeChild(link);
34
+ URL.revokeObjectURL(url);
35
+ };
36
+ const FileResult = ({ result }) => {
37
+ var _a, _b, _c, _d, _e;
38
+ const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx == null ? void 0 : ctx.i18next);
39
+ const [sha256Hash, setSha256Hash] = useState("");
40
+ const actionName = ((_a = result.action) == null ? void 0 : _a.name) ?? t("actions.result.file.unknown");
41
+ const outputBytes = useMemo(() => {
42
+ var _a2;
43
+ if (!((_a2 = result.output) == null ? void 0 : _a2.data)) {
25
44
  return null;
45
+ }
26
46
  try {
27
- return b(t.output.data);
47
+ return decodeBase64ToBytes(result.output.data);
28
48
  } catch {
29
49
  return null;
30
50
  }
31
- }, [(f = t.output) == null ? void 0 : f.data]);
32
- return _(() => {
33
- let r = !1;
34
- const g = async () => {
35
- if (!s || typeof crypto > "u" || !crypto.subtle) {
36
- a("N/A");
51
+ }, [(_b = result.output) == null ? void 0 : _b.data]);
52
+ useEffect(() => {
53
+ let cancelled = false;
54
+ const generateHash = async () => {
55
+ if (!outputBytes || typeof crypto === "undefined" || !crypto.subtle) {
56
+ setSha256Hash("N/A");
37
57
  return;
38
58
  }
39
- const w = await crypto.subtle.digest("SHA-256", s), x = Array.from(new Uint8Array(w)).map((B) => B.toString(16).padStart(2, "0")).join("");
40
- r || a(x);
59
+ const digest = await crypto.subtle.digest("SHA-256", outputBytes);
60
+ const digestArray = Array.from(new Uint8Array(digest));
61
+ const digestHex = digestArray.map((value) => value.toString(16).padStart(2, "0")).join("");
62
+ if (!cancelled) {
63
+ setSha256Hash(digestHex);
64
+ }
41
65
  };
42
- return a(""), g(), () => {
43
- r = !0;
66
+ setSha256Hash("");
67
+ generateHash();
68
+ return () => {
69
+ cancelled = true;
44
70
  };
45
- }, [s]), /* @__PURE__ */ c(v, { sx: { overflowY: "auto" }, spacing: 3, children: [
46
- /* @__PURE__ */ n(u, { variant: "h5", children: e("actions.result.file.title", { actionName: i }) }),
47
- /* @__PURE__ */ n(u, { children: e("actions.result.file.description", { actionName: i }) }),
48
- /* @__PURE__ */ n(A, { flexItem: !0 }),
49
- /* @__PURE__ */ n(u, { variant: "h6", children: e("actions.result.file.stats.title") }),
50
- s && /* @__PURE__ */ n(C, { sx: { maxWidth: 900 }, children: /* @__PURE__ */ c(S, { children: [
51
- /* @__PURE__ */ c(d, { children: [
52
- /* @__PURE__ */ n(l, { sx: { width: "35%" }, children: e("actions.result.file.stats.label.decoded_size") }),
53
- /* @__PURE__ */ n(l, { children: H(s.length) || "n/a" })
71
+ }, [outputBytes]);
72
+ return /* @__PURE__ */ jsxs(Stack, { sx: { overflowY: "auto" }, spacing: 3, children: [
73
+ /* @__PURE__ */ jsx(Typography, { variant: "h5", children: t("actions.result.file.title", { actionName }) }),
74
+ /* @__PURE__ */ jsx(Typography, { children: t("actions.result.file.description", { actionName }) }),
75
+ /* @__PURE__ */ jsx(Divider, { flexItem: true }),
76
+ /* @__PURE__ */ jsx(Typography, { variant: "h6", children: t("actions.result.file.stats.title") }),
77
+ outputBytes && /* @__PURE__ */ jsx(Table, { sx: { maxWidth: 900 }, children: /* @__PURE__ */ jsxs(TableBody, { children: [
78
+ /* @__PURE__ */ jsxs(TableRow, { children: [
79
+ /* @__PURE__ */ jsx(TableCell, { sx: { width: "35%" }, children: t("actions.result.file.stats.label.decoded_size") }),
80
+ /* @__PURE__ */ jsx(TableCell, { children: formatBytes(outputBytes.length) || "n/a" })
54
81
  ] }),
55
- /* @__PURE__ */ c(d, { children: [
56
- /* @__PURE__ */ n(l, { sx: { width: "35%" }, children: e("actions.result.file.stats.label.decoded_bytes") }),
57
- /* @__PURE__ */ n(l, { children: s.length || "n/a" })
82
+ /* @__PURE__ */ jsxs(TableRow, { children: [
83
+ /* @__PURE__ */ jsx(TableCell, { sx: { width: "35%" }, children: t("actions.result.file.stats.label.decoded_bytes") }),
84
+ /* @__PURE__ */ jsx(TableCell, { children: outputBytes.length || "n/a" })
58
85
  ] }),
59
- /* @__PURE__ */ c(d, { children: [
60
- /* @__PURE__ */ n(l, { sx: { width: "35%" }, children: e("actions.result.file.stats.label.base64_length") }),
61
- /* @__PURE__ */ n(l, { children: ((m = t.output) == null ? void 0 : m.data.length) ?? "n/a" })
86
+ /* @__PURE__ */ jsxs(TableRow, { children: [
87
+ /* @__PURE__ */ jsx(TableCell, { sx: { width: "35%" }, children: t("actions.result.file.stats.label.base64_length") }),
88
+ /* @__PURE__ */ jsx(TableCell, { children: ((_c = result.output) == null ? void 0 : _c.data.length) ?? "n/a" })
62
89
  ] }),
63
- /* @__PURE__ */ c(d, { children: [
64
- /* @__PURE__ */ n(l, { sx: { width: "35%" }, children: e("actions.result.file.stats.label.sha256") }),
65
- /* @__PURE__ */ n(l, { children: /* @__PURE__ */ n("code", { children: o || e("actions.result.file.stats.calculating") }) })
90
+ /* @__PURE__ */ jsxs(TableRow, { children: [
91
+ /* @__PURE__ */ jsx(TableCell, { sx: { width: "35%" }, children: t("actions.result.file.stats.label.sha256") }),
92
+ /* @__PURE__ */ jsx(TableCell, { children: /* @__PURE__ */ jsx("code", { children: sha256Hash || t("actions.result.file.stats.calculating") }) })
66
93
  ] })
67
94
  ] }) }),
68
- /* @__PURE__ */ n(
69
- k,
95
+ /* @__PURE__ */ jsx(
96
+ Button,
70
97
  {
71
- startIcon: /* @__PURE__ */ n(M, { icon: "ic:baseline-download" }),
98
+ startIcon: /* @__PURE__ */ jsx(Iconified, { icon: "ic:baseline-download" }),
72
99
  variant: "outlined",
73
100
  sx: { alignSelf: "center" },
74
- disabled: !((p = t.output) != null && p.data),
75
- onClick: () => t.output && F(t.output),
101
+ disabled: !((_d = result.output) == null ? void 0 : _d.data),
102
+ onClick: () => result.output && saveFileFromServer(result.output),
76
103
  name: "download",
77
104
  role: "button",
78
- children: e("download", { file: ((y = t.output) == null ? void 0 : y.file_name) ?? "result.txt" })
105
+ children: t("download", { file: ((_e = result.output) == null ? void 0 : _e.file_name) ?? "result.txt" })
79
106
  }
80
107
  )
81
108
  ] });
82
109
  };
83
110
  export {
84
- D as default
111
+ FileResult as default
85
112
  };
@@ -1,12 +1,23 @@
1
- import { jsx as r, jsxs as m } from "react/jsx-runtime";
2
- import { Stack as f } from "@mui/material";
3
- import { J as t } from "../../../index-BK-zfYhR.js";
4
- import a from "../../display/markdown/index.js";
5
- import i from "./FileResult.js";
6
- const u = ({ result: o }) => o.format === "markdown" ? /* @__PURE__ */ r(a, { md: o.output }) : o.format === "json" ? /* @__PURE__ */ r(t, { data: o.output, collapse: !0, forceCompact: !0 }) : o.format === "file" ? /* @__PURE__ */ r(i, { result: o }) : /* @__PURE__ */ m(f, { sx: { overflowY: "auto" }, children: [
7
- /* @__PURE__ */ r(a, { md: "`" + o.format + "` is not recognized as a format in this application." }),
8
- /* @__PURE__ */ r(t, { data: o, collapse: !0, forceCompact: !0 })
9
- ] });
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Stack } from "@mui/material";
3
+ import { J as JSONViewer } from "../../../index-JcKyZeoY.js";
4
+ import Markdown from "../../display/markdown/index.js";
5
+ import FileResult from "./FileResult.js";
6
+ const Result = ({ result }) => {
7
+ if (result.format === "markdown") {
8
+ return /* @__PURE__ */ jsx(Markdown, { md: result.output });
9
+ }
10
+ if (result.format === "json") {
11
+ return /* @__PURE__ */ jsx(JSONViewer, { data: result.output, collapse: true, forceCompact: true });
12
+ }
13
+ if (result.format === "file") {
14
+ return /* @__PURE__ */ jsx(FileResult, { result });
15
+ }
16
+ return /* @__PURE__ */ jsxs(Stack, { sx: { overflowY: "auto" }, children: [
17
+ /* @__PURE__ */ jsx(Markdown, { md: "`" + result.format + "` is not recognized as a format in this application." }),
18
+ /* @__PURE__ */ jsx(JSONViewer, { data: result, collapse: true, forceCompact: true })
19
+ ] });
20
+ };
10
21
  export {
11
- u as default
22
+ Result as default
12
23
  };
@@ -1,18 +1,18 @@
1
- import { jsx as e } from "react/jsx-runtime";
2
- import { IconButton as a } from "@mui/material";
3
- const m = (t) => {
4
- const { expand: o, ...r } = t;
5
- return /* @__PURE__ */ e(
6
- a,
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { IconButton } from "@mui/material";
3
+ const ExpandMoreButton = (props) => {
4
+ const { expand, ...other } = props;
5
+ return /* @__PURE__ */ jsx(
6
+ IconButton,
7
7
  {
8
- ...r,
8
+ ...other,
9
9
  sx: {
10
- transform: o ? "rotate(180deg)" : "rotate(0deg)",
11
- transition: (n) => n.transitions.create("transform")
10
+ transform: !expand ? "rotate(0deg)" : "rotate(180deg)",
11
+ transition: (theme) => theme.transitions.create("transform")
12
12
  }
13
13
  }
14
14
  );
15
15
  };
16
16
  export {
17
- m as default
17
+ ExpandMoreButton as default
18
18
  };
@@ -1,91 +1,111 @@
1
- import { jsxs as l, jsx as n, Fragment as b } from "react/jsx-runtime";
2
- import { Stack as c, Typography as g, Card as C, CardContent as w, Divider as m, Collapse as _ } from "@mui/material";
3
- import { a as E, f as O } from "../../../../utils-DmwSUrum.js";
4
- import { cssImportant as d } from "../../../../utils/graph.js";
5
- import { b as S, c as v, t as k, a as A } from "../../../../_baseGet-DSZygzyq.js";
6
- import { c as I, g as L, b as F } from "../../../../_baseClone-BnT-6pyM.js";
7
- import { l as N } from "../../../../last-7CdUxN0r.js";
8
- import { b as P } from "../../../../_baseSlice-M5RKzt1A.js";
9
- import { b as D, s as M, o as G } from "../../../../_baseFlatten-Bfr_Molw.js";
10
- import { useState as x, useEffect as T, useCallback as z, Fragment as B } from "react";
11
- import R from "../../icons/Iconified.js";
12
- import { J } from "../../../../index-BK-zfYhR.js";
13
- import K from "../../markdown/index.js";
14
- import $ from "../ExpandMoreButton.js";
15
- import h from "./NodeTag.js";
16
- function U(e) {
17
- var t = e == null ? 0 : e.length;
18
- return t ? D(e) : [];
1
+ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
2
+ import { Stack, Typography, Card, CardContent, Divider, Collapse } from "@mui/material";
3
+ import { a as isPlainObject, f as flatten$1 } from "../../../../utils-HmNPuoDB.js";
4
+ import { cssImportant } from "../../../../utils/graph.js";
5
+ import { b as baseGet, c as castPath, t as toKey, a as arrayMap } from "../../../../_baseGet-Bx3A4Qfp.js";
6
+ import { c as copyObject, g as getAllKeysIn, b as baseClone } from "../../../../_baseClone-CkNrTyhm.js";
7
+ import { l as last } from "../../../../last-CUCl67Im.js";
8
+ import { b as baseSlice } from "../../../../_baseSlice-GAv_YFTT.js";
9
+ import { b as baseFlatten, s as setToString, o as overRest } from "../../../../_baseFlatten-jIR_sN_-.js";
10
+ import { useState, useEffect, useCallback, Fragment as Fragment$1 } from "react";
11
+ import Iconified from "../../icons/Iconified.js";
12
+ import { J as JSONViewer } from "../../../../index-JcKyZeoY.js";
13
+ import Markdown from "../../markdown/index.js";
14
+ import ExpandMoreButton from "../ExpandMoreButton.js";
15
+ import NodeTag from "./NodeTag.js";
16
+ function flatten(array) {
17
+ var length = array == null ? 0 : array.length;
18
+ return length ? baseFlatten(array) : [];
19
19
  }
20
- function V(e) {
21
- return M(G(e, void 0, U), e + "");
20
+ function flatRest(func) {
21
+ return setToString(overRest(func, void 0, flatten), func + "");
22
22
  }
23
- function Y(e, t) {
24
- return t.length < 2 ? e : S(e, P(t, 0, -1));
23
+ function parent(object, path) {
24
+ return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));
25
25
  }
26
- var j = Object.prototype, q = j.hasOwnProperty;
27
- function H(e, t) {
28
- t = v(t, e);
29
- var r = -1, i = t.length;
30
- if (!i)
31
- return !0;
32
- for (var o = e == null || typeof e != "object" && typeof e != "function"; ++r < i; ) {
33
- var a = t[r];
34
- if (typeof a == "string") {
35
- if (a === "__proto__" && !q.call(e, "__proto__"))
36
- return !1;
37
- if (a === "constructor" && r + 1 < i && typeof t[r + 1] == "string" && t[r + 1] === "prototype") {
38
- if (o && r === 0)
39
- continue;
40
- return !1;
26
+ var objectProto = Object.prototype;
27
+ var hasOwnProperty = objectProto.hasOwnProperty;
28
+ function baseUnset(object, path) {
29
+ path = castPath(path, object);
30
+ var index = -1, length = path.length;
31
+ if (!length) {
32
+ return true;
33
+ }
34
+ var isRootPrimitive = object == null || typeof object !== "object" && typeof object !== "function";
35
+ while (++index < length) {
36
+ var key = path[index];
37
+ if (typeof key !== "string") {
38
+ continue;
39
+ }
40
+ if (key === "__proto__" && !hasOwnProperty.call(object, "__proto__")) {
41
+ return false;
42
+ }
43
+ if (key === "constructor" && index + 1 < length && typeof path[index + 1] === "string" && path[index + 1] === "prototype") {
44
+ if (isRootPrimitive && index === 0) {
45
+ continue;
41
46
  }
47
+ return false;
42
48
  }
43
49
  }
44
- var s = Y(e, t);
45
- return s == null || delete s[k(N(t))];
50
+ var obj = parent(object, path);
51
+ return obj == null || delete obj[toKey(last(path))];
46
52
  }
47
- function Q(e) {
48
- return E(e) ? void 0 : e;
53
+ function customOmitClone(value) {
54
+ return isPlainObject(value) ? void 0 : value;
49
55
  }
50
- var W = 1, X = 2, Z = 4, ee = V(function(e, t) {
51
- var r = {};
52
- if (e == null)
53
- return r;
54
- var i = !1;
55
- t = A(t, function(a) {
56
- return a = v(a, e), i || (i = a.length > 1), a;
57
- }), I(e, L(e), r), i && (r = F(r, W | X | Z, Q));
58
- for (var o = t.length; o--; )
59
- H(r, t[o]);
60
- return r;
56
+ var CLONE_DEEP_FLAG = 1, CLONE_FLAT_FLAG = 2, CLONE_SYMBOLS_FLAG = 4;
57
+ var omit = flatRest(function(object, paths) {
58
+ var result = {};
59
+ if (object == null) {
60
+ return result;
61
+ }
62
+ var isDeep = false;
63
+ paths = arrayMap(paths, function(path) {
64
+ path = castPath(path, object);
65
+ isDeep || (isDeep = path.length > 1);
66
+ return path;
67
+ });
68
+ copyObject(object, getAllKeysIn(object), result);
69
+ if (isDeep) {
70
+ result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);
71
+ }
72
+ var length = paths.length;
73
+ while (length--) {
74
+ baseUnset(result, paths[length]);
75
+ }
76
+ return result;
61
77
  });
62
- const xe = ({ node: e, sx: t = {} }) => {
63
- var u;
64
- const [r, i] = x(!1), [o, a] = x(), s = () => {
65
- i(!r);
78
+ const NodeCard = ({ node, sx = {} }) => {
79
+ var _a;
80
+ const [expanded, setExpanded] = useState(false);
81
+ const [nodeExtraData, setNodeExtraData] = useState();
82
+ const handleExpandClick = () => {
83
+ setExpanded(!expanded);
66
84
  };
67
- T(() => {
68
- a(ee(e, ["id", "edges"]));
69
- }, [e]);
70
- const y = z((f) => /* @__PURE__ */ l(c, { alignSelf: "stretch", children: [
71
- /* @__PURE__ */ n(g, { textAlign: "left", variant: "body2", color: "text.secondary", children: "Edges" }),
72
- /* @__PURE__ */ n(c, { spacing: 0.25, children: f.map((p) => /* @__PURE__ */ n(h, { nodeId: p }, p)) })
73
- ] }), []);
74
- return /* @__PURE__ */ n(
75
- C,
85
+ useEffect(() => {
86
+ setNodeExtraData(omit(node, ["id", "edges"]));
87
+ }, [node]);
88
+ const renderEdgeList = useCallback((edgeIds) => {
89
+ return /* @__PURE__ */ jsxs(Stack, { alignSelf: "stretch", children: [
90
+ /* @__PURE__ */ jsx(Typography, { textAlign: "left", variant: "body2", color: "text.secondary", children: "Edges" }),
91
+ /* @__PURE__ */ jsx(Stack, { spacing: 0.25, children: edgeIds.map((edgeId) => /* @__PURE__ */ jsx(NodeTag, { nodeId: edgeId }, edgeId)) })
92
+ ] });
93
+ }, []);
94
+ return /* @__PURE__ */ jsx(
95
+ Card,
76
96
  {
77
97
  variant: "outlined",
78
98
  sx: {
79
99
  position: "relative",
80
100
  overflow: "auto",
81
- zIndex: r ? 100 : "initial",
101
+ zIndex: expanded ? 100 : "initial",
82
102
  "& *": {
83
103
  opacity: 1
84
104
  },
85
- ...t
105
+ ...sx
86
106
  },
87
- children: /* @__PURE__ */ n(w, { sx: { p: 1 }, children: /* @__PURE__ */ l(
88
- c,
107
+ children: /* @__PURE__ */ jsx(CardContent, { sx: { p: 1 }, children: /* @__PURE__ */ jsxs(
108
+ Stack,
89
109
  {
90
110
  spacing: 1,
91
111
  sx: {
@@ -96,44 +116,44 @@ const xe = ({ node: e, sx: t = {} }) => {
96
116
  }
97
117
  },
98
118
  children: [
99
- /* @__PURE__ */ n(h, { nodeId: e.id, label: e.id, type: "header", children: /* @__PURE__ */ n(
100
- $,
119
+ /* @__PURE__ */ jsx(NodeTag, { nodeId: node.id, label: node.id, type: "header", children: /* @__PURE__ */ jsx(
120
+ ExpandMoreButton,
101
121
  {
102
- expand: r,
103
- onClick: s,
104
- "aria-expanded": r,
122
+ expand: expanded,
123
+ onClick: handleExpandClick,
124
+ "aria-expanded": expanded,
105
125
  "aria-label": "show more",
106
126
  size: "small",
107
- children: /* @__PURE__ */ n(R, { icon: "ic:baseline-expand-more", fontSize: "medium" })
127
+ children: /* @__PURE__ */ jsx(Iconified, { icon: "ic:baseline-expand-more", fontSize: "medium" })
108
128
  }
109
129
  ) }),
110
- e.markdown && /* @__PURE__ */ l(b, { children: [
111
- /* @__PURE__ */ n(m, { flexItem: !0 }),
112
- /* @__PURE__ */ n(K, { md: e.markdown, components: O(e) })
130
+ node.markdown && /* @__PURE__ */ jsxs(Fragment, { children: [
131
+ /* @__PURE__ */ jsx(Divider, { flexItem: true }),
132
+ /* @__PURE__ */ jsx(Markdown, { md: node.markdown, components: flatten$1(node) })
113
133
  ] }),
114
- !!((u = e == null ? void 0 : e.edges) != null && u.length) && /* @__PURE__ */ l(B, { children: [
115
- /* @__PURE__ */ n(m, { flexItem: !0 }),
116
- y(e == null ? void 0 : e.edges)
134
+ !!((_a = node == null ? void 0 : node.edges) == null ? void 0 : _a.length) && /* @__PURE__ */ jsxs(Fragment$1, { children: [
135
+ /* @__PURE__ */ jsx(Divider, { flexItem: true }),
136
+ renderEdgeList(node == null ? void 0 : node.edges)
117
137
  ] }),
118
- /* @__PURE__ */ n(_, { in: r, timeout: "auto", children: /* @__PURE__ */ l(
119
- c,
138
+ /* @__PURE__ */ jsx(Collapse, { in: expanded, timeout: "auto", children: /* @__PURE__ */ jsxs(
139
+ Stack,
120
140
  {
121
141
  justifyContent: "start",
122
142
  alignItems: "start",
123
143
  spacing: 1,
124
- sx: (f) => ({
144
+ sx: (theme) => ({
125
145
  "& > ul": {
126
146
  width: "100%",
127
147
  textAlign: "left",
128
- p: d(f.spacing(1)),
129
- mx: d("0"),
130
- backgroundColor: d(f.palette.background.paper)
148
+ p: cssImportant(theme.spacing(1)),
149
+ mx: cssImportant("0"),
150
+ backgroundColor: cssImportant(theme.palette.background.paper)
131
151
  }
132
152
  }),
133
153
  children: [
134
- /* @__PURE__ */ n(m, { flexItem: !0 }),
135
- /* @__PURE__ */ n(g, { textAlign: "left", variant: "body1", children: "Metadata:" }),
136
- /* @__PURE__ */ n(J, { data: o })
154
+ /* @__PURE__ */ jsx(Divider, { flexItem: true }),
155
+ /* @__PURE__ */ jsx(Typography, { textAlign: "left", variant: "body1", children: "Metadata:" }),
156
+ /* @__PURE__ */ jsx(JSONViewer, { data: nodeExtraData })
137
157
  ]
138
158
  }
139
159
  ) })
@@ -144,5 +164,5 @@ const xe = ({ node: e, sx: t = {} }) => {
144
164
  );
145
165
  };
146
166
  export {
147
- xe as default
167
+ NodeCard as default
148
168
  };
@@ -1,15 +1,17 @@
1
- import { jsxs as i, jsx as e } from "react/jsx-runtime";
2
- import { Stack as t, Typography as a, Tooltip as d } from "@mui/material";
3
- import { F as s } from "../../../../FlexOne-BXWFOd1T.js";
4
- import l from "../../icons/Iconified.js";
5
- const T = ({ nodeId: n, label: r = n, type: o = "content", children: c }) => /* @__PURE__ */ i(t, { direction: "row", spacing: 1, alignItems: "center", pr: 1, children: [
6
- o === "header" ? /* @__PURE__ */ i(t, { direction: "row", spacing: 1, alignItems: "center", sx: { overflow: "hidden" }, children: [
7
- /* @__PURE__ */ e(a, { variant: "body1", sx: { wordWrap: "break-all" }, children: r.replace(" (TRUNCATED)", "") }),
8
- r.includes("TRUNCATED") && /* @__PURE__ */ e(d, { title: "Field is truncated.", children: /* @__PURE__ */ e(l, { icon: "ic:baseline-content-cut", fontSize: "small", style: { fontSize: "0.9em" } }) })
9
- ] }) : r,
10
- /* @__PURE__ */ e(s, {}),
11
- c
12
- ] });
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { Stack, Typography, Tooltip } from "@mui/material";
3
+ import { F as FlexOne } from "../../../../FlexOne-BSYAhhtG.js";
4
+ import Iconified from "../../icons/Iconified.js";
5
+ const NodeTag = ({ nodeId, label = nodeId, type = "content", children }) => {
6
+ return /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, alignItems: "center", pr: 1, children: [
7
+ type === "header" ? /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, alignItems: "center", sx: { overflow: "hidden" }, children: [
8
+ /* @__PURE__ */ jsx(Typography, { variant: "body1", sx: { wordWrap: "break-all" }, children: label.replace(" (TRUNCATED)", "") }),
9
+ label.includes("TRUNCATED") && /* @__PURE__ */ jsx(Tooltip, { title: "Field is truncated.", children: /* @__PURE__ */ jsx(Iconified, { icon: "ic:baseline-content-cut", fontSize: "small", style: { fontSize: "0.9em" } }) })
10
+ ] }) : label,
11
+ /* @__PURE__ */ jsx(FlexOne, {}),
12
+ children
13
+ ] });
14
+ };
13
15
  export {
14
- T as default
16
+ NodeTag as default
15
17
  };