@cccsaurora/clue-ui 1.2.3-dev.266 → 1.2.3-patch.269

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 (186) hide show
  1. package/ActionForm-Ch0DGVGr.js +4462 -0
  2. package/AnnotationDetails-C8E_Xvaf.js +160 -0
  3. package/AnnotationPreview-CLCms-Fm.js +140 -0
  4. package/ClueEnrichContext-KqRuuWNS.js +418 -0
  5. package/FlexOne-BXWFOd1T.js +6 -0
  6. package/_MapCache-BiTi0iqu.js +180 -0
  7. package/_Uint8Array-BQNOM9Rr.js +101 -0
  8. package/_baseAssignValue-CNMLQZco.js +20 -0
  9. package/_baseClone-BnT-6pyM.js +207 -0
  10. package/_baseExtremum-Ca2EHgy2.js +16 -0
  11. package/_baseFlatten-Bfr_Molw.js +72 -0
  12. package/_baseGet-DSZygzyq.js +79 -0
  13. package/_baseIsEqual-VgvaAFZG.js +147 -0
  14. package/_baseIteratee-Dbfsw5z8.js +95 -0
  15. package/_baseSlice-M5RKzt1A.js +10 -0
  16. package/_baseSum-wEbgNeUs.js +10 -0
  17. package/_baseUniq-BJcj69PL.js +79 -0
  18. package/_commonjsHelpers-DaMA6jEr.js +8 -0
  19. package/_createAggregator-k3TuAnxT.js +53 -0
  20. package/_getPrototype-Cr1Mk7BC.js +5 -0
  21. package/_getTag-CK2Sffaq.js +90 -0
  22. package/_isIterateeCall-DkJP7Rbx.js +13 -0
  23. package/_setToArray-C7yMOeww.js +29 -0
  24. package/cloneDeep-CF8TtLHr.js +8 -0
  25. package/components/AnnotationBody.js +35 -49
  26. package/components/AnnotationDetailPopover.js +30 -36
  27. package/components/AnnotationDetails.js +7 -7
  28. package/components/AnnotationEntry.js +35 -35
  29. package/components/AnnotationPreview.js +5 -5
  30. package/components/ClassificationChip.js +23 -44
  31. package/components/CountBadge.js +26 -31
  32. package/components/EnrichedCard.js +97 -110
  33. package/components/EnrichedChip.js +105 -130
  34. package/components/EnrichedTypography.js +107 -133
  35. package/components/ErrorBoundary.js +24 -28
  36. package/components/RetryFailedEnrichments.js +9 -10
  37. package/components/SourcePicker.js +49 -57
  38. package/components/actions/ActionForm.js +4 -4
  39. package/components/actions/ExecutePopover.js +59 -75
  40. package/components/actions/ResultModal.js +4 -4
  41. package/components/actions/form/schemaAdapter.js +23 -39
  42. package/components/actions/formats/FileResult.js +59 -86
  43. package/components/actions/formats/index.js +10 -21
  44. package/components/display/graph/ExpandMoreButton.js +10 -10
  45. package/components/display/graph/elements/NodeCard.js +91 -111
  46. package/components/display/graph/elements/NodeTag.js +13 -15
  47. package/components/display/graph/index.js +202 -261
  48. package/components/display/graph/visualizations/Leaf.js +69 -88
  49. package/components/display/graph/visualizations/cloud/index.js +81 -98
  50. package/components/display/graph/visualizations/icons/BaseIcon.js +21 -26
  51. package/components/display/graph/visualizations/icons/BugIcon.js +12 -12
  52. package/components/display/graph/visualizations/icons/HostIcon.js +12 -12
  53. package/components/display/graph/visualizations/icons/NetworkIcon.js +12 -12
  54. package/components/display/graph/visualizations/icons/ProcessIcon.js +12 -12
  55. package/components/display/graph/visualizations/icons/TargetIcon.js +13 -13
  56. package/components/display/graph/visualizations/icons/index.js +13 -14
  57. package/components/display/graph/visualizations/panels/NodePanel.js +8 -10
  58. package/components/display/graph/visualizations/tree/BundleLine.js +81 -108
  59. package/components/display/graph/visualizations/tree/Triangle.js +13 -13
  60. package/components/display/graph/visualizations/tree/index.js +306 -408
  61. package/components/display/icons/Iconified.js +12 -27
  62. package/components/display/json/index.js +4 -4
  63. package/components/display/markdown/index.js +5770 -8678
  64. package/components/enrichment/EnrichPopover.js +46 -54
  65. package/components/fetchers/Fetcher.js +119 -158
  66. package/components/fetchers/PreviewModal.js +17 -20
  67. package/components/fetchers/StatusChip.js +17 -21
  68. package/components/group/Entry.js +11 -13
  69. package/components/group/Group.js +10 -13
  70. package/components/group/GroupControl.js +65 -76
  71. package/components/stats/QueryStatus.js +33 -43
  72. package/countBy-CdYegFSu.js +8 -0
  73. package/data/event.js +4 -6
  74. package/database/index.js +2 -2
  75. package/debounce-DryYcbJ4.js +56 -0
  76. package/get-CH7kz5Ix.js +8 -0
  77. package/groupBy-br8xmD2R.js +8 -0
  78. package/hooks/ClueActionContext.js +6 -6
  79. package/hooks/ClueComponentContext.js +23 -29
  80. package/hooks/ClueConfigProvider.js +12 -14
  81. package/hooks/ClueDatabaseContext.js +13 -19
  82. package/hooks/ClueEnrichContext.js +8 -8
  83. package/hooks/ClueFetcherContext.js +56 -83
  84. package/hooks/ClueGroupContext.js +14 -17
  85. package/hooks/CluePopupContext.js +5 -5
  86. package/hooks/ClueProvider.js +10 -12
  87. package/hooks/selectors.js +7 -7
  88. package/hooks/useActionResult.d.ts +1 -0
  89. package/hooks/useActionResult.js +2 -2
  90. package/hooks/useAnnotations.js +31 -47
  91. package/hooks/useClue.js +4 -6
  92. package/hooks/useClueActions.js +3 -3
  93. package/hooks/useClueConfig.js +4 -6
  94. package/hooks/useClueTypeConfig.js +3 -3
  95. package/hooks/useComparator.js +435 -722
  96. package/hooks/useErrors.js +18 -22
  97. package/hooks/useFetcherResult.d.ts +1 -0
  98. package/hooks/useFetcherResult.js +24 -33
  99. package/hooks/useMyHighlights.js +36 -66
  100. package/hooks/useMyLocalStorage.js +37 -66
  101. package/iconify-BBckr5AQ.js +1263 -0
  102. package/icons/Action.js +49 -66
  103. package/icons/Assessment.js +69 -85
  104. package/icons/Context.js +63 -77
  105. package/icons/Opinion.js +60 -76
  106. package/icons/iconMap.js +2 -2
  107. package/identity-ByMq8VxU.js +6 -0
  108. package/index-BHAe_V9n.js +12768 -0
  109. package/index-BK-zfYhR.js +358 -0
  110. package/index-CA5CUNZO.js +975 -0
  111. package/index-Dj5C04IX.js +568 -0
  112. package/index-p5_wX7q1.js +11729 -0
  113. package/isNil-CjWwlQS3.js +6 -0
  114. package/isObject-B53jY8Qg.js +7 -0
  115. package/isObjectLike-BatpeCIi.js +29 -0
  116. package/isSymbol-C3_SC0Qp.js +8 -0
  117. package/last-7CdUxN0r.js +7 -0
  118. package/main.js +60 -60
  119. package/maxBy-Bc0dYHcO.js +8 -0
  120. package/package.json +1 -1
  121. package/sortBy-DY2JBf9n.js +75 -0
  122. package/sumBy-DuMASLPd.js +8 -0
  123. package/text/Frequency.js +23 -42
  124. package/toFinite-BMy6GObD.js +14 -0
  125. package/toNumber-YVhnnJv4.js +31 -0
  126. package/types/WithActionData.d.ts +2 -1
  127. package/useClueTypeConfig-Ct9Ygter.js +2292 -0
  128. package/utils/chain.js +65 -92
  129. package/utils/classificationParser.js +256 -519
  130. package/utils/constants.js +10 -35
  131. package/utils/graph.js +45 -72
  132. package/utils/hashUtil.js +7 -7
  133. package/utils/line.js +81 -131
  134. package/utils/loggerUtil.js +3 -5
  135. package/utils/sessionStorage.js +27 -41
  136. package/utils/time.js +423 -423
  137. package/utils/utils.js +9 -9
  138. package/utils/window.js +10 -21
  139. package/utils-DmwSUrum.js +129 -0
  140. package/ActionForm-uDp92tN2.js +0 -5941
  141. package/AnnotationDetails-DGYfOiWm.js +0 -175
  142. package/AnnotationPreview-bHObsb3P.js +0 -188
  143. package/ClueEnrichContext-CJEJxrgs.js +0 -541
  144. package/FlexOne-BSYAhhtG.js +0 -9
  145. package/_MapCache-WmuDdwuH.js +0 -222
  146. package/_Uint8Array-B7JqpgFX.js +0 -128
  147. package/_baseAssignValue-CGTuELqU.js +0 -25
  148. package/_baseClone-CkNrTyhm.js +0 -283
  149. package/_baseExtremum-kob8QXyt.js +0 -18
  150. package/_baseFlatten-jIR_sN_-.js +0 -92
  151. package/_baseGet-Bx3A4Qfp.js +0 -108
  152. package/_baseIsEqual-C5OTWzTk.js +0 -208
  153. package/_baseIteratee-avi7MX2o.js +0 -126
  154. package/_baseSlice-GAv_YFTT.js +0 -20
  155. package/_baseSum-D0WC1dN0.js +0 -13
  156. package/_baseUniq-BI9GIHMF.js +0 -115
  157. package/_commonjsHelpers-DWwsNxpa.js +0 -8
  158. package/_createAggregator-QD8MzKwe.js +0 -63
  159. package/_getPrototype-CU0j_POw.js +0 -5
  160. package/_getTag-Ckxxfr88.js +0 -126
  161. package/_isIterateeCall-Ds3sw2SF.js +0 -17
  162. package/_setToArray-CaPKQhcz.js +0 -33
  163. package/cloneDeep-DJrLSw8W.js +0 -8
  164. package/countBy-c6S3dvSW.js +0 -14
  165. package/debounce-bV0h5FC5.js +0 -92
  166. package/get-DSsNkRQs.js +0 -8
  167. package/groupBy-xqz-n0Vd.js +0 -14
  168. package/iconify-CXMreGTg.js +0 -1782
  169. package/identity-CPGTqrE4.js +0 -6
  170. package/index-AMfoEg_6.js +0 -696
  171. package/index-B6C2a_Lg.js +0 -1172
  172. package/index-C12gPw2W.js +0 -17698
  173. package/index-DCKkHTvx.js +0 -15750
  174. package/index-JcKyZeoY.js +0 -465
  175. package/isNil-CIubwp4T.js +0 -6
  176. package/isObject-FTY-5JQX.js +0 -7
  177. package/isObjectLike-OAgjjZye.js +0 -48
  178. package/isSymbol-Xd2FsJyp.js +0 -8
  179. package/last-CUCl67Im.js +0 -7
  180. package/maxBy-IKHzFrCS.js +0 -8
  181. package/sortBy-DfSj8IoJ.js +0 -96
  182. package/sumBy-D-hb_NY-.js +0 -8
  183. package/toFinite-Bc55msYj.js +0 -16
  184. package/toNumber-DPxy1FBy.js +0 -39
  185. package/useClueTypeConfig-Z1LFp01b.js +0 -3289
  186. package/utils-HmNPuoDB.js +0 -199
@@ -1,35 +1,31 @@
1
- import { useContext, useState, useEffect } from "react";
2
- import { ClueDatabaseContext } from "./ClueDatabaseContext.js";
3
- import { b as useClueEnrichSelector } from "../ActionForm-uDp92tN2.js";
4
- const useErrors = (value) => {
5
- const database = useContext(ClueDatabaseContext);
6
- const ready = useClueEnrichSelector((ctx) => ctx.ready);
7
- const [errors, setErrors] = useState([]);
8
- useEffect(() => {
9
- if (!ready || !value || !(database == null ? void 0 : database.selectors) || database.selectors.closed) {
1
+ import { useContext as a, useState as i, useEffect as l } from "react";
2
+ import { ClueDatabaseContext as f } from "./ClueDatabaseContext.js";
3
+ import { b as m } from "../ActionForm-Ch0DGVGr.js";
4
+ const C = (r) => {
5
+ const e = a(f), o = m((s) => s.ready), [n, u] = i([]);
6
+ return l(() => {
7
+ if (!o || !r || !(e != null && e.selectors) || e.selectors.closed)
10
8
  return;
11
- }
12
- const observable = database.selectors.find({ selector: { value, error: { $exists: true } } }).$.subscribe(
13
- (records) => (
9
+ const s = e.selectors.find({ selector: { value: r, error: { $exists: !0 } } }).$.subscribe(
10
+ (t) => (
14
11
  // Transform database records into simplified error objects
15
- setErrors(
16
- records.map((record) => ({
17
- source: record.source,
18
- message: record.error
12
+ u(
13
+ t.map((c) => ({
14
+ source: c.source,
15
+ message: c.error
19
16
  }))
20
17
  )
21
18
  )
22
19
  );
23
20
  return () => {
24
21
  try {
25
- observable.unsubscribe();
26
- } catch (e) {
27
- console.warn(e);
22
+ s.unsubscribe();
23
+ } catch (t) {
24
+ console.warn(t);
28
25
  }
29
26
  };
30
- }, [database, ready, value]);
31
- return errors;
27
+ }, [e, o, r]), n;
32
28
  };
33
29
  export {
34
- useErrors as default
30
+ C as default
35
31
  };
@@ -11,4 +11,5 @@ export declare const useActionResult: (resultWithData: WithActionData<ActionResu
11
11
  task_id?: string;
12
12
  actionId: string;
13
13
  action: import("../types/action").ActionDefinition;
14
+ onComplete?: (result: WithActionData<ActionResult>) => void;
14
15
  };
@@ -1,40 +1,31 @@
1
- import { useState, useRef, useMemo, useEffect } from "react";
2
- import { u as useClueActions } from "../ActionForm-uDp92tN2.js";
3
- const useActionResult = (resultWithData, interval = 2e3) => {
4
- const [result, setResult] = useState(resultWithData);
5
- const timeoutRef = useRef(null);
6
- const { getActionStatus } = useClueActions();
7
- const taskId = useMemo(() => resultWithData == null ? void 0 : resultWithData.task_id, [resultWithData == null ? void 0 : resultWithData.task_id]);
8
- const actionId = useMemo(() => resultWithData == null ? void 0 : resultWithData.actionId, [resultWithData == null ? void 0 : resultWithData.actionId]);
9
- useEffect(() => {
10
- if ((resultWithData == null ? void 0 : resultWithData.outcome) !== "pending" || !taskId) return;
11
- let cancelled = false;
12
- const poll = async () => {
13
- const res = await getActionStatus(actionId, taskId);
14
- if (!res) {
15
- setResult({ outcome: "failure", done: true });
16
- } else if (res.outcome === "success" || res.outcome === "failure") {
17
- setResult({ ...res, done: true });
18
- } else {
19
- if (cancelled) return;
20
- setResult({ ...res });
21
- timeoutRef.current = setTimeout(poll, interval);
1
+ import { useState as S, useRef as T, useMemo as d, useEffect as g } from "react";
2
+ import { u as _ } from "../ActionForm-Ch0DGVGr.js";
3
+ const y = (o, p = 2e3) => {
4
+ const [e, n] = S(o), f = T(null), { getActionStatus: I } = _(), m = d(() => o == null ? void 0 : o.task_id, [o == null ? void 0 : o.task_id]), R = d(() => o == null ? void 0 : o.actionId, [o == null ? void 0 : o.actionId]);
5
+ return g(() => {
6
+ if ((o == null ? void 0 : o.outcome) !== "pending" || !m) return;
7
+ let k = !1;
8
+ const A = async () => {
9
+ const c = await I(R, m);
10
+ if (!c)
11
+ n({ outcome: "failure", done: !0 });
12
+ else if (c.outcome === "success" || c.outcome === "failure")
13
+ n({ ...c, done: !0 });
14
+ else {
15
+ if (k) return;
16
+ n({ ...c }), f.current = setTimeout(A, p);
22
17
  }
23
18
  };
24
- poll();
25
- return () => {
26
- cancelled = true;
27
- if (timeoutRef.current) clearTimeout(timeoutRef.current);
19
+ return A(), () => {
20
+ k = !0, f.current && clearTimeout(f.current);
28
21
  };
29
- }, [actionId, getActionStatus, interval, resultWithData == null ? void 0 : resultWithData.outcome, taskId]);
30
- useEffect(() => {
31
- setResult(resultWithData);
32
- }, [resultWithData]);
33
- return useMemo(
34
- () => resultWithData || result ? { ...resultWithData, ...result } : void 0,
35
- [resultWithData, result]
22
+ }, [R, I, p, o == null ? void 0 : o.outcome, m]), g(() => {
23
+ n(o);
24
+ }, [o]), d(
25
+ () => o || e ? { ...o, ...e } : void 0,
26
+ [o, e]
36
27
  );
37
28
  };
38
29
  export {
39
- useActionResult
30
+ y as useActionResult
40
31
  };
@@ -1,74 +1,44 @@
1
- import { getSubGraphNodeSet } from "../utils/graph.js";
2
- import { safeAddEventListener } from "../utils/window.js";
3
- import { useMemo, useState, useCallback, useEffect } from "react";
4
- const useMyHighlights = (graph, onNodeSelectionChanged) => {
5
- const data = useMemo(() => graph == null ? void 0 : graph.data, [graph]);
6
- const [hoveredNode, setHoveredNode] = useState();
7
- const [highlightedNodes, setHighlightedNodes] = useState(/* @__PURE__ */ new Set());
8
- const [highlightedPath, setHighlightedPath] = useState(/* @__PURE__ */ new Set());
9
- const [ctrlKeyDown, setCtrlKeyDown] = useState();
10
- const onKeyPressed = useCallback((ev) => {
11
- setCtrlKeyDown(ev.ctrlKey);
1
+ import { getSubGraphNodeSet as H } from "../utils/graph.js";
2
+ import { safeAddEventListener as S } from "../utils/window.js";
3
+ import { useMemo as P, useState as h, useCallback as i, useEffect as w } from "react";
4
+ const z = (n, c) => {
5
+ const u = P(() => n == null ? void 0 : n.data, [n]), [o, f] = h(), [t, g] = h(/* @__PURE__ */ new Set()), [d, p] = h(/* @__PURE__ */ new Set()), [y, a] = h(), K = i((e) => {
6
+ a(e.ctrlKey);
7
+ }, []), m = i((e) => {
8
+ a(e.ctrlKey);
12
9
  }, []);
13
- const onKeyUnpressed = useCallback((ev) => {
14
- setCtrlKeyDown(ev.ctrlKey);
15
- }, []);
16
- useEffect(() => {
17
- return safeAddEventListener("keydown", onKeyPressed);
18
- }, [onKeyPressed]);
19
- useEffect(() => {
20
- return safeAddEventListener("keyup", onKeyUnpressed);
21
- }, [onKeyUnpressed]);
22
- const onNodeHoveredChanged = useCallback((nodeId, isHovered) => {
23
- if (isHovered) {
24
- setHoveredNode(nodeId);
25
- } else {
26
- setHoveredNode("");
27
- }
28
- }, []);
29
- const onNodeClicked = useCallback(
30
- (nodeId, isSelected, event) => {
31
- let newHighlightedNodes = /* @__PURE__ */ new Set();
32
- if (isSelected) {
33
- newHighlightedNodes = new Set(event.ctrlKey ? [...highlightedNodes, nodeId] : [nodeId]);
34
- } else {
35
- newHighlightedNodes = event.ctrlKey ? /* @__PURE__ */ new Set([...highlightedNodes]) : /* @__PURE__ */ new Set();
36
- newHighlightedNodes.delete(nodeId);
37
- }
38
- setHighlightedNodes(newHighlightedNodes);
39
- onNodeSelectionChanged == null ? void 0 : onNodeSelectionChanged([...newHighlightedNodes]);
10
+ w(() => S("keydown", K), [K]), w(() => S("keyup", m), [m]);
11
+ const N = i((e, s) => {
12
+ f(s ? e : "");
13
+ }, []), b = i(
14
+ (e, s, l) => {
15
+ let r = /* @__PURE__ */ new Set();
16
+ s ? r = new Set(l.ctrlKey ? [...t, e] : [e]) : (r = l.ctrlKey ? /* @__PURE__ */ new Set([...t]) : /* @__PURE__ */ new Set(), r.delete(e)), g(r), c == null || c([...r]);
40
17
  },
41
- [highlightedNodes, onNodeSelectionChanged]
18
+ [t, c]
19
+ ), k = i(
20
+ (e) => d.size === 0 || d.has(e) ? 1 : 0.2,
21
+ [d]
42
22
  );
43
- const nodeOpacities = useCallback(
44
- (nodeId) => {
45
- return highlightedPath.size === 0 || highlightedPath.has(nodeId) ? 1 : 0.2;
46
- },
47
- [highlightedPath]
48
- );
49
- useEffect(() => {
50
- let newHighlightedPath = /* @__PURE__ */ new Set();
51
- if (hoveredNode) {
52
- const subGraphNodes = getSubGraphNodeSet(hoveredNode, data);
53
- newHighlightedPath = /* @__PURE__ */ new Set([...newHighlightedPath, ...subGraphNodes]);
54
- }
55
- if (highlightedNodes.size && (ctrlKeyDown || !hoveredNode)) {
56
- highlightedNodes.forEach((highlightedNode) => {
57
- const subGraphNodes = getSubGraphNodeSet(highlightedNode, data);
58
- newHighlightedPath = /* @__PURE__ */ new Set([...newHighlightedPath, ...subGraphNodes]);
59
- });
23
+ return w(() => {
24
+ let e = /* @__PURE__ */ new Set();
25
+ if (o) {
26
+ const s = H(o, u);
27
+ e = /* @__PURE__ */ new Set([...e, ...s]);
60
28
  }
61
- setHighlightedPath(newHighlightedPath);
62
- }, [hoveredNode, highlightedNodes, ctrlKeyDown, data]);
63
- return {
64
- onNodeHoveredChanged,
65
- onNodeClicked,
66
- nodeOpacities,
67
- highlightedPath,
68
- highlightedNodes,
69
- hoveredNode
29
+ t.size && (y || !o) && t.forEach((s) => {
30
+ const l = H(s, u);
31
+ e = /* @__PURE__ */ new Set([...e, ...l]);
32
+ }), p(e);
33
+ }, [o, t, y, u]), {
34
+ onNodeHoveredChanged: N,
35
+ onNodeClicked: b,
36
+ nodeOpacities: k,
37
+ highlightedPath: d,
38
+ highlightedNodes: t,
39
+ hoveredNode: o
70
40
  };
71
41
  };
72
42
  export {
73
- useMyHighlights as default
43
+ z as default
74
44
  };
@@ -1,80 +1,51 @@
1
- import { useCallback, useMemo, useState, useEffect, createContext, useContext } from "react";
2
- import { i as isNil } from "../isNil-CIubwp4T.js";
1
+ import { useCallback as c, useMemo as S, useState as v, useEffect as I, createContext as O, useContext as i } from "react";
2
+ import { i as p } from "../isNil-CjWwlQS3.js";
3
3
  import "react/jsx-runtime";
4
- import { MY_LOCAL_STORAGE_PREFIX } from "../utils/constants.js";
5
- function useLocalStorage(prefix) {
6
- const _buildKey = useCallback((name) => `${prefix}.${name}`, [prefix]);
7
- const get = useCallback((key) => JSON.parse(localStorage.getItem(_buildKey(key))), [_buildKey]);
8
- const set = useCallback(
9
- (key, value) => localStorage.setItem(_buildKey(key), JSON.stringify(value)),
10
- [_buildKey]
11
- );
12
- const remove = useCallback(
13
- (key, withPrefix = false) => localStorage.removeItem(withPrefix ? key : _buildKey(key)),
14
- [_buildKey]
15
- );
16
- const has = useCallback((key) => get(key) !== null, [get]);
17
- const keys = useCallback(() => Object.keys(localStorage), []);
18
- const items = useCallback(() => keys().map((k) => ({ key: k, value: JSON.parse(localStorage.getItem(k)) })), [keys]);
19
- const clear = useCallback(
20
- () => keys().forEach((key) => {
21
- if (key.startsWith(prefix)) {
22
- remove(key, true);
23
- }
4
+ import { MY_LOCAL_STORAGE_PREFIX as f } from "../utils/constants.js";
5
+ function L(o) {
6
+ const e = c((t) => `${o}.${t}`, [o]), a = c((t) => JSON.parse(localStorage.getItem(e(t))), [e]), m = c(
7
+ (t, u) => localStorage.setItem(e(t), JSON.stringify(u)),
8
+ [e]
9
+ ), r = c(
10
+ (t, u = !1) => localStorage.removeItem(u ? t : e(t)),
11
+ [e]
12
+ ), n = c((t) => a(t) !== null, [a]), s = c(() => Object.keys(localStorage), []), l = c(() => s().map((t) => ({ key: t, value: JSON.parse(localStorage.getItem(t)) })), [s]), g = c(
13
+ () => s().forEach((t) => {
14
+ t.startsWith(o) && r(t, !0);
24
15
  }),
25
- [prefix, remove, keys]
16
+ [o, r, s]
26
17
  );
27
- return useMemo(
18
+ return S(
28
19
  () => ({
29
- get,
30
- set,
31
- remove,
32
- has,
33
- keys,
34
- items,
35
- clear
20
+ get: a,
21
+ set: m,
22
+ remove: r,
23
+ has: n,
24
+ keys: s,
25
+ items: l,
26
+ clear: g
36
27
  }),
37
- [get, set, remove, has, keys, items, clear]
28
+ [a, m, r, n, s, l, g]
38
29
  );
39
30
  }
40
- function useLocalStorageItem(key, initialValue, prefix) {
41
- const { get, set, has, remove } = useLocalStorage(prefix);
42
- const [value, setValue] = useState(get(key) ?? initialValue);
43
- useEffect(() => {
44
- if (initialValue !== null && initialValue !== void 0 && !has(key)) {
45
- set(key, initialValue);
46
- }
47
- }, [key, initialValue, has, set]);
48
- return useMemo(
31
+ function C(o, e, a) {
32
+ const { get: m, set: r, has: n, remove: s } = L(a), [l, g] = v(m(o) ?? e);
33
+ return I(() => {
34
+ e != null && !n(o) && r(o, e);
35
+ }, [o, e, n, r]), S(
49
36
  () => [
50
- value,
51
- (newValue, save = true) => {
52
- if (save) {
53
- if (!isNil(newValue)) {
54
- set(key, newValue);
55
- } else {
56
- remove(key);
57
- }
58
- }
59
- setValue(newValue);
37
+ l,
38
+ (t, u = !0) => {
39
+ u && (p(t) ? s(o) : r(o, t)), g(t);
60
40
  },
61
- () => remove(key)
41
+ () => s(o)
62
42
  ],
63
- [key, value, set, remove]
43
+ [o, l, r, s]
64
44
  );
65
45
  }
66
- const LocalStorageContext = createContext(null);
67
- const useMyLocalStorage = () => {
68
- return useLocalStorage(MY_LOCAL_STORAGE_PREFIX);
69
- };
70
- const useMyLocalStorageItem = (key, initialValue) => {
71
- return useLocalStorageItem(key, initialValue, MY_LOCAL_STORAGE_PREFIX);
72
- };
73
- const useMyLocalStorageProvider = () => {
74
- return useContext(LocalStorageContext);
75
- };
46
+ const M = O(null), _ = () => L(f), b = (o, e) => C(o, e, f), J = () => i(M);
76
47
  export {
77
- useMyLocalStorage as default,
78
- useMyLocalStorageItem,
79
- useMyLocalStorageProvider
48
+ _ as default,
49
+ b as useMyLocalStorageItem,
50
+ J as useMyLocalStorageProvider
80
51
  };