@cccsaurora/clue-ui 0.15.0-dev.28 → 0.15.0-dev.30

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 (257) hide show
  1. package/ActionForm-DgfJwTzt.js +436 -0
  2. package/AnnotationPreview-BvNpZOP0.js +188 -0
  3. package/ClueEnrichContext-DXwLVp0M.js +518 -0
  4. package/FlexOne-BSYAhhtG.js +9 -0
  5. package/_Map-kgDsDYxq.js +64 -0
  6. package/_MapCache-DabaaWfq.js +161 -0
  7. package/_Uint8Array-BlVVH1tp.js +129 -0
  8. package/_baseAssignValue-CNbcU6Nb.js +25 -0
  9. package/_baseClone-D3a8Pa4T.js +284 -0
  10. package/_baseExtremum-B1o1zHjR.js +33 -0
  11. package/_baseFlatten-D4huXoEI.js +92 -0
  12. package/_baseGet-BSK_nnoz.js +109 -0
  13. package/_baseIsEqual-B5xLoweL.js +238 -0
  14. package/_baseIteratee-p6Nj07-n.js +126 -0
  15. package/_baseSlice-GAv_YFTT.js +20 -0
  16. package/_baseSum-D0WC1dN0.js +13 -0
  17. package/_baseUniq-CpupKWcL.js +89 -0
  18. package/_commonjsHelpers-CUmg6egw.js +6 -0
  19. package/_createAggregator-BpVy5xMi.js +63 -0
  20. package/_getPrototype-D1LAdQKO.js +5 -0
  21. package/_getTag-D3ToyefI.js +126 -0
  22. package/api/lookup/enrich.d.ts +10 -0
  23. package/api/lookup/index.d.ts +5 -0
  24. package/api/lookup/types.d.ts +5 -0
  25. package/api/lookup/types_detection.d.ts +5 -0
  26. package/cloneDeep-CjP5k9zW.js +8 -0
  27. package/components/AnnotationBody.d.ts +6 -0
  28. package/components/AnnotationBody.js +56 -0
  29. package/components/AnnotationDetailPopover.d.ts +14 -0
  30. package/components/AnnotationDetailPopover.js +61 -0
  31. package/components/AnnotationDetails.d.ts +8 -0
  32. package/components/AnnotationDetails.js +172 -0
  33. package/components/AnnotationEntry.d.ts +6 -0
  34. package/components/AnnotationEntry.js +59 -0
  35. package/components/AnnotationPreview.d.ts +14 -0
  36. package/components/AnnotationPreview.js +11 -0
  37. package/components/ClassificationChip.d.ts +11 -0
  38. package/components/ClassificationChip.js +52 -0
  39. package/components/CountBadge.d.ts +8 -0
  40. package/components/CountBadge.js +34 -0
  41. package/components/EnrichedCard.d.ts +14 -0
  42. package/components/EnrichedCard.js +162 -0
  43. package/components/EnrichedChip.d.ts +9 -0
  44. package/components/EnrichedChip.js +176 -0
  45. package/components/EnrichedTypography.d.ts +16 -0
  46. package/components/EnrichedTypography.js +178 -0
  47. package/components/ErrorBoundary.d.ts +15 -0
  48. package/components/ErrorBoundary.js +36 -0
  49. package/components/RetryFailedEnrichments.d.ts +2 -0
  50. package/components/RetryFailedEnrichments.js +13 -0
  51. package/components/SourcePicker.d.ts +2 -0
  52. package/components/SourcePicker.js +98 -0
  53. package/components/actions/ActionForm.d.ts +6 -0
  54. package/components/actions/ActionForm.js +16 -0
  55. package/components/actions/ExecutePopover.d.ts +10 -0
  56. package/components/actions/ExecutePopover.js +93 -0
  57. package/components/actions/ResultModal.d.ts +9 -0
  58. package/components/actions/ResultModal.js +46 -0
  59. package/components/actions/form/schemaAdapter.d.ts +3 -0
  60. package/components/actions/form/schemaAdapter.js +47 -0
  61. package/components/display/graph/ExpandMoreButton.d.ts +7 -0
  62. package/components/display/graph/ExpandMoreButton.js +18 -0
  63. package/components/display/graph/elements/NodeCard.d.ts +10 -0
  64. package/components/display/graph/elements/NodeCard.js +146 -0
  65. package/components/display/graph/elements/NodeTag.d.ts +9 -0
  66. package/components/display/graph/elements/NodeTag.js +17 -0
  67. package/components/display/graph/index.d.ts +9 -0
  68. package/components/display/graph/index.js +438 -0
  69. package/components/display/graph/visualizations/Leaf.d.ts +25 -0
  70. package/components/display/graph/visualizations/Leaf.js +125 -0
  71. package/components/display/graph/visualizations/cloud/index.d.ts +24 -0
  72. package/components/display/graph/visualizations/cloud/index.js +141 -0
  73. package/components/display/graph/visualizations/icons/BaseIcon.d.ts +12 -0
  74. package/components/display/graph/visualizations/icons/BaseIcon.js +37 -0
  75. package/components/display/graph/visualizations/icons/BugIcon.d.ts +5 -0
  76. package/components/display/graph/visualizations/icons/BugIcon.js +18 -0
  77. package/components/display/graph/visualizations/icons/HostIcon.d.ts +5 -0
  78. package/components/display/graph/visualizations/icons/HostIcon.js +24 -0
  79. package/components/display/graph/visualizations/icons/NetworkIcon.d.ts +5 -0
  80. package/components/display/graph/visualizations/icons/NetworkIcon.js +24 -0
  81. package/components/display/graph/visualizations/icons/ProcessIcon.d.ts +5 -0
  82. package/components/display/graph/visualizations/icons/ProcessIcon.js +18 -0
  83. package/components/display/graph/visualizations/icons/TargetIcon.d.ts +5 -0
  84. package/components/display/graph/visualizations/icons/TargetIcon.js +19 -0
  85. package/components/display/graph/visualizations/icons/index.d.ts +2 -0
  86. package/components/display/graph/visualizations/icons/index.js +16 -0
  87. package/components/display/graph/visualizations/panels/NodePanel.d.ts +8 -0
  88. package/components/display/graph/visualizations/panels/NodePanel.js +12 -0
  89. package/components/display/graph/visualizations/tree/BundleLine.d.ts +29 -0
  90. package/components/display/graph/visualizations/tree/BundleLine.js +121 -0
  91. package/components/display/graph/visualizations/tree/Triangle.d.ts +9 -0
  92. package/components/display/graph/visualizations/tree/Triangle.js +26 -0
  93. package/components/display/graph/visualizations/tree/index.d.ts +36 -0
  94. package/components/display/graph/visualizations/tree/index.js +485 -0
  95. package/components/display/graph/visualizations/tree/types.d.ts +11 -0
  96. package/components/display/graph/visualizations/tree/types.js +1 -0
  97. package/components/display/icons/Iconified.d.ts +9 -0
  98. package/components/display/icons/Iconified.js +29 -0
  99. package/components/display/json/index.d.ts +14 -0
  100. package/components/display/json/index.js +12 -0
  101. package/components/display/markdown/DynamicTabs.d.ts +8 -0
  102. package/components/display/markdown/DynamicTabs.js +26 -0
  103. package/components/display/markdown/index.d.ts +9 -0
  104. package/components/display/markdown/index.js +13389 -0
  105. package/components/display/markdown/markdownPlugins/tabs.d.ts +3 -0
  106. package/components/display/markdown/markdownPlugins/tabs.js +4 -0
  107. package/components/enrichment/EnrichPopover.d.ts +10 -0
  108. package/components/enrichment/EnrichPopover.js +88 -0
  109. package/components/fetchers/Fetcher.d.ts +17 -0
  110. package/components/fetchers/Fetcher.js +188 -0
  111. package/components/fetchers/PreviewModal.d.ts +8 -0
  112. package/components/fetchers/PreviewModal.js +22 -0
  113. package/components/fetchers/StatusChip.d.ts +8 -0
  114. package/components/fetchers/StatusChip.js +30 -0
  115. package/components/group/Entry.d.ts +8 -0
  116. package/components/group/Entry.js +15 -0
  117. package/components/group/Group.d.ts +12 -0
  118. package/components/group/Group.js +15 -0
  119. package/components/group/GroupControl.d.ts +4 -0
  120. package/components/group/GroupControl.js +103 -0
  121. package/components/stats/QueryStatus.d.ts +4 -0
  122. package/components/stats/QueryStatus.js +61 -0
  123. package/countBy-C69WslUA.js +14 -0
  124. package/data/event.d.ts +12 -0
  125. package/data/event.js +8 -0
  126. package/database/index.d.ts +4 -0
  127. package/database/index.js +4 -0
  128. package/database/selector.schema.json.d.ts +119 -0
  129. package/database/status.schema.json.d.ts +38 -0
  130. package/database/types.d.ts +64 -0
  131. package/debounce-bV0h5FC5.js +92 -0
  132. package/en/translation.json +135 -0
  133. package/fr/translation.json +135 -0
  134. package/get-D3C3lEU3.js +8 -0
  135. package/groupBy-DC2oOuBN.js +14 -0
  136. package/hooks/ClueActionContext.d.ts +86 -0
  137. package/hooks/ClueActionContext.js +18 -0
  138. package/hooks/ClueComponentContext.d.ts +10 -0
  139. package/hooks/ClueComponentContext.js +40 -0
  140. package/hooks/ClueConfigProvider.d.ts +12 -0
  141. package/hooks/ClueConfigProvider.js +23 -0
  142. package/hooks/ClueDatabaseContext.d.ts +10 -0
  143. package/hooks/ClueDatabaseContext.js +23 -0
  144. package/hooks/ClueEnrichContext.d.ts +6 -0
  145. package/hooks/ClueEnrichContext.js +15 -0
  146. package/hooks/ClueEnrichContextType.d.ts +113 -0
  147. package/hooks/ClueEnrichProps.d.ts +81 -0
  148. package/hooks/ClueFetcherContext.d.ts +35 -0
  149. package/hooks/ClueFetcherContext.js +88 -0
  150. package/hooks/ClueGroupContext.d.ts +14 -0
  151. package/hooks/ClueGroupContext.js +23 -0
  152. package/hooks/CluePopupContext.d.ts +24 -0
  153. package/hooks/CluePopupContext.js +12 -0
  154. package/hooks/ClueProvider.d.ts +9 -0
  155. package/hooks/ClueProvider.js +14 -0
  156. package/hooks/selectors.d.ts +10 -0
  157. package/hooks/selectors.js +24 -0
  158. package/hooks/useAnnotations.d.ts +24 -0
  159. package/hooks/useAnnotations.js +69 -0
  160. package/hooks/useClue.d.ts +4 -0
  161. package/hooks/useClue.js +8 -0
  162. package/hooks/useClueActions.d.ts +4 -0
  163. package/hooks/useClueActions.js +5 -0
  164. package/hooks/useClueConfig.d.ts +1 -0
  165. package/hooks/useClueConfig.js +8 -0
  166. package/hooks/useClueTypeConfig.d.ts +17 -0
  167. package/hooks/useClueTypeConfig.js +7 -0
  168. package/hooks/useComparator.d.ts +16 -0
  169. package/hooks/useComparator.js +1060 -0
  170. package/hooks/useErrors.d.ts +17 -0
  171. package/hooks/useErrors.js +35 -0
  172. package/hooks/useMyHighlights.d.ts +11 -0
  173. package/hooks/useMyHighlights.js +74 -0
  174. package/hooks/useMyLocalStorage.d.ts +16 -0
  175. package/hooks/useMyLocalStorage.js +80 -0
  176. package/iconify-CXMreGTg.js +1782 -0
  177. package/icons/Action.d.ts +9 -0
  178. package/icons/Action.js +90 -0
  179. package/icons/Assessment.d.ts +11 -0
  180. package/icons/Assessment.js +123 -0
  181. package/icons/Context.d.ts +12 -0
  182. package/icons/Context.js +83 -0
  183. package/icons/Opinion.d.ts +11 -0
  184. package/icons/Opinion.js +125 -0
  185. package/icons/iconMap.d.ts +7 -0
  186. package/icons/iconMap.js +10 -0
  187. package/identity-CPGTqrE4.js +6 -0
  188. package/index-BDVjGvMI.js +696 -0
  189. package/index-BDrtH5ec.js +465 -0
  190. package/index-C9lySIVX.js +1172 -0
  191. package/index-DJYqRcxJ.js +15750 -0
  192. package/index-Dn2NHyXg.js +17654 -0
  193. package/index.css +21 -0
  194. package/isEmpty-BQkZubqU.js +29 -0
  195. package/isNil-CIubwp4T.js +6 -0
  196. package/isObject-FTY-5JQX.js +7 -0
  197. package/isObjectLike-OAgjjZye.js +48 -0
  198. package/isSymbol-Xd2FsJyp.js +8 -0
  199. package/isUndefined-CE8h73dH.js +10 -0
  200. package/last-CUCl67Im.js +7 -0
  201. package/main.d.ts +42 -0
  202. package/main.js +70 -0
  203. package/package.json +40 -40
  204. package/public/manifest.json +16 -0
  205. package/public/robots.txt +3 -0
  206. package/public/svg/dark/clue-h.svg +52 -0
  207. package/public/svg/dark/clue-icon1-simple.svg +33 -0
  208. package/public/svg/dark/clue-icon1.svg +44 -0
  209. package/public/svg/dark/clue-icon2-simple.svg +26 -0
  210. package/public/svg/dark/clue-icon2.svg +37 -0
  211. package/public/svg/dark/clue-name.svg +14 -0
  212. package/public/svg/dark/clue-v.svg +52 -0
  213. package/public/svg/light/clue-h.svg +60 -0
  214. package/public/svg/light/clue-icon1-simple.svg +37 -0
  215. package/public/svg/light/clue-icon1.svg +48 -0
  216. package/public/svg/light/clue-icon2-simple.svg +30 -0
  217. package/public/svg/light/clue-icon2.svg +41 -0
  218. package/public/svg/light/clue-name.svg +14 -0
  219. package/public/svg/light/clue-v.svg +60 -0
  220. package/sortBy-B-UKp4GT.js +100 -0
  221. package/sumBy-MYkDPHZL.js +8 -0
  222. package/tabs-xGuUGsJd.js +254 -0
  223. package/text/Frequency.d.ts +9 -0
  224. package/text/Frequency.js +49 -0
  225. package/toFinite-CArjry_l.js +16 -0
  226. package/toNumber-DPxy1FBy.js +39 -0
  227. package/types/EnrichmentProps.d.ts +73 -0
  228. package/types/RunningActionData.d.ts +15 -0
  229. package/types/WithActionData.d.ts +9 -0
  230. package/types/action.d.ts +25 -0
  231. package/types/config.d.ts +16 -0
  232. package/types/fetcher.d.ts +60 -0
  233. package/types/graph.d.ts +101 -0
  234. package/types/lookup.d.ts +62 -0
  235. package/types/network.d.ts +9 -0
  236. package/useClueTypeConfig-D9ZSxa4F.js +3096 -0
  237. package/utils/chain.d.ts +14 -0
  238. package/utils/chain.js +106 -0
  239. package/utils/classificationParser.d.ts +195 -0
  240. package/utils/classificationParser.js +553 -0
  241. package/utils/constants.d.ts +26 -0
  242. package/utils/constants.js +36 -0
  243. package/utils/graph.d.ts +13 -0
  244. package/utils/graph.js +79 -0
  245. package/utils/hashUtil.d.ts +6 -0
  246. package/utils/hashUtil.js +11 -0
  247. package/utils/line.d.ts +28 -0
  248. package/utils/line.js +136 -0
  249. package/utils/loggerUtil.d.ts +6 -0
  250. package/utils/loggerUtil.js +8 -0
  251. package/utils/sessionStorage.d.ts +9 -0
  252. package/utils/sessionStorage.js +51 -0
  253. package/utils/utils.d.ts +13 -0
  254. package/utils/utils.js +11 -0
  255. package/utils/window.d.ts +3 -0
  256. package/utils/window.js +24 -0
  257. package/utils-CxIhC2xH.js +4182 -0
@@ -0,0 +1,11 @@
1
+ import { default as React } from 'react';
2
+
3
+ interface EnrichedChipProps {
4
+ classification: string;
5
+ }
6
+ declare const _default: React.NamedExoticComponent<EnrichedChipProps & import('@mui/material').ChipOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
7
+ ref?: React.Ref<HTMLDivElement>;
8
+ }, "disabled" | "icon" | "color" | "style" | "size" | "children" | "variant" | "classes" | "className" | "sx" | "label" | "tabIndex" | "onDelete" | "avatar" | "clickable" | "deleteIcon" | "skipFocusWhenDisabled"> & {
9
+ component?: React.ElementType;
10
+ }>;
11
+ export default _default;
@@ -0,0 +1,52 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Tooltip, Chip } from "@mui/material";
3
+ import useClueConfig from "../hooks/useClueConfig.js";
4
+ import { getParts, normalizedClassification } from "../utils/classificationParser.js";
5
+ import React__default, { useMemo, memo } from "react";
6
+ const THEME_TYPES = ["default", "primary", "secondary", "error", "info", "success", "warning"];
7
+ const ClassificationChip = React__default.memo(
8
+ ({ classification, ...otherProps }) => {
9
+ var _a, _b;
10
+ const { config } = useClueConfig();
11
+ const parts = useMemo(() => {
12
+ if (!config.c12nDef) {
13
+ return null;
14
+ }
15
+ return getParts(classification, config.c12nDef, "short", true);
16
+ }, [classification, config.c12nDef]);
17
+ const normalized = useMemo(() => {
18
+ if (!config.c12nDef || !parts) {
19
+ return classification;
20
+ }
21
+ return normalizedClassification(parts, config.c12nDef, "short", true);
22
+ }, [classification, config.c12nDef, parts]);
23
+ const chipProps = useMemo(() => {
24
+ var _a2, _b2, _c;
25
+ const definedColor = (_c = (_b2 = config.c12nDef) == null ? void 0 : _b2.levels_styles_map[(_a2 = config.c12nDef) == null ? void 0 : _a2.levels_map[parts.lvlIdx]]) == null ? void 0 : _c.color;
26
+ if (THEME_TYPES.includes(definedColor)) {
27
+ return { color: definedColor };
28
+ }
29
+ if (definedColor) {
30
+ return { sx: { color: definedColor } };
31
+ }
32
+ return { color: "default" };
33
+ }, [(_a = config.c12nDef) == null ? void 0 : _a.levels_map, (_b = config.c12nDef) == null ? void 0 : _b.levels_styles_map, parts.lvlIdx]);
34
+ return /* @__PURE__ */ jsx(Tooltip, { title: classification, children: /* @__PURE__ */ jsx(
35
+ Chip,
36
+ {
37
+ variant: otherProps.variant || "outlined",
38
+ label: normalized,
39
+ ...chipProps,
40
+ ...otherProps,
41
+ sx: [
42
+ ...Array.isArray(chipProps.sx) ? chipProps.sx : [chipProps.sx],
43
+ ...Array.isArray(otherProps.sx) ? otherProps.sx : [otherProps.sx]
44
+ ]
45
+ }
46
+ ) });
47
+ }
48
+ );
49
+ const ClassificationChip$1 = memo(ClassificationChip);
50
+ export {
51
+ ClassificationChip$1 as default
52
+ };
@@ -0,0 +1,8 @@
1
+ declare const CountBadge: import('react').ForwardRefExoticComponent<{
2
+ color?: "error" | "secondary" | "default" | "primary" | "info" | "success" | "warning";
3
+ count: number;
4
+ disabled?: boolean;
5
+ } & {
6
+ children?: import('react').ReactNode | undefined;
7
+ } & import('react').RefAttributes<HTMLElement>>;
8
+ export default CountBadge;
@@ -0,0 +1,34 @@
1
+ import { jsx } from "react/jsx-runtime";
2
+ import { Badge } from "@mui/material";
3
+ import { forwardRef, cloneElement, Children } from "react";
4
+ const CountBadge = forwardRef(({ children, color = "primary", count, disabled, ...props }, ref) => {
5
+ if (disabled) {
6
+ return cloneElement(Children.only(children), { ref, ...props });
7
+ }
8
+ return /* @__PURE__ */ jsx(
9
+ Badge,
10
+ {
11
+ ref,
12
+ ...props,
13
+ badgeContent: count < 100 ? count : "99+",
14
+ color,
15
+ sx: (theme) => ({
16
+ "& .MuiBadge-badge": {
17
+ backgroundColor: "transparent",
18
+ color: theme.palette[color].main,
19
+ fontWeight: "bold",
20
+ right: 0,
21
+ top: 0,
22
+ transform: `translateY(-25%) translateX(${Math.min(Math.ceil(Math.log10(count)), 3) * 10}%)`,
23
+ px: 0,
24
+ fontSize: ".85rem"
25
+ },
26
+ pr: 1.5
27
+ }),
28
+ children
29
+ }
30
+ );
31
+ });
32
+ export {
33
+ CountBadge as default
34
+ };
@@ -0,0 +1,14 @@
1
+ export interface EnrichedCardProps {
2
+ type: string;
3
+ value: string;
4
+ classification?: string;
5
+ contextIcon?: boolean;
6
+ counters?: boolean;
7
+ hideLoading?: boolean;
8
+ }
9
+ declare const _default: import('react').NamedExoticComponent<EnrichedCardProps & import('@mui/material').CardOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
10
+ ref?: import('react').Ref<HTMLDivElement>;
11
+ }, "style" | "square" | "children" | "variant" | "classes" | "className" | "sx" | "elevation" | "raised"> & {
12
+ component?: React.ElementType;
13
+ }>;
14
+ export default _default;
@@ -0,0 +1,162 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { I as Icon } from "../iconify-CXMreGTg.js";
3
+ import { useTheme, Card, CardHeader, Stack, CircularProgress, Divider, CardContent, Grid, Chip, Typography, Tooltip, Box } from "@mui/material";
4
+ import { ClueComponentContext } from "../hooks/ClueComponentContext.js";
5
+ import { useClueEnrichSelector } from "../hooks/selectors.js";
6
+ import useAnnotations from "../hooks/useAnnotations.js";
7
+ import useErrors from "../hooks/useErrors.js";
8
+ import AssessmentIcon from "../icons/Assessment.js";
9
+ import ContextIcon from "../icons/Context.js";
10
+ import OpinionIcon from "../icons/Opinion.js";
11
+ import { ICON_MAP } from "../icons/iconMap.js";
12
+ import FrequencyText from "../text/Frequency.js";
13
+ import { memo, useState, useMemo, useCallback } from "react";
14
+ import { u as useContextSelector } from "../index-BDVjGvMI.js";
15
+ import AnnotationEntry from "./AnnotationEntry.js";
16
+ import { u as uniq } from "../ClueEnrichContext-DXwLVp0M.js";
17
+ const EnrichedCard = ({
18
+ type,
19
+ value,
20
+ classification: _classification,
21
+ contextIcon = false,
22
+ counters = false,
23
+ hideLoading = false,
24
+ ...otherProps
25
+ }) => {
26
+ const theme = useTheme();
27
+ const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx.i18next);
28
+ const defaultClassification = useClueEnrichSelector((ctx) => ctx.defaultClassification);
29
+ const enrich = useClueEnrichSelector((state) => state.enrich);
30
+ const [filter, setFilter] = useState("all");
31
+ const classification = useMemo(
32
+ () => _classification ?? defaultClassification,
33
+ [_classification, defaultClassification]
34
+ );
35
+ const [annotations, loading] = useAnnotations(type, value, classification);
36
+ const errors = useErrors(value);
37
+ const options = useMemo(() => ["all", ...uniq(annotations.map((annotation) => annotation.type))], [annotations]);
38
+ const forceEnrich = useCallback(() => {
39
+ return enrich(type, value, {
40
+ classification,
41
+ timeout: 15,
42
+ force: true
43
+ });
44
+ }, [classification, enrich, type, value]);
45
+ return /* @__PURE__ */ jsxs(
46
+ Card,
47
+ {
48
+ sx: [
49
+ {
50
+ maxWidth: "900px"
51
+ },
52
+ ...Array.isArray(otherProps == null ? void 0 : otherProps.sx) ? otherProps == null ? void 0 : otherProps.sx : [otherProps == null ? void 0 : otherProps.sx]
53
+ ],
54
+ ...otherProps,
55
+ children: [
56
+ /* @__PURE__ */ jsx(
57
+ CardHeader,
58
+ {
59
+ title: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, alignItems: "center", children: [
60
+ /* @__PURE__ */ jsx(FrequencyText, { annotations, value, variant: "h6" }),
61
+ /* @__PURE__ */ jsx(
62
+ AssessmentIcon,
63
+ {
64
+ value: { type, value, classification },
65
+ annotations,
66
+ counters,
67
+ fontSize: "1em",
68
+ disableTooltip: true
69
+ }
70
+ ),
71
+ /* @__PURE__ */ jsx(
72
+ OpinionIcon,
73
+ {
74
+ value: { type, value, classification },
75
+ annotations,
76
+ counters,
77
+ fontSize: "1em",
78
+ disableTooltip: true
79
+ }
80
+ ),
81
+ /* @__PURE__ */ jsx(
82
+ ContextIcon,
83
+ {
84
+ value: { type, value, classification },
85
+ annotations,
86
+ counters,
87
+ showExtraIcon: contextIcon,
88
+ fontSize: "inherit",
89
+ disableTooltip: true
90
+ }
91
+ ),
92
+ loading && !hideLoading && /* @__PURE__ */ jsx(CircularProgress, { color: "primary", size: 18 })
93
+ ] })
94
+ }
95
+ ),
96
+ /* @__PURE__ */ jsx(Divider, { sx: { mx: 1 } }),
97
+ /* @__PURE__ */ jsxs(CardContent, { sx: { p: 1 }, children: [
98
+ /* @__PURE__ */ jsxs(Grid, { container: true, spacing: 0.5, sx: { mb: 1 }, children: [
99
+ options.map((opt, id) => (
100
+ // eslint-disable-next-line react/no-array-index-key
101
+ /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
102
+ Chip,
103
+ {
104
+ size: "small",
105
+ variant: opt === filter ? "filled" : "outlined",
106
+ icon: ICON_MAP[opt] && /* @__PURE__ */ jsx(Icon, { icon: ICON_MAP[opt] }),
107
+ label: /* @__PURE__ */ jsxs(Typography, { variant: "caption", textTransform: "capitalize", children: [
108
+ opt,
109
+ ":",
110
+ " ",
111
+ opt === "all" ? annotations.length : annotations.filter((annotation) => annotation.type === opt).length
112
+ ] }),
113
+ onClick: () => setFilter(opt)
114
+ }
115
+ ) }, id)
116
+ )),
117
+ (errors == null ? void 0 : errors.length) > 0 && /* @__PURE__ */ jsx(Grid, { item: true, children: /* @__PURE__ */ jsx(
118
+ Tooltip,
119
+ {
120
+ title: /* @__PURE__ */ jsx("div", { onClick: (e) => e.stopPropagation(), children: errors.map((err) => /* @__PURE__ */ jsxs("div", { children: [
121
+ /* @__PURE__ */ jsx("span", { style: { textTransform: "capitalize" }, children: err.source.replace(/-/g, " ") }),
122
+ ":",
123
+ " ",
124
+ err.message
125
+ ] }, err.source)) }),
126
+ children: /* @__PURE__ */ jsx(
127
+ Chip,
128
+ {
129
+ size: "small",
130
+ variant: "outlined",
131
+ icon: /* @__PURE__ */ jsx(
132
+ Icon,
133
+ {
134
+ icon: "material-symbols:timer-outline",
135
+ color: theme.palette.error.main,
136
+ style: { filter: "drop-shadow(0px 0px 1px rgb(0 0 0 / 0.4))" }
137
+ }
138
+ ),
139
+ label: /* @__PURE__ */ jsxs(Typography, { variant: "caption", textTransform: "capitalize", children: [
140
+ t("annotation.failed"),
141
+ ": ",
142
+ errors.length
143
+ ] }),
144
+ onClick: forceEnrich
145
+ }
146
+ )
147
+ }
148
+ ) })
149
+ ] }),
150
+ /* @__PURE__ */ jsx(Grid, { container: true, spacing: 1, alignItems: "stretch", children: annotations.map((annotation, id) => (
151
+ // eslint-disable-next-line react/no-array-index-key
152
+ /* @__PURE__ */ jsx(Grid, { item: true, xs: 6, minWidth: "300px", children: /* @__PURE__ */ jsx(Box, { sx: { border: `thin solid ${theme.palette.divider}`, p: 1, height: "100%" }, children: /* @__PURE__ */ jsx(AnnotationEntry, { annotation }) }) }, id)
153
+ )) })
154
+ ] })
155
+ ]
156
+ }
157
+ );
158
+ };
159
+ const EnrichedCard$1 = memo(EnrichedCard);
160
+ export {
161
+ EnrichedCard$1 as default
162
+ };
@@ -0,0 +1,9 @@
1
+ import { default as EnrichmentProps } from "../types/EnrichmentProps";
2
+ import { default as React } from 'react';
3
+
4
+ declare const _default: React.NamedExoticComponent<EnrichmentProps & import('@mui/material').ChipOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<React.DetailedHTMLProps<React.HTMLAttributes<HTMLDivElement>, HTMLDivElement>, "ref"> & {
5
+ ref?: React.Ref<HTMLDivElement>;
6
+ }, "disabled" | "icon" | "color" | "style" | "size" | "children" | "variant" | "classes" | "className" | "sx" | "label" | "tabIndex" | "onDelete" | "avatar" | "clickable" | "deleteIcon" | "skipFocusWhenDisabled"> & {
7
+ component?: React.ElementType;
8
+ }>;
9
+ export default _default;
@@ -0,0 +1,176 @@
1
+ import { jsx, jsxs } from "react/jsx-runtime";
2
+ import { Chip, Tooltip, Box, Stack, CircularProgress } from "@mui/material";
3
+ import Iconified from "./display/icons/Iconified.js";
4
+ import { ClueComponentContext } from "../hooks/ClueComponentContext.js";
5
+ import { ClueGroupContext } from "../hooks/ClueGroupContext.js";
6
+ import { C as CluePopupContext } from "../AnnotationPreview-BvNpZOP0.js";
7
+ import { useClueEnrichSelector } from "../hooks/selectors.js";
8
+ import useAnnotations from "../hooks/useAnnotations.js";
9
+ import ActionIcon from "../icons/Action.js";
10
+ import AssessmentIcon from "../icons/Assessment.js";
11
+ import ContextIcon from "../icons/Context.js";
12
+ import OpinionIcon from "../icons/Opinion.js";
13
+ import FrequencyText from "../text/Frequency.js";
14
+ import React__default, { useRef, useMemo, useCallback, useEffect, memo } from "react";
15
+ import { u as useContextSelector } from "../index-BDVjGvMI.js";
16
+ const EnrichedChip = React__default.memo(
17
+ ({
18
+ type: _type,
19
+ value,
20
+ classification: _classification,
21
+ contextIcon = false,
22
+ counters = false,
23
+ hideDetails = false,
24
+ hideLoading = false,
25
+ forceDetails = false,
26
+ setForceDetails = null,
27
+ useDetailsIcon = false,
28
+ skipEnrichment = false,
29
+ slotProps = {},
30
+ ...otherProps
31
+ }) => {
32
+ const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx.i18next);
33
+ const anchorRef = useRef();
34
+ const groupType = useContextSelector(ClueGroupContext, (ctx) => ctx == null ? void 0 : ctx.type);
35
+ const defaultClassification = useClueEnrichSelector((ctx) => ctx.defaultClassification);
36
+ const type = useMemo(() => _type ?? groupType, [_type, groupType]);
37
+ const classification = useMemo(
38
+ () => _classification ?? defaultClassification,
39
+ [_classification, defaultClassification]
40
+ );
41
+ if (!type) {
42
+ throw new Error("Type was not provided as a prop, and component is not used in a group context.");
43
+ }
44
+ const [annotations, loading] = useAnnotations(type, value, classification, { skipEnrichment });
45
+ const showInfo = useContextSelector(CluePopupContext, (ctx) => ctx.showInfo);
46
+ const closeInfo = useContextSelector(CluePopupContext, (ctx) => ctx.closeInfo);
47
+ const buildOptions = useCallback(() => {
48
+ const options = {};
49
+ if (setForceDetails) {
50
+ options.onClose = () => setForceDetails(false);
51
+ }
52
+ if (slotProps == null ? void 0 : slotProps.popover) {
53
+ options.popoverProps = slotProps.popover;
54
+ }
55
+ return options;
56
+ }, [setForceDetails, slotProps.popover]);
57
+ const clicker = useMemo(
58
+ () => !loading ? !hideDetails || useDetailsIcon ? (e) => {
59
+ var _a;
60
+ showInfo("details", anchorRef.current, { type, value, classification }, buildOptions());
61
+ (_a = otherProps.onClick) == null ? void 0 : _a.call(otherProps, e);
62
+ e.stopPropagation();
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
+ ),
71
+ // eslint-disable-next-line react-hooks/exhaustive-deps
72
+ [loading, hideDetails, useDetailsIcon, otherProps, type, value, classification]
73
+ );
74
+ useEffect(() => {
75
+ if (forceDetails) {
76
+ showInfo("details", anchorRef.current, { type, value, classification }, buildOptions());
77
+ } else {
78
+ closeInfo("details", {
79
+ type,
80
+ value,
81
+ classification
82
+ });
83
+ }
84
+ }, [classification, forceDetails, type, value]);
85
+ return /* @__PURE__ */ jsx(
86
+ Chip,
87
+ {
88
+ ...otherProps,
89
+ ref: anchorRef,
90
+ variant: otherProps.variant || "outlined",
91
+ sx: {
92
+ height: otherProps.size !== "small" ? "40px" : "unset",
93
+ "& .MuiChip-label": { overflow: "visible" },
94
+ ...otherProps.sx ?? {}
95
+ },
96
+ label: /* @__PURE__ */ jsxs(Stack, { direction: "row", spacing: 1, alignItems: "center", children: [
97
+ /* @__PURE__ */ jsx(
98
+ AssessmentIcon,
99
+ {
100
+ ubiquitous: true,
101
+ value: { type, value, classification },
102
+ annotations,
103
+ counters,
104
+ disableTooltip: forceDetails,
105
+ style: { flexShrink: 0 }
106
+ }
107
+ ),
108
+ /* @__PURE__ */ jsx(
109
+ OpinionIcon,
110
+ {
111
+ ubiquitous: true,
112
+ value: { type, value, classification },
113
+ annotations,
114
+ counters,
115
+ disableTooltip: forceDetails,
116
+ style: { flexShrink: 0 }
117
+ }
118
+ ),
119
+ /* @__PURE__ */ jsx(
120
+ ContextIcon,
121
+ {
122
+ ubiquitous: true,
123
+ value: { type, value, classification },
124
+ annotations,
125
+ counters,
126
+ showExtraIcon: contextIcon,
127
+ disableTooltip: forceDetails,
128
+ style: { flexShrink: 0 }
129
+ }
130
+ ),
131
+ otherProps.label ?? /* @__PURE__ */ jsx(FrequencyText, { fontSize: "inherit", annotations, value }),
132
+ /* @__PURE__ */ jsx(
133
+ AssessmentIcon,
134
+ {
135
+ value: { type, value, classification },
136
+ annotations,
137
+ counters,
138
+ disableTooltip: forceDetails,
139
+ style: { flexShrink: 0 }
140
+ }
141
+ ),
142
+ /* @__PURE__ */ jsx(
143
+ OpinionIcon,
144
+ {
145
+ value: { type, value, classification },
146
+ annotations,
147
+ counters,
148
+ disableTooltip: forceDetails,
149
+ style: { flexShrink: 0 }
150
+ }
151
+ ),
152
+ /* @__PURE__ */ jsx(
153
+ ContextIcon,
154
+ {
155
+ value: { type, value, classification },
156
+ annotations,
157
+ counters,
158
+ showExtraIcon: contextIcon,
159
+ disableTooltip: forceDetails,
160
+ style: { flexShrink: 0 }
161
+ }
162
+ ),
163
+ /* @__PURE__ */ jsx(ActionIcon, { counters, value: { type, value, classification }, disableTooltip: forceDetails }),
164
+ loading && !hideLoading && /* @__PURE__ */ jsx(CircularProgress, { color: "primary", size: 16 })
165
+ ] }),
166
+ onClick: !useDetailsIcon ? clicker : void 0,
167
+ onDelete: !loading && useDetailsIcon ? clicker : void 0,
168
+ deleteIcon: useDetailsIcon ? /* @__PURE__ */ jsx(Tooltip, { title: t("details.open"), children: /* @__PURE__ */ jsx(Box, { component: "span", sx: { pr: 1 }, children: /* @__PURE__ */ jsx(Iconified, { icon: "ic:outline-info" }) }) }) : null
169
+ }
170
+ );
171
+ }
172
+ );
173
+ const EnrichedChip$1 = memo(EnrichedChip);
174
+ export {
175
+ EnrichedChip$1 as default
176
+ };
@@ -0,0 +1,16 @@
1
+ import { PopoverProps, PopperProps, StackProps } from '@mui/material';
2
+ import { default as EnrichmentProps } from "../types/EnrichmentProps";
3
+
4
+ export interface EnrichedTypographyProps extends EnrichmentProps {
5
+ slotProps?: {
6
+ stack?: StackProps;
7
+ popper?: PopperProps;
8
+ popover?: Omit<PopoverProps, 'open'>;
9
+ };
10
+ }
11
+ declare const _default: import('react').NamedExoticComponent<EnrichedTypographyProps & import('@mui/material').TypographyOwnProps & import('@mui/material/OverridableComponent').CommonProps & Omit<Omit<import('react').DetailedHTMLProps<import('react').HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>, "ref"> & {
12
+ ref?: import('react').Ref<HTMLSpanElement>;
13
+ }, "fontSize" | "color" | "style" | "left" | "right" | "bottom" | "top" | "flex" | "position" | "border" | "padding" | "children" | "variant" | "classes" | "className" | "margin" | "sx" | "p" | "boxShadow" | "fontWeight" | "zIndex" | "alignContent" | "alignItems" | "alignSelf" | "boxSizing" | "columnGap" | "display" | "flexBasis" | "flexDirection" | "flexGrow" | "flexShrink" | "flexWrap" | "fontFamily" | "fontStyle" | "gridAutoColumns" | "gridAutoFlow" | "gridAutoRows" | "gridTemplateAreas" | "gridTemplateColumns" | "gridTemplateRows" | "height" | "justifyContent" | "justifyItems" | "justifySelf" | "letterSpacing" | "lineHeight" | "marginBlockEnd" | "marginBlockStart" | "marginBottom" | "marginInlineEnd" | "marginInlineStart" | "marginLeft" | "marginRight" | "marginTop" | "maxHeight" | "maxWidth" | "minHeight" | "minWidth" | "order" | "paddingBlockEnd" | "paddingBlockStart" | "paddingBottom" | "paddingInlineEnd" | "paddingInlineStart" | "paddingLeft" | "paddingRight" | "paddingTop" | "rowGap" | "textAlign" | "textOverflow" | "textTransform" | "visibility" | "whiteSpace" | "width" | "borderBottom" | "borderColor" | "borderLeft" | "borderRadius" | "borderRight" | "borderTop" | "gap" | "gridArea" | "gridColumn" | "gridRow" | "marginBlock" | "marginInline" | "overflow" | "paddingBlock" | "paddingInline" | "bgcolor" | "m" | "mt" | "mr" | "mb" | "ml" | "mx" | "marginX" | "my" | "marginY" | "pt" | "pr" | "pb" | "pl" | "px" | "paddingX" | "py" | "paddingY" | "typography" | "displayPrint" | "align" | "noWrap" | "paragraph" | "gutterBottom" | "variantMapping"> & {
14
+ component?: React.ElementType;
15
+ }>;
16
+ export default _default;
@@ -0,0 +1,178 @@
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import { useTheme, Stack, CircularProgress, Tooltip, IconButton } from "@mui/material";
3
+ import Iconified from "./display/icons/Iconified.js";
4
+ import { ClueComponentContext } from "../hooks/ClueComponentContext.js";
5
+ import { ClueGroupContext } from "../hooks/ClueGroupContext.js";
6
+ import { C as CluePopupContext } from "../AnnotationPreview-BvNpZOP0.js";
7
+ import { useClueEnrichSelector } from "../hooks/selectors.js";
8
+ import useAnnotations from "../hooks/useAnnotations.js";
9
+ import ActionIcon from "../icons/Action.js";
10
+ import AssessmentIcon from "../icons/Assessment.js";
11
+ import ContextIcon from "../icons/Context.js";
12
+ import OpinionIcon from "../icons/Opinion.js";
13
+ import FrequencyText from "../text/Frequency.js";
14
+ import { memo, useRef, useMemo, useCallback, useEffect } from "react";
15
+ import { u as useContextSelector } from "../index-BDVjGvMI.js";
16
+ const EnrichedTypography = ({
17
+ type: _type,
18
+ value,
19
+ classification: _classification,
20
+ contextIcon = false,
21
+ counters = false,
22
+ hideDetails = false,
23
+ hideLoading = false,
24
+ forceDetails = false,
25
+ setForceDetails = null,
26
+ useDetailsIcon = false,
27
+ skipEnrichment = false,
28
+ slotProps = {},
29
+ children,
30
+ ...otherProps
31
+ }) => {
32
+ var _a, _b, _c;
33
+ const { t } = useContextSelector(ClueComponentContext, (ctx) => ctx.i18next);
34
+ const theme = useTheme();
35
+ const anchorRef = useRef();
36
+ const groupType = useContextSelector(ClueGroupContext, (ctx) => ctx == null ? void 0 : ctx.type);
37
+ const defaultClassification = useClueEnrichSelector((ctx) => ctx.defaultClassification);
38
+ const type = useMemo(() => _type ?? groupType, [_type, groupType]);
39
+ const classification = useMemo(
40
+ () => _classification ?? defaultClassification,
41
+ [_classification, defaultClassification]
42
+ );
43
+ if (!type) {
44
+ throw new Error("Type was not provided as a prop, and component is not used in a group context.");
45
+ }
46
+ const [annotations, loading] = useAnnotations(type, value, classification, { skipEnrichment });
47
+ const showInfo = useContextSelector(CluePopupContext, (state) => state.showInfo);
48
+ const closeInfo = useContextSelector(CluePopupContext, (state) => state.closeInfo);
49
+ const buildOptions = useCallback(() => {
50
+ const options = {};
51
+ if (setForceDetails) {
52
+ options.onClose = () => setForceDetails(false);
53
+ }
54
+ if (slotProps == null ? void 0 : slotProps.popover) {
55
+ options.popoverProps = slotProps.popover;
56
+ }
57
+ return options;
58
+ }, [setForceDetails, slotProps.popover]);
59
+ const clicker = useMemo(
60
+ () => !loading ? !hideDetails || useDetailsIcon ? (e) => {
61
+ var _a2;
62
+ showInfo("details", anchorRef.current, { type, value, classification }, buildOptions());
63
+ (_a2 = otherProps.onClick) == null ? void 0 : _a2.call(otherProps, e);
64
+ e.stopPropagation();
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
+ ),
73
+ // eslint-disable-next-line react-hooks/exhaustive-deps
74
+ [loading, hideDetails, useDetailsIcon, otherProps, type, value, classification]
75
+ );
76
+ useEffect(() => {
77
+ if (forceDetails) {
78
+ showInfo("details", anchorRef.current, { type, value, classification }, buildOptions());
79
+ } else {
80
+ closeInfo("details", {
81
+ type,
82
+ value,
83
+ classification
84
+ });
85
+ }
86
+ }, [classification, forceDetails, type, value]);
87
+ return /* @__PURE__ */ jsxs(
88
+ Stack,
89
+ {
90
+ ref: anchorRef,
91
+ direction: "row",
92
+ spacing: 1,
93
+ alignItems: "center",
94
+ ...slotProps == null ? void 0 : slotProps.stack,
95
+ sx: [
96
+ {
97
+ cursor: !loading && !hideDetails ? "pointer" : "inherit",
98
+ borderBottom: "1px solid transparent",
99
+ transition: theme.transitions.create(["border-bottom-color"]),
100
+ "&:hover": {
101
+ borderBottomColor: !loading && (!hideDetails ? theme.palette.primary.light : null)
102
+ }
103
+ },
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]
105
+ ],
106
+ onClick: !useDetailsIcon ? clicker : void 0,
107
+ children: [
108
+ /* @__PURE__ */ jsx(
109
+ AssessmentIcon,
110
+ {
111
+ ubiquitous: true,
112
+ value: { type, value, classification },
113
+ annotations,
114
+ counters,
115
+ disableTooltip: forceDetails
116
+ }
117
+ ),
118
+ /* @__PURE__ */ jsx(
119
+ OpinionIcon,
120
+ {
121
+ ubiquitous: true,
122
+ value: { type, value, classification },
123
+ annotations,
124
+ counters,
125
+ disableTooltip: forceDetails
126
+ }
127
+ ),
128
+ /* @__PURE__ */ jsx(
129
+ ContextIcon,
130
+ {
131
+ ubiquitous: true,
132
+ value: { type, value, classification },
133
+ annotations,
134
+ counters,
135
+ showExtraIcon: contextIcon,
136
+ disableTooltip: forceDetails
137
+ }
138
+ ),
139
+ children ?? /* @__PURE__ */ jsx(FrequencyText, { id: `enriched-${type}-value`, ...otherProps, annotations, value }),
140
+ /* @__PURE__ */ jsx(
141
+ AssessmentIcon,
142
+ {
143
+ value: { type, value, classification },
144
+ annotations,
145
+ counters,
146
+ disableTooltip: forceDetails
147
+ }
148
+ ),
149
+ /* @__PURE__ */ jsx(
150
+ OpinionIcon,
151
+ {
152
+ value: { type, value, classification },
153
+ annotations,
154
+ counters,
155
+ disableTooltip: forceDetails
156
+ }
157
+ ),
158
+ /* @__PURE__ */ jsx(
159
+ ContextIcon,
160
+ {
161
+ value: { type, value, classification },
162
+ annotations,
163
+ counters,
164
+ showExtraIcon: contextIcon,
165
+ disableTooltip: forceDetails
166
+ }
167
+ ),
168
+ /* @__PURE__ */ jsx(ActionIcon, { counters, value: { type, value, classification }, disableTooltip: forceDetails }),
169
+ loading && !hideLoading && /* @__PURE__ */ jsx(CircularProgress, { color: "primary", size: 18 }),
170
+ !loading && useDetailsIcon && /* @__PURE__ */ jsx(Tooltip, { title: t("details.open"), children: /* @__PURE__ */ jsx(IconButton, { size: "small", onClick: clicker, sx: { color: theme.palette.action.disabled }, children: /* @__PURE__ */ jsx(Iconified, { icon: "ic:outline-info" }) }) })
171
+ ]
172
+ }
173
+ );
174
+ };
175
+ const EnrichedTypography$1 = memo(EnrichedTypography);
176
+ export {
177
+ EnrichedTypography$1 as default
178
+ };