MCPcopy
hub / github.com/tomkp/react-split-pane / usePersistence

Function usePersistence

src/persistence.ts:26–56  ·  view source on GitHub ↗
(
  options: UsePersistenceOptions
)

Source from the content-addressed store, hash-verified

24 * ```
25 */
26export function usePersistence(
27 options: UsePersistenceOptions
28): [number[], (sizes: number[]) => void] {
29 const { key, storage = localStorage, debounce = 300 } = options;
30
31 const [sizes, setSizes] = useState<number[]>(() => {
32 try {
33 const stored = storage.getItem(key);
34 return stored ? JSON.parse(stored) : [];
35 } catch {
36 return [];
37 }
38 });
39
40 // Debounced save to storage
41 useEffect(() => {
42 if (sizes.length === 0) return;
43
44 const timeout = setTimeout(() => {
45 try {
46 storage.setItem(key, JSON.stringify(sizes));
47 } catch (error) {
48 console.warn('Failed to persist pane sizes:', error);
49 }
50 }, debounce);
51
52 return () => clearTimeout(timeout);
53 }, [sizes, key, storage, debounce]);
54
55 return [sizes, setSizes];
56}

Callers 1

Calls

no outgoing calls

Tested by

no test coverage detected

Used in the wild real call sites across dependent graphs

searching dependent graphs…