@cccsaurora/clue-ui 1.1.0-dev.52 → 1.1.0-dev.66
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.
- package/{ActionForm-oiPSbHip.js → ActionForm-BR-JC3rN.js} +36 -5
- package/{AnnotationDetails-fsvrH3_v.js → AnnotationDetails-Bi8OW9M9.js} +1 -1
- package/{AnnotationPreview-biAV6uKB.js → AnnotationPreview-DOIhJg4V.js} +1 -1
- package/{ClueEnrichContext-C4hjLcHp.js → ClueEnrichContext-UZ1ghGU_.js} +1 -1
- package/components/AnnotationDetailPopover.js +1 -1
- package/components/AnnotationDetails.js +2 -2
- package/components/AnnotationPreview.js +1 -1
- package/components/EnrichedCard.js +11 -5
- package/components/EnrichedChip.js +4 -10
- package/components/EnrichedTypography.js +7 -12
- package/components/actions/ActionForm.js +1 -1
- package/components/enrichment/EnrichPopover.js +1 -1
- package/components/group/GroupControl.js +1 -1
- package/hooks/ClueActionContext.d.ts +16 -0
- package/hooks/ClueActionContext.js +4 -2
- package/hooks/ClueEnrichContext.js +2 -2
- package/hooks/ClueFetcherContext.js +1 -1
- package/hooks/CluePopupContext.js +2 -2
- package/hooks/ClueProvider.js +3 -3
- package/hooks/selectors.d.ts +4 -4
- package/hooks/selectors.js +3 -3
- package/hooks/useAnnotations.js +1 -1
- package/hooks/useClue.js +1 -1
- package/hooks/useClueActions.d.ts +1 -1
- package/hooks/useClueActions.js +1 -1
- package/hooks/useClueTypeConfig.js +1 -1
- package/icons/Action.js +2 -2
- package/icons/Assessment.js +1 -1
- package/icons/Context.js +1 -1
- package/icons/Opinion.js +1 -1
- package/main.js +4 -4
- package/package.json +1 -1
- package/types/RunningActionData.d.ts +4 -3
- package/types/action.d.ts +7 -0
- package/{useClueTypeConfig-HmNKKYHY.js → useClueTypeConfig-Ck1Sz41X.js} +2 -1
|
@@ -5,19 +5,21 @@ import { Stack, Typography, IconButton, Modal, Paper, Box, Button, Divider, Circ
|
|
|
5
5
|
import Iconified from "./components/display/icons/Iconified.js";
|
|
6
6
|
import { J as JSONViewer } from "./index-Bi21Wb23.js";
|
|
7
7
|
import { ClueComponentContext } from "./hooks/ClueComponentContext.js";
|
|
8
|
-
import { c as createContext, u as useContextSelector, a as useContext } from "./index-BDVjGvMI.js";
|
|
9
8
|
import { A as Ajv } from "./index-CC12Ux-9.js";
|
|
10
|
-
import { a as api } from "./useClueTypeConfig-
|
|
9
|
+
import { a as api } from "./useClueTypeConfig-Ck1Sz41X.js";
|
|
11
10
|
import { d as toString } from "./_baseGet-BSK_nnoz.js";
|
|
12
11
|
import { b as baseSlice } from "./_baseSlice-GAv_YFTT.js";
|
|
13
12
|
import { i as isEqual } from "./utils-7OtvGnmf.js";
|
|
14
13
|
import { useState, useCallback, useEffect, useMemo, memo } from "react";
|
|
14
|
+
import { c as createContext, u as useContextSelector, a as useContext } from "./index-BDVjGvMI.js";
|
|
15
15
|
import ErrorBoundary from "./components/ErrorBoundary.js";
|
|
16
16
|
import { adaptSchema } from "./components/actions/form/schemaAdapter.js";
|
|
17
17
|
import ResultModal from "./components/actions/ResultModal.js";
|
|
18
18
|
import { SNACKBAR_EVENT_ID } from "./data/event.js";
|
|
19
|
+
import { dayjs } from "./utils/time.js";
|
|
19
20
|
import { safeDispatchEvent } from "./utils/window.js";
|
|
20
21
|
import useClue from "./hooks/useClue.js";
|
|
22
|
+
import { i as isNil } from "./isNil-CIubwp4T.js";
|
|
21
23
|
function castSlice(array, start, end) {
|
|
22
24
|
var length = array.length;
|
|
23
25
|
end = end === void 0 ? length : end;
|
|
@@ -61,10 +63,11 @@ const ClueActionProvider = ({
|
|
|
61
63
|
baseURL,
|
|
62
64
|
children,
|
|
63
65
|
classification: defaultClassification,
|
|
66
|
+
includeContext: defaultIncludeContext,
|
|
64
67
|
getToken,
|
|
65
68
|
onNetworkCall
|
|
66
69
|
}) => {
|
|
67
|
-
const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx.i18next);
|
|
70
|
+
const { t, i18n } = useContextSelector(ClueComponentContext, (ctx) => ctx.i18next);
|
|
68
71
|
const { ready } = useClue();
|
|
69
72
|
const [runningActionData, setRunningActionData] = useState(null);
|
|
70
73
|
const [actionResults, setActionResults] = useState({});
|
|
@@ -100,11 +103,13 @@ const ClueActionProvider = ({
|
|
|
100
103
|
);
|
|
101
104
|
const executeAction = useCallback(
|
|
102
105
|
async (actionId, selectors, params, options) => {
|
|
103
|
-
const { forceMenu, onComplete, skipMenu, timeout } = {
|
|
106
|
+
const { forceMenu, onComplete, skipMenu, timeout, includeContext, extraContext } = {
|
|
104
107
|
forceMenu: false,
|
|
105
108
|
skipMenu: false,
|
|
106
109
|
onComplete: null,
|
|
107
110
|
timeout: null,
|
|
111
|
+
includeContext: defaultIncludeContext ?? false,
|
|
112
|
+
extraContext: null,
|
|
108
113
|
...options
|
|
109
114
|
};
|
|
110
115
|
const headers = {};
|
|
@@ -121,6 +126,20 @@ const ClueActionProvider = ({
|
|
|
121
126
|
const actionToRun = availableActions[actionId];
|
|
122
127
|
const validator = AJV.compile(actionToRun.params);
|
|
123
128
|
const validatedParams = { selectors: stringifiedSelectors, ...params };
|
|
129
|
+
let context2 = null;
|
|
130
|
+
if (includeContext) {
|
|
131
|
+
context2 = {
|
|
132
|
+
timestamp: dayjs().toISOString(),
|
|
133
|
+
url: window.location,
|
|
134
|
+
language: (i18n == null ? void 0 : i18n.language) ?? "en"
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
if (!isNil(extraContext)) {
|
|
138
|
+
context2 = {
|
|
139
|
+
...context2 ?? {},
|
|
140
|
+
...extraContext
|
|
141
|
+
};
|
|
142
|
+
}
|
|
124
143
|
setLoading(true);
|
|
125
144
|
if (!validator(validatedParams) || forceMenu) {
|
|
126
145
|
if (skipMenu && !forceMenu) {
|
|
@@ -143,6 +162,7 @@ const ClueActionProvider = ({
|
|
|
143
162
|
action: actionToRun,
|
|
144
163
|
selectors,
|
|
145
164
|
params: validatedParams ?? {},
|
|
165
|
+
context: context2,
|
|
146
166
|
onComplete,
|
|
147
167
|
timeout
|
|
148
168
|
});
|
|
@@ -157,6 +177,7 @@ const ClueActionProvider = ({
|
|
|
157
177
|
actionId,
|
|
158
178
|
stringifiedSelectors,
|
|
159
179
|
validatedParams ?? {},
|
|
180
|
+
context2,
|
|
160
181
|
{ timeout },
|
|
161
182
|
requestConfig
|
|
162
183
|
);
|
|
@@ -221,7 +242,17 @@ const ClueActionProvider = ({
|
|
|
221
242
|
setLoading(false);
|
|
222
243
|
}
|
|
223
244
|
},
|
|
224
|
-
[
|
|
245
|
+
[
|
|
246
|
+
availableActions,
|
|
247
|
+
baseURL,
|
|
248
|
+
defaultIncludeContext,
|
|
249
|
+
getHashKey,
|
|
250
|
+
getToken,
|
|
251
|
+
i18n == null ? void 0 : i18n.language,
|
|
252
|
+
onNetworkCall,
|
|
253
|
+
runningActionData == null ? void 0 : runningActionData.id,
|
|
254
|
+
t
|
|
255
|
+
]
|
|
225
256
|
);
|
|
226
257
|
const cancelAction = useCallback(() => {
|
|
227
258
|
setRunningActionData(null);
|
|
@@ -10,7 +10,7 @@ import useErrors from "./hooks/useErrors.js";
|
|
|
10
10
|
import { ICON_MAP } from "./icons/iconMap.js";
|
|
11
11
|
import { safeDispatchEvent } from "./utils/window.js";
|
|
12
12
|
import { g as groupBy } from "./groupBy-DC2oOuBN.js";
|
|
13
|
-
import { u as uniq } from "./ClueEnrichContext-
|
|
13
|
+
import { u as uniq } from "./ClueEnrichContext-UZ1ghGU_.js";
|
|
14
14
|
import { memo, useState, useMemo, useCallback, useEffect } from "react";
|
|
15
15
|
import { u as useContextSelector } from "./index-BDVjGvMI.js";
|
|
16
16
|
import ExecutePopover from "./components/actions/ExecutePopover.js";
|
|
@@ -8,7 +8,7 @@ import { useState, useRef, useCallback, useEffect, useMemo } from "react";
|
|
|
8
8
|
import { c as createContext, u as useContextSelector } from "./index-BDVjGvMI.js";
|
|
9
9
|
import { SHOW_EVENT_ID, HIDE_EVENT_ID } from "./data/event.js";
|
|
10
10
|
import { safeDispatchEvent, safeAddEventListener } from "./utils/window.js";
|
|
11
|
-
import { i as isNull } from "./AnnotationDetails-
|
|
11
|
+
import { i as isNull } from "./AnnotationDetails-Bi8OW9M9.js";
|
|
12
12
|
const CluePopupContext = createContext(null);
|
|
13
13
|
const CluePopupProvider = ({ children }) => {
|
|
14
14
|
const [popupType, setPopupType] = useState(null);
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { a as addAPIProvider } from "./iconify-CXMreGTg.js";
|
|
3
|
-
import { u as useClueTypeConfig, a as api, p as post } from "./useClueTypeConfig-
|
|
3
|
+
import { u as useClueTypeConfig, a as api, p as post } from "./useClueTypeConfig-Ck1Sz41X.js";
|
|
4
4
|
import { clueDebugLogger } from "./utils/loggerUtil.js";
|
|
5
5
|
import { b as baseSlice } from "./_baseSlice-GAv_YFTT.js";
|
|
6
6
|
import { t as toFinite } from "./toFinite-Bc55msYj.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
2
|
import { Popover } from "@mui/material";
|
|
3
3
|
import React__default, { useRef, useState, useEffect } from "react";
|
|
4
|
-
import { A as AnnotationDetails } from "../AnnotationDetails-
|
|
4
|
+
import { A as AnnotationDetails } from "../AnnotationDetails-Bi8OW9M9.js";
|
|
5
5
|
const AnnotationDetailPopover = React__default.memo(({ anchorEl, enrichRequest, open, onClose, ...otherProps }) => {
|
|
6
6
|
var _a, _b, _c;
|
|
7
7
|
const actionRef = useRef();
|
|
@@ -10,8 +10,8 @@ import "../hooks/useErrors.js";
|
|
|
10
10
|
import "../icons/iconMap.js";
|
|
11
11
|
import "../utils/window.js";
|
|
12
12
|
import "../groupBy-DC2oOuBN.js";
|
|
13
|
-
import { A } from "../AnnotationDetails-
|
|
14
|
-
import "../ClueEnrichContext-
|
|
13
|
+
import { A } from "../AnnotationDetails-Bi8OW9M9.js";
|
|
14
|
+
import "../ClueEnrichContext-UZ1ghGU_.js";
|
|
15
15
|
import "react";
|
|
16
16
|
import "../index-BDVjGvMI.js";
|
|
17
17
|
import "./actions/ExecutePopover.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "../iconify-CXMreGTg.js";
|
|
3
3
|
import "@mui/material";
|
|
4
|
-
import { A } from "../AnnotationPreview-
|
|
4
|
+
import { A } from "../AnnotationPreview-DOIhJg4V.js";
|
|
5
5
|
import "../hooks/useAnnotations.js";
|
|
6
6
|
import "../utils-7OtvGnmf.js";
|
|
7
7
|
import "react";
|
|
@@ -10,10 +10,12 @@ import ContextIcon from "../icons/Context.js";
|
|
|
10
10
|
import OpinionIcon from "../icons/Opinion.js";
|
|
11
11
|
import { ICON_MAP } from "../icons/iconMap.js";
|
|
12
12
|
import FrequencyText from "../text/Frequency.js";
|
|
13
|
-
import { u as uniq } from "../ClueEnrichContext-
|
|
13
|
+
import { u as uniq } from "../ClueEnrichContext-UZ1ghGU_.js";
|
|
14
14
|
import { memo, useState, useMemo, useCallback } from "react";
|
|
15
15
|
import { u as useContextSelector } from "../index-BDVjGvMI.js";
|
|
16
16
|
import AnnotationEntry from "./AnnotationEntry.js";
|
|
17
|
+
import ExecutePopover from "./actions/ExecutePopover.js";
|
|
18
|
+
import EnrichPopover from "./enrichment/EnrichPopover.js";
|
|
17
19
|
const EnrichedCard = ({
|
|
18
20
|
type,
|
|
19
21
|
value,
|
|
@@ -34,6 +36,7 @@ const EnrichedCard = ({
|
|
|
34
36
|
);
|
|
35
37
|
const [annotations, loading] = useAnnotations(type, value, classification);
|
|
36
38
|
const errors = useErrors(value);
|
|
39
|
+
const enrichRequest = { type, value, classification };
|
|
37
40
|
const options = useMemo(() => ["all", ...uniq(annotations.map((annotation) => annotation.type))], [annotations]);
|
|
38
41
|
const forceEnrich = useCallback(() => {
|
|
39
42
|
return enrich(type, value, {
|
|
@@ -61,7 +64,7 @@ const EnrichedCard = ({
|
|
|
61
64
|
/* @__PURE__ */ jsx(
|
|
62
65
|
AssessmentIcon,
|
|
63
66
|
{
|
|
64
|
-
value:
|
|
67
|
+
value: enrichRequest,
|
|
65
68
|
annotations,
|
|
66
69
|
counters,
|
|
67
70
|
fontSize: "1em",
|
|
@@ -71,7 +74,7 @@ const EnrichedCard = ({
|
|
|
71
74
|
/* @__PURE__ */ jsx(
|
|
72
75
|
OpinionIcon,
|
|
73
76
|
{
|
|
74
|
-
value:
|
|
77
|
+
value: enrichRequest,
|
|
75
78
|
annotations,
|
|
76
79
|
counters,
|
|
77
80
|
fontSize: "1em",
|
|
@@ -81,7 +84,7 @@ const EnrichedCard = ({
|
|
|
81
84
|
/* @__PURE__ */ jsx(
|
|
82
85
|
ContextIcon,
|
|
83
86
|
{
|
|
84
|
-
value:
|
|
87
|
+
value: enrichRequest,
|
|
85
88
|
annotations,
|
|
86
89
|
counters,
|
|
87
90
|
showExtraIcon: contextIcon,
|
|
@@ -89,7 +92,10 @@ const EnrichedCard = ({
|
|
|
89
92
|
disableTooltip: true
|
|
90
93
|
}
|
|
91
94
|
),
|
|
92
|
-
loading && !hideLoading && /* @__PURE__ */ jsx(CircularProgress, { color: "primary", size: 18 })
|
|
95
|
+
loading && !hideLoading && /* @__PURE__ */ jsx(CircularProgress, { color: "primary", size: 18 }),
|
|
96
|
+
/* @__PURE__ */ jsx("div", { style: { flex: 1 } }),
|
|
97
|
+
/* @__PURE__ */ jsx(EnrichPopover, { selector: enrichRequest }),
|
|
98
|
+
/* @__PURE__ */ jsx(ExecutePopover, { selectors: [enrichRequest] })
|
|
93
99
|
] })
|
|
94
100
|
}
|
|
95
101
|
),
|
|
@@ -3,7 +3,7 @@ import { Chip, Tooltip, Box, Stack, CircularProgress } from "@mui/material";
|
|
|
3
3
|
import Iconified from "./display/icons/Iconified.js";
|
|
4
4
|
import { ClueComponentContext } from "../hooks/ClueComponentContext.js";
|
|
5
5
|
import { ClueGroupContext } from "../hooks/ClueGroupContext.js";
|
|
6
|
-
import { C as CluePopupContext } from "../AnnotationPreview-
|
|
6
|
+
import { C as CluePopupContext } from "../AnnotationPreview-DOIhJg4V.js";
|
|
7
7
|
import { useClueEnrichSelector } from "../hooks/selectors.js";
|
|
8
8
|
import useAnnotations from "../hooks/useAnnotations.js";
|
|
9
9
|
import ActionIcon from "../icons/Action.js";
|
|
@@ -55,21 +55,15 @@ const EnrichedChip = React__default.memo(
|
|
|
55
55
|
return options;
|
|
56
56
|
}, [setForceDetails, slotProps.popover]);
|
|
57
57
|
const clicker = useMemo(
|
|
58
|
-
() => !
|
|
58
|
+
() => !hideDetails || useDetailsIcon ? (e) => {
|
|
59
59
|
var _a;
|
|
60
60
|
showInfo("details", anchorRef.current, { type, value, classification }, buildOptions());
|
|
61
61
|
(_a = otherProps.onClick) == null ? void 0 : _a.call(otherProps, e);
|
|
62
62
|
e.stopPropagation();
|
|
63
63
|
e.preventDefault();
|
|
64
|
-
} : otherProps.onClick
|
|
65
|
-
// We need to give a dummy callback when loading so the popover doesn't get confused
|
|
66
|
-
(e) => {
|
|
67
|
-
var _a;
|
|
68
|
-
(_a = otherProps.onClick) == null ? void 0 : _a.call(otherProps, e);
|
|
69
|
-
}
|
|
70
|
-
),
|
|
64
|
+
} : otherProps.onClick,
|
|
71
65
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
72
|
-
[
|
|
66
|
+
[hideDetails, useDetailsIcon, otherProps, type, value, classification]
|
|
73
67
|
);
|
|
74
68
|
useEffect(() => {
|
|
75
69
|
if (forceDetails) {
|
|
@@ -3,7 +3,7 @@ import { useTheme, Stack, CircularProgress, Tooltip, IconButton } from "@mui/mat
|
|
|
3
3
|
import Iconified from "./display/icons/Iconified.js";
|
|
4
4
|
import { ClueComponentContext } from "../hooks/ClueComponentContext.js";
|
|
5
5
|
import { ClueGroupContext } from "../hooks/ClueGroupContext.js";
|
|
6
|
-
import { C as CluePopupContext } from "../AnnotationPreview-
|
|
6
|
+
import { C as CluePopupContext } from "../AnnotationPreview-DOIhJg4V.js";
|
|
7
7
|
import { useClueEnrichSelector } from "../hooks/selectors.js";
|
|
8
8
|
import useAnnotations from "../hooks/useAnnotations.js";
|
|
9
9
|
import ActionIcon from "../icons/Action.js";
|
|
@@ -29,7 +29,7 @@ const EnrichedTypography = ({
|
|
|
29
29
|
children,
|
|
30
30
|
...otherProps
|
|
31
31
|
}) => {
|
|
32
|
-
var _a, _b, _c;
|
|
32
|
+
var _a, _b, _c, _d;
|
|
33
33
|
const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx.i18next);
|
|
34
34
|
const theme = useTheme();
|
|
35
35
|
const anchorRef = useRef();
|
|
@@ -57,21 +57,15 @@ const EnrichedTypography = ({
|
|
|
57
57
|
return options;
|
|
58
58
|
}, [setForceDetails, slotProps.popover]);
|
|
59
59
|
const clicker = useMemo(
|
|
60
|
-
() => !
|
|
60
|
+
() => !hideDetails || useDetailsIcon ? (e) => {
|
|
61
61
|
var _a2;
|
|
62
62
|
showInfo("details", anchorRef.current, { type, value, classification }, buildOptions());
|
|
63
63
|
(_a2 = otherProps.onClick) == null ? void 0 : _a2.call(otherProps, e);
|
|
64
64
|
e.stopPropagation();
|
|
65
65
|
e.preventDefault();
|
|
66
|
-
} : otherProps.onClick
|
|
67
|
-
// We need to give a dummy callback when loading so the popover doesn't get confused
|
|
68
|
-
(e) => {
|
|
69
|
-
var _a2;
|
|
70
|
-
(_a2 = otherProps.onClick) == null ? void 0 : _a2.call(otherProps, e);
|
|
71
|
-
}
|
|
72
|
-
),
|
|
66
|
+
} : otherProps.onClick,
|
|
73
67
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
74
|
-
[
|
|
68
|
+
[hideDetails, useDetailsIcon, otherProps, type, value, classification]
|
|
75
69
|
);
|
|
76
70
|
useEffect(() => {
|
|
77
71
|
if (forceDetails) {
|
|
@@ -92,6 +86,7 @@ const EnrichedTypography = ({
|
|
|
92
86
|
spacing: 1,
|
|
93
87
|
alignItems: "center",
|
|
94
88
|
...slotProps == null ? void 0 : slotProps.stack,
|
|
89
|
+
className: `enriched-typography ${((_a = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _a.className) ?? ""}`.trim(),
|
|
95
90
|
sx: [
|
|
96
91
|
{
|
|
97
92
|
cursor: !loading && !hideDetails ? "pointer" : "inherit",
|
|
@@ -101,7 +96,7 @@ const EnrichedTypography = ({
|
|
|
101
96
|
borderBottomColor: !loading && (!hideDetails ? theme.palette.primary.light : null)
|
|
102
97
|
}
|
|
103
98
|
},
|
|
104
|
-
...Array.isArray((
|
|
99
|
+
...Array.isArray((_b = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _b.sx) ? (_c = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _c.sx : [(_d = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _d.sx]
|
|
105
100
|
],
|
|
106
101
|
onClick: !useDetailsIcon ? clicker : void 0,
|
|
107
102
|
children: [
|
|
@@ -5,7 +5,7 @@ import "@mui/material";
|
|
|
5
5
|
import "../display/icons/Iconified.js";
|
|
6
6
|
import "../../index-Bi21Wb23.js";
|
|
7
7
|
import "../../hooks/ClueComponentContext.js";
|
|
8
|
-
import { A } from "../../ActionForm-
|
|
8
|
+
import { A } from "../../ActionForm-BR-JC3rN.js";
|
|
9
9
|
import "../../utils-7OtvGnmf.js";
|
|
10
10
|
import "react";
|
|
11
11
|
import "../../index-BDVjGvMI.js";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, Fragment, jsx } from "react/jsx-runtime";
|
|
2
2
|
import { useTheme, Tooltip, IconButton, CircularProgress, Button, Popover, Paper, Stack, Box, Typography, Divider } from "@mui/material";
|
|
3
3
|
import { useClueComponentSelector, useClueEnrichSelector } from "../../hooks/selectors.js";
|
|
4
|
-
import { c as capitalize } from "../../ActionForm-
|
|
4
|
+
import { c as capitalize } from "../../ActionForm-BR-JC3rN.js";
|
|
5
5
|
import { useState, useRef, useCallback, useEffect } from "react";
|
|
6
6
|
import Iconified from "../display/icons/Iconified.js";
|
|
7
7
|
const EnrichPopover = ({ show = false, size = "small", selector }) => {
|
|
@@ -6,7 +6,7 @@ import { SNACKBAR_EVENT_ID } from "../../data/event.js";
|
|
|
6
6
|
import { ClueGroupContext } from "../../hooks/ClueGroupContext.js";
|
|
7
7
|
import { useClueComponentSelector, useClueEnrichSelector } from "../../hooks/selectors.js";
|
|
8
8
|
import { safeDispatchEvent } from "../../utils/window.js";
|
|
9
|
-
import { c as capitalize } from "../../ActionForm-
|
|
9
|
+
import { c as capitalize } from "../../ActionForm-BR-JC3rN.js";
|
|
10
10
|
import { useState, useMemo, useCallback } from "react";
|
|
11
11
|
import { u as useContextSelector } from "../../index-BDVjGvMI.js";
|
|
12
12
|
import ExecutePopover from "../actions/ExecutePopover.js";
|
|
@@ -43,6 +43,18 @@ export interface ClueActionContextType {
|
|
|
43
43
|
* how long should the action have to respond?
|
|
44
44
|
*/
|
|
45
45
|
timeout?: number;
|
|
46
|
+
/**
|
|
47
|
+
* Should contextual information about the source of the action be included?
|
|
48
|
+
*
|
|
49
|
+
* This information includes:
|
|
50
|
+
* - Exact execution time
|
|
51
|
+
* - Current URL on execution
|
|
52
|
+
*/
|
|
53
|
+
includeContext?: boolean;
|
|
54
|
+
/**
|
|
55
|
+
* Additional context information to include on execution. Useful for tight connections between actions and the UI.
|
|
56
|
+
*/
|
|
57
|
+
extraContext?: Record<string, any>;
|
|
46
58
|
}) => Promise<void>;
|
|
47
59
|
/**
|
|
48
60
|
* Cancel an action pending user input.
|
|
@@ -71,6 +83,10 @@ export interface ClueActionProps {
|
|
|
71
83
|
* What should the default classification be when executing actions?
|
|
72
84
|
*/
|
|
73
85
|
classification?: string;
|
|
86
|
+
/**
|
|
87
|
+
* Should basic context information (execution time, current url) be included when executing an action?
|
|
88
|
+
*/
|
|
89
|
+
includeContext?: boolean;
|
|
74
90
|
/**
|
|
75
91
|
* Get an access token for the clue API.
|
|
76
92
|
*
|
|
@@ -1,17 +1,19 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "@mui/material";
|
|
3
3
|
import "../index-CC12Ux-9.js";
|
|
4
|
-
import "../useClueTypeConfig-
|
|
5
|
-
import { a, C } from "../ActionForm-
|
|
4
|
+
import "../useClueTypeConfig-Ck1Sz41X.js";
|
|
5
|
+
import { a, C } from "../ActionForm-BR-JC3rN.js";
|
|
6
6
|
import "../components/actions/ResultModal.js";
|
|
7
7
|
import "../components/display/icons/Iconified.js";
|
|
8
8
|
import "../components/ErrorBoundary.js";
|
|
9
9
|
import "../data/event.js";
|
|
10
|
+
import "../utils/time.js";
|
|
10
11
|
import "../utils/window.js";
|
|
11
12
|
import "react";
|
|
12
13
|
import "../index-BDVjGvMI.js";
|
|
13
14
|
import "./ClueComponentContext.js";
|
|
14
15
|
import "./useClue.js";
|
|
16
|
+
import "../isNil-CIubwp4T.js";
|
|
15
17
|
export {
|
|
16
18
|
a as ClueActionContext,
|
|
17
19
|
C as ClueActionProvider
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "../iconify-CXMreGTg.js";
|
|
3
|
-
import "../useClueTypeConfig-
|
|
3
|
+
import "../useClueTypeConfig-Ck1Sz41X.js";
|
|
4
4
|
import "../utils/loggerUtil.js";
|
|
5
|
-
import { C, a } from "../ClueEnrichContext-
|
|
5
|
+
import { C, a } from "../ClueEnrichContext-UZ1ghGU_.js";
|
|
6
6
|
import "../debounce-bV0h5FC5.js";
|
|
7
7
|
import "../groupBy-DC2oOuBN.js";
|
|
8
8
|
import "react";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { a as api } from "../useClueTypeConfig-
|
|
2
|
+
import { a as api } from "../useClueTypeConfig-Ck1Sz41X.js";
|
|
3
3
|
import { useState, useRef, useCallback, useEffect, useMemo } from "react";
|
|
4
4
|
import { c as createContext } from "../index-BDVjGvMI.js";
|
|
5
5
|
import useClue from "./useClue.js";
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import "react/jsx-runtime";
|
|
2
2
|
import "../components/AnnotationDetailPopover.js";
|
|
3
|
-
import { C, a } from "../AnnotationPreview-
|
|
3
|
+
import { C, a } from "../AnnotationPreview-DOIhJg4V.js";
|
|
4
4
|
import "../data/event.js";
|
|
5
5
|
import "../utils/window.js";
|
|
6
|
-
import "../AnnotationDetails-
|
|
6
|
+
import "../AnnotationDetails-Bi8OW9M9.js";
|
|
7
7
|
import "react";
|
|
8
8
|
import "../index-BDVjGvMI.js";
|
|
9
9
|
export {
|
package/hooks/ClueProvider.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
import { jsx } from "react/jsx-runtime";
|
|
2
|
-
import { C as ClueActionProvider } from "../ActionForm-
|
|
2
|
+
import { C as ClueActionProvider } from "../ActionForm-BR-JC3rN.js";
|
|
3
3
|
import { ClueComponentProvider } from "./ClueComponentContext.js";
|
|
4
4
|
import { ClueConfigProvider } from "./ClueConfigProvider.js";
|
|
5
5
|
import { ClueDatabaseProvider } from "./ClueDatabaseContext.js";
|
|
6
|
-
import { a as ClueEnrichProvider } from "../ClueEnrichContext-
|
|
6
|
+
import { a as ClueEnrichProvider } from "../ClueEnrichContext-UZ1ghGU_.js";
|
|
7
7
|
import { ClueFetcherProvider } from "./ClueFetcherContext.js";
|
|
8
|
-
import { a as CluePopupProvider } from "../AnnotationPreview-
|
|
8
|
+
import { a as CluePopupProvider } from "../AnnotationPreview-DOIhJg4V.js";
|
|
9
9
|
const ClueProvider = ({ children, ...props }) => {
|
|
10
10
|
return /* @__PURE__ */ jsx(ClueComponentProvider, { ...props, children: /* @__PURE__ */ jsx(ClueConfigProvider, { config: props.config, children: /* @__PURE__ */ jsx(ClueDatabaseProvider, { ...props, children: /* @__PURE__ */ jsx(ClueEnrichProvider, { ...props, children: /* @__PURE__ */ jsx(ClueFetcherProvider, { ...props, children: /* @__PURE__ */ jsx(ClueActionProvider, { ...props, children: /* @__PURE__ */ jsx(CluePopupProvider, { children }) }) }) }) }) }) });
|
|
11
11
|
};
|
package/hooks/selectors.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { ClueActionContextType } from
|
|
2
|
-
import { ClueComponentContextType } from
|
|
3
|
-
import { ClueEnrichContextType } from
|
|
4
|
-
import { ClueFetcherContextType } from
|
|
1
|
+
import { ClueActionContextType } from "../hooks/ClueActionContext";
|
|
2
|
+
import { ClueComponentContextType } from "../hooks/ClueComponentContext";
|
|
3
|
+
import { ClueEnrichContextType } from "../hooks/ClueEnrichContextType";
|
|
4
|
+
import { ClueFetcherContextType } from "../hooks/ClueFetcherContext";
|
|
5
5
|
|
|
6
6
|
export declare const useClueFetcherSelector: <Selected>(selector: (value: ClueFetcherContextType) => Selected) => Selected;
|
|
7
7
|
export declare const useClueActionsSelector: <Selected>(selector: (value: ClueActionContextType) => Selected) => Selected;
|
package/hooks/selectors.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as ClueActionContext } from "../ActionForm-oiPSbHip.js";
|
|
1
|
+
import { a as ClueActionContext } from "../ActionForm-BR-JC3rN.js";
|
|
3
2
|
import { ClueComponentContext } from "./ClueComponentContext.js";
|
|
4
|
-
import { C as ClueEnrichContext } from "../ClueEnrichContext-
|
|
3
|
+
import { C as ClueEnrichContext } from "../ClueEnrichContext-UZ1ghGU_.js";
|
|
5
4
|
import { ClueFetcherContext } from "./ClueFetcherContext.js";
|
|
5
|
+
import { u as useContextSelector } from "../index-BDVjGvMI.js";
|
|
6
6
|
const useClueFetcherSelector = (selector) => {
|
|
7
7
|
return useContextSelector(ClueFetcherContext, selector);
|
|
8
8
|
};
|
package/hooks/useAnnotations.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { b as uniqBy } from "../ClueEnrichContext-
|
|
1
|
+
import { b as uniqBy } from "../ClueEnrichContext-UZ1ghGU_.js";
|
|
2
2
|
import { useContext, useMemo, useState, useEffect } from "react";
|
|
3
3
|
import { ClueDatabaseContext } from "./ClueDatabaseContext.js";
|
|
4
4
|
import { useClueEnrichSelector } from "./selectors.js";
|
package/hooks/useClue.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { a as useContext } from "../index-BDVjGvMI.js";
|
|
2
|
-
import { C as ClueEnrichContext } from "../ClueEnrichContext-
|
|
2
|
+
import { C as ClueEnrichContext } from "../ClueEnrichContext-UZ1ghGU_.js";
|
|
3
3
|
const useClue = () => {
|
|
4
4
|
return useContext(ClueEnrichContext);
|
|
5
5
|
};
|
package/hooks/useClueActions.js
CHANGED
package/icons/Action.js
CHANGED
|
@@ -2,8 +2,8 @@ import { jsx, jsxs } from "react/jsx-runtime";
|
|
|
2
2
|
import { I as Icon } from "../iconify-CXMreGTg.js";
|
|
3
3
|
import { useTheme, Stack, Divider, Typography } from "@mui/material";
|
|
4
4
|
import CountBadge from "../components/CountBadge.js";
|
|
5
|
-
import { C as CluePopupContext } from "../AnnotationPreview-
|
|
6
|
-
import { u as useClueActions } from "../ActionForm-
|
|
5
|
+
import { C as CluePopupContext } from "../AnnotationPreview-DOIhJg4V.js";
|
|
6
|
+
import { u as useClueActions } from "../ActionForm-BR-JC3rN.js";
|
|
7
7
|
import { g as groupBy } from "../groupBy-DC2oOuBN.js";
|
|
8
8
|
import { memo, useRef, useMemo, useEffect } from "react";
|
|
9
9
|
import { u as useContextSelector } from "../index-BDVjGvMI.js";
|
package/icons/Assessment.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { I as Icon } from "../iconify-CXMreGTg.js";
|
|
3
3
|
import { useTheme, Stack, Chip, Divider, Grid, Tooltip } from "@mui/material";
|
|
4
4
|
import CountBadge from "../components/CountBadge.js";
|
|
5
|
-
import { C as CluePopupContext } from "../AnnotationPreview-
|
|
5
|
+
import { C as CluePopupContext } from "../AnnotationPreview-DOIhJg4V.js";
|
|
6
6
|
import { g as groupBy } from "../groupBy-DC2oOuBN.js";
|
|
7
7
|
import { l as last } from "../last-CUCl67Im.js";
|
|
8
8
|
import { m as maxBy, s as sortBy } from "../sortBy-B-UKp4GT.js";
|
package/icons/Context.js
CHANGED
|
@@ -4,7 +4,7 @@ import { Stack, Divider } from "@mui/material";
|
|
|
4
4
|
import AnnotationEntry from "../components/AnnotationEntry.js";
|
|
5
5
|
import CountBadge from "../components/CountBadge.js";
|
|
6
6
|
import Iconified from "../components/display/icons/Iconified.js";
|
|
7
|
-
import { C as CluePopupContext } from "../AnnotationPreview-
|
|
7
|
+
import { C as CluePopupContext } from "../AnnotationPreview-DOIhJg4V.js";
|
|
8
8
|
import { g as groupBy } from "../groupBy-DC2oOuBN.js";
|
|
9
9
|
import { memo, useRef, useMemo, useEffect } from "react";
|
|
10
10
|
import { u as useContextSelector } from "../index-BDVjGvMI.js";
|
package/icons/Opinion.js
CHANGED
|
@@ -2,7 +2,7 @@ import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
|
2
2
|
import { I as Icon } from "../iconify-CXMreGTg.js";
|
|
3
3
|
import { useTheme, Stack, Chip, Divider, Grid } from "@mui/material";
|
|
4
4
|
import CountBadge from "../components/CountBadge.js";
|
|
5
|
-
import { C as CluePopupContext } from "../AnnotationPreview-
|
|
5
|
+
import { C as CluePopupContext } from "../AnnotationPreview-DOIhJg4V.js";
|
|
6
6
|
import chain from "../utils/chain.js";
|
|
7
7
|
import { g as groupBy } from "../groupBy-DC2oOuBN.js";
|
|
8
8
|
import { s as sortBy } from "../sortBy-B-UKp4GT.js";
|
package/main.js
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { A, u } from "./ActionForm-
|
|
1
|
+
import { A, u } from "./ActionForm-BR-JC3rN.js";
|
|
2
2
|
import { default as default2 } from "./components/AnnotationDetailPopover.js";
|
|
3
|
-
import { A as A2 } from "./AnnotationDetails-
|
|
3
|
+
import { A as A2 } from "./AnnotationDetails-Bi8OW9M9.js";
|
|
4
4
|
import { default as default3 } from "./components/AnnotationEntry.js";
|
|
5
|
-
import { A as A3, C } from "./AnnotationPreview-
|
|
5
|
+
import { A as A3, C } from "./AnnotationPreview-DOIhJg4V.js";
|
|
6
6
|
import { default as default4 } from "./components/CountBadge.js";
|
|
7
7
|
import { default as default5 } from "./components/EnrichedCard.js";
|
|
8
8
|
import { default as default6 } from "./components/EnrichedChip.js";
|
|
@@ -18,7 +18,7 @@ import { b } from "./index-CC12Ux-9.js";
|
|
|
18
18
|
import { ClueComponentContext } from "./hooks/ClueComponentContext.js";
|
|
19
19
|
import { ClueConfigContext } from "./hooks/ClueConfigProvider.js";
|
|
20
20
|
import { ClueDatabaseContext } from "./hooks/ClueDatabaseContext.js";
|
|
21
|
-
import { C as C2 } from "./ClueEnrichContext-
|
|
21
|
+
import { C as C2 } from "./ClueEnrichContext-UZ1ghGU_.js";
|
|
22
22
|
import { ClueProvider } from "./hooks/ClueProvider.js";
|
|
23
23
|
import { useClueActionsSelector, useClueEnrichSelector, useClueFetcherSelector } from "./hooks/selectors.js";
|
|
24
24
|
import { default as default14 } from "./hooks/useClue.js";
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ActionDefinition, ActionResult } from "../
|
|
2
|
-
import { Selector } from
|
|
3
|
-
import {
|
|
1
|
+
import { ActionContextInformation, ActionDefinition, ActionResult } from "../types/action";
|
|
2
|
+
import { Selector } from "../types/lookup";
|
|
3
|
+
import { WithActionData } from './WithActionData';
|
|
4
4
|
|
|
5
5
|
|
|
6
6
|
interface RunningActionData {
|
|
@@ -8,6 +8,7 @@ interface RunningActionData {
|
|
|
8
8
|
action: ActionDefinition;
|
|
9
9
|
selectors: Selector[];
|
|
10
10
|
params: { [index: string]: any };
|
|
11
|
+
context?: ActionContextInformation;
|
|
11
12
|
onComplete?: (result: WithActionData<ActionResult>) => void;
|
|
12
13
|
timeout?: number;
|
|
13
14
|
}
|
package/types/action.d.ts
CHANGED
|
@@ -1,6 +1,13 @@
|
|
|
1
1
|
import { JSONSchema7 } from 'json-schema';
|
|
2
2
|
|
|
3
3
|
|
|
4
|
+
export interface ActionContextInformation {
|
|
5
|
+
url?: string;
|
|
6
|
+
timestamp?: string;
|
|
7
|
+
language?: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
|
|
4
11
|
export interface ActionDefinition {
|
|
5
12
|
accept_multiple?: boolean;
|
|
6
13
|
action_icon?: string;
|
|
@@ -14,7 +14,7 @@ const uri$c = () => {
|
|
|
14
14
|
const get$7 = (config) => {
|
|
15
15
|
return hget(uri$c(), null, config);
|
|
16
16
|
};
|
|
17
|
-
const post$3 = (actionId, selectors, params, options = { timeout: null }, config) => {
|
|
17
|
+
const post$3 = (actionId, selectors, params, context, options = { timeout: null }, config) => {
|
|
18
18
|
const searchParams = [];
|
|
19
19
|
if (!isNil(options.timeout)) {
|
|
20
20
|
searchParams.push(`max_timeout=${options.timeout}`);
|
|
@@ -29,6 +29,7 @@ const post$3 = (actionId, selectors, params, options = { timeout: null }, config
|
|
|
29
29
|
} else {
|
|
30
30
|
payload.selectors = selectors;
|
|
31
31
|
}
|
|
32
|
+
payload.context = context ?? null;
|
|
32
33
|
return hpost(
|
|
33
34
|
joinUri(
|
|
34
35
|
joinUri(uri$c(), "execute"),
|