manager.js 12 KB

123456789
  1. import './chunk-BS5JN4MX.js';
  2. import React2 from 'react';
  3. import { addons, types, useParameter } from '@storybook/manager-api';
  4. import { styled } from '@storybook/theming';
  5. import { Link } from '@storybook/router';
  6. import { SyntaxHighlighter } from '@storybook/components';
  7. import invariant from 'tiny-invariant';
  8. function _typeof(o){"@babel/helpers - typeof";return _typeof=typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?function(o2){return typeof o2}:function(o2){return o2&&typeof Symbol=="function"&&o2.constructor===Symbol&&o2!==Symbol.prototype?"symbol":typeof o2},_typeof(o)}function toPrimitive(t,r){if(_typeof(t)!="object"||!t)return t;var e=t[Symbol.toPrimitive];if(e!==void 0){var i=e.call(t,r||"default");if(_typeof(i)!="object")return i;throw new TypeError("@@toPrimitive must return a primitive value.")}return (r==="string"?String:Number)(t)}function toPropertyKey(t){var i=toPrimitive(t,"string");return _typeof(i)=="symbol"?i:String(i)}function _defineProperty(obj,key,value){return key=toPropertyKey(key),key in obj?Object.defineProperty(obj,key,{value,enumerable:!0,configurable:!0,writable:!0}):obj[key]=value,obj}function _extends(){return _extends=Object.assign?Object.assign.bind():function(target){for(var i=1;i<arguments.length;i++){var source=arguments[i];for(var key in source)Object.prototype.hasOwnProperty.call(source,key)&&(target[key]=source[key]);}return target},_extends.apply(this,arguments)}function ownKeys(object,enumerableOnly){var keys=Object.keys(object);if(Object.getOwnPropertySymbols){var symbols=Object.getOwnPropertySymbols(object);enumerableOnly&&(symbols=symbols.filter(function(sym){return Object.getOwnPropertyDescriptor(object,sym).enumerable})),keys.push.apply(keys,symbols);}return keys}function _objectSpread(target){for(var i=1;i<arguments.length;i++){var source=arguments[i]!=null?arguments[i]:{};i%2?ownKeys(Object(source),!0).forEach(function(key){_defineProperty(target,key,source[key]);}):Object.getOwnPropertyDescriptors?Object.defineProperties(target,Object.getOwnPropertyDescriptors(source)):ownKeys(Object(source)).forEach(function(key){Object.defineProperty(target,key,Object.getOwnPropertyDescriptor(source,key));});}return target}function powerSetPermutations(arr){var arrLength=arr.length;if(arrLength===0||arrLength===1)return arr;if(arrLength===2)return [arr[0],arr[1],"".concat(arr[0],".").concat(arr[1]),"".concat(arr[1],".").concat(arr[0])];if(arrLength===3)return [arr[0],arr[1],arr[2],"".concat(arr[0],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[0]),"".concat(arr[1],".").concat(arr[2]),"".concat(arr[2],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[1],".").concat(arr[2]),"".concat(arr[0],".").concat(arr[2],".").concat(arr[1]),"".concat(arr[1],".").concat(arr[0],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[2],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[0],".").concat(arr[1]),"".concat(arr[2],".").concat(arr[1],".").concat(arr[0])];if(arrLength>=4)return [arr[0],arr[1],arr[2],arr[3],"".concat(arr[0],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[2]),"".concat(arr[0],".").concat(arr[3]),"".concat(arr[1],".").concat(arr[0]),"".concat(arr[1],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[3]),"".concat(arr[2],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[1]),"".concat(arr[2],".").concat(arr[3]),"".concat(arr[3],".").concat(arr[0]),"".concat(arr[3],".").concat(arr[1]),"".concat(arr[3],".").concat(arr[2]),"".concat(arr[0],".").concat(arr[1],".").concat(arr[2]),"".concat(arr[0],".").concat(arr[1],".").concat(arr[3]),"".concat(arr[0],".").concat(arr[2],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[2],".").concat(arr[3]),"".concat(arr[0],".").concat(arr[3],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[3],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[0],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[0],".").concat(arr[3]),"".concat(arr[1],".").concat(arr[2],".").concat(arr[0]),"".concat(arr[1],".").concat(arr[2],".").concat(arr[3]),"".concat(arr[1],".").concat(arr[3],".").concat(arr[0]),"".concat(arr[1],".").concat(arr[3],".").concat(arr[2]),"".concat(arr[2],".").concat(arr[0],".").concat(arr[1]),"".concat(arr[2],".").concat(arr[0],".").concat(arr[3]),"".concat(arr[2],".").concat(arr[1],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[1],".").concat(arr[3]),"".concat(arr[2],".").concat(arr[3],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[3],".").concat(arr[1]),"".concat(arr[3],".").concat(arr[0],".").concat(arr[1]),"".concat(arr[3],".").concat(arr[0],".").concat(arr[2]),"".concat(arr[3],".").concat(arr[1],".").concat(arr[0]),"".concat(arr[3],".").concat(arr[1],".").concat(arr[2]),"".concat(arr[3],".").concat(arr[2],".").concat(arr[0]),"".concat(arr[3],".").concat(arr[2],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[1],".").concat(arr[2],".").concat(arr[3]),"".concat(arr[0],".").concat(arr[1],".").concat(arr[3],".").concat(arr[2]),"".concat(arr[0],".").concat(arr[2],".").concat(arr[1],".").concat(arr[3]),"".concat(arr[0],".").concat(arr[2],".").concat(arr[3],".").concat(arr[1]),"".concat(arr[0],".").concat(arr[3],".").concat(arr[1],".").concat(arr[2]),"".concat(arr[0],".").concat(arr[3],".").concat(arr[2],".").concat(arr[1]),"".concat(arr[1],".").concat(arr[0],".").concat(arr[2],".").concat(arr[3]),"".concat(arr[1],".").concat(arr[0],".").concat(arr[3],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[2],".").concat(arr[0],".").concat(arr[3]),"".concat(arr[1],".").concat(arr[2],".").concat(arr[3],".").concat(arr[0]),"".concat(arr[1],".").concat(arr[3],".").concat(arr[0],".").concat(arr[2]),"".concat(arr[1],".").concat(arr[3],".").concat(arr[2],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[0],".").concat(arr[1],".").concat(arr[3]),"".concat(arr[2],".").concat(arr[0],".").concat(arr[3],".").concat(arr[1]),"".concat(arr[2],".").concat(arr[1],".").concat(arr[0],".").concat(arr[3]),"".concat(arr[2],".").concat(arr[1],".").concat(arr[3],".").concat(arr[0]),"".concat(arr[2],".").concat(arr[3],".").concat(arr[0],".").concat(arr[1]),"".concat(arr[2],".").concat(arr[3],".").concat(arr[1],".").concat(arr[0]),"".concat(arr[3],".").concat(arr[0],".").concat(arr[1],".").concat(arr[2]),"".concat(arr[3],".").concat(arr[0],".").concat(arr[2],".").concat(arr[1]),"".concat(arr[3],".").concat(arr[1],".").concat(arr[0],".").concat(arr[2]),"".concat(arr[3],".").concat(arr[1],".").concat(arr[2],".").concat(arr[0]),"".concat(arr[3],".").concat(arr[2],".").concat(arr[0],".").concat(arr[1]),"".concat(arr[3],".").concat(arr[2],".").concat(arr[1],".").concat(arr[0])]}var classNameCombinations={};function getClassNameCombinations(classNames){if(classNames.length===0||classNames.length===1)return classNames;var key=classNames.join(".");return classNameCombinations[key]||(classNameCombinations[key]=powerSetPermutations(classNames)),classNameCombinations[key]}function createStyleObject(classNames){var elementStyle=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{},stylesheet=arguments.length>2?arguments[2]:void 0,nonTokenClassNames=classNames.filter(function(className){return className!=="token"}),classNamesCombinations=getClassNameCombinations(nonTokenClassNames);return classNamesCombinations.reduce(function(styleObject,className){return _objectSpread(_objectSpread({},styleObject),stylesheet[className])},elementStyle)}function createClassNameString(classNames){return classNames.join(" ")}function createChildren(stylesheet,useInlineStyles){var childrenCount=0;return function(children){return childrenCount+=1,children.map(function(child,i){return createElement({node:child,stylesheet,useInlineStyles,key:"code-segment-".concat(childrenCount,"-").concat(i)})})}}function createElement(_ref){var node=_ref.node,stylesheet=_ref.stylesheet,_ref$style=_ref.style,style=_ref$style===void 0?{}:_ref$style,useInlineStyles=_ref.useInlineStyles,key=_ref.key,properties=node.properties,type=node.type,TagName=node.tagName,value=node.value;if(type==="text")return value;if(TagName){var childrenCreator=createChildren(stylesheet,useInlineStyles),props;if(!useInlineStyles)props=_objectSpread(_objectSpread({},properties),{},{className:createClassNameString(properties.className)});else {var allStylesheetSelectors=Object.keys(stylesheet).reduce(function(classes,selector){return selector.split(".").forEach(function(className2){classes.includes(className2)||classes.push(className2);}),classes},[]),startingClassName=properties.className&&properties.className.includes("token")?["token"]:[],className=properties.className&&startingClassName.concat(properties.className.filter(function(className2){return !allStylesheetSelectors.includes(className2)}));props=_objectSpread(_objectSpread({},properties),{},{className:createClassNameString(className)||void 0,style:createStyleObject(properties.className,Object.assign({},properties.style,style),stylesheet)});}var children=childrenCreator(node.children);return React2.createElement(TagName,_extends({key},props),children)}}var StyledStoryLink=styled(Link)(({theme})=>({display:"block",textDecoration:"none",borderRadius:theme.appBorderRadius,color:"inherit","&:hover":{background:theme.background.hoverable}})),SelectedStoryHighlight=styled.div(({theme})=>({background:theme.background.hoverable,borderRadius:theme.appBorderRadius})),StyledSyntaxHighlighter=styled(SyntaxHighlighter)(({theme})=>({fontSize:theme.typography.size.s2-1})),areLocationsEqual=(a,b)=>a.startLoc.line===b.startLoc.line&&a.startLoc.col===b.startLoc.col&&a.endLoc.line===b.endLoc.line&&a.endLoc.col===b.endLoc.col,StoryPanel=({api})=>{let story=api.getCurrentStoryData(),selectedStoryRef=React2.useRef(null),{source:loaderSource,locationsMap}=useParameter("storySource",{}),{source:{originalSource:docsSource}={}}=useParameter("docs",{}),source=loaderSource||docsSource||"loading source...",currentLocationIndex=locationsMap?Object.keys(locationsMap).find(key=>{let sourceLoaderId=key.split("--");return story.id.endsWith(sourceLoaderId[sourceLoaderId.length-1])}):void 0,currentLocation=locationsMap&&currentLocationIndex?locationsMap[currentLocationIndex]:void 0;React2.useEffect(()=>{selectedStoryRef.current&&selectedStoryRef.current.scrollIntoView();},[selectedStoryRef.current]);let createPart=({rows,stylesheet,useInlineStyles})=>rows.map((node,i)=>createElement({node,stylesheet,useInlineStyles,key:`code-segment${i}`})),createStoryPart=({rows,stylesheet,useInlineStyles,location,id,refId})=>{let first=location.startLoc.line-1,last=location.endLoc.line,storyRows=rows.slice(first,last),storySource=createPart({rows:storyRows,stylesheet,useInlineStyles}),storyKey=`${first}-${last}`;return currentLocation&&areLocationsEqual(location,currentLocation)?React2.createElement(SelectedStoryHighlight,{key:storyKey,ref:selectedStoryRef},storySource):React2.createElement(StyledStoryLink,{to:refId?`/story/${refId}_${id}`:`/story/${id}`,key:storyKey},storySource)},createParts=({rows,stylesheet,useInlineStyles})=>{let parts=[],lastRow=0;invariant(locationsMap,"locationsMap should be defined while creating parts"),Object.keys(locationsMap).forEach(key=>{let location=locationsMap[key],first=location.startLoc.line-1,last=location.endLoc.line,{title,refId}=story,sourceIdParts=key.split("--"),id=api.storyId(title,sourceIdParts[sourceIdParts.length-1]),start=createPart({rows:rows.slice(lastRow,first),stylesheet,useInlineStyles}),storyPart=createStoryPart({rows,stylesheet,useInlineStyles,location,id,refId});parts.push(...start),parts.push(storyPart),lastRow=last;});let lastPart=createPart({rows:rows.slice(lastRow),stylesheet,useInlineStyles});return parts.push(...lastPart),parts};return story?React2.createElement(StyledSyntaxHighlighter,{language:"jsx",showLineNumbers:!0,renderer:({rows,stylesheet,useInlineStyles})=>{let myrows=rows.map(({properties,...rest})=>({...rest,properties:{className:[]}}));if(!locationsMap||!Object.keys(locationsMap).length)return createPart({rows:myrows,stylesheet,useInlineStyles});let parts=createParts({rows:myrows,stylesheet,useInlineStyles});return React2.createElement("span",null,parts)},format:!1,copyable:!1,padded:!0,wrapLongLines:!0,lineProps:{style:{whiteSpace:"pre"}}},source):null};var ADDON_ID="storybook/source-loader",PANEL_ID=`${ADDON_ID}/panel`;addons.register(ADDON_ID,api=>{addons.add(PANEL_ID,{type:types.PANEL,title:"Code",render:({active})=>active?React2.createElement(StoryPanel,{api}):null,paramKey:"storysource"});});