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>
38 lines
999 B
JavaScript
38 lines
999 B
JavaScript
"use strict";
|
|
|
|
const LEVELS = ['debug', 'info', 'warn', 'error', 'silent'];
|
|
const LEVEL_TO_CONSOLE_METHOD = new Map([['debug', 'log'], ['info', 'log'], ['warn', 'log']]);
|
|
|
|
class Logger {
|
|
constructor(level = Logger.defaultLevel) {
|
|
this.activeLevels = new Set();
|
|
this.setLogLevel(level);
|
|
}
|
|
|
|
setLogLevel(level) {
|
|
const levelIndex = LEVELS.indexOf(level);
|
|
if (levelIndex === -1) throw new Error(`Invalid log level "${level}". Use one of these: ${LEVELS.join(', ')}`);
|
|
this.activeLevels.clear();
|
|
|
|
for (const [i, level] of LEVELS.entries()) {
|
|
if (i >= levelIndex) this.activeLevels.add(level);
|
|
}
|
|
}
|
|
|
|
_log(level, ...args) {
|
|
console[LEVEL_TO_CONSOLE_METHOD.get(level) || level](...args);
|
|
}
|
|
|
|
}
|
|
|
|
Logger.levels = LEVELS;
|
|
Logger.defaultLevel = 'info';
|
|
;
|
|
LEVELS.forEach(level => {
|
|
if (level === 'silent') return;
|
|
|
|
Logger.prototype[level] = function (...args) {
|
|
if (this.activeLevels.has(level)) this._log(level, ...args);
|
|
};
|
|
});
|
|
module.exports = Logger; |