UNPKG

storybook-theme-switch-addon

Version:
14 lines (10 loc) 1.95 kB
'use strict'; var managerApi = require('@storybook/manager-api'); var h = require('react'); var components = require('@storybook/components'); var icons = require('@storybook/icons'); function _interopDefault (e) { return e && e.__esModule ? e : { default: e }; } var h__default = /*#__PURE__*/_interopDefault(h); var c="storybook/theme-switch-addon",d=`${c}/tool`;var D=e=>{if(typeof window<"u"){let r=document.querySelector("#storybook-preview-iframe"),t=document.createElement("link");t.setAttribute("rel","stylesheet"),t.setAttribute("type","text/css"),t.setAttribute("href",e),r.contentDocument.querySelector("head").appendChild(t);}},g=e=>{if(typeof window<"u"){let t=document.querySelector("#storybook-preview-iframe").contentDocument.querySelectorAll(`head link[href='${e}']`);t&&t.forEach(o=>{o.remove();});}},l=(e,r)=>{g(r),D(e);};var H=(e,r,t)=>e.map(o=>({...o,onClick:()=>{r(o.id),t();}})),a=(e,r)=>{let{themes:t}=e;return t.find(({id:i})=>i===r)||t[0]},O=()=>{let e=new URLSearchParams(window.location.href).get("globals");if(e){let[r,t]=e.split(":");return t}},u=()=>{let e=managerApi.useStorybookApi(),[r,t]=managerApi.useGlobals(),[o,i]=h.useState(O),[p,b]=h.useState(),{stylesheets:s}=e.getGlobalTypes();h.useEffect(()=>{if(s){let{url:n,id:m}=a(s,o);l(n,p),t({theme:m});}},[o]),h.useEffect(()=>{if(s){let{url:n}=a(s,o);l(n,p);}},[s]);let k=n=>{n!==o&&i(m=>{let{url:I}=a(s,m);return b(I),n});};return h__default.default.createElement(components.WithTooltip,{placement:"top",trigger:"click",tooltip:({onHide:n})=>{if(s){let{themes:m}=s;return h__default.default.createElement(components.TooltipLinkList,{links:H(m,k,n)})}}},h__default.default.createElement(icons.PaintBrushIcon,null))};managerApi.addons.register(c,()=>{managerApi.addons.add(d,{type:managerApi.types.TOOL,title:"Theme switcher",match:({viewMode:e})=>!!(e&&e.match(/^(story|docs)$/)),render:u});}); //# sourceMappingURL=out.js.map //# sourceMappingURL=manager.js.map