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

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 (183) hide show
  1. package/ActionForm-DlOXqMUx.js +4460 -0
  2. package/AnnotationDetails-Bk-p0F6h.js +160 -0
  3. package/AnnotationPreview-jzZvkCxJ.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.js +2 -2
  89. package/hooks/useAnnotations.js +31 -47
  90. package/hooks/useClue.js +4 -6
  91. package/hooks/useClueActions.js +3 -3
  92. package/hooks/useClueConfig.js +4 -6
  93. package/hooks/useClueTypeConfig.js +3 -3
  94. package/hooks/useComparator.js +435 -722
  95. package/hooks/useErrors.js +18 -22
  96. package/hooks/useFetcherResult.js +24 -33
  97. package/hooks/useMyHighlights.js +36 -66
  98. package/hooks/useMyLocalStorage.js +37 -66
  99. package/iconify-BBckr5AQ.js +1263 -0
  100. package/icons/Action.js +49 -66
  101. package/icons/Assessment.js +69 -85
  102. package/icons/Context.js +63 -77
  103. package/icons/Opinion.js +60 -76
  104. package/icons/iconMap.js +2 -2
  105. package/identity-ByMq8VxU.js +6 -0
  106. package/index-BHAe_V9n.js +12768 -0
  107. package/index-BK-zfYhR.js +358 -0
  108. package/index-CA5CUNZO.js +975 -0
  109. package/index-Dj5C04IX.js +568 -0
  110. package/index-p5_wX7q1.js +11729 -0
  111. package/isNil-CjWwlQS3.js +6 -0
  112. package/isObject-B53jY8Qg.js +7 -0
  113. package/isObjectLike-BatpeCIi.js +29 -0
  114. package/isSymbol-C3_SC0Qp.js +8 -0
  115. package/last-7CdUxN0r.js +7 -0
  116. package/main.js +60 -60
  117. package/maxBy-Bc0dYHcO.js +8 -0
  118. package/package.json +1 -1
  119. package/sortBy-DY2JBf9n.js +75 -0
  120. package/sumBy-DuMASLPd.js +8 -0
  121. package/text/Frequency.js +23 -42
  122. package/toFinite-BMy6GObD.js +14 -0
  123. package/toNumber-YVhnnJv4.js +31 -0
  124. package/useClueTypeConfig-Ct9Ygter.js +2292 -0
  125. package/utils/chain.js +65 -92
  126. package/utils/classificationParser.js +256 -519
  127. package/utils/constants.js +10 -35
  128. package/utils/graph.js +45 -72
  129. package/utils/hashUtil.js +7 -7
  130. package/utils/line.js +81 -131
  131. package/utils/loggerUtil.js +3 -5
  132. package/utils/sessionStorage.js +27 -41
  133. package/utils/time.js +423 -423
  134. package/utils/utils.js +9 -9
  135. package/utils/window.js +10 -21
  136. package/utils-DmwSUrum.js +129 -0
  137. package/ActionForm-uDp92tN2.js +0 -5941
  138. package/AnnotationDetails-DGYfOiWm.js +0 -175
  139. package/AnnotationPreview-bHObsb3P.js +0 -188
  140. package/ClueEnrichContext-CJEJxrgs.js +0 -541
  141. package/FlexOne-BSYAhhtG.js +0 -9
  142. package/_MapCache-WmuDdwuH.js +0 -222
  143. package/_Uint8Array-B7JqpgFX.js +0 -128
  144. package/_baseAssignValue-CGTuELqU.js +0 -25
  145. package/_baseClone-CkNrTyhm.js +0 -283
  146. package/_baseExtremum-kob8QXyt.js +0 -18
  147. package/_baseFlatten-jIR_sN_-.js +0 -92
  148. package/_baseGet-Bx3A4Qfp.js +0 -108
  149. package/_baseIsEqual-C5OTWzTk.js +0 -208
  150. package/_baseIteratee-avi7MX2o.js +0 -126
  151. package/_baseSlice-GAv_YFTT.js +0 -20
  152. package/_baseSum-D0WC1dN0.js +0 -13
  153. package/_baseUniq-BI9GIHMF.js +0 -115
  154. package/_commonjsHelpers-DWwsNxpa.js +0 -8
  155. package/_createAggregator-QD8MzKwe.js +0 -63
  156. package/_getPrototype-CU0j_POw.js +0 -5
  157. package/_getTag-Ckxxfr88.js +0 -126
  158. package/_isIterateeCall-Ds3sw2SF.js +0 -17
  159. package/_setToArray-CaPKQhcz.js +0 -33
  160. package/cloneDeep-DJrLSw8W.js +0 -8
  161. package/countBy-c6S3dvSW.js +0 -14
  162. package/debounce-bV0h5FC5.js +0 -92
  163. package/get-DSsNkRQs.js +0 -8
  164. package/groupBy-xqz-n0Vd.js +0 -14
  165. package/iconify-CXMreGTg.js +0 -1782
  166. package/identity-CPGTqrE4.js +0 -6
  167. package/index-AMfoEg_6.js +0 -696
  168. package/index-B6C2a_Lg.js +0 -1172
  169. package/index-C12gPw2W.js +0 -17698
  170. package/index-DCKkHTvx.js +0 -15750
  171. package/index-JcKyZeoY.js +0 -465
  172. package/isNil-CIubwp4T.js +0 -6
  173. package/isObject-FTY-5JQX.js +0 -7
  174. package/isObjectLike-OAgjjZye.js +0 -48
  175. package/isSymbol-Xd2FsJyp.js +0 -8
  176. package/last-CUCl67Im.js +0 -7
  177. package/maxBy-IKHzFrCS.js +0 -8
  178. package/sortBy-DfSj8IoJ.js +0 -96
  179. package/sumBy-D-hb_NY-.js +0 -8
  180. package/toFinite-Bc55msYj.js +0 -16
  181. package/toNumber-DPxy1FBy.js +0 -39
  182. package/useClueTypeConfig-Z1LFp01b.js +0 -3289
  183. 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-DlOXqMUx.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
  };
@@ -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-DlOXqMUx.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
  };