Files
formipay/node_modules/@wordpress/babel-preset-default/index.js
dwindown e8fbfb14c1 fix: prevent asset conflicts between React and Grid.js versions
Add coexistence checks to all enqueue methods to prevent loading
both React and Grid.js assets simultaneously.

Changes:
- ReactAdmin.php: Only enqueue React assets when ?react=1
- Init.php: Skip Grid.js when React active on admin pages
- Form.php, Coupon.php, Access.php: Restore classic assets when ?react=0
- Customer.php, Product.php, License.php: Add coexistence checks

Now the toggle between Classic and React versions works correctly.

Co-authored-by: Claude Opus 4.7 <noreply@anthropic.com>
2026-04-18 17:02:14 +07:00

99 lines
2.0 KiB
JavaScript

/**
* External dependencies
*/
const browserslist = require( 'browserslist' );
module.exports = ( api ) => {
let wpBuildOpts = {};
const isWPBuild = ( name ) =>
[ 'WP_BUILD_MAIN', 'WP_BUILD_MODULE' ].some(
( buildName ) => name === buildName
);
const isTestEnv = api.env() === 'test';
api.caller( ( caller ) => {
if ( caller && isWPBuild( caller.name ) ) {
wpBuildOpts = { ...caller };
return caller.name;
}
return undefined;
} );
const getPresetEnv = () => {
const opts = {
bugfixes: true,
include: [
'proposal-nullish-coalescing-operator',
'proposal-logical-assignment-operators',
],
};
if ( isTestEnv ) {
opts.targets = {
node: 'current',
};
} else {
opts.modules = false;
const localBrowserslistConfig =
browserslist.findConfig( '.' ) || {};
opts.targets = {
browsers:
localBrowserslistConfig.defaults ||
require( '@wordpress/browserslist-config' ),
};
}
if ( isWPBuild( wpBuildOpts.name ) ) {
opts.modules = wpBuildOpts.modules;
}
return [ require.resolve( '@babel/preset-env' ), opts ];
};
const maybeGetPluginTransformRuntime = () => {
if ( isTestEnv ) {
return undefined;
}
const opts = {
helpers: true,
useESModules: false,
};
if ( wpBuildOpts.name === 'WP_BUILD_MODULE' ) {
opts.useESModules = wpBuildOpts.useESModules;
}
return [ require.resolve( '@babel/plugin-transform-runtime' ), opts ];
};
return {
presets: [
getPresetEnv(),
require.resolve( '@babel/preset-typescript' ),
],
plugins: [
require.resolve( '@wordpress/warning/babel-plugin' ),
[
require.resolve( '@wordpress/babel-plugin-import-jsx-pragma' ),
{
scopeVariable: 'createElement',
scopeVariableFrag: 'Fragment',
source: 'react',
isDefault: false,
},
],
[
require.resolve( '@babel/plugin-transform-react-jsx' ),
{
pragma: 'createElement',
pragmaFrag: 'Fragment',
useSpread: true,
},
],
maybeGetPluginTransformRuntime(),
].filter( Boolean ),
};
};