UNPKG

storybook-branch-switcher

Version:

A Storybook addon to navigate between multiple Git branches.

9 lines (8 loc) 1.54 kB
import { addons, types, useParameter } from 'storybook/internal/manager-api'; import { BranchIcon } from '@storybook/icons'; import n, { useCallback, Fragment } from 'react'; import { WithTooltip, TooltipLinkList, IconButton } from 'storybook/internal/components'; import { styled } from 'storybook/internal/theming'; var m="storybook-branch-switcher",c="branches",i=`${m}/switcher`,p={hostname:void 0};var f={list:[],defaultBranch:"master",currentBranch:"master"},l=Object.assign(f,JSON.parse(process.env.STORYBOOK_BRANCH_SWITCHER_STATE??"{}"));var B=(t,s,e,o)=>{let h=s||`${t.hostname}:${t.port}`,r;return o!==e?r=`/${o}/`:r="/",`${t.protocol}//${h}${r}${t.search}${t.hash}`};var I=styled.div(({theme:t})=>({fontSize:t.typography.size.s2-1,marginLeft:10})),O=t=>t.length>1,S=()=>{let{hostname:t}=useParameter(c,p),{list:s,currentBranch:e,defaultBranch:o}=l,h=useCallback(r=>{r!==e&&(window.parent.location=B(location,t,o,r));},[t,o,e]);return O(s)?n.createElement(Fragment,null,n.createElement(WithTooltip,{placement:"top",trigger:"click",closeOnClick:!0,tooltip:({onHide:r})=>n.createElement(TooltipLinkList,{links:s.map(a=>({id:a,title:a,active:e===a,onClick:()=>{h(a),r();}}))})},n.createElement(IconButton,{key:i,title:"Branch",active:!0},n.createElement(BranchIcon,null),e&&n.createElement(I,null,e)))):null};addons.register(m,()=>{addons.add(i,{title:"Branches",type:types.TOOL,match:({viewMode:t})=>!!(t&&t.match(/^(story|docs)$/)),render:S,paramKey:c});}); //# sourceMappingURL=manager.mjs.map //# sourceMappingURL=manager.mjs.map