storybook-addon-playground
Version:
A playground to enable consumers learn how to use the component library or to reproduce bugs
31 lines (28 loc) • 1.23 kB
JavaScript
import { useEffect } from 'react';
import { PANEL_ID } from '../consts/addon-consts.js';
import { DEFAULT_ADDON_STATE } from '../consts/state-consts.js';
import { PLAYGROUND_STORY_PREPARED, PLAYGROUND_EDITOR_CHANGED } from '../consts/events-consts.js';
import '@codemirror/commands';
import { useStorybookApi, useAddonState } from '@storybook/manager-api';
import usePlaygroundState from './usePlaygroundState.js';
const useBroadcastEditorChanges = () => {
const { emit, on, off } = useStorybookApi();
const { isPlaygroundStorySelected } = usePlaygroundState();
const [state] = useAddonState(PANEL_ID, DEFAULT_ADDON_STATE);
const { code, hasInitialCodeLoaded } = state;
useEffect(() => {
const handleEditorChange = () => {
emit(PLAYGROUND_EDITOR_CHANGED, code);
};
if (!hasInitialCodeLoaded) {
return;
}
if (isPlaygroundStorySelected) {
handleEditorChange();
return;
}
on(PLAYGROUND_STORY_PREPARED, handleEditorChange);
}, [emit, code, hasInitialCodeLoaded, isPlaygroundStorySelected, on, off]);
};
export { useBroadcastEditorChanges as default };
//# sourceMappingURL=useBroadcastEditorChanges.js.map