@cccsaurora/clue-ui 1.2.2 → 1.2.3-dev.266

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 (185) 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 +158 -117
  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/en/translation.json +1 -0
  77. package/fr/translation.json +1 -0
  78. package/get-DSsNkRQs.js +8 -0
  79. package/groupBy-xqz-n0Vd.js +14 -0
  80. package/hooks/ClueActionContext.js +6 -6
  81. package/hooks/ClueComponentContext.js +29 -23
  82. package/hooks/ClueConfigProvider.js +14 -12
  83. package/hooks/ClueDatabaseContext.js +19 -13
  84. package/hooks/ClueEnrichContext.js +8 -8
  85. package/hooks/ClueFetcherContext.js +83 -56
  86. package/hooks/ClueGroupContext.js +17 -14
  87. package/hooks/CluePopupContext.js +5 -5
  88. package/hooks/ClueProvider.js +12 -10
  89. package/hooks/selectors.js +7 -7
  90. package/hooks/useActionResult.js +2 -2
  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.js +33 -24
  99. package/hooks/useMyHighlights.js +66 -36
  100. package/hooks/useMyLocalStorage.js +66 -37
  101. package/iconify-CXMreGTg.js +1782 -0
  102. package/icons/Action.js +66 -49
  103. package/icons/Assessment.js +85 -69
  104. package/icons/Context.js +77 -63
  105. package/icons/Opinion.js +76 -60
  106. package/icons/iconMap.js +2 -2
  107. package/identity-CPGTqrE4.js +6 -0
  108. package/index-AMfoEg_6.js +696 -0
  109. package/index-B6C2a_Lg.js +1172 -0
  110. package/index-C12gPw2W.js +17698 -0
  111. package/index-DCKkHTvx.js +15750 -0
  112. package/index-JcKyZeoY.js +465 -0
  113. package/isNil-CIubwp4T.js +6 -0
  114. package/isObject-FTY-5JQX.js +7 -0
  115. package/isObjectLike-OAgjjZye.js +48 -0
  116. package/isSymbol-Xd2FsJyp.js +8 -0
  117. package/last-CUCl67Im.js +7 -0
  118. package/main.js +60 -60
  119. package/maxBy-IKHzFrCS.js +8 -0
  120. package/package.json +1 -1
  121. package/sortBy-DfSj8IoJ.js +96 -0
  122. package/sumBy-D-hb_NY-.js +8 -0
  123. package/text/Frequency.js +42 -23
  124. package/toFinite-Bc55msYj.js +16 -0
  125. package/toNumber-DPxy1FBy.js +39 -0
  126. package/useClueTypeConfig-Z1LFp01b.js +3289 -0
  127. package/utils/chain.js +92 -65
  128. package/utils/classificationParser.js +519 -256
  129. package/utils/constants.js +35 -10
  130. package/utils/graph.js +72 -45
  131. package/utils/hashUtil.js +7 -7
  132. package/utils/line.js +131 -81
  133. package/utils/loggerUtil.js +5 -3
  134. package/utils/sessionStorage.js +41 -27
  135. package/utils/time.js +423 -423
  136. package/utils/utils.js +9 -9
  137. package/utils/window.js +21 -10
  138. package/utils-HmNPuoDB.js +199 -0
  139. package/ActionForm-DlOXqMUx.js +0 -4460
  140. package/AnnotationDetails-Bk-p0F6h.js +0 -160
  141. package/AnnotationPreview-jzZvkCxJ.js +0 -140
  142. package/ClueEnrichContext-KqRuuWNS.js +0 -418
  143. package/FlexOne-BXWFOd1T.js +0 -6
  144. package/_MapCache-BiTi0iqu.js +0 -180
  145. package/_Uint8Array-BQNOM9Rr.js +0 -101
  146. package/_baseAssignValue-CNMLQZco.js +0 -20
  147. package/_baseClone-BnT-6pyM.js +0 -207
  148. package/_baseExtremum-Ca2EHgy2.js +0 -16
  149. package/_baseFlatten-Bfr_Molw.js +0 -72
  150. package/_baseGet-DSZygzyq.js +0 -79
  151. package/_baseIsEqual-VgvaAFZG.js +0 -147
  152. package/_baseIteratee-Dbfsw5z8.js +0 -95
  153. package/_baseSlice-M5RKzt1A.js +0 -10
  154. package/_baseSum-wEbgNeUs.js +0 -10
  155. package/_baseUniq-BJcj69PL.js +0 -79
  156. package/_commonjsHelpers-DaMA6jEr.js +0 -8
  157. package/_createAggregator-k3TuAnxT.js +0 -53
  158. package/_getPrototype-Cr1Mk7BC.js +0 -5
  159. package/_getTag-CK2Sffaq.js +0 -90
  160. package/_isIterateeCall-DkJP7Rbx.js +0 -13
  161. package/_setToArray-C7yMOeww.js +0 -29
  162. package/cloneDeep-CF8TtLHr.js +0 -8
  163. package/countBy-CdYegFSu.js +0 -8
  164. package/debounce-DryYcbJ4.js +0 -56
  165. package/get-CH7kz5Ix.js +0 -8
  166. package/groupBy-br8xmD2R.js +0 -8
  167. package/iconify-BBckr5AQ.js +0 -1263
  168. package/identity-ByMq8VxU.js +0 -6
  169. package/index-BHAe_V9n.js +0 -12768
  170. package/index-BK-zfYhR.js +0 -358
  171. package/index-CA5CUNZO.js +0 -975
  172. package/index-Dj5C04IX.js +0 -568
  173. package/index-p5_wX7q1.js +0 -11729
  174. package/isNil-CjWwlQS3.js +0 -6
  175. package/isObject-B53jY8Qg.js +0 -7
  176. package/isObjectLike-BatpeCIi.js +0 -29
  177. package/isSymbol-C3_SC0Qp.js +0 -8
  178. package/last-7CdUxN0r.js +0 -7
  179. package/maxBy-Bc0dYHcO.js +0 -8
  180. package/sortBy-DY2JBf9n.js +0 -75
  181. package/sumBy-DuMASLPd.js +0 -8
  182. package/toFinite-BMy6GObD.js +0 -14
  183. package/toNumber-YVhnnJv4.js +0 -31
  184. package/useClueTypeConfig-Ct9Ygter.js +0 -2292
  185. 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
+ };
@@ -51,6 +51,7 @@
51
51
  "drawer.mail.trash": "Trash",
52
52
  "enrich": "Enrich",
53
53
  "error": "Error",
54
+ "fetcher.error.unexpected": "An unexpected error occurred",
54
55
  "graph.no.dataset": "No dataset has been selected!",
55
56
  "graph.node.input.label": "Enter a node ID, and press [ctrl + enter] to select it. [ctrl + space] will open an autocomplete menu.",
56
57
  "graph.show.more": "show more",
@@ -51,6 +51,7 @@
51
51
  "drawer.mail.trash": "Poubelle",
52
52
  "enrich": "Enrichir",
53
53
  "error": "Erreur",
54
+ "fetcher.error.unexpected": "Une erreur inattendue s'est produite",
54
55
  "graph.no.dataset": "Aucun jeu de données n'a été sélectionné!",
55
56
  "graph.node.input.label": "Entrez un ID de nœud et appuyez sur [ctrl + entrée] pour le sélectionner. [ctrl + espace] ouvrira un menu d'auto-complétion.",
56
57
  "graph.show.more": "Afficher plus",
@@ -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
  };