create-storybook 8.5.0-beta.3 → 8.5.0-beta.4

Sign up to get free protection for your applications and to get access to all the features.
@@ -12,8 +12,8 @@
12
12
  `).map(line=>exec(line,columns,options)).join(`
13
13
  `)}var import_cli_boxes2=__toESM(require_cli_boxes(),1),NEWLINE=`
14
14
  `,PAD=" ",NONE="none",terminalColumns=()=>{let{env:env2,stdout,stderr}=import_node_process2.default;return stdout?.columns?stdout.columns:stderr?.columns?stderr.columns:env2.COLUMNS?Number.parseInt(env2.COLUMNS,10):80},getObject=detail=>typeof detail=="number"?{top:detail,right:detail*3,bottom:detail,left:detail*3}:{top:0,right:0,bottom:0,left:0,...detail},getBorderWidth=borderStyle=>borderStyle===NONE?0:2,getBorderChars=borderStyle=>{let sides=["topLeft","topRight","bottomRight","bottomLeft","left","right","top","bottom"],characters;if(borderStyle===NONE){borderStyle={};for(let side of sides)borderStyle[side]=""}if(typeof borderStyle=="string"){if(characters=import_cli_boxes.default[borderStyle],!characters)throw new TypeError(`Invalid border style: ${borderStyle}`)}else{typeof borderStyle?.vertical=="string"&&(borderStyle.left=borderStyle.vertical,borderStyle.right=borderStyle.vertical),typeof borderStyle?.horizontal=="string"&&(borderStyle.top=borderStyle.horizontal,borderStyle.bottom=borderStyle.horizontal);for(let side of sides)if(borderStyle[side]===null||typeof borderStyle[side]!="string")throw new TypeError(`Invalid border style: ${side}`);characters=borderStyle}return characters},makeTitle=(text,horizontal,alignment)=>{let title="",textWidth=stringWidth(text);switch(alignment){case"left":{title=text+horizontal.slice(textWidth);break}case"right":{title=horizontal.slice(textWidth)+text;break}default:{horizontal=horizontal.slice(textWidth),horizontal.length%2===1?(horizontal=horizontal.slice(Math.floor(horizontal.length/2)),title=horizontal.slice(1)+text+horizontal):(horizontal=horizontal.slice(horizontal.length/2),title=horizontal+text+horizontal);break}}return title},makeContentText=(text,{padding,width,textAlignment,height})=>{text=(0,import_ansi_align.default)(text,{align:textAlignment});let lines=text.split(NEWLINE),textWidth=widestLine(text),max=width-padding.left-padding.right;if(textWidth>max){let newLines=[];for(let line of lines){let createdLines=wrapAnsi(line,max,{hard:!0}),alignedLinesArray=(0,import_ansi_align.default)(createdLines,{align:textAlignment}).split(`
15
- `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine)}}lines=newLines}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth)}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&import_node_process2.default?.stdout){let newDimensions=[import_node_process2.default.stdout.columns,import_node_process2.default.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1])}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier))}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right)}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_find_up=__toESM(require("find-up"),1),import_picocolors2=__toESM(require_picocolors(),1),import_prompts2=__toESM(require("prompts"),1),import_semver3=require("semver"),import_ts_dedent5=require("ts-dedent");var import_node_path3=require("path"),import_cli6=require("storybook/internal/cli"),import_cli7=require("storybook/internal/cli"),import_cli8=require("storybook/internal/cli"),import_common2=require("storybook/internal/common");var import_promises2=require("fs/promises"),import_node_path2=require("path"),import_cli2=require("storybook/internal/cli"),import_cli3=require("storybook/internal/cli"),import_cli4=require("storybook/internal/cli"),import_cli5=require("storybook/internal/cli"),import_common=require("storybook/internal/common"),import_ora=__toESM(require("ora"),1),import_tiny_invariant=__toESM(require("tiny-invariant"),1),import_ts_dedent2=require("ts-dedent");var import_promises=require("fs/promises"),import_node_path=require("path"),import_cli=require("storybook/internal/cli"),import_node_logger=require("storybook/internal/node-logger"),import_ts_dedent=require("ts-dedent"),pathExists=async path=>(0,import_promises.stat)(path).then(()=>!0).catch(()=>!1),sanitizeFramework=framework=>{let matches=framework.match(/(@storybook\/\w+(?:-\w+)*)|(storybook-(\w+(?:-\w+)*))/g);if(matches)return matches[0]};async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,prefixes=[],...custom}){let srcPath=(0,import_node_path.resolve)(storybookConfigFolder,"../src"),prefix=await pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language===import_cli.SupportedLanguage.TYPESCRIPT_4_9||language===import_cli.SupportedLanguage.TYPESCRIPT_3_8,mainConfigTemplate=import_ts_dedent.dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
16
- export default config;`,frameworkPackage=sanitizeFramework(custom.framework?.name);frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),import_node_logger.logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'node:path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
15
+ `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine)}}lines=newLines}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth)}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&import_node_process2.default?.stdout){let newDimensions=[import_node_process2.default.stdout.columns,import_node_process2.default.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1])}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier))}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right)}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_find_up=__toESM(require("find-up"),1),import_picocolors2=__toESM(require_picocolors(),1),import_prompts2=__toESM(require("prompts"),1),import_semver3=require("semver"),import_ts_dedent5=require("ts-dedent");var import_node_path3=require("path"),import_cli6=require("storybook/internal/cli"),import_cli7=require("storybook/internal/cli"),import_cli8=require("storybook/internal/cli"),import_common2=require("storybook/internal/common");var import_promises2=require("fs/promises"),import_node_path2=require("path"),import_cli2=require("storybook/internal/cli"),import_cli3=require("storybook/internal/cli"),import_cli4=require("storybook/internal/cli"),import_cli5=require("storybook/internal/cli"),import_common=require("storybook/internal/common"),import_ora=__toESM(require("ora"),1),import_tiny_invariant=__toESM(require("tiny-invariant"),1),import_ts_dedent2=require("ts-dedent");var import_promises=require("fs/promises"),import_node_path=require("path"),import_cli=require("storybook/internal/cli"),import_node_logger=require("storybook/internal/node-logger"),import_ts_dedent=require("ts-dedent"),pathExists=async path=>(0,import_promises.stat)(path).then(()=>!0).catch(()=>!1);async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,frameworkPackage,prefixes=[],...custom}){let srcPath=(0,import_node_path.resolve)(storybookConfigFolder,"../src"),prefix=await pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language===import_cli.SupportedLanguage.TYPESCRIPT_4_9||language===import_cli.SupportedLanguage.TYPESCRIPT_3_8,mainConfigTemplate=import_ts_dedent.dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
16
+ export default config;`;frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),import_node_logger.logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'node:path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
17
17
 
18
18
  `)}
19
19
 
@@ -38,14 +38,14 @@
38
38
 
39
39
  export default preview;
40
40
  `.replace(`
41
- `,"").trim();try{let prettier=(await import("prettier")).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath})}catch{import_node_logger.logger.verbose(`Failed to prettify ${previewPath}`)}await(0,import_promises.writeFile)(previewPath,preview,{encoding:"utf8"})}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=import_common.versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>import_cli2.externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(import_common.versions[frameworkPackage])return frameworkPackage;throw new Error(import_ts_dedent2.dedent`
41
+ `,"").trim();try{let prettier=(await import("prettier")).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath})}catch{import_node_logger.logger.verbose(`Failed to prettify ${previewPath}`)}await(0,import_promises.writeFile)(previewPath,preview,{encoding:"utf8"})}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addPreviewFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook",installFrameworkPackages:!0},getBuilderDetails=builder=>{let map=import_common.versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>import_cli2.externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(import_common.versions[frameworkPackage])return frameworkPackage;throw new Error(import_ts_dedent2.dedent`
42
42
  Could not find framework package: ${frameworkPackage}.
43
43
  Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook.
44
- `)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs","react-native-web-vite"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(import_ts_dedent2.dedent`
44
+ `)}return externalFramework.frameworks?.find(item=>item.match(new RegExp(`-${storybookBuilder}`)))??externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,frameworkPackage,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?framework==="nuxt"?process.env.IN_STORYBOOK_SANDBOX!=="true":["angular","nextjs","react-native-web-vite"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude,frameworkPackage}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addPreviewFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler,installFrameworkPackages}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(import_ts_dedent2.dedent`
45
45
  Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
46
46
 
47
47
  https://github.com/storybookjs/storybook/issues/18360
48
- `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has((0,import_common.getPackageDetails)(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=(0,import_ora.default)({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await(0,import_cli4.extractEslintInfo)(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await(0,import_cli4.configureEslintPlugin)(eslintConfigFile??void 0,packageManager))}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=(0,import_ora.default)({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed()}if(await(0,import_promises2.mkdir)(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===import_cli2.SupportedLanguage.JAVASCRIPT?import_ts_dedent2.dedent`/**
48
+ `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...installFrameworkPackages?frameworkPackages:[],...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has((0,import_common.getPackageDetails)(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=(0,import_ora.default)({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await(0,import_cli4.extractEslintInfo)(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await(0,import_cli4.configureEslintPlugin)(eslintConfigFile??void 0,packageManager))}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=(0,import_ora.default)({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed()}if((addMainFile||addPreviewFile)&&await(0,import_promises2.mkdir)(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===import_cli2.SupportedLanguage.JAVASCRIPT?import_ts_dedent2.dedent`/**
49
49
  * This function is used to resolve the absolute path of a package.
50
50
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
51
51
  */
@@ -57,7 +57,7 @@
57
57
  */
58
58
  function getAbsolutePath(value: string): any {
59
59
  return dirname(require.resolve(join(value, 'package.json')))
60
- }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[(0,import_node_path2.join)("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await(0,import_cli3.copyTemplateFiles)({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:(0,import_node_path2.join)(getCliDir(),"rendererAssets","common")})}}function getCliDir(){return(0,import_node_path2.dirname)(require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new import_cli7.AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_common2.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await(0,import_cli7.promptForCompoDocs)(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli6.CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:import_cli7.compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_node_path3.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&(0,import_cli8.copyTemplate)(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var import_cli9=require("storybook/internal/cli");var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli9.CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var import_cli10=require("storybook/internal/cli");var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===import_cli10.CoreBuilder.Webpack5?"swc":void 0})},HTML_default=generator3;var import_node_fs=require("fs"),import_node_path4=require("path"),import_cli11=require("storybook/internal/cli");var generator4=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_node_fs.existsSync)((0,import_node_path4.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli11.CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator4;var import_cli12=require("storybook/internal/cli");var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===import_cli12.CoreBuilder.Webpack5?"swc":void 0})},PREACT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator6;var import_cli13=require("storybook/internal/cli"),import_cli14=require("storybook/internal/cli");var generator7=async(packageManager,npmOptions,options)=>{let extraPackages=await(0,import_cli13.detectLanguage)(packageManager)===import_cli14.SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===import_cli14.CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator7;var import_cli15=require("storybook/internal/cli"),import_cli16=require("storybook/internal/cli"),generator8=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await(0,import_cli15.getBabelDependencies)(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await(0,import_cli15.copyTemplateFiles)({packageManager,renderer:"react-native",language:import_cli16.SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"})},REACT_NATIVE_default=generator8;var import_promises3=require("fs/promises"),import_node_path5=require("path"),import_cli17=require("storybook/internal/cli");var generator9=async(packageManager,npmOptions,options)=>{let language=await(0,import_cli17.detectLanguage)(packageManager),extraPackages=["vite","react-native-web"];language===import_cli17.SupportedLanguage.JAVASCRIPT&&extraPackages.push("prop-types"),await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,extraAddons:["@storybook/addon-onboarding"]},"react-native-web-vite");let targetPath=await(0,import_cli17.cliStoriesTargetPath)(),cssFiles=(await(0,import_promises3.readdir)(targetPath)).filter(f=>f.endsWith(".css"));await Promise.all(cssFiles.map(f=>(0,import_promises3.rm)((0,import_node_path5.join)(targetPath,f))))},REACT_NATIVE_WEB_default=generator9;var import_node_fs2=require("fs"),import_node_path6=require("path"),import_cli18=require("storybook/internal/cli"),import_semver=__toESM(require("semver"),1),import_ts_dedent3=require("ts-dedent");var generator10=async(packageManager,npmOptions,options)=>{let monorepoRootPath=(0,import_node_path6.join)(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
60
+ }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},frameworkPackage,prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[(0,import_node_path2.join)("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(addPreviewFile&&await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await(0,import_cli3.copyTemplateFiles)({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:(0,import_node_path2.join)(getCliDir(),"rendererAssets","common")})}}function getCliDir(){return(0,import_node_path2.dirname)(require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new import_cli7.AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_common2.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await(0,import_cli7.promptForCompoDocs)(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli6.CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:import_cli7.compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_node_path3.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&(0,import_cli8.copyTemplate)(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var import_cli9=require("storybook/internal/cli");var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli9.CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var import_cli10=require("storybook/internal/cli");var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===import_cli10.CoreBuilder.Webpack5?"swc":void 0})},HTML_default=generator3;var import_node_fs=require("fs"),import_node_path4=require("path"),import_cli11=require("storybook/internal/cli");var generator4=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_node_fs.existsSync)((0,import_node_path4.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli11.CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator4;var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraPackages:async()=>["@nuxtjs/storybook"],installFrameworkPackages:!1,componentsDestinationPath:"./components",extraMain:{stories:["../components/**/*.mdx","../components/**/*.stories.@(js|jsx|ts|tsx|mdx)"]}},"nuxt"),await packageManager.runPackageCommand("nuxi",["module","add","@nuxtjs/storybook","--skipInstall"])},NUXT_default=generator5;var import_cli12=require("storybook/internal/cli");var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===import_cli12.CoreBuilder.Webpack5?"swc":void 0})},PREACT_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator7;var import_cli13=require("storybook/internal/cli"),import_cli14=require("storybook/internal/cli");var generator8=async(packageManager,npmOptions,options)=>{let extraPackages=await(0,import_cli13.detectLanguage)(packageManager)===import_cli14.SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===import_cli14.CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator8;var import_cli15=require("storybook/internal/cli"),import_cli16=require("storybook/internal/cli"),generator9=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await(0,import_cli15.getBabelDependencies)(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await(0,import_cli15.copyTemplateFiles)({packageManager,renderer:"react-native",language:import_cli16.SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"})},REACT_NATIVE_default=generator9;var import_promises3=require("fs/promises"),import_node_path5=require("path"),import_cli17=require("storybook/internal/cli");var generator10=async(packageManager,npmOptions,options)=>{let language=await(0,import_cli17.detectLanguage)(packageManager),extraPackages=["vite","react-native-web"];language===import_cli17.SupportedLanguage.JAVASCRIPT&&extraPackages.push("prop-types"),await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,extraAddons:["@storybook/addon-onboarding"]},"react-native-web-vite");let targetPath=await(0,import_cli17.cliStoriesTargetPath)(),cssFiles=(await(0,import_promises3.readdir)(targetPath)).filter(f=>f.endsWith(".css"));await Promise.all(cssFiles.map(f=>(0,import_promises3.rm)((0,import_node_path5.join)(targetPath,f))))},REACT_NATIVE_WEB_default=generator10;var import_node_fs2=require("fs"),import_node_path6=require("path"),import_cli18=require("storybook/internal/cli"),import_semver=__toESM(require("semver"),1),import_ts_dedent3=require("ts-dedent");var generator11=async(packageManager,npmOptions,options)=>{let monorepoRootPath=(0,import_node_path6.join)(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
61
61
  // add monorepo root as a valid directory to import modules from
62
62
  config.resolve.plugins.forEach((p) => {
63
63
  if (Array.isArray(p.appSrcs)) {
@@ -73,7 +73,7 @@
73
73
  Storybook 7.0+ doesn't support react-scripts@<5.0.0.
74
74
 
75
75
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
76
- `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path6.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator10;var import_cli19=require("storybook/internal/cli");var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator11;var import_cli20=require("storybook/internal/cli");var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli20.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator12;var import_cli21=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli21.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator13;var import_cli22=require("storybook/internal/cli");var generator14=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli22.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator14;var import_cli23=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli23.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator15;var import_cli24=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator16;var import_cli25=require("storybook/internal/cli");var generator17=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli25.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator17;var import_node_fs3=require("fs"),import_promises4=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger2.logger.plain(boxen(import_ts_dedent4.dedent`
76
+ `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path6.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator11;var import_cli19=require("storybook/internal/cli");var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator12;var import_cli20=require("storybook/internal/cli");var generator13=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli20.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator13;var import_cli21=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli21.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator14=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator14;var import_cli22=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli22.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator15;var import_cli23=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli23.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator16;var import_cli24=require("storybook/internal/cli");var generator17=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator17;var import_cli25=require("storybook/internal/cli");var generator18=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli25.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator18;var import_node_fs3=require("fs"),import_promises4=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger2.logger.plain(boxen(import_ts_dedent4.dedent`
77
77
  Would you like to generate a new project from the following list?
78
78
 
79
79
  ${import_picocolors.default.bold("Note:")}
@@ -85,7 +85,7 @@
85
85
  "${projectDisplayName}" project with ${import_picocolors.default.bold(packageManagerName)} created successfully!
86
86
 
87
87
  Continuing with Storybook installation...
88
- `,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli27.detectLanguage)(packageManager),pnp=await(0,import_cli27.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli26.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli26.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli26.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.REACT_NATIVE_WEB:return REACT_NATIVE_WEB_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli26.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli26.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli26.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli26.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli26.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli26.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli26.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli26.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli26.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli26.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli26.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli26.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli26.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli26.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli26.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
88
+ `,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli27.detectLanguage)(packageManager),pnp=await(0,import_cli27.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli26.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli26.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli26.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.REACT_NATIVE_WEB:return REACT_NATIVE_WEB_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli26.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli26.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli26.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli26.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli26.ProjectType.NUXT:return NUXT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Nuxt" app'));case import_cli26.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli26.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli26.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli26.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli26.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli26.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli26.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli26.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli26.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli26.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli26.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
89
89
  ${import_picocolors2.default.red(err.stack)}`),new import_common3.HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts2.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts2.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:import_cli26.installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger4.log(),logger4.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options){let{packageManager:pkgMgr}=options,packageManager=import_common3.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),currentVersion=import_common3.versions.storybook,isPrerelease=(0,import_semver3.prerelease)(currentVersion),isOutdated=(0,import_semver3.lt)(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_picocolors2.default.bold(currentVersion)} to your project..`,notLatest:import_picocolors2.default.red(import_ts_dedent5.dedent`
90
90
  This version is behind the latest release, which is: ${import_picocolors2.default.bold(latestVersion)}!
91
91
  You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
package/dist/bin/index.js CHANGED
@@ -1,4 +1,4 @@
1
- import { initiate } from '../chunk-5FJE5A4E.js';
1
+ import { initiate } from '../chunk-RWA5OK2L.js';
2
2
  import { versions } from 'storybook/internal/common';
3
3
  import { addToGlobalContext } from 'storybook/internal/telemetry';
4
4
  import { program } from 'commander';
@@ -32,8 +32,8 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
32
32
  `).map(line=>exec(line,columns,options)).join(`
33
33
  `)}__toESM(require_cli_boxes(),1);var NEWLINE=`
34
34
  `,PAD=" ",NONE="none",terminalColumns=()=>{let{env:env2,stdout,stderr}=process3;return stdout?.columns?stdout.columns:stderr?.columns?stderr.columns:env2.COLUMNS?Number.parseInt(env2.COLUMNS,10):80},getObject=detail=>typeof detail=="number"?{top:detail,right:detail*3,bottom:detail,left:detail*3}:{top:0,right:0,bottom:0,left:0,...detail},getBorderWidth=borderStyle=>borderStyle===NONE?0:2,getBorderChars=borderStyle=>{let sides=["topLeft","topRight","bottomRight","bottomLeft","left","right","top","bottom"],characters;if(borderStyle===NONE){borderStyle={};for(let side of sides)borderStyle[side]="";}if(typeof borderStyle=="string"){if(characters=import_cli_boxes.default[borderStyle],!characters)throw new TypeError(`Invalid border style: ${borderStyle}`)}else {typeof borderStyle?.vertical=="string"&&(borderStyle.left=borderStyle.vertical,borderStyle.right=borderStyle.vertical),typeof borderStyle?.horizontal=="string"&&(borderStyle.top=borderStyle.horizontal,borderStyle.bottom=borderStyle.horizontal);for(let side of sides)if(borderStyle[side]===null||typeof borderStyle[side]!="string")throw new TypeError(`Invalid border style: ${side}`);characters=borderStyle;}return characters},makeTitle=(text,horizontal,alignment)=>{let title="",textWidth=stringWidth(text);switch(alignment){case"left":{title=text+horizontal.slice(textWidth);break}case"right":{title=horizontal.slice(textWidth)+text;break}default:{horizontal=horizontal.slice(textWidth),horizontal.length%2===1?(horizontal=horizontal.slice(Math.floor(horizontal.length/2)),title=horizontal.slice(1)+text+horizontal):(horizontal=horizontal.slice(horizontal.length/2),title=horizontal+text+horizontal);break}}return title},makeContentText=(text,{padding,width,textAlignment,height})=>{text=(0, import_ansi_align.default)(text,{align:textAlignment});let lines=text.split(NEWLINE),textWidth=widestLine(text),max=width-padding.left-padding.right;if(textWidth>max){let newLines=[];for(let line of lines){let createdLines=wrapAnsi(line,max,{hard:!0}),alignedLinesArray=(0, import_ansi_align.default)(createdLines,{align:textAlignment}).split(`
35
- `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine);}}lines=newLines;}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth);}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth);}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&process3?.stdout){let newDimensions=[process3.stdout.columns,process3.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1]);}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier));}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right);}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_picocolors2=__toESM(require_picocolors(),1);var pathExists=async path=>stat(path).then(()=>!0).catch(()=>!1),sanitizeFramework=framework=>{let matches=framework.match(/(@storybook\/\w+(?:-\w+)*)|(storybook-(\w+(?:-\w+)*))/g);if(matches)return matches[0]};async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,prefixes=[],...custom}){let srcPath=resolve(storybookConfigFolder,"../src"),prefix=await pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language===SupportedLanguage.TYPESCRIPT_4_9||language===SupportedLanguage.TYPESCRIPT_3_8,mainConfigTemplate=dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
36
- export default config;`,frameworkPackage=sanitizeFramework(custom.framework?.name);frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'node:path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
35
+ `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine);}}lines=newLines;}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth);}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth);}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&process3?.stdout){let newDimensions=[process3.stdout.columns,process3.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1]);}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier));}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right);}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_picocolors2=__toESM(require_picocolors(),1);var pathExists=async path=>stat(path).then(()=>!0).catch(()=>!1);async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,frameworkPackage,prefixes=[],...custom}){let srcPath=resolve(storybookConfigFolder,"../src"),prefix=await pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language===SupportedLanguage.TYPESCRIPT_4_9||language===SupportedLanguage.TYPESCRIPT_3_8,mainConfigTemplate=dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
36
+ export default config;`;frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'node:path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
37
37
 
38
38
  `)}
39
39
 
@@ -58,14 +58,14 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
58
58
 
59
59
  export default preview;
60
60
  `.replace(`
61
- `,"").trim();try{let prettier=(await import('prettier')).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath});}catch{logger.verbose(`Failed to prettify ${previewPath}`);}await writeFile(previewPath,preview,{encoding:"utf8"});}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(versions[frameworkPackage])return frameworkPackage;throw new Error(dedent`
61
+ `,"").trim();try{let prettier=(await import('prettier')).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath});}catch{logger.verbose(`Failed to prettify ${previewPath}`);}await writeFile(previewPath,preview,{encoding:"utf8"});}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addPreviewFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook",installFrameworkPackages:!0},getBuilderDetails=builder=>{let map=versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(versions[frameworkPackage])return frameworkPackage;throw new Error(dedent`
62
62
  Could not find framework package: ${frameworkPackage}.
63
63
  Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook.
64
- `)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);invariant(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!versions[frameworkPackage],isKnownRenderer=!!versions[rendererPackage];if(isKnownFramework)return {packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return {packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>getPackageDetails(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs","react-native-web-vite"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await detectBuilder(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(dedent`
64
+ `)}return externalFramework.frameworks?.find(item=>item.match(new RegExp(`-${storybookBuilder}`)))??externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);invariant(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!versions[frameworkPackage],isKnownRenderer=!!versions[rendererPackage];if(isKnownFramework)return {packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,frameworkPackage,rendererId:renderer,type:"framework"};if(isKnownRenderer)return {packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>getPackageDetails(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?framework==="nuxt"?process.env.IN_STORYBOOK_SANDBOX!=="true":["angular","nextjs","react-native-web-vite"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await detectBuilder(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude,frameworkPackage}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addPreviewFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler,installFrameworkPackages}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(dedent`
65
65
  Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
66
66
 
67
67
  https://github.com/storybookjs/storybook/issues/18360
68
- `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has(getPackageDetails(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=ora({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await extractEslintInfo(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await configureEslintPlugin(eslintConfigFile??void 0,packageManager));}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=ora({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed();}if(await mkdir(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===SupportedLanguage.JAVASCRIPT?dedent`/**
68
+ `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...installFrameworkPackages?frameworkPackages:[],...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has(getPackageDetails(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=ora({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await extractEslintInfo(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await configureEslintPlugin(eslintConfigFile??void 0,packageManager));}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=ora({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed();}if((addMainFile||addPreviewFile)&&await mkdir(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===SupportedLanguage.JAVASCRIPT?dedent`/**
69
69
  * This function is used to resolve the absolute path of a package.
70
70
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
71
71
  */
@@ -77,7 +77,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
77
77
  */
78
78
  function getAbsolutePath(value: string): any {
79
79
  return dirname(require.resolve(join(value, 'package.json')))
80
- }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[join("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}});}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await copyTemplateFiles({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:join(getCliDir(),"rendererAssets","common")});}}function getCliDir(){return dirname(__require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();commandLog(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await promptForCompoDocs(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=join(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&copyTemplate(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember");},EMBER_default=generator2;var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},HTML_default=generator3;var generator4=async(packageManager,npmOptions,options)=>{let staticDir;existsSync(join(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs");},NEXTJS_default=generator4;var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},PREACT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik");},QWIK_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{let extraPackages=await detectLanguage(packageManager)===SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]});},REACT_default=generator7;var generator8=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await getBabelDependencies(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await copyTemplateFiles({packageManager,renderer:"react-native",language:SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"});},REACT_NATIVE_default=generator8;var generator9=async(packageManager,npmOptions,options)=>{let language=await detectLanguage(packageManager),extraPackages=["vite","react-native-web"];language===SupportedLanguage.JAVASCRIPT&&extraPackages.push("prop-types"),await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,extraAddons:["@storybook/addon-onboarding"]},"react-native-web-vite");let targetPath=await cliStoriesTargetPath(),cssFiles=(await readdir(targetPath)).filter(f=>f.endsWith(".css"));await Promise.all(cssFiles.map(f=>rm(join(targetPath,f))));},REACT_NATIVE_WEB_default=generator9;var generator10=async(packageManager,npmOptions,options)=>{let monorepoRootPath=join(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
80
+ }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},frameworkPackage,prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[join("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}});}if(addPreviewFile&&await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await copyTemplateFiles({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:join(getCliDir(),"rendererAssets","common")});}}function getCliDir(){return dirname(__require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();commandLog(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await promptForCompoDocs(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=join(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&copyTemplate(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember");},EMBER_default=generator2;var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},HTML_default=generator3;var generator4=async(packageManager,npmOptions,options)=>{let staticDir;existsSync(join(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs");},NEXTJS_default=generator4;var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraPackages:async()=>["@nuxtjs/storybook"],installFrameworkPackages:!1,componentsDestinationPath:"./components",extraMain:{stories:["../components/**/*.mdx","../components/**/*.stories.@(js|jsx|ts|tsx|mdx)"]}},"nuxt"),await packageManager.runPackageCommand("nuxi",["module","add","@nuxtjs/storybook","--skipInstall"]);},NUXT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},PREACT_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik");},QWIK_default=generator7;var generator8=async(packageManager,npmOptions,options)=>{let extraPackages=await detectLanguage(packageManager)===SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]});},REACT_default=generator8;var generator9=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await getBabelDependencies(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await copyTemplateFiles({packageManager,renderer:"react-native",language:SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"});},REACT_NATIVE_default=generator9;var generator10=async(packageManager,npmOptions,options)=>{let language=await detectLanguage(packageManager),extraPackages=["vite","react-native-web"];language===SupportedLanguage.JAVASCRIPT&&extraPackages.push("prop-types"),await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,extraAddons:["@storybook/addon-onboarding"]},"react-native-web-vite");let targetPath=await cliStoriesTargetPath(),cssFiles=(await readdir(targetPath)).filter(f=>f.endsWith(".css"));await Promise.all(cssFiles.map(f=>rm(join(targetPath,f))));},REACT_NATIVE_WEB_default=generator10;var generator11=async(packageManager,npmOptions,options)=>{let monorepoRootPath=join(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
81
81
  // add monorepo root as a valid directory to import modules from
82
82
  config.resolve.plugins.forEach((p) => {
83
83
  if (Array.isArray(p.appSrcs)) {
@@ -93,7 +93,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
93
93
  Storybook 7.0+ doesn't support react-scripts@<5.0.0.
94
94
 
95
95
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
96
- `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:existsSync(resolve("./public"))?"public":void 0,extraMain});},REACT_SCRIPTS_default=generator10;var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]});},SERVER_default=generator11;var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"solid",{},"solid");},SOLID_default=generator12;var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await getVersionSafe(packageManager,"svelte");try{let svelteMajor=major(svelteVersion??"");if(svelteMajor===4)return "4";if(svelteMajor===5)return "^5.0.0-next.0"}catch{}return ""},generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]});},SVELTE_default=generator13;var generator14=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit");},SVELTEKIT_default=generator14;var generator15=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},VUE3_default=generator15;var generator16=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator16;var generator17=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},WEBPACK_REACT_default=generator17;var import_picocolors=__toESM(require_picocolors(),1);var SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return "npm";case"pnpm":return "pnpm";default:return "yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return `${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);logger.plain(boxen(dedent`
96
+ `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:existsSync(resolve("./public"))?"public":void 0,extraMain});},REACT_SCRIPTS_default=generator11;var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]});},SERVER_default=generator12;var generator13=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"solid",{},"solid");},SOLID_default=generator13;var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await getVersionSafe(packageManager,"svelte");try{let svelteMajor=major(svelteVersion??"");if(svelteMajor===4)return "4";if(svelteMajor===5)return "^5.0.0-next.0"}catch{}return ""},generator14=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]});},SVELTE_default=generator14;var generator15=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit");},SVELTEKIT_default=generator15;var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},VUE3_default=generator16;var generator17=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator17;var generator18=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===CoreBuilder.Webpack5?"swc":void 0});},WEBPACK_REACT_default=generator18;var import_picocolors=__toESM(require_picocolors(),1);var SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return "npm";case"pnpm":return "pnpm";default:return "yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return `${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);logger.plain(boxen(dedent`
97
97
  Would you like to generate a new project from the following list?
98
98
 
99
99
  ${import_picocolors.default.bold("Note:")}
@@ -105,7 +105,7 @@ var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropD
105
105
  "${projectDisplayName}" project with ${import_picocolors.default.bold(packageManagerName)} created successfully!
106
106
 
107
107
  Continuing with Storybook installation...
108
- `,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),logger.line(1);},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=readdirSync(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));case ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" app'));case ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case ProjectType.REACT_NATIVE_WEB:return REACT_NATIVE_WEB_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Qwik" app'));case ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app'));case ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" library'));case ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Next" app'));case ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app'));case ProjectType.ANGULAR:return commandLog('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app'));case ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app'));case ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "web components" app'));case ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app'));case ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app'));case ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SvelteKit" app'));case ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Server" app'));case ProjectType.NX:throw new NxProjectDetectedError;case ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SolidJS" app'));case ProjectType.UNSUPPORTED:return paddedLog("We detected a project type that we don't support yet."),paddedLog("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return paddedLog(`We couldn't detect your project type. (code: ${projectType})`),paddedLog("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
108
+ `,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),logger.line(1);},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=readdirSync(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await detectLanguage(packageManager),pnp=await detectPnp(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Create React App" based project'));case ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" app'));case ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case ProjectType.REACT_NATIVE_WEB:return REACT_NATIVE_WEB_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React Native" app'));case ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Qwik" app'));case ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Webpack React" app'));case ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "React" library'));case ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Next" app'));case ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Vue 3" app'));case ProjectType.NUXT:return NUXT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Nuxt" app'));case ProjectType.ANGULAR:return commandLog('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Ember" app'));case ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "HTML" app'));case ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "web components" app'));case ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Preact" app'));case ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Svelte" app'));case ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SvelteKit" app'));case ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "Server" app'));case ProjectType.NX:throw new NxProjectDetectedError;case ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then(commandLog('Adding Storybook support to your "SolidJS" app'));case ProjectType.UNSUPPORTED:return paddedLog("We detected a project type that we don't support yet."),paddedLog("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return paddedLog(`We couldn't detect your project type. (code: ${projectType})`),paddedLog("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
109
109
  ${import_picocolors2.default.red(err.stack)}`),new HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await prompts2([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await prompts2([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger4.log(),logger4.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0);};async function doInitiate(options){let{packageManager:pkgMgr}=options,packageManager=JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),currentVersion=versions.storybook,isPrerelease=prerelease(currentVersion),isOutdated=lt(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_picocolors2.default.bold(currentVersion)} to your project..`,notLatest:import_picocolors2.default.red(dedent`
110
110
  This version is behind the latest release, which is: ${import_picocolors2.default.bold(latestVersion)}!
111
111
  You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
package/dist/index.cjs CHANGED
@@ -12,8 +12,8 @@
12
12
  `).map(line=>exec(line,columns,options)).join(`
13
13
  `)}var import_cli_boxes2=__toESM(require_cli_boxes(),1),NEWLINE=`
14
14
  `,PAD=" ",NONE="none",terminalColumns=()=>{let{env:env2,stdout,stderr}=import_node_process2.default;return stdout?.columns?stdout.columns:stderr?.columns?stderr.columns:env2.COLUMNS?Number.parseInt(env2.COLUMNS,10):80},getObject=detail=>typeof detail=="number"?{top:detail,right:detail*3,bottom:detail,left:detail*3}:{top:0,right:0,bottom:0,left:0,...detail},getBorderWidth=borderStyle=>borderStyle===NONE?0:2,getBorderChars=borderStyle=>{let sides=["topLeft","topRight","bottomRight","bottomLeft","left","right","top","bottom"],characters;if(borderStyle===NONE){borderStyle={};for(let side of sides)borderStyle[side]=""}if(typeof borderStyle=="string"){if(characters=import_cli_boxes.default[borderStyle],!characters)throw new TypeError(`Invalid border style: ${borderStyle}`)}else{typeof borderStyle?.vertical=="string"&&(borderStyle.left=borderStyle.vertical,borderStyle.right=borderStyle.vertical),typeof borderStyle?.horizontal=="string"&&(borderStyle.top=borderStyle.horizontal,borderStyle.bottom=borderStyle.horizontal);for(let side of sides)if(borderStyle[side]===null||typeof borderStyle[side]!="string")throw new TypeError(`Invalid border style: ${side}`);characters=borderStyle}return characters},makeTitle=(text,horizontal,alignment)=>{let title="",textWidth=stringWidth(text);switch(alignment){case"left":{title=text+horizontal.slice(textWidth);break}case"right":{title=horizontal.slice(textWidth)+text;break}default:{horizontal=horizontal.slice(textWidth),horizontal.length%2===1?(horizontal=horizontal.slice(Math.floor(horizontal.length/2)),title=horizontal.slice(1)+text+horizontal):(horizontal=horizontal.slice(horizontal.length/2),title=horizontal+text+horizontal);break}}return title},makeContentText=(text,{padding,width,textAlignment,height})=>{text=(0,import_ansi_align.default)(text,{align:textAlignment});let lines=text.split(NEWLINE),textWidth=widestLine(text),max=width-padding.left-padding.right;if(textWidth>max){let newLines=[];for(let line of lines){let createdLines=wrapAnsi(line,max,{hard:!0}),alignedLinesArray=(0,import_ansi_align.default)(createdLines,{align:textAlignment}).split(`
15
- `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine)}}lines=newLines}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth)}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&import_node_process2.default?.stdout){let newDimensions=[import_node_process2.default.stdout.columns,import_node_process2.default.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1])}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier))}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right)}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_find_up=__toESM(require("find-up"),1),import_picocolors2=__toESM(require_picocolors(),1),import_prompts2=__toESM(require("prompts"),1),import_semver3=require("semver"),import_ts_dedent5=require("ts-dedent");var import_node_path3=require("path"),import_cli6=require("storybook/internal/cli"),import_cli7=require("storybook/internal/cli"),import_cli8=require("storybook/internal/cli"),import_common2=require("storybook/internal/common");var import_promises2=require("fs/promises"),import_node_path2=require("path"),import_cli2=require("storybook/internal/cli"),import_cli3=require("storybook/internal/cli"),import_cli4=require("storybook/internal/cli"),import_cli5=require("storybook/internal/cli"),import_common=require("storybook/internal/common"),import_ora=__toESM(require("ora"),1),import_tiny_invariant=__toESM(require("tiny-invariant"),1),import_ts_dedent2=require("ts-dedent");var import_promises=require("fs/promises"),import_node_path=require("path"),import_cli=require("storybook/internal/cli"),import_node_logger=require("storybook/internal/node-logger"),import_ts_dedent=require("ts-dedent"),pathExists=async path=>(0,import_promises.stat)(path).then(()=>!0).catch(()=>!1),sanitizeFramework=framework=>{let matches=framework.match(/(@storybook\/\w+(?:-\w+)*)|(storybook-(\w+(?:-\w+)*))/g);if(matches)return matches[0]};async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,prefixes=[],...custom}){let srcPath=(0,import_node_path.resolve)(storybookConfigFolder,"../src"),prefix=await pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language===import_cli.SupportedLanguage.TYPESCRIPT_4_9||language===import_cli.SupportedLanguage.TYPESCRIPT_3_8,mainConfigTemplate=import_ts_dedent.dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
16
- export default config;`,frameworkPackage=sanitizeFramework(custom.framework?.name);frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),import_node_logger.logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'node:path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
15
+ `),longestLength=Math.max(...alignedLinesArray.map(s=>stringWidth(s)));for(let alignedLine of alignedLinesArray){let paddedLine;switch(textAlignment){case"center":{paddedLine=PAD.repeat((max-longestLength)/2)+alignedLine;break}case"right":{paddedLine=PAD.repeat(max-longestLength)+alignedLine;break}default:{paddedLine=alignedLine;break}}newLines.push(paddedLine)}}lines=newLines}textAlignment==="center"&&textWidth<max?lines=lines.map(line=>PAD.repeat((max-textWidth)/2)+line):textAlignment==="right"&&textWidth<max&&(lines=lines.map(line=>PAD.repeat(max-textWidth)+line));let paddingLeft=PAD.repeat(padding.left),paddingRight=PAD.repeat(padding.right);return lines=lines.map(line=>paddingLeft+line+paddingRight),lines=lines.map(line=>{if(width-stringWidth(line)>0)switch(textAlignment){case"center":return line+PAD.repeat(width-stringWidth(line));case"right":return line+PAD.repeat(width-stringWidth(line));default:return line+PAD.repeat(width-stringWidth(line))}return line}),padding.top>0&&(lines=[...Array.from({length:padding.top}).fill(PAD.repeat(width)),...lines]),padding.bottom>0&&(lines=[...lines,...Array.from({length:padding.bottom}).fill(PAD.repeat(width))]),height&&lines.length>height?lines=lines.slice(0,height):height&&lines.length<height&&(lines=[...lines,...Array.from({length:height-lines.length}).fill(PAD.repeat(width))]),lines.join(NEWLINE)},boxContent=(content,contentWidth,options)=>{let colorizeBorder=border=>{let newBorder=options.borderColor?getColorFn(options.borderColor)(border):border;return options.dimBorder?source_default.dim(newBorder):newBorder},colorizeContent=content2=>options.backgroundColor?getBGColorFn(options.backgroundColor)(content2):content2,chars=getBorderChars(options.borderStyle),columns=terminalColumns(),marginLeft=PAD.repeat(options.margin.left);if(options.float==="center"){let marginWidth=Math.max((columns-contentWidth-getBorderWidth(options.borderStyle))/2,0);marginLeft=PAD.repeat(marginWidth)}else if(options.float==="right"){let marginWidth=Math.max(columns-contentWidth-options.margin.right-getBorderWidth(options.borderStyle),0);marginLeft=PAD.repeat(marginWidth)}let result="";options.margin.top&&(result+=NEWLINE.repeat(options.margin.top)),(options.borderStyle!==NONE||options.title)&&(result+=colorizeBorder(marginLeft+chars.topLeft+(options.title?makeTitle(options.title,chars.top.repeat(contentWidth),options.titleAlignment):chars.top.repeat(contentWidth))+chars.topRight)+NEWLINE);let lines=content.split(NEWLINE);return result+=lines.map(line=>marginLeft+colorizeBorder(chars.left)+colorizeContent(line)+colorizeBorder(chars.right)).join(NEWLINE),options.borderStyle!==NONE&&(result+=NEWLINE+colorizeBorder(marginLeft+chars.bottomLeft+chars.bottom.repeat(contentWidth)+chars.bottomRight)),options.margin.bottom&&(result+=NEWLINE.repeat(options.margin.bottom)),result},sanitizeOptions=options=>{if(options.fullscreen&&import_node_process2.default?.stdout){let newDimensions=[import_node_process2.default.stdout.columns,import_node_process2.default.stdout.rows];typeof options.fullscreen=="function"&&(newDimensions=options.fullscreen(...newDimensions)),options.width||(options.width=newDimensions[0]),options.height||(options.height=newDimensions[1])}return options.width&&(options.width=Math.max(1,options.width-getBorderWidth(options.borderStyle))),options.height&&(options.height=Math.max(1,options.height-getBorderWidth(options.borderStyle))),options},formatTitle=(title,borderStyle)=>borderStyle===NONE?title:` ${title} `,determineDimensions=(text,options)=>{options=sanitizeOptions(options);let widthOverride=options.width!==void 0,columns=terminalColumns(),borderWidth=getBorderWidth(options.borderStyle),maxWidth=columns-options.margin.left-options.margin.right-borderWidth,widest=widestLine(wrapAnsi(text,columns-borderWidth,{hard:!0,trim:!1}))+options.padding.left+options.padding.right;if(options.title&&widthOverride?(options.title=options.title.slice(0,Math.max(0,options.width-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle))):options.title&&(options.title=options.title.slice(0,Math.max(0,maxWidth-2)),options.title&&(options.title=formatTitle(options.title,options.borderStyle),stringWidth(options.title)>widest&&(options.width=stringWidth(options.title)))),options.width=options.width?options.width:widest,!widthOverride){if(options.margin.left&&options.margin.right&&options.width>maxWidth){let multiplier=(columns-options.width-borderWidth)/(options.margin.left+options.margin.right);options.margin.left=Math.max(0,Math.floor(options.margin.left*multiplier)),options.margin.right=Math.max(0,Math.floor(options.margin.right*multiplier))}options.width=Math.min(options.width,columns-borderWidth-options.margin.left-options.margin.right)}return options.width-(options.padding.left+options.padding.right)<=0&&(options.padding.left=0,options.padding.right=0),options.height&&options.height-(options.padding.top+options.padding.bottom)<=0&&(options.padding.top=0,options.padding.bottom=0),options},isHex=color=>color.match(/^#(?:[0-f]{3}){1,2}$/i),isColorValid=color=>typeof color=="string"&&(source_default[color]??isHex(color)),getColorFn=color=>isHex(color)?source_default.hex(color):source_default[color],getBGColorFn=color=>isHex(color)?source_default.bgHex(color):source_default[camelCase(["bg",color])];function boxen(text,options){if(options={padding:0,borderStyle:"single",dimBorder:!1,textAlignment:"left",float:"left",titleAlignment:"left",...options},options.align&&(options.textAlignment=options.align),options.borderColor&&!isColorValid(options.borderColor))throw new Error(`${options.borderColor} is not a valid borderColor`);if(options.backgroundColor&&!isColorValid(options.backgroundColor))throw new Error(`${options.backgroundColor} is not a valid backgroundColor`);return options.padding=getObject(options.padding),options.margin=getObject(options.margin),options=determineDimensions(text,options),text=makeContentText(text,options),boxContent(text,options.width,options)}var import_find_up=__toESM(require("find-up"),1),import_picocolors2=__toESM(require_picocolors(),1),import_prompts2=__toESM(require("prompts"),1),import_semver3=require("semver"),import_ts_dedent5=require("ts-dedent");var import_node_path3=require("path"),import_cli6=require("storybook/internal/cli"),import_cli7=require("storybook/internal/cli"),import_cli8=require("storybook/internal/cli"),import_common2=require("storybook/internal/common");var import_promises2=require("fs/promises"),import_node_path2=require("path"),import_cli2=require("storybook/internal/cli"),import_cli3=require("storybook/internal/cli"),import_cli4=require("storybook/internal/cli"),import_cli5=require("storybook/internal/cli"),import_common=require("storybook/internal/common"),import_ora=__toESM(require("ora"),1),import_tiny_invariant=__toESM(require("tiny-invariant"),1),import_ts_dedent2=require("ts-dedent");var import_promises=require("fs/promises"),import_node_path=require("path"),import_cli=require("storybook/internal/cli"),import_node_logger=require("storybook/internal/node-logger"),import_ts_dedent=require("ts-dedent"),pathExists=async path=>(0,import_promises.stat)(path).then(()=>!0).catch(()=>!1);async function configureMain({addons,extensions=["js","jsx","mjs","ts","tsx"],storybookConfigFolder,language,frameworkPackage,prefixes=[],...custom}){let srcPath=(0,import_node_path.resolve)(storybookConfigFolder,"../src"),prefix=await pathExists(srcPath)?"../src":"../stories",config={stories:[`${prefix}/**/*.mdx`,`${prefix}/**/*.stories.@(${extensions.join("|")})`],addons,...custom},isTypescript=language===import_cli.SupportedLanguage.TYPESCRIPT_4_9||language===import_cli.SupportedLanguage.TYPESCRIPT_3_8,mainConfigTemplate=import_ts_dedent.dedent`<<import>><<prefix>>const config<<type>> = <<mainContents>>;
16
+ export default config;`;frameworkPackage||(mainConfigTemplate=mainConfigTemplate.replace("<<import>>","").replace("<<type>>",""),import_node_logger.logger.warn("Could not find framework package name"));let mainContents=JSON.stringify(config,null,2).replace(/['"]%%/g,"").replace(/%%['"]/g,""),imports=[],finalPrefixes=[...prefixes];custom.framework?.name.includes("path.dirname(")&&imports.push("import path from 'node:path';"),isTypescript?imports.push(`import type { StorybookConfig } from '${frameworkPackage}';`):finalPrefixes.push(`/** @type { import('${frameworkPackage}').StorybookConfig } */`);let mainJsContents=mainConfigTemplate.replace("<<import>>",`${imports.join(`
17
17
 
18
18
  `)}
19
19
 
@@ -38,14 +38,14 @@
38
38
 
39
39
  export default preview;
40
40
  `.replace(`
41
- `,"").trim();try{let prettier=(await import("prettier")).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath})}catch{import_node_logger.logger.verbose(`Failed to prettify ${previewPath}`)}await(0,import_promises.writeFile)(previewPath,preview,{encoding:"utf8"})}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook"},getBuilderDetails=builder=>{let map=import_common.versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>import_cli2.externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(import_common.versions[frameworkPackage])return frameworkPackage;throw new Error(import_ts_dedent2.dedent`
41
+ `,"").trim();try{let prettier=(await import("prettier")).default;preview=await prettier.format(preview,{...await prettier.resolveConfig(previewPath),filepath:previewPath})}catch{import_node_logger.logger.verbose(`Failed to prettify ${previewPath}`)}await(0,import_promises.writeFile)(previewPath,preview,{encoding:"utf8"})}var logger2=console,defaultOptions={extraPackages:[],extraAddons:[],staticDir:void 0,addScripts:!0,addMainFile:!0,addPreviewFile:!0,addComponents:!0,webpackCompiler:()=>{},extraMain:void 0,framework:void 0,extensions:void 0,componentsDestinationPath:void 0,storybookConfigFolder:".storybook",installFrameworkPackages:!0},getBuilderDetails=builder=>{let map=import_common.versions;if(map[builder])return builder;let builderPackage=`@storybook/${builder}`;return map[builderPackage]?builderPackage:builder},getExternalFramework=framework=>import_cli2.externalFrameworks.find(exFramework=>framework!==void 0&&(exFramework.name===framework||exFramework.packageName===framework||exFramework?.frameworks?.some?.(item=>item===framework))),getFrameworkPackage=(framework,renderer,builder)=>{let externalFramework=getExternalFramework(framework),storybookBuilder=builder?.replace(/^@storybook\/builder-/,""),storybookFramework=framework?.replace(/^@storybook\//,"");if(externalFramework===void 0){let frameworkPackage=framework?`@storybook/${storybookFramework}`:`@storybook/${renderer}-${storybookBuilder}`;if(import_common.versions[frameworkPackage])return frameworkPackage;throw new Error(import_ts_dedent2.dedent`
42
42
  Could not find framework package: ${frameworkPackage}.
43
43
  Make sure this package exists, and if it does, please file an issue as this might be a bug in Storybook.
44
- `)}return externalFramework.frameworks!==void 0?externalFramework.frameworks.find(item=>item.match(new RegExp(`-${storybookBuilder}`))):externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?["angular","nextjs","react-native-web-vite"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(import_ts_dedent2.dedent`
44
+ `)}return externalFramework.frameworks?.find(item=>item.match(new RegExp(`-${storybookBuilder}`)))??externalFramework.packageName},getRendererPackage=(framework,renderer)=>{let externalFramework=getExternalFramework(framework);return externalFramework!==void 0?externalFramework.renderer||externalFramework.packageName:`@storybook/${renderer}`},applyRequireWrapper=packageName=>`%%getAbsolutePath('${packageName}')%%`,getFrameworkDetails=(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames)=>{let frameworkPackage=getFrameworkPackage(framework,renderer,builder);(0,import_tiny_invariant.default)(frameworkPackage,"Missing framework package.");let frameworkPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(frameworkPackage):frameworkPackage,rendererPackage=getRendererPackage(framework,renderer),rendererPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(rendererPackage):rendererPackage,builderPackage=getBuilderDetails(builder),builderPackagePath=shouldApplyRequireWrapperOnPackageNames?applyRequireWrapper(builderPackage):builderPackage,isKnownFramework=!!getExternalFramework(frameworkPackage)||!!import_common.versions[frameworkPackage],isKnownRenderer=!!import_common.versions[rendererPackage];if(isKnownFramework)return{packages:[rendererPackage,frameworkPackage],framework:frameworkPackagePath,frameworkPackage,rendererId:renderer,type:"framework"};if(isKnownRenderer)return{packages:[rendererPackage,builderPackage],builder:builderPackagePath,renderer:rendererPackagePath,rendererId:renderer,type:"renderer"};throw new Error(`Could not find the framework (${frameworkPackage}) or renderer (${rendererPackage}) package`)},stripVersions=addons=>addons.map(addon=>(0,import_common.getPackageDetails)(addon)[0]),hasInteractiveStories=rendererId=>["react","angular","preact","svelte","vue3","html","solid","qwik"].includes(rendererId),hasFrameworkTemplates=framework=>framework?framework==="nuxt"?process.env.IN_STORYBOOK_SANDBOX!=="true":["angular","nextjs","react-native-web-vite"].includes(framework):!1;async function baseGenerator(packageManager,npmOptions,{language,builder,pnp,frameworkPreviewParts,projectType},renderer,options=defaultOptions,framework){let shouldApplyRequireWrapperOnPackageNames=packageManager.isStorybookInMonorepo()||pnp;builder||(builder=await(0,import_cli5.detectBuilder)(packageManager,projectType));let{packages:frameworkPackages,type,rendererId,framework:frameworkInclude,builder:builderInclude,frameworkPackage}=getFrameworkDetails(renderer,builder,pnp,language,framework,shouldApplyRequireWrapperOnPackageNames),{extraAddons:extraAddonPackages=[],extraPackages,staticDir,addScripts,addMainFile,addPreviewFile,addComponents,extraMain,extensions,storybookConfigFolder,componentsDestinationPath,webpackCompiler,installFrameworkPackages}={...defaultOptions,...options},compiler=webpackCompiler?webpackCompiler({builder}):void 0,extraAddonsToInstall=typeof extraAddonPackages=="function"?await extraAddonPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraAddonPackages;extraAddonsToInstall.push("@storybook/addon-essentials","@chromatic-com/storybook@^3");let addons=[...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...stripVersions(extraAddonsToInstall)].filter(Boolean),addonPackages=["@storybook/blocks",...compiler?[`@storybook/addon-webpack5-compiler-${compiler}`]:[],...extraAddonsToInstall].filter(Boolean);addonPackages.push("@storybook/test"),hasInteractiveStories(rendererId)&&(addons.push("@storybook/addon-interactions"),addonPackages.push("@storybook/addon-interactions"));let packageJson=await packageManager.retrievePackageJson(),installedDependencies=new Set(Object.keys({...packageJson.dependencies,...packageJson.devDependencies}));if(type==="renderer")throw new Error(import_ts_dedent2.dedent`
45
45
  Sorry, for now, you can not do this, please use a framework such as @storybook/react-webpack5
46
46
 
47
47
  https://github.com/storybookjs/storybook/issues/18360
48
- `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...frameworkPackages,...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has((0,import_common.getPackageDetails)(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=(0,import_ora.default)({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await(0,import_cli4.extractEslintInfo)(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await(0,import_cli4.configureEslintPlugin)(eslintConfigFile??void 0,packageManager))}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=(0,import_ora.default)({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed()}if(await(0,import_promises2.mkdir)(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===import_cli2.SupportedLanguage.JAVASCRIPT?import_ts_dedent2.dedent`/**
48
+ `);let extraPackagesToInstall=typeof extraPackages=="function"?await extraPackages({builder:builder||builderInclude,framework:framework||frameworkInclude}):extraPackages,allPackages=["storybook",getExternalFramework(rendererId)?void 0:`@storybook/${rendererId}`,...installFrameworkPackages?frameworkPackages:[],...addonPackages,...extraPackagesToInstall||[]].filter(Boolean),packages=[...new Set(allPackages)].filter(packageToInstall=>!installedDependencies.has((0,import_common.getPackageDetails)(packageToInstall)[0]));logger2.log();let versionedPackagesSpinner=(0,import_ora.default)({indent:2,text:`Getting the correct version of ${packages.length} packages`}).start(),versionedPackages=await packageManager.getVersionedPackages(packages);versionedPackagesSpinner.succeed();try{if(process.env.CI!=="true"){let{hasEslint,isStorybookPluginInstalled,eslintConfigFile}=await(0,import_cli4.extractEslintInfo)(packageManager);hasEslint&&!isStorybookPluginInstalled&&(versionedPackages.push("eslint-plugin-storybook"),await(0,import_cli4.configureEslintPlugin)(eslintConfigFile??void 0,packageManager))}}catch{}if(versionedPackages.length>0){let addDependenciesSpinner=(0,import_ora.default)({indent:2,text:"Installing Storybook dependencies"}).start();await packageManager.addDependencies({...npmOptions,packageJson},versionedPackages),addDependenciesSpinner.succeed()}if((addMainFile||addPreviewFile)&&await(0,import_promises2.mkdir)(`./${storybookConfigFolder}`,{recursive:!0}),addMainFile){let prefixes=shouldApplyRequireWrapperOnPackageNames?['import { join, dirname } from "path"',language===import_cli2.SupportedLanguage.JAVASCRIPT?import_ts_dedent2.dedent`/**
49
49
  * This function is used to resolve the absolute path of a package.
50
50
  * It is needed in projects that use Yarn PnP or are set up within a monorepo.
51
51
  */
@@ -57,7 +57,7 @@
57
57
  */
58
58
  function getAbsolutePath(value: string): any {
59
59
  return dirname(require.resolve(join(value, 'package.json')))
60
- }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[(0,import_node_path2.join)("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await(0,import_cli3.copyTemplateFiles)({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:(0,import_node_path2.join)(getCliDir(),"rendererAssets","common")})}}function getCliDir(){return(0,import_node_path2.dirname)(require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new import_cli7.AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_common2.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await(0,import_cli7.promptForCompoDocs)(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli6.CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:import_cli7.compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_node_path3.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&(0,import_cli8.copyTemplate)(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var import_cli9=require("storybook/internal/cli");var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli9.CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var import_cli10=require("storybook/internal/cli");var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===import_cli10.CoreBuilder.Webpack5?"swc":void 0})},HTML_default=generator3;var import_node_fs=require("fs"),import_node_path4=require("path"),import_cli11=require("storybook/internal/cli");var generator4=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_node_fs.existsSync)((0,import_node_path4.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli11.CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator4;var import_cli12=require("storybook/internal/cli");var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===import_cli12.CoreBuilder.Webpack5?"swc":void 0})},PREACT_default=generator5;var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator6;var import_cli13=require("storybook/internal/cli"),import_cli14=require("storybook/internal/cli");var generator7=async(packageManager,npmOptions,options)=>{let extraPackages=await(0,import_cli13.detectLanguage)(packageManager)===import_cli14.SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===import_cli14.CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator7;var import_cli15=require("storybook/internal/cli"),import_cli16=require("storybook/internal/cli"),generator8=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await(0,import_cli15.getBabelDependencies)(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await(0,import_cli15.copyTemplateFiles)({packageManager,renderer:"react-native",language:import_cli16.SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"})},REACT_NATIVE_default=generator8;var import_promises3=require("fs/promises"),import_node_path5=require("path"),import_cli17=require("storybook/internal/cli");var generator9=async(packageManager,npmOptions,options)=>{let language=await(0,import_cli17.detectLanguage)(packageManager),extraPackages=["vite","react-native-web"];language===import_cli17.SupportedLanguage.JAVASCRIPT&&extraPackages.push("prop-types"),await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,extraAddons:["@storybook/addon-onboarding"]},"react-native-web-vite");let targetPath=await(0,import_cli17.cliStoriesTargetPath)(),cssFiles=(await(0,import_promises3.readdir)(targetPath)).filter(f=>f.endsWith(".css"));await Promise.all(cssFiles.map(f=>(0,import_promises3.rm)((0,import_node_path5.join)(targetPath,f))))},REACT_NATIVE_WEB_default=generator9;var import_node_fs2=require("fs"),import_node_path6=require("path"),import_cli18=require("storybook/internal/cli"),import_semver=__toESM(require("semver"),1),import_ts_dedent3=require("ts-dedent");var generator10=async(packageManager,npmOptions,options)=>{let monorepoRootPath=(0,import_node_path6.join)(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
60
+ }`]:[];await configureMain({framework:{name:frameworkInclude,options:options.framework||{}},frameworkPackage,prefixes,storybookConfigFolder,addons:shouldApplyRequireWrapperOnPackageNames?addons.map(addon=>applyRequireWrapper(addon)):addons,extensions,language,...staticDir?{staticDirs:[(0,import_node_path2.join)("..",staticDir)]}:null,...extraMain,...type!=="framework"?{core:{builder:builderInclude}}:{}})}if(addPreviewFile&&await configurePreview({frameworkPreviewParts,storybookConfigFolder,language,rendererId}),addScripts&&await packageManager.addStorybookCommandInScripts({port:6006}),addComponents){let templateLocation=hasFrameworkTemplates(framework)?framework:rendererId;if(!templateLocation)throw new Error(`Could not find template location for ${framework} or ${rendererId}`);await(0,import_cli3.copyTemplateFiles)({renderer:templateLocation,packageManager,language,destination:componentsDestinationPath,commonAssetsDir:(0,import_node_path2.join)(getCliDir(),"rendererAssets","common")})}}function getCliDir(){return(0,import_node_path2.dirname)(require.resolve("create-storybook/package.json"))}var generator=async(packageManager,npmOptions,options,commandOptions)=>{let angularJSON=new import_cli7.AngularJSON;if(!angularJSON.projects||angularJSON.projects&&Object.keys(angularJSON.projects).length===0)throw new Error("Storybook was not able to find any projects in your angular.json file. Are you sure this is an Angular CLI project?");if(angularJSON.projectsWithoutStorybook.length===0)throw new Error("Every project in your workspace is already set up with Storybook. There is nothing to do!");let angularProjectName=await angularJSON.getProjectName();(0,import_common2.commandLog)(`Adding Storybook support to your "${angularProjectName}" project`);let angularProject=angularJSON.getProjectSettingsByName(angularProjectName);if(!angularProject)throw new Error(`Somehow we were not able to retrieve the "${angularProjectName}" project in your angular.json file. This is likely a bug in Storybook, please file an issue.`);let{root,projectType}=angularProject,{projects}=angularJSON,useCompodoc=commandOptions?.yes?!0:await(0,import_cli7.promptForCompoDocs)(),storybookFolder=root?`${root}/.storybook`:".storybook";angularJSON.addStorybookEntries({angularProjectName,storybookFolder,useCompodoc,root}),angularJSON.write(),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli6.CoreBuilder.Webpack5,...useCompodoc&&{frameworkPreviewParts:{prefix:import_cli7.compoDocPreviewPrefix}}},"angular",{extraAddons:["@storybook/addon-onboarding"],...useCompodoc&&{extraPackages:["@compodoc/compodoc","@storybook/addon-docs"]},addScripts:!1,componentsDestinationPath:root?`${root}/src/stories`:void 0,storybookConfigFolder:storybookFolder,webpackCompiler:()=>{}},"angular"),Object.keys(projects).length===1&&packageManager.addScripts({storybook:`ng run ${angularProjectName}:storybook`,"build-storybook":`ng run ${angularProjectName}:build-storybook`});let projectTypeValue=projectType||"application";projectTypeValue!=="application"&&projectTypeValue!=="library"&&(projectTypeValue="application");let templateDir=(0,import_node_path3.join)(getCliDir(),"templates","angular",projectTypeValue);return templateDir&&(0,import_cli8.copyTemplate)(templateDir,root||void 0),{projectName:angularProjectName,configDir:storybookFolder}},ANGULAR_default=generator;var import_cli9=require("storybook/internal/cli");var generator2=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli9.CoreBuilder.Webpack5},"ember",{staticDir:"dist"},"ember")},EMBER_default=generator2;var import_cli10=require("storybook/internal/cli");var generator3=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"html",{webpackCompiler:({builder})=>builder===import_cli10.CoreBuilder.Webpack5?"swc":void 0})},HTML_default=generator3;var import_node_fs=require("fs"),import_node_path4=require("path"),import_cli11=require("storybook/internal/cli");var generator4=async(packageManager,npmOptions,options)=>{let staticDir;(0,import_node_fs.existsSync)((0,import_node_path4.join)(process.cwd(),"public"))&&(staticDir="public"),await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli11.CoreBuilder.Webpack5},"react",{staticDir,extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>{}},"nextjs")},NEXTJS_default=generator4;var generator5=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraPackages:async()=>["@nuxtjs/storybook"],installFrameworkPackages:!1,componentsDestinationPath:"./components",extraMain:{stories:["../components/**/*.mdx","../components/**/*.stories.@(js|jsx|ts|tsx|mdx)"]}},"nuxt"),await packageManager.runPackageCommand("nuxi",["module","add","@nuxtjs/storybook","--skipInstall"])},NUXT_default=generator5;var import_cli12=require("storybook/internal/cli");var generator6=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"preact",{webpackCompiler:({builder})=>builder===import_cli12.CoreBuilder.Webpack5?"swc":void 0})},PREACT_default=generator6;var generator7=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"qwik",{},"qwik")},QWIK_default=generator7;var import_cli13=require("storybook/internal/cli"),import_cli14=require("storybook/internal/cli");var generator8=async(packageManager,npmOptions,options)=>{let extraPackages=await(0,import_cli13.detectLanguage)(packageManager)===import_cli14.SupportedLanguage.JAVASCRIPT?["prop-types"]:[];await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,webpackCompiler:({builder})=>builder===import_cli14.CoreBuilder.Webpack5?"swc":void 0,extraAddons:["@storybook/addon-onboarding"]})},REACT_default=generator8;var import_cli15=require("storybook/internal/cli"),import_cli16=require("storybook/internal/cli"),generator9=async(packageManager,npmOptions)=>{let packageJson=await packageManager.retrievePackageJson(),missingReactDom=!packageJson.dependencies["react-dom"]&&!packageJson.devDependencies["react-dom"],reactVersion=packageJson.dependencies.react,packagesToResolve=[...["react-native-safe-area-context","@react-native-async-storage/async-storage","@react-native-community/datetimepicker","@react-native-community/slider","react-native-reanimated","react-native-gesture-handler","@gorhom/bottom-sheet","react-native-svg"].filter(dep=>!packageJson.dependencies[dep]&&!packageJson.devDependencies[dep]),"@storybook/addon-ondevice-controls","@storybook/addon-ondevice-actions","@storybook/react-native"],packagesWithFixedVersion=[],versionedPackages=await packageManager.getVersionedPackages(packagesToResolve),babelDependencies=await(0,import_cli15.getBabelDependencies)(packageManager,packageJson),packages=[];packages.push(...babelDependencies),packages.push(...packagesWithFixedVersion),packages.push(...versionedPackages),missingReactDom&&reactVersion&&packages.push(`react-dom@${reactVersion}`),await packageManager.addDependencies({...npmOptions,packageJson},packages),packageManager.addScripts({"storybook-generate":"sb-rn-get-stories"}),await(0,import_cli15.copyTemplateFiles)({packageManager,renderer:"react-native",language:import_cli16.SupportedLanguage.TYPESCRIPT_4_9,destination:".storybook"})},REACT_NATIVE_default=generator9;var import_promises3=require("fs/promises"),import_node_path5=require("path"),import_cli17=require("storybook/internal/cli");var generator10=async(packageManager,npmOptions,options)=>{let language=await(0,import_cli17.detectLanguage)(packageManager),extraPackages=["vite","react-native-web"];language===import_cli17.SupportedLanguage.JAVASCRIPT&&extraPackages.push("prop-types"),await baseGenerator(packageManager,npmOptions,options,"react",{extraPackages,extraAddons:["@storybook/addon-onboarding"]},"react-native-web-vite");let targetPath=await(0,import_cli17.cliStoriesTargetPath)(),cssFiles=(await(0,import_promises3.readdir)(targetPath)).filter(f=>f.endsWith(".css"));await Promise.all(cssFiles.map(f=>(0,import_promises3.rm)((0,import_node_path5.join)(targetPath,f))))},REACT_NATIVE_WEB_default=generator10;var import_node_fs2=require("fs"),import_node_path6=require("path"),import_cli18=require("storybook/internal/cli"),import_semver=__toESM(require("semver"),1),import_ts_dedent3=require("ts-dedent");var generator11=async(packageManager,npmOptions,options)=>{let monorepoRootPath=(0,import_node_path6.join)(__dirname,"..","..","..","..","..",".."),extraMain=options.linkable?{webpackFinal:`%%(config) => {
61
61
  // add monorepo root as a valid directory to import modules from
62
62
  config.resolve.plugins.forEach((p) => {
63
63
  if (Array.isArray(p.appSrcs)) {
@@ -73,7 +73,7 @@
73
73
  Storybook 7.0+ doesn't support react-scripts@<5.0.0.
74
74
 
75
75
  https://github.com/storybookjs/storybook/blob/next/MIGRATION.md#create-react-app-dropped-cra4-support
76
- `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path6.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator10;var import_cli19=require("storybook/internal/cli");var generator11=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator11;var import_cli20=require("storybook/internal/cli");var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli20.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator12;var import_cli21=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli21.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator13=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator13;var import_cli22=require("storybook/internal/cli");var generator14=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli22.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator14;var import_cli23=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli23.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator15;var import_cli24=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator16;var import_cli25=require("storybook/internal/cli");var generator17=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli25.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator17;var import_node_fs3=require("fs"),import_promises4=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger2.logger.plain(boxen(import_ts_dedent4.dedent`
76
+ `);let extraPackages=[];extraPackages.push("webpack"),extraPackages.push("prop-types");let extraAddons=["@storybook/preset-create-react-app","@storybook/addon-onboarding"];await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli18.CoreBuilder.Webpack5},"react",{webpackCompiler:()=>{},extraAddons,extraPackages,staticDir:(0,import_node_fs2.existsSync)((0,import_node_path6.resolve)("./public"))?"public":void 0,extraMain})},REACT_SCRIPTS_default=generator11;var import_cli19=require("storybook/internal/cli");var generator12=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli19.CoreBuilder.Webpack5},"server",{webpackCompiler:()=>"swc",extensions:["json","yaml","yml"]})},SERVER_default=generator12;var import_cli20=require("storybook/internal/cli");var generator13=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli20.CoreBuilder.Vite},"solid",{},"solid")},SOLID_default=generator13;var import_cli21=require("storybook/internal/cli"),import_semver2=require("semver");var getAddonSvelteCsfVersion=async packageManager=>{let svelteVersion=await(0,import_cli21.getVersionSafe)(packageManager,"svelte");try{let svelteMajor=(0,import_semver2.major)(svelteVersion??"");if(svelteMajor===4)return"4";if(svelteMajor===5)return"^5.0.0-next.0"}catch{}return""},generator14=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,options,"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]})},SVELTE_default=generator14;var import_cli22=require("storybook/internal/cli");var generator15=async(packageManager,npmOptions,options)=>{let addonSvelteCsfVersion=await getAddonSvelteCsfVersion(packageManager);await baseGenerator(packageManager,npmOptions,{...options,builder:import_cli22.CoreBuilder.Vite},"svelte",{extensions:["js","ts","svelte"],extraAddons:[`@storybook/addon-svelte-csf${addonSvelteCsfVersion&&`@${addonSvelteCsfVersion}`}`]},"sveltekit")},SVELTEKIT_default=generator15;var import_cli23=require("storybook/internal/cli");var generator16=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"vue3",{extraAddons:["@storybook/addon-onboarding"],extraPackages:async({builder})=>builder===import_cli23.CoreBuilder.Webpack5?["vue-loader@^17.0.0","@vue/compiler-sfc@^3.2.0"]:[],webpackCompiler:({builder})=>builder===import_cli23.CoreBuilder.Webpack5?"swc":void 0})},VUE3_default=generator16;var import_cli24=require("storybook/internal/cli");var generator17=async(packageManager,npmOptions,options)=>baseGenerator(packageManager,npmOptions,options,"web-components",{extraPackages:["lit"],webpackCompiler:({builder})=>builder===import_cli24.CoreBuilder.Webpack5?"swc":void 0}),WEB_COMPONENTS_default=generator17;var import_cli25=require("storybook/internal/cli");var generator18=async(packageManager,npmOptions,options)=>{await baseGenerator(packageManager,npmOptions,options,"react",{extraAddons:["@storybook/addon-onboarding"],webpackCompiler:({builder})=>builder===import_cli25.CoreBuilder.Webpack5?"swc":void 0})},WEBPACK_REACT_default=generator18;var import_node_fs3=require("fs"),import_promises4=require("fs/promises"),import_node_logger2=require("storybook/internal/node-logger"),import_server_errors=require("storybook/internal/server-errors"),import_telemetry=require("storybook/internal/telemetry");var import_execa=__toESM(require("execa"),1),import_picocolors=__toESM(require_picocolors(),1),import_prompts=__toESM(require("prompts"),1),import_ts_dedent4=require("ts-dedent"),SUPPORTED_PROJECTS={"react-vite-ts":{displayName:{type:"React",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template react-ts",yarn:"yarn create vite@latest . --template react-ts",pnpm:"pnpm create vite@latest . --template react-ts"}},"nextjs-ts":{displayName:{type:"Next.js",language:"TS"},createScript:{npm:'npm create next-app@^14 . -- --typescript --use-npm --eslint --tailwind --no-app --import-alias="@/*" --src-dir',yarn:'npx create-next-app@^14 . --typescript --use-yarn --eslint --tailwind --no-app --import-alias="@/*" --src-dir',pnpm:'pnpm create next-app^14 . --typescript --use-pnpm --eslint --tailwind --no-app --import-alias="@/*" --src-dir'}},"vue-vite-ts":{displayName:{type:"Vue 3",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template vue-ts",yarn:"yarn create vite@latest . --template vue-ts",pnpm:"pnpm create vite@latest . --template vue-ts"}},"angular-cli":{displayName:{type:"Angular",language:"TS"},createScript:{npm:"npx -p @angular/cli@latest ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --skip-install",yarn:"yarn dlx -p @angular/cli ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=yarn --skip-install && touch yarn.lock && yarn set version berry && yarn config set nodeLinker node-modules",pnpm:"pnpm --package @angular/cli dlx ng new angular-latest --directory . --routing=true --minimal=true --style=scss --strict --skip-git --package-manager=pnpm --skip-install"}},"lit-vite-ts":{displayName:{type:"Lit",builder:"Vite",language:"TS"},createScript:{npm:"npm create vite@latest . -- --template lit-ts",yarn:"yarn create vite@latest . --template lit-ts && touch yarn.lock && yarn set version berry && yarn config set nodeLinker pnp",pnpm:"pnpm create vite@latest . --template lit-ts"}}},packageManagerToCoercedName=packageManager=>{switch(packageManager){case"npm":return"npm";case"pnpm":return"pnpm";default:return"yarn"}},buildProjectDisplayNameForPrint=({displayName})=>{let{type,builder,language}=displayName;return`${import_picocolors.default.bold(import_picocolors.default.blue(type))} ${builder?`+ ${builder} `:""}(${language})`},scaffoldNewProject=async(packageManager,{disableTelemetry})=>{let packageManagerName=packageManagerToCoercedName(packageManager);import_node_logger2.logger.plain(boxen(import_ts_dedent4.dedent`
77
77
  Would you like to generate a new project from the following list?
78
78
 
79
79
  ${import_picocolors.default.bold("Note:")}
@@ -85,7 +85,7 @@
85
85
  "${projectDisplayName}" project with ${import_picocolors.default.bold(packageManagerName)} created successfully!
86
86
 
87
87
  Continuing with Storybook installation...
88
- `,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli27.detectLanguage)(packageManager),pnp=await(0,import_cli27.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli26.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli26.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli26.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.REACT_NATIVE_WEB:return REACT_NATIVE_WEB_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli26.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli26.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli26.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli26.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli26.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli26.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli26.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli26.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli26.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli26.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli26.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli26.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli26.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli26.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli26.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
88
+ `,{title:import_picocolors.default.bold("\u2705 Success!"),padding:1,borderStyle:"double",borderColor:"green"})),import_node_logger2.logger.line(1)},BASE_IGNORED_FILES=[".git",".gitignore",".DS_Store",".cache"],IGNORED_FILES_BY_PACKAGE_MANAGER={npm:[...BASE_IGNORED_FILES],yarn:[...BASE_IGNORED_FILES,".yarnrc.yml",".yarn"],pnpm:[...BASE_IGNORED_FILES]},currentDirectoryIsEmpty=packageManager=>{let packageManagerName=packageManagerToCoercedName(packageManager),cwdFolderEntries=(0,import_node_fs3.readdirSync)(process.cwd()),filesToIgnore=IGNORED_FILES_BY_PACKAGE_MANAGER[packageManagerName];return cwdFolderEntries.length===0||cwdFolderEntries.every(entry=>filesToIgnore.includes(entry))};var logger4=console,installStorybook=async(projectType,packageManager,options)=>{let npmOptions={installAsDevDependencies:!0,skipInstall:options.skipInstall},language=await(0,import_cli27.detectLanguage)(packageManager),pnp=await(0,import_cli27.detectPnp)(),generatorOptions={language,builder:options.builder,linkable:!!options.linkable,pnp:pnp||options.usePnp,yes:options.yes,projectType},runGenerator=async()=>{switch(projectType){case import_cli26.ProjectType.REACT_SCRIPTS:return REACT_SCRIPTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Create React App" based project'));case import_cli26.ProjectType.REACT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" app'));case import_cli26.ProjectType.REACT_NATIVE:return REACT_NATIVE_default(packageManager,npmOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.REACT_NATIVE_WEB:return REACT_NATIVE_WEB_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React Native" app'));case import_cli26.ProjectType.QWIK:return QWIK_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Qwik" app'));case import_cli26.ProjectType.WEBPACK_REACT:return WEBPACK_REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Webpack React" app'));case import_cli26.ProjectType.REACT_PROJECT:return REACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "React" library'));case import_cli26.ProjectType.NEXTJS:return NEXTJS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Next" app'));case import_cli26.ProjectType.VUE3:return VUE3_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Vue 3" app'));case import_cli26.ProjectType.NUXT:return NUXT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Nuxt" app'));case import_cli26.ProjectType.ANGULAR:return(0,import_common3.commandLog)('Adding Storybook support to your "Angular" app'),ANGULAR_default(packageManager,npmOptions,generatorOptions,options);case import_cli26.ProjectType.EMBER:return EMBER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Ember" app'));case import_cli26.ProjectType.HTML:return HTML_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "HTML" app'));case import_cli26.ProjectType.WEB_COMPONENTS:return WEB_COMPONENTS_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "web components" app'));case import_cli26.ProjectType.PREACT:return PREACT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Preact" app'));case import_cli26.ProjectType.SVELTE:return SVELTE_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Svelte" app'));case import_cli26.ProjectType.SVELTEKIT:return SVELTEKIT_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SvelteKit" app'));case import_cli26.ProjectType.SERVER:return SERVER_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "Server" app'));case import_cli26.ProjectType.NX:throw new import_server_errors2.NxProjectDetectedError;case import_cli26.ProjectType.SOLID:return SOLID_default(packageManager,npmOptions,generatorOptions).then((0,import_common3.commandLog)('Adding Storybook support to your "SolidJS" app'));case import_cli26.ProjectType.UNSUPPORTED:return(0,import_common3.paddedLog)("We detected a project type that we don't support yet."),(0,import_common3.paddedLog)("If you'd like your framework to be supported, please let use know about it at https://github.com/storybookjs/storybook/issues"),logger4.log(),Promise.resolve();default:return(0,import_common3.paddedLog)(`We couldn't detect your project type. (code: ${projectType})`),(0,import_common3.paddedLog)("You can specify a project type explicitly via `storybook init --type <type>`, see our docs on how to configure Storybook for your framework: https://storybook.js.org/docs/get-started/install"),logger4.log(),projectTypeInquirer(options,packageManager)}};try{return await runGenerator()}catch(err){throw err?.message!=="Canceled by the user"&&err?.stack&&logger4.error(`
89
89
  ${import_picocolors2.default.red(err.stack)}`),new import_common3.HandledError(err)}},projectTypeInquirer=async(options,packageManager)=>{let manualAnswer=options.yes?!0:await(0,import_prompts2.default)([{type:"confirm",name:"manual",message:"Do you want to manually choose a Storybook project type to install?"}]);if(manualAnswer!==!0&&manualAnswer.manual){let{manualFramework}=await(0,import_prompts2.default)([{type:"select",name:"manualFramework",message:"Please choose a project type from the following list:",choices:import_cli26.installableProjectTypes.map(type=>({title:type,value:type.toUpperCase()}))}]);if(manualFramework)return installStorybook(manualFramework,packageManager,options)}logger4.log(),logger4.log("For more information about installing Storybook: https://storybook.js.org/docs"),process.exit(0)};async function doInitiate(options){let{packageManager:pkgMgr}=options,packageManager=import_common3.JsPackageManagerFactory.getPackageManager({force:pkgMgr}),latestVersion=await packageManager.latestVersion("storybook"),currentVersion=import_common3.versions.storybook,isPrerelease=(0,import_semver3.prerelease)(currentVersion),isOutdated=(0,import_semver3.lt)(currentVersion,latestVersion),borderColor=isOutdated?"#FC521F":"#F1618C",messages={welcome:`Adding Storybook version ${import_picocolors2.default.bold(currentVersion)} to your project..`,notLatest:import_picocolors2.default.red(import_ts_dedent5.dedent`
90
90
  This version is behind the latest release, which is: ${import_picocolors2.default.bold(latestVersion)}!
91
91
  You likely ran the init command through npx, which can use a locally cached version, to get the latest please run:
package/dist/index.js CHANGED
@@ -1 +1 @@
1
- export { doInitiate as initiate } from './chunk-5FJE5A4E.js';
1
+ export { doInitiate as initiate } from './chunk-RWA5OK2L.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-storybook",
3
- "version": "8.5.0-beta.3",
3
+ "version": "8.5.0-beta.4",
4
4
  "description": "Initialize Storybook into your project",
5
5
  "homepage": "https://github.com/storybookjs/storybook/tree/next/code/lib/create-storybook",
6
6
  "bugs": {
@@ -64,7 +64,7 @@
64
64
  "prettier": "^3.1.1",
65
65
  "prompts": "^2.4.0",
66
66
  "semver": "^7.3.7",
67
- "storybook": "8.5.0-beta.3",
67
+ "storybook": "8.5.0-beta.4",
68
68
  "tiny-invariant": "^1.3.1",
69
69
  "ts-dedent": "^2.0.0"
70
70
  },