@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
package/icons/Opinion.js CHANGED
@@ -1,107 +1,123 @@
1
- import { jsxs as x, Fragment as R, jsx as r } from "react/jsx-runtime";
2
- import { I as u } from "../iconify-BBckr5AQ.js";
3
- import { useTheme as S, Stack as b, Chip as y, Divider as j, Grid as I } from "@mui/material";
4
- import q from "../components/CountBadge.js";
5
- import { C as v } from "../AnnotationPreview-BO7rVnOP.js";
6
- import { g as B } from "../groupBy-br8xmD2R.js";
7
- import { s as E } from "../sortBy-DY2JBf9n.js";
8
- import { s as M } from "../sumBy-DuMASLPd.js";
9
- import { memo as D, useRef as F, useMemo as a, useCallback as G, useEffect as K } from "react";
10
- import { u as C } from "../index-Dj5C04IX.js";
11
- const w = { malicious: 3, suspicious: 2, obscure: 1, benign: 0 }, L = ({ annotations: m, value: l, counters: z = !0, disableTooltip: n = !1, ubiquitous: p = !1, ...f }) => {
12
- const s = S(), $ = C(v, (e) => e.showInfo), g = C(v, (e) => e.closeInfo), h = F(), i = a(
13
- () => m.filter((e) => e.type === "opinion" && e.ubiquitous === p),
14
- [m, p]
15
- ), t = a(
16
- () => Object.entries(B(i, "value")).map(([e, o]) => [e, M(o, "quantity")]).sort(([e, o], [k, d]) => d !== o ? d - o : (w[k] ?? -1) - (w[e] ?? -1)),
17
- [i]
18
- ), c = G(
19
- (e) => e === "benign" ? "mdi:shield-check" : e === "suspicious" ? "mdi:warning-outline" : e === "obscure" ? "bi:eye-slash-fill" : "mdi:warning-decagram",
1
+ import { jsxs, Fragment, jsx } from "react/jsx-runtime";
2
+ import { I as Icon } from "../iconify-CXMreGTg.js";
3
+ import { useTheme, Stack, Chip, Divider, Grid } from "@mui/material";
4
+ import CountBadge from "../components/CountBadge.js";
5
+ import { C as CluePopupContext } from "../AnnotationPreview-Dmz7taAU.js";
6
+ import { g as groupBy } from "../groupBy-xqz-n0Vd.js";
7
+ import { s as sortBy } from "../sortBy-DfSj8IoJ.js";
8
+ import { s as sumBy } from "../sumBy-D-hb_NY-.js";
9
+ import { memo, useRef, useMemo, useCallback, useEffect } from "react";
10
+ import { u as useContextSelector } from "../index-AMfoEg_6.js";
11
+ const SEVERITY_RANK = { malicious: 3, suspicious: 2, obscure: 1, benign: 0 };
12
+ const OpinionIcon = ({ annotations, value, counters = true, disableTooltip = false, ubiquitous = false, ...otherProps }) => {
13
+ const theme = useTheme();
14
+ const showInfo = useContextSelector(CluePopupContext, (state) => state.showInfo);
15
+ const closeInfo = useContextSelector(CluePopupContext, (state) => state.closeInfo);
16
+ const anchorRef = useRef();
17
+ const opinionAnnotations = useMemo(
18
+ () => annotations.filter((annotation) => annotation.type === "opinion" && annotation.ubiquitous === ubiquitous),
19
+ [annotations, ubiquitous]
20
+ );
21
+ const sortedOpinions = useMemo(
22
+ () => Object.entries(groupBy(opinionAnnotations, "value")).map(([_value, _annotations]) => [_value, sumBy(_annotations, "quantity")]).sort(([opinionA, countA], [opinionB, countB]) => {
23
+ if (countB !== countA) return countB - countA;
24
+ return (SEVERITY_RANK[opinionB] ?? -1) - (SEVERITY_RANK[opinionA] ?? -1);
25
+ }),
26
+ [opinionAnnotations]
27
+ );
28
+ const icon = useCallback(
29
+ (_opinion) => _opinion === "benign" ? "mdi:shield-check" : _opinion === "suspicious" ? "mdi:warning-outline" : _opinion === "obscure" ? "bi:eye-slash-fill" : "mdi:warning-decagram",
20
30
  []
21
31
  );
22
- K(() => {
23
- n && g("opinion", l);
24
- }, [n]);
25
- const O = a(
26
- () => /* @__PURE__ */ x(b, { spacing: 1, onClick: (e) => e.stopPropagation(), children: [
27
- i.length > 1 && /* @__PURE__ */ x(R, { children: [
28
- /* @__PURE__ */ r(b, { direction: "row", spacing: 1, children: t.map(([e, o]) => /* @__PURE__ */ r(
29
- y,
32
+ useEffect(() => {
33
+ if (disableTooltip) {
34
+ closeInfo("opinion", value);
35
+ }
36
+ }, [disableTooltip]);
37
+ const tooltipContent = useMemo(
38
+ () => /* @__PURE__ */ jsxs(Stack, { spacing: 1, onClick: (e) => e.stopPropagation(), children: [
39
+ opinionAnnotations.length > 1 && /* @__PURE__ */ jsxs(Fragment, { children: [
40
+ /* @__PURE__ */ jsx(Stack, { direction: "row", spacing: 1, children: sortedOpinions.map(([type, count]) => /* @__PURE__ */ jsx(
41
+ Chip,
30
42
  {
31
43
  size: "small",
32
44
  variant: "outlined",
33
- label: `${e}: ${o}`,
34
- icon: /* @__PURE__ */ r(u, { icon: c(e) }),
45
+ label: `${type}: ${count}`,
46
+ icon: /* @__PURE__ */ jsx(Icon, { icon: icon(type) }),
35
47
  sx: { textTransform: "capitalize" },
36
48
  color: {
37
49
  benign: "success",
38
50
  suspicious: "warning",
39
51
  obscure: "error",
40
52
  malicious: "error"
41
- }[e]
53
+ }[type]
42
54
  },
43
- e
55
+ type
44
56
  )) }),
45
- /* @__PURE__ */ r(j, { orientation: "horizontal", flexItem: !0 })
57
+ /* @__PURE__ */ jsx(Divider, { orientation: "horizontal", flexItem: true })
46
58
  ] }),
47
- /* @__PURE__ */ r(
48
- I,
59
+ /* @__PURE__ */ jsx(
60
+ Grid,
49
61
  {
50
62
  sx: {
51
- mt: i.length < 2 && `${s.spacing(-0.5)} !important`,
52
- ml: `${s.spacing(-0.5)} !important`
63
+ mt: opinionAnnotations.length < 2 && `${theme.spacing(-0.5)} !important`,
64
+ ml: `${theme.spacing(-0.5)} !important`
53
65
  },
54
- container: !0,
66
+ container: true,
55
67
  spacing: 0.5,
56
68
  maxWidth: "500px",
57
- children: E(i, "value").map((e) => /* @__PURE__ */ r(I, { item: !0, children: /* @__PURE__ */ r(
58
- y,
69
+ children: sortBy(opinionAnnotations, "value").map((annotation) => /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
70
+ Chip,
59
71
  {
60
72
  size: "small",
61
73
  variant: "outlined",
62
- label: (e.analytic ?? e.author) + (e.quantity > 1 ? ` (x${e.quantity})` : ""),
63
- icon: /* @__PURE__ */ r(u, { icon: c(e.value) }),
74
+ label: (annotation.analytic ?? annotation.author) + (annotation.quantity > 1 ? ` (x${annotation.quantity})` : ""),
75
+ icon: /* @__PURE__ */ jsx(Icon, { icon: icon(annotation.value) }),
64
76
  color: {
65
77
  benign: "success",
66
78
  suspicious: "warning",
67
79
  obscure: "error",
68
80
  malicious: "error"
69
- }[e.value]
81
+ }[annotation.value]
70
82
  }
71
- ) }, (e.analytic ?? e.author) + e.value))
83
+ ) }, (annotation.analytic ?? annotation.author) + annotation.value))
72
84
  }
73
85
  )
74
86
  ] }),
75
- [c, i, t, s]
87
+ [icon, opinionAnnotations, sortedOpinions, theme]
76
88
  );
77
- return (i == null ? void 0 : i.length) < 1 ? null : /* @__PURE__ */ r(
89
+ if ((opinionAnnotations == null ? void 0 : opinionAnnotations.length) < 1) {
90
+ return null;
91
+ }
92
+ return /* @__PURE__ */ jsx(
78
93
  "span",
79
94
  {
80
- ref: h,
95
+ ref: anchorRef,
81
96
  style: { display: "flex" },
82
- onMouseOver: n ? void 0 : () => $("opinion", h.current, l, { content: O }),
83
- onMouseLeave: n ? void 0 : () => g("opinion", l),
84
- children: /* @__PURE__ */ r(q, { disabled: !z, count: t[0][1], children: /* @__PURE__ */ r(
85
- u,
97
+ onMouseOver: disableTooltip ? void 0 : () => showInfo("opinion", anchorRef.current, value, { content: tooltipContent }),
98
+ onMouseLeave: disableTooltip ? void 0 : () => closeInfo("opinion", value),
99
+ children: /* @__PURE__ */ jsx(CountBadge, { disabled: !counters, count: sortedOpinions[0][1], children: /* @__PURE__ */ jsx(
100
+ Icon,
86
101
  {
87
102
  fontSize: "1.25em",
88
- ...f,
89
- icon: c(t[0][0]),
103
+ ...otherProps,
104
+ icon: icon(sortedOpinions[0][0]),
90
105
  color: {
91
- benign: s.palette.success.light,
92
- suspicious: s.palette.warning.light,
93
- obscure: s.palette.error.light,
94
- malicious: s.palette.error.light
95
- }[t[0][0]],
106
+ benign: theme.palette.success.light,
107
+ suspicious: theme.palette.warning.light,
108
+ obscure: theme.palette.error.light,
109
+ malicious: theme.palette.error.light
110
+ }[sortedOpinions[0][0]],
96
111
  style: {
97
112
  zIndex: 2,
98
- ...f.style ?? {}
113
+ ...otherProps.style ?? {}
99
114
  }
100
115
  }
101
116
  ) })
102
117
  }
103
118
  );
104
- }, X = D(L);
119
+ };
120
+ const OpinionIcon$1 = memo(OpinionIcon);
105
121
  export {
106
- X as default
122
+ OpinionIcon$1 as default
107
123
  };
package/icons/iconMap.js CHANGED
@@ -1,4 +1,4 @@
1
- const o = {
1
+ const ICON_MAP = {
2
2
  context: "material-symbols:contextual-token",
3
3
  opinion: "material-symbols:how-to-vote-rounded",
4
4
  mitigation: "material-symbols:shield-locked-rounded",
@@ -6,5 +6,5 @@ const o = {
6
6
  assessment: "material-symbols:menu-book"
7
7
  };
8
8
  export {
9
- o as ICON_MAP
9
+ ICON_MAP
10
10
  };
@@ -0,0 +1,6 @@
1
+ function identity(value) {
2
+ return value;
3
+ }
4
+ export {
5
+ identity as i
6
+ };