@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,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-CwsfB99X.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-D6gYuFRR.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-CwsfB99X.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-D6gYuFRR.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
+ };
@@ -38,13 +38,21 @@ export interface ClueActionContextType {
38
38
  */
39
39
  skipResultModal?: boolean;
40
40
  /**
41
- * Callback for post-execution.
41
+ * Callback for post-execution. Will be called once the action is fully executed and has an outcome of either
42
+ * 'success' or 'failure'.
42
43
  * @param result
43
44
  * @returns The action result
44
45
  */
45
46
  onComplete?: (result: WithActionData<ActionResult>) => void;
46
47
  /**
47
- * Callback for when the action is cancelled
48
+ * Callback for intra-execution. will be called everytime the result recieves an update and has a
49
+ * 'pending', 'success', or 'failure' outcome.
50
+ * @param result
51
+ * @returns The action result
52
+ */
53
+ onUpdate?: (result: WithActionData<ActionResult>) => void;
54
+ /**
55
+ * Callback for when the action is cancelled.
48
56
  * @returns void
49
57
  */
50
58
  onCancel?: () => void;
@@ -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-CwsfB99X.js";
4
- import "../useClueTypeConfig-Ct9Ygter.js";
3
+ import { g, C } from "../ActionForm-D6gYuFRR.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
  };