UNPKG

storybook-addon-playground

Version:

A playground to enable consumers learn how to use the component library or to reproduce bugs

41 lines (38 loc) 1.34 kB
import { useRef, useEffect } from 'react'; import { useAddonState } from '@storybook/manager-api'; import 'prettier'; import 'prettier/parser-html'; import 'prettier/parser-typescript'; import 'prettier/parser-postcss'; import 'lz-string'; import { saveCodeToStorage } from '../utils/persistence-utils.js'; import { PANEL_ID } from '../consts/addon-consts.js'; import { DEFAULT_ADDON_STATE } from '../consts/state-consts.js'; import '@codemirror/commands'; const SAVE_DEBOUNCE_MS = 1000; const usePersistence = () => { const [state] = useAddonState(PANEL_ID, DEFAULT_ADDON_STATE); const { code, hasInitialCodeLoaded } = state; const saveTimeoutRef = useRef(null); useEffect(() => { if (!hasInitialCodeLoaded || !code) { return; } if (!code.jsx.trim() && !code.css.trim()) { return; } if (saveTimeoutRef.current) { clearTimeout(saveTimeoutRef.current); } saveTimeoutRef.current = setTimeout(() => { saveCodeToStorage(code); }, SAVE_DEBOUNCE_MS); return () => { if (saveTimeoutRef.current) { clearTimeout(saveTimeoutRef.current); } }; }, [code, hasInitialCodeLoaded]); }; export { usePersistence as default }; //# sourceMappingURL=usePersistence.js.map