@storybook/addon-svelte-csf
Version:
Allows to write stories in Svelte syntax
45 lines (44 loc) • 1.35 kB
JavaScript
import { getContext, hasContext, setContext } from 'svelte';
const CONTEXT_KEY = 'storybook-story-renderer-context';
function buildContext(props) {
let currentStoryExportName = $state(props.currentStoryExportName);
let args = $state(props.args);
let storyContext = $state(props.storyContext);
let metaRenderSnippet = $state(props.metaRenderSnippet);
function set(props) {
currentStoryExportName = props.currentStoryExportName;
args = props.args;
storyContext = props.storyContext;
metaRenderSnippet = props.metaRenderSnippet;
}
return {
get args() {
return args;
},
get storyContext() {
return storyContext;
},
get currentStoryExportName() {
return currentStoryExportName;
},
get metaRenderSnippet() {
return metaRenderSnippet;
},
set,
};
}
function createStoryRendererContext() {
const ctx = buildContext({
currentStoryExportName: undefined,
args: {},
// @ts-expect-error FIXME: I don't know how to satisfy this one
storyContext: {},
});
setContext(CONTEXT_KEY, ctx);
}
export function useStoryRenderer() {
if (!hasContext(CONTEXT_KEY)) {
createStoryRendererContext();
}
return getContext(CONTEXT_KEY);
}