@@ -9,7 +9,10 @@ import { getNodeModuleDir } from './get-node-module-dir.js';
99
1010export const PREBUNDLED_MODULES_DIR = normalize ( 'node_modules/.prebundled_modules' ) ;
1111
12- export function rollupPluginPrebundleModules ( env : Record < string , string > ) : Plugin {
12+ export function rollupPluginPrebundleModules (
13+ env : Record < string , string > ,
14+ options : Options ,
15+ ) : Plugin {
1316 const modulePaths : Record < string , string > = { } ;
1417
1518 return {
@@ -39,7 +42,7 @@ export function rollupPluginPrebundleModules(env: Record<string, string>): Plugi
3942 alias : {
4043 /* for @storybook/addon-docs */
4144 ...( moduleExists ( '@storybook/react-dom-shim' ) && {
42- '@storybook/react-dom-shim' : await getReactDomShimAlias ( ) ,
45+ '@storybook/react-dom-shim' : await getReactDomShimAlias ( options ) ,
4346 } ) ,
4447 } ,
4548 external : [ ...modules ] ,
@@ -94,20 +97,16 @@ export const CANDIDATES = [
9497 * Get react-dom version from the resolvedReact preset, which points to either a root react-dom
9598 * dependency or the react-dom dependency shipped with addon-docs
9699 */
97- // async function getIsReactVersion18or19(options: Options) {
98- async function getIsReactVersion18or19 ( ) {
99- // TODO(storybook): find a solution to have "options" here and fix the implementation
100+ async function getIsReactVersion18or19 ( options : Options ) {
101+ const { legacyRootApi } =
102+ ( await options . presets . apply < { legacyRootApi ?: boolean } | null > ( 'frameworkOptions' ) ) || { } ;
100103
101- // const { legacyRootApi } =
102- // (await options.presets.apply<{ legacyRootApi?: boolean } | null>('frameworkOptions')) || {};
103-
104- // if (legacyRootApi) {
105- // return false;
106- // }
104+ if ( legacyRootApi ) {
105+ return false ;
106+ }
107107
108- // const resolvedReact = await options.presets.apply<{ reactDom?: string }>('resolvedReact', {});
109- // const reactDom = resolvedReact.reactDom || dirname(require.resolve('react-dom/package.json'));
110- const reactDom = dirname ( require . resolve ( 'react-dom/package.json' ) ) ;
108+ const resolvedReact = await options . presets . apply < { reactDom ?: string } > ( 'resolvedReact' , { } ) ;
109+ const reactDom = resolvedReact . reactDom || dirname ( require . resolve ( 'react-dom/package.json' ) ) ;
111110
112111 if ( ! isAbsolute ( reactDom ) ) {
113112 // if react-dom is not resolved to a file we can't be sure if the version in package.json is correct or even if package.json exists
@@ -119,8 +118,8 @@ async function getIsReactVersion18or19() {
119118 return version . startsWith ( '18' ) || version . startsWith ( '19' ) || version . startsWith ( '0.0.0' ) ;
120119}
121120
122- async function getReactDomShimAlias ( ) {
123- return ( await getIsReactVersion18or19 ( ) )
121+ async function getReactDomShimAlias ( options : Options ) {
122+ return ( await getIsReactVersion18or19 ( options ) )
124123 ? require . resolve ( '@storybook/react-dom-shim' )
125124 : require . resolve ( '@storybook/react-dom-shim/dist/react-16' ) ;
126125}
0 commit comments