UNPKG

storybook-branch-switcher

Version:

A Storybook addon to navigate between multiple Git branches.

2 lines 1.51 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:true,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:true},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.js.map //# sourceMappingURL=manager.js.map