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>
44 lines
1.3 KiB
JavaScript
44 lines
1.3 KiB
JavaScript
'use strict';
|
|
|
|
const balancedMatch = require('balanced-match');
|
|
const valueParser = require('postcss-value-parser');
|
|
|
|
const { assert, isString, isRegExp } = require('./validateTypes');
|
|
|
|
/**
|
|
* Search a CSS string for functions by name.
|
|
* For every match, invoke the callback, passing the function's
|
|
* "argument(s) string" (whatever is inside the parentheses)
|
|
* as an argument.
|
|
*
|
|
* Callback will be called once for every matching function found,
|
|
* with the function's "argument(s) string" and its starting index
|
|
* as the arguments.
|
|
*
|
|
* @param {string} source
|
|
* @param {string | RegExp} functionName
|
|
* @param {(expression: string, expressionIndex: number) => void} callback
|
|
* @returns {void}
|
|
*/
|
|
module.exports = function functionArgumentsSearch(source, functionName, callback) {
|
|
valueParser(source).walk((node) => {
|
|
if (node.type !== 'function') return;
|
|
|
|
const { value } = node;
|
|
|
|
if (isString(functionName) && value !== functionName) return;
|
|
|
|
if (isRegExp(functionName) && !functionName.test(node.value)) return;
|
|
|
|
const parensMatch = balancedMatch('(', ')', source.slice(node.sourceIndex));
|
|
|
|
assert(parensMatch);
|
|
|
|
const expression = parensMatch.body;
|
|
const parenLength = 1; // == '('
|
|
const expressionIndex = node.sourceIndex + value.length + parenLength;
|
|
|
|
callback(expression, expressionIndex);
|
|
});
|
|
};
|