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>
50 lines
1.3 KiB
JavaScript
50 lines
1.3 KiB
JavaScript
import { createElement } from "react";
|
|
/**
|
|
* External dependencies
|
|
*/
|
|
import { CacheProvider } from '@emotion/react';
|
|
import createCache from '@emotion/cache';
|
|
import * as uuid from 'uuid';
|
|
|
|
/**
|
|
* Internal dependencies
|
|
*/
|
|
|
|
const uuidCache = new Set();
|
|
// Use a weak map so that when the container is detached it's automatically
|
|
// dereferenced to avoid memory leak.
|
|
const containerCacheMap = new WeakMap();
|
|
const memoizedCreateCacheWithContainer = container => {
|
|
if (containerCacheMap.has(container)) {
|
|
return containerCacheMap.get(container);
|
|
}
|
|
|
|
// Emotion only accepts alphabetical and hyphenated keys so we just
|
|
// strip the numbers from the UUID. It _should_ be fine.
|
|
let key = uuid.v4().replace(/[0-9]/g, '');
|
|
while (uuidCache.has(key)) {
|
|
key = uuid.v4().replace(/[0-9]/g, '');
|
|
}
|
|
uuidCache.add(key);
|
|
const cache = createCache({
|
|
container,
|
|
key
|
|
});
|
|
containerCacheMap.set(container, cache);
|
|
return cache;
|
|
};
|
|
export function StyleProvider(props) {
|
|
const {
|
|
children,
|
|
document
|
|
} = props;
|
|
if (!document) {
|
|
return null;
|
|
}
|
|
const cache = memoizedCreateCacheWithContainer(document.head);
|
|
return createElement(CacheProvider, {
|
|
value: cache
|
|
}, children);
|
|
}
|
|
export default StyleProvider;
|
|
//# sourceMappingURL=index.js.map
|