@cccsaurora/clue-ui 1.2.1 → 1.2.2-dev.263

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 (183) hide show
  1. package/ActionForm-uDp92tN2.js +5941 -0
  2. package/AnnotationDetails-DGYfOiWm.js +175 -0
  3. package/AnnotationPreview-bHObsb3P.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 +156 -118
  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.js +6 -6
  79. package/hooks/ClueComponentContext.js +29 -23
  80. package/hooks/ClueConfigProvider.js +14 -12
  81. package/hooks/ClueDatabaseContext.js +19 -13
  82. package/hooks/ClueEnrichContext.js +8 -8
  83. package/hooks/ClueFetcherContext.js +83 -56
  84. package/hooks/ClueGroupContext.js +17 -14
  85. package/hooks/CluePopupContext.js +5 -5
  86. package/hooks/ClueProvider.js +12 -10
  87. package/hooks/selectors.js +7 -7
  88. package/hooks/useActionResult.js +2 -2
  89. package/hooks/useAnnotations.js +47 -31
  90. package/hooks/useClue.js +6 -4
  91. package/hooks/useClueActions.js +3 -3
  92. package/hooks/useClueConfig.js +6 -4
  93. package/hooks/useClueTypeConfig.js +3 -3
  94. package/hooks/useComparator.js +722 -435
  95. package/hooks/useErrors.js +22 -18
  96. package/hooks/useFetcherResult.js +33 -24
  97. package/hooks/useMyHighlights.js +66 -36
  98. package/hooks/useMyLocalStorage.js +66 -37
  99. package/iconify-CXMreGTg.js +1782 -0
  100. package/icons/Action.js +66 -49
  101. package/icons/Assessment.js +85 -69
  102. package/icons/Context.js +77 -63
  103. package/icons/Opinion.js +76 -60
  104. package/icons/iconMap.js +2 -2
  105. package/identity-CPGTqrE4.js +6 -0
  106. package/index-AMfoEg_6.js +696 -0
  107. package/index-B6C2a_Lg.js +1172 -0
  108. package/index-C12gPw2W.js +17698 -0
  109. package/index-DCKkHTvx.js +15750 -0
  110. package/index-JcKyZeoY.js +465 -0
  111. package/isNil-CIubwp4T.js +6 -0
  112. package/isObject-FTY-5JQX.js +7 -0
  113. package/isObjectLike-OAgjjZye.js +48 -0
  114. package/isSymbol-Xd2FsJyp.js +8 -0
  115. package/last-CUCl67Im.js +7 -0
  116. package/main.js +60 -60
  117. package/maxBy-IKHzFrCS.js +8 -0
  118. package/package.json +1 -1
  119. package/sortBy-DfSj8IoJ.js +96 -0
  120. package/sumBy-D-hb_NY-.js +8 -0
  121. package/text/Frequency.js +42 -23
  122. package/toFinite-Bc55msYj.js +16 -0
  123. package/toNumber-DPxy1FBy.js +39 -0
  124. package/useClueTypeConfig-Z1LFp01b.js +3289 -0
  125. package/utils/chain.js +92 -65
  126. package/utils/classificationParser.js +519 -256
  127. package/utils/constants.js +35 -10
  128. package/utils/graph.js +72 -45
  129. package/utils/hashUtil.js +7 -7
  130. package/utils/line.js +131 -81
  131. package/utils/loggerUtil.js +5 -3
  132. package/utils/sessionStorage.js +41 -27
  133. package/utils/time.js +423 -423
  134. package/utils/utils.js +9 -9
  135. package/utils/window.js +21 -10
  136. package/utils-HmNPuoDB.js +199 -0
  137. package/ActionForm-DlOXqMUx.js +0 -4460
  138. package/AnnotationDetails-Bk-p0F6h.js +0 -160
  139. package/AnnotationPreview-jzZvkCxJ.js +0 -140
  140. package/ClueEnrichContext-KqRuuWNS.js +0 -418
  141. package/FlexOne-BXWFOd1T.js +0 -6
  142. package/_MapCache-BiTi0iqu.js +0 -180
  143. package/_Uint8Array-BQNOM9Rr.js +0 -101
  144. package/_baseAssignValue-CNMLQZco.js +0 -20
  145. package/_baseClone-BnT-6pyM.js +0 -207
  146. package/_baseExtremum-Ca2EHgy2.js +0 -16
  147. package/_baseFlatten-Bfr_Molw.js +0 -72
  148. package/_baseGet-DSZygzyq.js +0 -79
  149. package/_baseIsEqual-VgvaAFZG.js +0 -147
  150. package/_baseIteratee-Dbfsw5z8.js +0 -95
  151. package/_baseSlice-M5RKzt1A.js +0 -10
  152. package/_baseSum-wEbgNeUs.js +0 -10
  153. package/_baseUniq-BJcj69PL.js +0 -79
  154. package/_commonjsHelpers-DaMA6jEr.js +0 -8
  155. package/_createAggregator-k3TuAnxT.js +0 -53
  156. package/_getPrototype-Cr1Mk7BC.js +0 -5
  157. package/_getTag-CK2Sffaq.js +0 -90
  158. package/_isIterateeCall-DkJP7Rbx.js +0 -13
  159. package/_setToArray-C7yMOeww.js +0 -29
  160. package/cloneDeep-CF8TtLHr.js +0 -8
  161. package/countBy-CdYegFSu.js +0 -8
  162. package/debounce-DryYcbJ4.js +0 -56
  163. package/get-CH7kz5Ix.js +0 -8
  164. package/groupBy-br8xmD2R.js +0 -8
  165. package/iconify-BBckr5AQ.js +0 -1263
  166. package/identity-ByMq8VxU.js +0 -6
  167. package/index-BHAe_V9n.js +0 -12768
  168. package/index-BK-zfYhR.js +0 -358
  169. package/index-CA5CUNZO.js +0 -975
  170. package/index-Dj5C04IX.js +0 -568
  171. package/index-p5_wX7q1.js +0 -11729
  172. package/isNil-CjWwlQS3.js +0 -6
  173. package/isObject-B53jY8Qg.js +0 -7
  174. package/isObjectLike-BatpeCIi.js +0 -29
  175. package/isSymbol-C3_SC0Qp.js +0 -8
  176. package/last-7CdUxN0r.js +0 -7
  177. package/maxBy-Bc0dYHcO.js +0 -8
  178. package/sortBy-DY2JBf9n.js +0 -75
  179. package/sumBy-DuMASLPd.js +0 -8
  180. package/toFinite-BMy6GObD.js +0 -14
  181. package/toNumber-YVhnnJv4.js +0 -31
  182. package/useClueTypeConfig-Ct9Ygter.js +0 -2292
  183. package/utils-DmwSUrum.js +0 -129
@@ -1,12 +1,15 @@
1
- import { jsx as t, jsxs as i } from "react/jsx-runtime";
2
- import { Stack as u } from "@mui/material";
3
- import { ClueGroupProvider as c } from "../../hooks/ClueGroupContext.js";
4
- import { memo as f } from "react";
5
- import n from "./GroupControl.js";
6
- const a = ({ children: o, showHeader: m = !0, slotProps: r, ...e }) => /* @__PURE__ */ t(c, { ...e, children: m ? /* @__PURE__ */ i(u, { direction: "column", alignSelf: "stretch", ...(r == null ? void 0 : r.stack) ?? {}, children: [
7
- /* @__PURE__ */ t(n, {}),
8
- o
9
- ] }) : o }), h = f(a);
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Stack } from "@mui/material";
3
+ import { ClueGroupProvider } from "../../hooks/ClueGroupContext.js";
4
+ import { memo } from "react";
5
+ import GroupControl from "./GroupControl.js";
6
+ const Group = ({ children, showHeader = true, slotProps, ...groupProps }) => {
7
+ return /* @__PURE__ */ jsx(ClueGroupProvider, { ...groupProps, children: showHeader ? /* @__PURE__ */ jsxs(Stack, { direction: "column", alignSelf: "stretch", ...(slotProps == null ? void 0 : slotProps.stack) ?? {}, children: [
8
+ /* @__PURE__ */ jsx(GroupControl, {}),
9
+ children
10
+ ] }) : children });
11
+ };
12
+ const Group_default = memo(Group);
10
13
  export {
11
- h as default
14
+ Group_default as default
12
15
  };
@@ -1,92 +1,103 @@
1
- import { jsx as r, jsxs as u } from "react/jsx-runtime";
2
- import { Card as S, Stack as y, Box as b, Typography as E, Autocomplete as v, TextField as x, Button as I, CircularProgress as z } from "@mui/material";
3
- import { F as _ } from "../../FlexOne-BXWFOd1T.js";
4
- import k from "../display/icons/Iconified.js";
5
- import { SNACKBAR_EVENT_ID as w } from "../../data/event.js";
6
- import { ClueGroupContext as j } from "../../hooks/ClueGroupContext.js";
7
- import { d as A, b as m, e as B } from "../../ActionForm-DlOXqMUx.js";
8
- import { safeDispatchEvent as F } from "../../utils/window.js";
9
- import { useState as d, useMemo as O, useCallback as T } from "react";
10
- import { u as D } from "../../index-Dj5C04IX.js";
11
- import G from "../actions/ExecutePopover.js";
12
- const Q = () => {
13
- const { t: s } = A((e) => e.i18next), { type: t, values: o, classification: a } = D(j, (e) => ({
14
- type: e == null ? void 0 : e.type,
15
- values: e == null ? void 0 : e.values,
16
- classification: e == null ? void 0 : e.classification
17
- })), f = m((e) => e.availableSources), c = m((e) => e.bulkEnrich), [i, p] = d(!1), [l, h] = d([]), C = O(
18
- () => (o ?? []).map((e) => ({ value: e, type: t, classification: a })),
19
- [a, t, o]
20
- ), g = T(async () => {
21
- if (!i)
22
- try {
23
- p(!0), await c(
24
- (o ?? []).map((e) => ({ type: t, value: e })),
25
- { force: !0, sources: l }
26
- );
27
- } catch (e) {
28
- console.error(e), F(
29
- new CustomEvent(w, {
30
- detail: {
31
- message: e.toString(),
32
- level: "error"
33
- }
34
- })
35
- );
36
- } finally {
37
- p(!1);
38
- }
39
- }, [c, i, l, t, o]);
40
- return /* @__PURE__ */ r(S, { sx: { p: 1 }, children: /* @__PURE__ */ u(y, { direction: "row", spacing: 1, alignItems: "center", children: [
41
- /* @__PURE__ */ r(
42
- b,
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Card, Stack, Box, Typography, Autocomplete, TextField, Button, CircularProgress } from "@mui/material";
3
+ import { F as FlexOne } from "../../FlexOne-BSYAhhtG.js";
4
+ import Iconified from "../display/icons/Iconified.js";
5
+ import { SNACKBAR_EVENT_ID } from "../../data/event.js";
6
+ import { ClueGroupContext } from "../../hooks/ClueGroupContext.js";
7
+ import { d as useClueComponentSelector, b as useClueEnrichSelector, e as capitalize } from "../../ActionForm-uDp92tN2.js";
8
+ import { safeDispatchEvent } from "../../utils/window.js";
9
+ import { useState, useMemo, useCallback } from "react";
10
+ import { u as useContextSelector } from "../../index-AMfoEg_6.js";
11
+ import ExecutePopover from "../actions/ExecutePopover.js";
12
+ const GroupControl = () => {
13
+ const { t } = useClueComponentSelector((ctx) => ctx.i18next);
14
+ const { type, values, classification } = useContextSelector(ClueGroupContext, (ctx) => ({
15
+ type: ctx == null ? void 0 : ctx.type,
16
+ values: ctx == null ? void 0 : ctx.values,
17
+ classification: ctx == null ? void 0 : ctx.classification
18
+ }));
19
+ const sources = useClueEnrichSelector((ctx) => ctx.availableSources);
20
+ const enrich = useClueEnrichSelector((ctx) => ctx.bulkEnrich);
21
+ const [loading, setLoading] = useState(false);
22
+ const [selectedSources, setSelectedSources] = useState([]);
23
+ const fullValues = useMemo(
24
+ () => (values ?? []).map((value) => ({ value, type, classification })),
25
+ [classification, type, values]
26
+ );
27
+ const runEnrichment = useCallback(async () => {
28
+ if (loading) {
29
+ return;
30
+ }
31
+ try {
32
+ setLoading(true);
33
+ await enrich(
34
+ (values ?? []).map((value) => ({ type, value })),
35
+ { force: true, sources: selectedSources }
36
+ );
37
+ } catch (e) {
38
+ console.error(e);
39
+ safeDispatchEvent(
40
+ new CustomEvent(SNACKBAR_EVENT_ID, {
41
+ detail: {
42
+ message: e.toString(),
43
+ level: "error"
44
+ }
45
+ })
46
+ );
47
+ } finally {
48
+ setLoading(false);
49
+ }
50
+ }, [enrich, loading, selectedSources, type, values]);
51
+ return /* @__PURE__ */ jsx(Card, { sx: { p: 1 }, children: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, alignItems: "center", children: [
52
+ /* @__PURE__ */ jsx(
53
+ Box,
43
54
  {
44
- sx: (e) => ({
55
+ sx: (theme) => ({
45
56
  border: "thin solid",
46
57
  alignSelf: "stretch",
47
58
  display: "flex",
48
59
  alignItems: "center",
49
60
  px: 1,
50
61
  borderRadius: "5px",
51
- borderColor: e.palette.divider
62
+ borderColor: theme.palette.divider
52
63
  }),
53
- children: /* @__PURE__ */ u(E, { color: "text.secondary", children: [
54
- (o == null ? void 0 : o.length) ?? 0,
64
+ children: /* @__PURE__ */ jsxs(Typography, { color: "text.secondary", children: [
65
+ (values == null ? void 0 : values.length) ?? 0,
55
66
  " ",
56
- s("selected")
67
+ t("selected")
57
68
  ] })
58
69
  }
59
70
  ),
60
- /* @__PURE__ */ r(_, {}),
61
- /* @__PURE__ */ r(
62
- v,
71
+ /* @__PURE__ */ jsx(FlexOne, {}),
72
+ /* @__PURE__ */ jsx(
73
+ Autocomplete,
63
74
  {
64
75
  size: "small",
65
- multiple: !0,
66
- options: f,
76
+ multiple: true,
77
+ options: sources,
67
78
  sx: { minWidth: "400px" },
68
- renderInput: (e) => /* @__PURE__ */ r(x, { size: "small", placeholder: s("sources"), ...e }),
69
- value: l,
70
- onChange: (e, n) => h(n),
71
- disableCloseOnSelect: !0,
72
- getOptionLabel: (e) => e.split(/[_-]/).map((n) => B(n)).join(" ")
79
+ renderInput: (params) => /* @__PURE__ */ jsx(TextField, { size: "small", placeholder: t("sources"), ...params }),
80
+ value: selectedSources,
81
+ onChange: (__, value) => setSelectedSources(value),
82
+ disableCloseOnSelect: true,
83
+ getOptionLabel: (opt) => opt.split(/[_-]/).map((word) => capitalize(word)).join(" ")
73
84
  }
74
85
  ),
75
- /* @__PURE__ */ r(
76
- I,
86
+ /* @__PURE__ */ jsx(
87
+ Button,
77
88
  {
78
89
  variant: "outlined",
79
90
  color: "info",
80
- disabled: (o == null ? void 0 : o.length) < 1 || i,
81
- startIcon: i ? /* @__PURE__ */ r(z, { color: "info", size: "20px" }) : /* @__PURE__ */ r(k, { icon: "ic:outline-play-arrow" }),
91
+ disabled: (values == null ? void 0 : values.length) < 1 || loading,
92
+ startIcon: loading ? /* @__PURE__ */ jsx(CircularProgress, { color: "info", size: "20px" }) : /* @__PURE__ */ jsx(Iconified, { icon: "ic:outline-play-arrow" }),
82
93
  sx: { alignSelf: "stretch" },
83
- onClick: g,
84
- children: s("enrich")
94
+ onClick: runEnrichment,
95
+ children: t("enrich")
85
96
  }
86
97
  ),
87
- /* @__PURE__ */ r(G, { selectors: C, size: "medium", multiples: !0 })
98
+ /* @__PURE__ */ jsx(ExecutePopover, { selectors: fullValues, size: "medium", multiples: true })
88
99
  ] }) });
89
100
  };
90
101
  export {
91
- Q as default
102
+ GroupControl as default
92
103
  };
@@ -1,60 +1,70 @@
1
- import { jsxs as e } from "react/jsx-runtime";
2
- import { Stack as b, Typography as r } from "@mui/material";
3
- import { ClueDatabaseContext as C } from "../../hooks/ClueDatabaseContext.js";
4
- import { d as y, b as g } from "../../ActionForm-DlOXqMUx.js";
5
- import { useContext as x, useState as u, useEffect as h } from "react";
6
- const P = () => {
7
- const { t: o } = y((t) => t.i18next), s = x(C), c = g((t) => t.ready), [i, m] = u(0), [a, d] = u(0), [l, f] = u(0);
8
- return h(() => {
9
- var p;
10
- if (!c)
1
+ import { jsxs } from "react/jsx-runtime";
2
+ import { Stack, Typography } from "@mui/material";
3
+ import { ClueDatabaseContext } from "../../hooks/ClueDatabaseContext.js";
4
+ import { d as useClueComponentSelector, b as useClueEnrichSelector } from "../../ActionForm-uDp92tN2.js";
5
+ import { useContext, useState, useEffect } from "react";
6
+ const QueryStatus = () => {
7
+ const { t } = useClueComponentSelector((ctx) => ctx.i18next);
8
+ const database = useContext(ClueDatabaseContext);
9
+ const ready = useClueEnrichSelector((ctx) => ctx.ready);
10
+ const [pendingCount, setPendingCount] = useState(0);
11
+ const [inProgressCount, setInProgressCount] = useState(0);
12
+ const [completeCount, setCompleteCount] = useState(0);
13
+ useEffect(() => {
14
+ var _a;
15
+ if (!ready) {
11
16
  return;
12
- if ((p = s == null ? void 0 : s.status) != null && p.closed) {
17
+ }
18
+ if ((_a = database == null ? void 0 : database.status) == null ? void 0 : _a.closed) {
13
19
  console.warn("Status collection is closed");
14
20
  return;
15
21
  }
16
- const t = [
17
- s.status.count({ selector: { status: "pending" } }).$.subscribe(m),
18
- s.status.count({ selector: { status: "in-progress" } }).$.subscribe(d),
19
- s.status.count({ selector: { status: "complete" } }).$.subscribe(f)
22
+ const observables = [
23
+ database.status.count({ selector: { status: "pending" } }).$.subscribe(setPendingCount),
24
+ database.status.count({ selector: { status: "in-progress" } }).$.subscribe(setInProgressCount),
25
+ database.status.count({ selector: { status: "complete" } }).$.subscribe(setCompleteCount)
20
26
  ];
21
27
  return () => {
22
28
  try {
23
- t.forEach((n) => n.unsubscribe());
24
- } catch (n) {
25
- console.warn(n);
29
+ observables.forEach((_observable) => _observable.unsubscribe());
30
+ } catch (e) {
31
+ console.warn(e);
26
32
  }
27
33
  };
28
- }, [s, c]), i + a + l < 1 ? null : /* @__PURE__ */ e(
29
- b,
34
+ }, [database, ready]);
35
+ if (pendingCount + inProgressCount + completeCount < 1) {
36
+ return null;
37
+ }
38
+ return /* @__PURE__ */ jsxs(
39
+ Stack,
30
40
  {
31
41
  spacing: 1,
32
- sx: (t) => ({
33
- border: `thin solid ${t.palette.divider}`,
34
- borderRadius: t.spacing(0.5),
42
+ sx: (theme) => ({
43
+ border: `thin solid ${theme.palette.divider}`,
44
+ borderRadius: theme.spacing(0.5),
35
45
  mx: 1,
36
46
  p: 1
37
47
  }),
38
48
  children: [
39
- /* @__PURE__ */ e(r, { sx: { fontFamily: "monospace" }, children: [
40
- o("query.status.pending"),
49
+ /* @__PURE__ */ jsxs(Typography, { sx: { fontFamily: "monospace" }, children: [
50
+ t("query.status.pending"),
41
51
  ": ",
42
- i
52
+ pendingCount
43
53
  ] }),
44
- /* @__PURE__ */ e(r, { sx: { fontFamily: "monospace" }, children: [
45
- o("query.status.inprogress"),
54
+ /* @__PURE__ */ jsxs(Typography, { sx: { fontFamily: "monospace" }, children: [
55
+ t("query.status.inprogress"),
46
56
  ": ",
47
- a
57
+ inProgressCount
48
58
  ] }),
49
- /* @__PURE__ */ e(r, { sx: { fontFamily: "monospace" }, children: [
50
- o("query.status.complete"),
59
+ /* @__PURE__ */ jsxs(Typography, { sx: { fontFamily: "monospace" }, children: [
60
+ t("query.status.complete"),
51
61
  ": ",
52
- l
62
+ completeCount
53
63
  ] })
54
64
  ]
55
65
  }
56
66
  );
57
67
  };
58
68
  export {
59
- P as default
69
+ QueryStatus as default
60
70
  };
@@ -0,0 +1,14 @@
1
+ import { b as baseAssignValue } from "./_baseAssignValue-CGTuELqU.js";
2
+ import { c as createAggregator } from "./_createAggregator-QD8MzKwe.js";
3
+ var objectProto = Object.prototype;
4
+ var hasOwnProperty = objectProto.hasOwnProperty;
5
+ var countBy = createAggregator(function(result, value, key) {
6
+ if (hasOwnProperty.call(result, key)) {
7
+ ++result[key];
8
+ } else {
9
+ baseAssignValue(result, key, 1);
10
+ }
11
+ });
12
+ export {
13
+ countBy as c
14
+ };
package/data/event.js CHANGED
@@ -1,6 +1,8 @@
1
- const o = "snackbar.message", s = "clue.showPopup", E = "clue.hidePopup";
1
+ const SNACKBAR_EVENT_ID = "snackbar.message";
2
+ const SHOW_EVENT_ID = "clue.showPopup";
3
+ const HIDE_EVENT_ID = "clue.hidePopup";
2
4
  export {
3
- E as HIDE_EVENT_ID,
4
- s as SHOW_EVENT_ID,
5
- o as SNACKBAR_EVENT_ID
5
+ HIDE_EVENT_ID,
6
+ SHOW_EVENT_ID,
7
+ SNACKBAR_EVENT_ID
6
8
  };
package/database/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { b as f } from "../index-BHAe_V9n.js";
1
+ import { b } from "../index-C12gPw2W.js";
2
2
  export {
3
- f as default
3
+ b as default
4
4
  };
@@ -0,0 +1,92 @@
1
+ import { i as isObject } from "./isObject-FTY-5JQX.js";
2
+ import { r as root } from "./isObjectLike-OAgjjZye.js";
3
+ import { t as toNumber } from "./toNumber-DPxy1FBy.js";
4
+ var now = function() {
5
+ return root.Date.now();
6
+ };
7
+ var FUNC_ERROR_TEXT = "Expected a function";
8
+ var nativeMax = Math.max, nativeMin = Math.min;
9
+ function debounce(func, wait, options) {
10
+ var lastArgs, lastThis, maxWait, result, timerId, lastCallTime, lastInvokeTime = 0, leading = false, maxing = false, trailing = true;
11
+ if (typeof func != "function") {
12
+ throw new TypeError(FUNC_ERROR_TEXT);
13
+ }
14
+ wait = toNumber(wait) || 0;
15
+ if (isObject(options)) {
16
+ leading = !!options.leading;
17
+ maxing = "maxWait" in options;
18
+ maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;
19
+ trailing = "trailing" in options ? !!options.trailing : trailing;
20
+ }
21
+ function invokeFunc(time) {
22
+ var args = lastArgs, thisArg = lastThis;
23
+ lastArgs = lastThis = void 0;
24
+ lastInvokeTime = time;
25
+ result = func.apply(thisArg, args);
26
+ return result;
27
+ }
28
+ function leadingEdge(time) {
29
+ lastInvokeTime = time;
30
+ timerId = setTimeout(timerExpired, wait);
31
+ return leading ? invokeFunc(time) : result;
32
+ }
33
+ function remainingWait(time) {
34
+ var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime, timeWaiting = wait - timeSinceLastCall;
35
+ return maxing ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke) : timeWaiting;
36
+ }
37
+ function shouldInvoke(time) {
38
+ var timeSinceLastCall = time - lastCallTime, timeSinceLastInvoke = time - lastInvokeTime;
39
+ return lastCallTime === void 0 || timeSinceLastCall >= wait || timeSinceLastCall < 0 || maxing && timeSinceLastInvoke >= maxWait;
40
+ }
41
+ function timerExpired() {
42
+ var time = now();
43
+ if (shouldInvoke(time)) {
44
+ return trailingEdge(time);
45
+ }
46
+ timerId = setTimeout(timerExpired, remainingWait(time));
47
+ }
48
+ function trailingEdge(time) {
49
+ timerId = void 0;
50
+ if (trailing && lastArgs) {
51
+ return invokeFunc(time);
52
+ }
53
+ lastArgs = lastThis = void 0;
54
+ return result;
55
+ }
56
+ function cancel() {
57
+ if (timerId !== void 0) {
58
+ clearTimeout(timerId);
59
+ }
60
+ lastInvokeTime = 0;
61
+ lastArgs = lastCallTime = lastThis = timerId = void 0;
62
+ }
63
+ function flush() {
64
+ return timerId === void 0 ? result : trailingEdge(now());
65
+ }
66
+ function debounced() {
67
+ var time = now(), isInvoking = shouldInvoke(time);
68
+ lastArgs = arguments;
69
+ lastThis = this;
70
+ lastCallTime = time;
71
+ if (isInvoking) {
72
+ if (timerId === void 0) {
73
+ return leadingEdge(lastCallTime);
74
+ }
75
+ if (maxing) {
76
+ clearTimeout(timerId);
77
+ timerId = setTimeout(timerExpired, wait);
78
+ return invokeFunc(lastCallTime);
79
+ }
80
+ }
81
+ if (timerId === void 0) {
82
+ timerId = setTimeout(timerExpired, wait);
83
+ }
84
+ return result;
85
+ }
86
+ debounced.cancel = cancel;
87
+ debounced.flush = flush;
88
+ return debounced;
89
+ }
90
+ export {
91
+ debounce as d
92
+ };
@@ -0,0 +1,8 @@
1
+ import { b as baseGet } from "./_baseGet-Bx3A4Qfp.js";
2
+ function get(object, path, defaultValue) {
3
+ var result = object == null ? void 0 : baseGet(object, path);
4
+ return result === void 0 ? defaultValue : result;
5
+ }
6
+ export {
7
+ get as g
8
+ };
@@ -0,0 +1,14 @@
1
+ import { b as baseAssignValue } from "./_baseAssignValue-CGTuELqU.js";
2
+ import { c as createAggregator } from "./_createAggregator-QD8MzKwe.js";
3
+ var objectProto = Object.prototype;
4
+ var hasOwnProperty = objectProto.hasOwnProperty;
5
+ var groupBy = createAggregator(function(result, value, key) {
6
+ if (hasOwnProperty.call(result, key)) {
7
+ result[key].push(value);
8
+ } else {
9
+ baseAssignValue(result, key, [value]);
10
+ }
11
+ });
12
+ export {
13
+ groupBy as g
14
+ };
@@ -1,18 +1,18 @@
1
1
  import "react/jsx-runtime";
2
2
  import "@mui/material";
3
- import { g as A, C as d } from "../ActionForm-DlOXqMUx.js";
4
- import "../useClueTypeConfig-Ct9Ygter.js";
3
+ import { g, C } from "../ActionForm-uDp92tN2.js";
4
+ import "../useClueTypeConfig-Z1LFp01b.js";
5
5
  import "../components/display/icons/Iconified.js";
6
6
  import "../components/ErrorBoundary.js";
7
7
  import "../data/event.js";
8
8
  import "../utils/time.js";
9
9
  import "../utils/window.js";
10
10
  import "react";
11
- import "../index-Dj5C04IX.js";
11
+ import "../index-AMfoEg_6.js";
12
12
  import "./ClueComponentContext.js";
13
13
  import "./useClue.js";
14
- import "../isNil-CjWwlQS3.js";
14
+ import "../isNil-CIubwp4T.js";
15
15
  export {
16
- A as ClueActionContext,
17
- d as ClueActionProvider
16
+ g as ClueActionContext,
17
+ C as ClueActionProvider
18
18
  };
@@ -1,34 +1,40 @@
1
- import { jsx as n } from "react/jsx-runtime";
2
- import { useMemo as m } from "react";
3
- import { useTranslation as l } from "react-i18next";
4
- import { c as i } from "../index-Dj5C04IX.js";
5
- const u = i(null), p = ({
6
- children: t,
7
- ReactJson: o
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { useMemo } from "react";
3
+ import { useTranslation } from "react-i18next";
4
+ import { c as createContext } from "../index-AMfoEg_6.js";
5
+ const ClueComponentContext = createContext(null);
6
+ const ClueComponentI18nProvider = ({
7
+ children,
8
+ ReactJson
8
9
  }) => {
9
- const r = l(), e = m(
10
+ const i18next = useTranslation();
11
+ const context = useMemo(
10
12
  () => ({
11
- ReactJson: o,
12
- i18next: r
13
+ ReactJson,
14
+ i18next
13
15
  }),
14
- [o, r]
16
+ [ReactJson, i18next]
15
17
  );
16
- return /* @__PURE__ */ n(u.Provider, { value: e, children: t });
17
- }, f = ({
18
- children: t,
19
- ReactJson: o,
20
- i18next: r = null
18
+ return /* @__PURE__ */ jsx(ClueComponentContext.Provider, { value: context, children });
19
+ };
20
+ const ClueComponentProvider = ({
21
+ children,
22
+ ReactJson,
23
+ i18next = null
21
24
  }) => {
22
- const e = m(
25
+ const context = useMemo(
23
26
  () => ({
24
- ReactJson: o,
25
- i18next: r
27
+ ReactJson,
28
+ i18next
26
29
  }),
27
- [o, r]
30
+ [ReactJson, i18next]
28
31
  );
29
- return r ? /* @__PURE__ */ n(u.Provider, { value: e, children: t }) : /* @__PURE__ */ n(p, { ReactJson: o, children: t });
32
+ if (!i18next) {
33
+ return /* @__PURE__ */ jsx(ClueComponentI18nProvider, { ReactJson, children });
34
+ }
35
+ return /* @__PURE__ */ jsx(ClueComponentContext.Provider, { value: context, children });
30
36
  };
31
37
  export {
32
- u as ClueComponentContext,
33
- f as ClueComponentProvider
38
+ ClueComponentContext,
39
+ ClueComponentProvider
34
40
  };
@@ -1,21 +1,23 @@
1
- import { jsx as i } from "react/jsx-runtime";
2
- import { createContext as c, useState as u, useMemo as f } from "react";
3
- const l = c(null), g = ({ children: t, config: e }) => {
4
- const [o, n] = u(
5
- e ?? {
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { createContext, useState, useMemo } from "react";
3
+ const ClueConfigContext = createContext(null);
4
+ const ClueConfigProvider = ({ children, config: _config }) => {
5
+ const [config, setConfig] = useState(
6
+ _config ?? {
6
7
  configuration: null,
7
8
  c12nDef: null
8
9
  }
9
- ), r = f(
10
+ );
11
+ const context = useMemo(
10
12
  () => ({
11
- config: o,
12
- setConfig: n
13
+ config,
14
+ setConfig
13
15
  }),
14
- [o, n]
16
+ [config, setConfig]
15
17
  );
16
- return /* @__PURE__ */ i(l.Provider, { value: r, children: t });
18
+ return /* @__PURE__ */ jsx(ClueConfigContext.Provider, { value: context, children });
17
19
  };
18
20
  export {
19
- l as ClueConfigContext,
20
- g as ClueConfigProvider
21
+ ClueConfigContext,
22
+ ClueConfigProvider
21
23
  };
@@ -1,17 +1,23 @@
1
- import { jsx as s } from "react/jsx-runtime";
2
- import { b as u } from "../index-BHAe_V9n.js";
3
- import { createContext as l, useState as n, useEffect as i } from "react";
4
- const m = l(null), p = ({
5
- children: a,
6
- database: e,
7
- databaseConfig: t
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { b as buildDatabase } from "../index-C12gPw2W.js";
3
+ import { createContext, useState, useEffect } from "react";
4
+ const ClueDatabaseContext = createContext(null);
5
+ const ClueDatabaseProvider = ({
6
+ children,
7
+ database: _database,
8
+ databaseConfig
8
9
  }) => {
9
- const [o, r] = n();
10
- return i(() => {
11
- e ? r(e) : u(t).then(r);
12
- }, [e, t]), /* @__PURE__ */ s(m.Provider, { value: o, children: a });
10
+ const [database, setDatabase] = useState();
11
+ useEffect(() => {
12
+ if (_database) {
13
+ setDatabase(_database);
14
+ } else {
15
+ buildDatabase(databaseConfig).then(setDatabase);
16
+ }
17
+ }, [_database, databaseConfig]);
18
+ return /* @__PURE__ */ jsx(ClueDatabaseContext.Provider, { value: database, children });
13
19
  };
14
20
  export {
15
- m as ClueDatabaseContext,
16
- p as ClueDatabaseProvider
21
+ ClueDatabaseContext,
22
+ ClueDatabaseProvider
17
23
  };
@@ -1,15 +1,15 @@
1
1
  import "react/jsx-runtime";
2
- import "../iconify-BBckr5AQ.js";
3
- import "../useClueTypeConfig-Ct9Ygter.js";
2
+ import "../iconify-CXMreGTg.js";
3
+ import "../useClueTypeConfig-Z1LFp01b.js";
4
4
  import "../utils/loggerUtil.js";
5
- import { C as l, a as s } from "../ClueEnrichContext-KqRuuWNS.js";
6
- import "../debounce-DryYcbJ4.js";
7
- import "../groupBy-br8xmD2R.js";
5
+ import { C, a } from "../ClueEnrichContext-CJEJxrgs.js";
6
+ import "../debounce-bV0h5FC5.js";
7
+ import "../groupBy-xqz-n0Vd.js";
8
8
  import "react";
9
- import "../index-Dj5C04IX.js";
9
+ import "../index-AMfoEg_6.js";
10
10
  import "./ClueDatabaseContext.js";
11
11
  import "./useClueConfig.js";
12
12
  export {
13
- l as ClueEnrichContext,
14
- s as ClueEnrichProvider
13
+ C as ClueEnrichContext,
14
+ a as ClueEnrichProvider
15
15
  };