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>
43 lines
1.0 KiB
TypeScript
43 lines
1.0 KiB
TypeScript
import path from "node:path";
|
|
|
|
import { createRequire } from "node:module";
|
|
const require = createRequire(import.meta.url);
|
|
|
|
export default function (
|
|
moduleName: string,
|
|
dirname: string,
|
|
absoluteRuntime: string | boolean,
|
|
) {
|
|
if (absoluteRuntime === false) return moduleName;
|
|
|
|
return resolveAbsoluteRuntime(
|
|
moduleName,
|
|
path.resolve(dirname, absoluteRuntime === true ? "." : absoluteRuntime),
|
|
);
|
|
}
|
|
|
|
function resolveAbsoluteRuntime(moduleName: string, dirname: string) {
|
|
try {
|
|
return path
|
|
.dirname(
|
|
require.resolve(`${moduleName}/package.json`, { paths: [dirname] }),
|
|
)
|
|
.replace(/\\/g, "/");
|
|
} catch (err) {
|
|
if (err.code !== "MODULE_NOT_FOUND") throw err;
|
|
|
|
throw Object.assign(
|
|
new Error(`Failed to resolve "${moduleName}" relative to "${dirname}"`),
|
|
{
|
|
code: "BABEL_RUNTIME_NOT_FOUND",
|
|
runtime: moduleName,
|
|
dirname,
|
|
},
|
|
);
|
|
}
|
|
}
|
|
|
|
export function resolveFSPath(path: string) {
|
|
return require.resolve(path).replace(/\\/g, "/");
|
|
}
|