create-storybook 0.0.0-pr-30031-sha-5acb6e15 → 0.0.0-pr-28607-sha-54ec63fe

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -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": "0.0.0-pr-30031-sha-5acb6e15",
3
+ "version": "0.0.0-pr-28607-sha-54ec63fe",
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": "0.0.0-pr-30031-sha-5acb6e15",
67
+ "storybook": "0.0.0-pr-28607-sha-54ec63fe",
68
68
  "tiny-invariant": "^1.3.1",
69
69
  "ts-dedent": "^2.0.0"
70
70
  },