@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.
Files changed (35) hide show
  1. package/{ActionForm-oiPSbHip.js → ActionForm-BR-JC3rN.js} +36 -5
  2. package/{AnnotationDetails-fsvrH3_v.js → AnnotationDetails-Bi8OW9M9.js} +1 -1
  3. package/{AnnotationPreview-biAV6uKB.js → AnnotationPreview-DOIhJg4V.js} +1 -1
  4. package/{ClueEnrichContext-C4hjLcHp.js → ClueEnrichContext-UZ1ghGU_.js} +1 -1
  5. package/components/AnnotationDetailPopover.js +1 -1
  6. package/components/AnnotationDetails.js +2 -2
  7. package/components/AnnotationPreview.js +1 -1
  8. package/components/EnrichedCard.js +11 -5
  9. package/components/EnrichedChip.js +4 -10
  10. package/components/EnrichedTypography.js +7 -12
  11. package/components/actions/ActionForm.js +1 -1
  12. package/components/enrichment/EnrichPopover.js +1 -1
  13. package/components/group/GroupControl.js +1 -1
  14. package/hooks/ClueActionContext.d.ts +16 -0
  15. package/hooks/ClueActionContext.js +4 -2
  16. package/hooks/ClueEnrichContext.js +2 -2
  17. package/hooks/ClueFetcherContext.js +1 -1
  18. package/hooks/CluePopupContext.js +2 -2
  19. package/hooks/ClueProvider.js +3 -3
  20. package/hooks/selectors.d.ts +4 -4
  21. package/hooks/selectors.js +3 -3
  22. package/hooks/useAnnotations.js +1 -1
  23. package/hooks/useClue.js +1 -1
  24. package/hooks/useClueActions.d.ts +1 -1
  25. package/hooks/useClueActions.js +1 -1
  26. package/hooks/useClueTypeConfig.js +1 -1
  27. package/icons/Action.js +2 -2
  28. package/icons/Assessment.js +1 -1
  29. package/icons/Context.js +1 -1
  30. package/icons/Opinion.js +1 -1
  31. package/main.js +4 -4
  32. package/package.json +1 -1
  33. package/types/RunningActionData.d.ts +4 -3
  34. package/types/action.d.ts +7 -0
  35. 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-HmNKKYHY.js";
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
- [availableActions, baseURL, getHashKey, getToken, onNetworkCall, runningActionData == null ? void 0 : runningActionData.id, t]
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-C4hjLcHp.js";
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-fsvrH3_v.js";
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-HmNKKYHY.js";
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-fsvrH3_v.js";
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-fsvrH3_v.js";
14
- import "../ClueEnrichContext-C4hjLcHp.js";
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-biAV6uKB.js";
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-C4hjLcHp.js";
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: { type, value, classification },
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: { type, value, classification },
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: { type, value, classification },
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-biAV6uKB.js";
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
- () => !loading ? !hideDetails || useDetailsIcon ? (e) => {
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
- [loading, hideDetails, useDetailsIcon, otherProps, type, value, classification]
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-biAV6uKB.js";
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
- () => !loading ? !hideDetails || useDetailsIcon ? (e) => {
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
- [loading, hideDetails, useDetailsIcon, otherProps, type, value, classification]
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((_a = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _a.sx) ? (_b = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _b.sx : [(_c = slotProps == null ? void 0 : slotProps.stack) == null ? void 0 : _c.sx]
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-oiPSbHip.js";
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-oiPSbHip.js";
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-oiPSbHip.js";
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-HmNKKYHY.js";
5
- import { a, C } from "../ActionForm-oiPSbHip.js";
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-HmNKKYHY.js";
3
+ import "../useClueTypeConfig-Ck1Sz41X.js";
4
4
  import "../utils/loggerUtil.js";
5
- import { C, a } from "../ClueEnrichContext-C4hjLcHp.js";
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-HmNKKYHY.js";
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-biAV6uKB.js";
3
+ import { C, a } from "../AnnotationPreview-DOIhJg4V.js";
4
4
  import "../data/event.js";
5
5
  import "../utils/window.js";
6
- import "../AnnotationDetails-fsvrH3_v.js";
6
+ import "../AnnotationDetails-Bi8OW9M9.js";
7
7
  import "react";
8
8
  import "../index-BDVjGvMI.js";
9
9
  export {
@@ -1,11 +1,11 @@
1
1
  import { jsx } from "react/jsx-runtime";
2
- import { C as ClueActionProvider } from "../ActionForm-oiPSbHip.js";
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-C4hjLcHp.js";
6
+ import { a as ClueEnrichProvider } from "../ClueEnrichContext-UZ1ghGU_.js";
7
7
  import { ClueFetcherProvider } from "./ClueFetcherContext.js";
8
- import { a as CluePopupProvider } from "../AnnotationPreview-biAV6uKB.js";
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
  };
@@ -1,7 +1,7 @@
1
- import { ClueActionContextType } from './ClueActionContext';
2
- import { ClueComponentContextType } from './ClueComponentContext';
3
- import { ClueEnrichContextType } from './ClueEnrichContextType';
4
- import { ClueFetcherContextType } from './ClueFetcherContext';
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;
@@ -1,8 +1,8 @@
1
- import { u as useContextSelector } from "../index-BDVjGvMI.js";
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-C4hjLcHp.js";
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
  };
@@ -1,4 +1,4 @@
1
- import { b as uniqBy } from "../ClueEnrichContext-C4hjLcHp.js";
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-C4hjLcHp.js";
2
+ import { C as ClueEnrichContext } from "../ClueEnrichContext-UZ1ghGU_.js";
3
3
  const useClue = () => {
4
4
  return useContext(ClueEnrichContext);
5
5
  };
@@ -1,4 +1,4 @@
1
- import { ClueActionContextType } from './ClueActionContext';
1
+ import { ClueActionContextType } from "../hooks/ClueActionContext";
2
2
 
3
3
  declare const useClueActions: () => ClueActionContextType;
4
4
  export default useClueActions;
@@ -1,5 +1,5 @@
1
+ import { u } from "../ActionForm-BR-JC3rN.js";
1
2
  import "../index-BDVjGvMI.js";
2
- import { u } from "../ActionForm-oiPSbHip.js";
3
3
  export {
4
4
  u as default
5
5
  };
@@ -1,4 +1,4 @@
1
- import { u } from "../useClueTypeConfig-HmNKKYHY.js";
1
+ import { u } from "../useClueTypeConfig-Ck1Sz41X.js";
2
2
  import "../utils/loggerUtil.js";
3
3
  import "../isEmpty-BQkZubqU.js";
4
4
  import "react";
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-biAV6uKB.js";
6
- import { u as useClueActions } from "../ActionForm-oiPSbHip.js";
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";
@@ -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-biAV6uKB.js";
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-biAV6uKB.js";
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-biAV6uKB.js";
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-oiPSbHip.js";
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-fsvrH3_v.js";
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-biAV6uKB.js";
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-C4hjLcHp.js";
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
@@ -63,7 +63,7 @@
63
63
  },
64
64
  "type": "module",
65
65
  "types": "main.d.ts",
66
- "version": "1.1.0-dev.52",
66
+ "version": "1.1.0-dev.66",
67
67
  "exports": {
68
68
  ".": "./main.js",
69
69
  "./index.css": "./index.css",
@@ -1,6 +1,6 @@
1
- import { ActionDefinition, ActionResult } from "../api/actions";
2
- import { Selector } from 'lib/types/lookup';
3
- import { default as WithActionData } from './WithActionData';
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"),