@cccsaurora/clue-ui 1.2.0-dev.254 → 1.2.0

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 (179) hide show
  1. package/ActionForm-pWyIi01Z.js +4460 -0
  2. package/AnnotationDetails-11P7yhyx.js +160 -0
  3. package/AnnotationPreview-BGqlBBcp.js +140 -0
  4. package/ClueEnrichContext-DDZf646J.js +418 -0
  5. package/FlexOne-BXWFOd1T.js +6 -0
  6. package/_MapCache-BiTi0iqu.js +180 -0
  7. package/_Uint8Array-TJBs9NS2.js +101 -0
  8. package/_baseAssignValue-CNMLQZco.js +20 -0
  9. package/_baseClone-DajKHDCs.js +207 -0
  10. package/_baseExtremum-DhV10dXG.js +27 -0
  11. package/_baseFlatten-C8CjmqQ-.js +72 -0
  12. package/_baseGet-DSZygzyq.js +79 -0
  13. package/_baseIsEqual-C08cUUpA.js +147 -0
  14. package/_baseIteratee-DGZdhdqr.js +95 -0
  15. package/_baseSlice-M5RKzt1A.js +10 -0
  16. package/_baseSum-wEbgNeUs.js +10 -0
  17. package/_baseUniq-CGlHphLr.js +79 -0
  18. package/_commonjsHelpers-DaMA6jEr.js +8 -0
  19. package/_createAggregator-BvcoTZto.js +53 -0
  20. package/_getPrototype-Dm06JiGv.js +5 -0
  21. package/_getTag-Cfxlub3L.js +90 -0
  22. package/_setToArray-C7yMOeww.js +29 -0
  23. package/cloneDeep-wjl3XmFj.js +8 -0
  24. package/components/AnnotationBody.js +35 -49
  25. package/components/AnnotationDetailPopover.js +30 -36
  26. package/components/AnnotationDetails.js +7 -7
  27. package/components/AnnotationEntry.js +35 -35
  28. package/components/AnnotationPreview.js +5 -5
  29. package/components/ClassificationChip.js +23 -44
  30. package/components/CountBadge.js +26 -31
  31. package/components/EnrichedCard.js +97 -110
  32. package/components/EnrichedChip.js +105 -130
  33. package/components/EnrichedTypography.js +107 -133
  34. package/components/ErrorBoundary.js +24 -28
  35. package/components/RetryFailedEnrichments.js +9 -10
  36. package/components/SourcePicker.js +49 -57
  37. package/components/actions/ActionForm.js +4 -4
  38. package/components/actions/ExecutePopover.js +59 -75
  39. package/components/actions/ResultModal.js +4 -4
  40. package/components/actions/form/schemaAdapter.js +23 -39
  41. package/components/actions/formats/FileResult.js +59 -86
  42. package/components/actions/formats/index.js +10 -21
  43. package/components/display/graph/ExpandMoreButton.js +10 -10
  44. package/components/display/graph/elements/NodeCard.js +91 -111
  45. package/components/display/graph/elements/NodeTag.js +13 -15
  46. package/components/display/graph/index.js +202 -261
  47. package/components/display/graph/visualizations/Leaf.js +69 -88
  48. package/components/display/graph/visualizations/cloud/index.js +81 -98
  49. package/components/display/graph/visualizations/icons/BaseIcon.js +21 -26
  50. package/components/display/graph/visualizations/icons/BugIcon.js +12 -12
  51. package/components/display/graph/visualizations/icons/HostIcon.js +12 -12
  52. package/components/display/graph/visualizations/icons/NetworkIcon.js +12 -12
  53. package/components/display/graph/visualizations/icons/ProcessIcon.js +12 -12
  54. package/components/display/graph/visualizations/icons/TargetIcon.js +13 -13
  55. package/components/display/graph/visualizations/icons/index.js +13 -14
  56. package/components/display/graph/visualizations/panels/NodePanel.js +8 -10
  57. package/components/display/graph/visualizations/tree/BundleLine.js +81 -108
  58. package/components/display/graph/visualizations/tree/Triangle.js +13 -13
  59. package/components/display/graph/visualizations/tree/index.js +305 -407
  60. package/components/display/icons/Iconified.js +12 -27
  61. package/components/display/json/index.js +4 -4
  62. package/components/display/markdown/index.js +5770 -8678
  63. package/components/enrichment/EnrichPopover.js +46 -54
  64. package/components/fetchers/Fetcher.js +117 -155
  65. package/components/fetchers/PreviewModal.js +17 -20
  66. package/components/fetchers/StatusChip.js +17 -21
  67. package/components/group/Entry.js +11 -13
  68. package/components/group/Group.js +10 -13
  69. package/components/group/GroupControl.js +65 -76
  70. package/components/stats/QueryStatus.js +33 -43
  71. package/countBy-pIyxNZhO.js +8 -0
  72. package/data/event.js +4 -6
  73. package/database/index.js +2 -2
  74. package/debounce-DryYcbJ4.js +56 -0
  75. package/get-CH7kz5Ix.js +8 -0
  76. package/groupBy-yNrpdipq.js +8 -0
  77. package/hooks/ClueActionContext.js +6 -6
  78. package/hooks/ClueComponentContext.js +23 -29
  79. package/hooks/ClueConfigProvider.js +12 -14
  80. package/hooks/ClueDatabaseContext.js +13 -19
  81. package/hooks/ClueEnrichContext.js +8 -8
  82. package/hooks/ClueFetcherContext.js +56 -83
  83. package/hooks/ClueGroupContext.js +14 -17
  84. package/hooks/CluePopupContext.js +5 -5
  85. package/hooks/ClueProvider.js +10 -12
  86. package/hooks/selectors.js +7 -7
  87. package/hooks/useActionResult.js +2 -2
  88. package/hooks/useAnnotations.js +31 -47
  89. package/hooks/useClue.js +4 -6
  90. package/hooks/useClueActions.js +3 -3
  91. package/hooks/useClueConfig.js +4 -6
  92. package/hooks/useClueTypeConfig.js +3 -3
  93. package/hooks/useComparator.js +435 -722
  94. package/hooks/useErrors.js +18 -22
  95. package/hooks/useFetcherResult.js +24 -33
  96. package/hooks/useMyHighlights.js +36 -66
  97. package/hooks/useMyLocalStorage.js +37 -66
  98. package/iconify-BBckr5AQ.js +1263 -0
  99. package/icons/Action.js +49 -66
  100. package/icons/Assessment.js +68 -84
  101. package/icons/Context.js +63 -77
  102. package/icons/Opinion.js +65 -77
  103. package/icons/iconMap.js +2 -2
  104. package/identity-ByMq8VxU.js +6 -0
  105. package/index-BHAe_V9n.js +12768 -0
  106. package/index-CA5CUNZO.js +975 -0
  107. package/index-D_ZywK71.js +358 -0
  108. package/index-Dj5C04IX.js +568 -0
  109. package/index-p5_wX7q1.js +11729 -0
  110. package/isNil-CjWwlQS3.js +6 -0
  111. package/isObject-B53jY8Qg.js +7 -0
  112. package/isObjectLike-BatpeCIi.js +29 -0
  113. package/isSymbol-C3_SC0Qp.js +8 -0
  114. package/last-7CdUxN0r.js +7 -0
  115. package/main.js +60 -60
  116. package/package.json +1 -1
  117. package/sortBy-0BpKRt8p.js +79 -0
  118. package/sumBy-Do6Ff4Bw.js +8 -0
  119. package/text/Frequency.js +23 -42
  120. package/toFinite-BMy6GObD.js +14 -0
  121. package/toNumber-YVhnnJv4.js +31 -0
  122. package/useClueTypeConfig-77zd_zdF.js +2292 -0
  123. package/utils/chain.js +64 -91
  124. package/utils/classificationParser.js +256 -519
  125. package/utils/constants.js +10 -35
  126. package/utils/graph.js +45 -72
  127. package/utils/hashUtil.js +7 -7
  128. package/utils/line.js +81 -131
  129. package/utils/loggerUtil.js +3 -5
  130. package/utils/sessionStorage.js +27 -41
  131. package/utils/time.js +423 -423
  132. package/utils/utils.js +9 -9
  133. package/utils/window.js +10 -21
  134. package/utils-D5hPDE7N.js +129 -0
  135. package/ActionForm-C0aE9HUv.js +0 -5941
  136. package/AnnotationDetails-CEou0vCc.js +0 -175
  137. package/AnnotationPreview-CLMVD6Ec.js +0 -188
  138. package/ClueEnrichContext-BkD9ZwM9.js +0 -541
  139. package/FlexOne-BSYAhhtG.js +0 -9
  140. package/_MapCache-WmuDdwuH.js +0 -222
  141. package/_Uint8Array-DdG4KLKn.js +0 -128
  142. package/_baseAssignValue-CGTuELqU.js +0 -25
  143. package/_baseClone-BpWiBnMp.js +0 -283
  144. package/_baseExtremum-BY663UjY.js +0 -33
  145. package/_baseFlatten-B69cDsaV.js +0 -92
  146. package/_baseGet-Bx3A4Qfp.js +0 -108
  147. package/_baseIsEqual-B4IufFlL.js +0 -208
  148. package/_baseIteratee-7AQvAy1o.js +0 -126
  149. package/_baseSlice-GAv_YFTT.js +0 -20
  150. package/_baseSum-D0WC1dN0.js +0 -13
  151. package/_baseUniq-B8fK6hI-.js +0 -115
  152. package/_commonjsHelpers-DWwsNxpa.js +0 -8
  153. package/_createAggregator-CwGPThny.js +0 -63
  154. package/_getPrototype-CblfEidB.js +0 -5
  155. package/_getTag-jwz4XLoZ.js +0 -126
  156. package/_setToArray-CaPKQhcz.js +0 -33
  157. package/cloneDeep-DmUylbkM.js +0 -8
  158. package/countBy-DqlU5OwT.js +0 -14
  159. package/debounce-bV0h5FC5.js +0 -92
  160. package/get-DSsNkRQs.js +0 -8
  161. package/groupBy-ChDRT7uy.js +0 -14
  162. package/iconify-CXMreGTg.js +0 -1782
  163. package/identity-CPGTqrE4.js +0 -6
  164. package/index-AMfoEg_6.js +0 -696
  165. package/index-B6C2a_Lg.js +0 -1172
  166. package/index-C12gPw2W.js +0 -17698
  167. package/index-DCKkHTvx.js +0 -15750
  168. package/index-UkW8Sur3.js +0 -465
  169. package/isNil-CIubwp4T.js +0 -6
  170. package/isObject-FTY-5JQX.js +0 -7
  171. package/isObjectLike-OAgjjZye.js +0 -48
  172. package/isSymbol-Xd2FsJyp.js +0 -8
  173. package/last-CUCl67Im.js +0 -7
  174. package/sortBy-C7mGPI_D.js +0 -100
  175. package/sumBy-CGALjmwQ.js +0 -8
  176. package/toFinite-Bc55msYj.js +0 -16
  177. package/toNumber-DPxy1FBy.js +0 -39
  178. package/useClueTypeConfig-D2tf4-NM.js +0 -3289
  179. package/utils-71DpzFrA.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-C0aE9HUv.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-pWyIi01Z.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-C0aE9HUv.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-pWyIi01Z.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
  };