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>
This commit is contained in:
dwindown
2026-04-18 17:02:14 +07:00
parent bd9cdac02e
commit e8fbfb14c1
74973 changed files with 6658406 additions and 71 deletions

50
node_modules/@wordpress/warning/src/index.js generated vendored Normal file
View File

@@ -0,0 +1,50 @@
/**
* Internal dependencies
*/
import { logged } from './utils';
function isDev() {
return typeof SCRIPT_DEBUG !== 'undefined' && SCRIPT_DEBUG === true;
}
/**
* Shows a warning with `message` if environment is not `production`.
*
* @param {string} message Message to show in the warning.
*
* @example
* ```js
* import warning from '@wordpress/warning';
*
* function MyComponent( props ) {
* if ( ! props.title ) {
* warning( '`props.title` was not passed' );
* }
* ...
* }
* ```
*/
export default function warning( message ) {
if ( ! isDev() ) {
return;
}
// Skip if already logged.
if ( logged.has( message ) ) {
return;
}
// eslint-disable-next-line no-console
console.warn( message );
// Throwing an error and catching it immediately to improve debugging
// A consumer can use 'pause on caught exceptions'
// https://github.com/facebook/react/issues/4216
try {
throw Error( message );
} catch ( x ) {
// Do nothing.
}
logged.add( message );
}

36
node_modules/@wordpress/warning/src/test/index.js generated vendored Normal file
View File

@@ -0,0 +1,36 @@
/**
* Internal dependencies
*/
import warning from '..';
import { logged } from '../utils';
describe( 'warning', () => {
const initialScriptDebug = global.SCRIPT_DEBUG;
afterEach( () => {
global.SCRIPT_DEBUG = initialScriptDebug;
logged.clear();
} );
it( 'logs to console.warn when SCRIPT_DEBUG is set to `true`', () => {
global.SCRIPT_DEBUG = true;
warning( 'warning' );
expect( console ).toHaveWarnedWith( 'warning' );
} );
it( 'does not log to console.warn if SCRIPT_DEBUG not set to `true`', () => {
global.SCRIPT_DEBUG = false;
warning( 'warning' );
expect( console ).not.toHaveWarned();
} );
it( 'should show a message once', () => {
global.SCRIPT_DEBUG = true;
warning( 'warning' );
warning( 'warning' );
expect( console ).toHaveWarned();
// eslint-disable-next-line no-console
expect( console.warn ).toHaveBeenCalledTimes( 1 );
} );
} );

7
node_modules/@wordpress/warning/src/utils.js generated vendored Normal file
View File

@@ -0,0 +1,7 @@
/**
* Object map tracking messages which have been logged, for use in ensuring a
* message is only logged once.
*
* @type {Set<string>}
*/
export const logged = new Set();