UNPKG

@stories-js/core

Version:

Stories web components to build stories

67 lines 2.09 kB
/*! * (C) StoriesJS https://storiesjs.org - GPL-2.0 License */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { state } from '../store'; import { ensurePanel } from "../utils"; export const addonsAPI = { registerAddon: (addon) => { const addons = Object.assign({}, state.addons); addons[addon.id] = addon; state.addons = addons; }, unregisterAddon: (addon) => { state.addons = Object.keys(state.addons).filter(id => id !== addon.id).reduce((addons, id) => { addons[id] = state.addons[id]; return addons; }, {}); }, getPanels() { return Object.keys(state.addons).filter(addonId => state.addons[addonId].type === 'panel').reduce((addons, id) => { addons[id] = state.addons[id]; return addons; }, {}); }, getTools() { return Object.keys(state.addons).filter(addonId => state.addons[addonId].type === 'tool').reduce((addons, id) => { addons[id] = state.addons[id]; return addons; }, {}); }, getStoryPanels: () => { const allPanels = addonsAPI.getPanels(); const { story } = state; if (!allPanels || !story) { return allPanels; } const { parameters } = story; const filteredPanels = {}; Object.entries(allPanels).forEach(([id, panel]) => { const { paramKey } = panel; if (paramKey && parameters && parameters[paramKey] && parameters[paramKey].disable) { return; } filteredPanels[id] = panel; }); return filteredPanels; }, getSelectedPanel: () => { const { selectedPanel } = state; return ensurePanel(addonsAPI.getPanels(), selectedPanel, selectedPanel); }, setSelectedPanel: (panelName) => { state.selectedPanel = panelName; }, getAddonState: (addonId) => { return state.addons[addonId].state; }, setAddonState(addonId, addonState) { const addon = Object.assign({}, state.addons[addonId]); addon.state = addonState; state.addons = Object.assign(Object.assign({}, state.addons), { [addonId]: addon }); }, }; //# sourceMappingURL=addons.js.map