storybook-addon-playground
Version:
A playground to enable consumers learn how to use the component library or to reproduce bugs
25 lines (22 loc) • 985 B
JavaScript
import { useState, useMemo, useCallback } from 'react';
import { useAddonState } from '@storybook/manager-api';
import { PANEL_ID } from '../consts/addon-consts.js';
import { DEFAULT_ADDON_STATE } from '../consts/state-consts.js';
import '@codemirror/commands';
const useCopyToClipboard = (code) => {
const [state] = useAddonState(PANEL_ID, DEFAULT_ADDON_STATE);
const [isCopied, setCopied] = useState(false);
const currentTabCode = code[state.selectedTab];
const shouldAllowCopy = useMemo(() => currentTabCode?.length > 0, [currentTabCode?.length]);
const onCopy = useCallback(() => {
if (!shouldAllowCopy) {
return;
}
navigator.clipboard.writeText(currentTabCode);
setCopied(true);
setTimeout(() => setCopied(false), 2000);
}, [currentTabCode, shouldAllowCopy]);
return { onCopy, isCopied, shouldAllowCopy };
};
export { useCopyToClipboard as default };
//# sourceMappingURL=useCopyToClipboard.js.map