UNPKG

@graphiql/react

Version:

[Changelog](https://github.com/graphql/graphiql/blob/main/packages/graphiql-react/CHANGELOG.md) | [API Docs](https://graphiql-test.netlify.app/typedoc/modules/graphiql_react.html) | [NPM](https://www.npmjs.com/package/@graphiql/react)

51 lines (50 loc) 1.51 kB
import { STORAGE_KEY } from "../constants.js"; const createPluginSlice = (initial) => (set) => ({ plugins: [], visiblePlugin: null, ...initial, actions: { setVisiblePlugin(plugin = null) { set((current) => { const { visiblePlugin: currentVisiblePlugin, plugins, onTogglePluginVisibility, storage } = current; const byTitle = typeof plugin === "string"; const newVisiblePlugin = plugin && plugins.find((p) => (byTitle ? p.title : p) === plugin) || null; if (newVisiblePlugin === currentVisiblePlugin) { return current; } onTogglePluginVisibility == null ? void 0 : onTogglePluginVisibility(newVisiblePlugin); storage.set(STORAGE_KEY.visiblePlugin, (newVisiblePlugin == null ? void 0 : newVisiblePlugin.title) ?? ""); return { visiblePlugin: newVisiblePlugin }; }); }, setPlugins(plugins) { const seenTitles = /* @__PURE__ */ new Set(); const msg = "All GraphiQL plugins must have a unique title"; for (const { title } of plugins) { if (typeof title !== "string" || !title) { throw new Error(msg); } if (seenTitles.has(title)) { throw new Error(`${msg}, found two plugins with the title '${title}'`); } seenTitles.add(title); } set({ plugins }); } } }); export { createPluginSlice }; //# sourceMappingURL=plugin.js.map