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

70
node_modules/reakit/es/Popover/Popover.js generated vendored Normal file
View File

@@ -0,0 +1,70 @@
import { _ as _objectWithoutPropertiesLoose, a as _objectSpread2 } from '../_rollupPluginBabelHelpers-1f0bf8c2.js';
import { createComponent } from 'reakit-system/createComponent';
import { createHook } from 'reakit-system/createHook';
import 'reakit-utils/shallowEqual';
import 'react';
import { useForkRef } from 'reakit-utils/useForkRef';
import 'reakit-utils/isButton';
import { useWarning } from 'reakit-warning';
import 'reakit-utils/useLiveRef';
import 'reakit-utils/isSelfTarget';
import 'reakit-utils/useIsomorphicEffect';
import 'reakit-utils/hasFocusWithin';
import 'reakit-utils/tabbable';
import '../Role/Role.js';
import 'reakit-utils/useUpdateEffect';
import { useCreateElement } from 'reakit-system/useCreateElement';
import 'reakit-utils/getDocument';
import 'reakit-utils/canUseDOM';
import 'reakit-utils/getNextActiveElementOnBlur';
import 'reakit-utils/ensureFocus';
import '../__keys-e6a5cfbe.js';
import '../Disclosure/DisclosureContent.js';
import 'react-dom';
import '../Portal/Portal.js';
import 'reakit-utils/removeItemFromArray';
import '../MenuContext-6af6cf92.js';
import { useDialog } from '../Dialog/Dialog.js';
import 'body-scroll-lock';
import 'reakit-utils/closest';
import 'reakit-utils/getActiveElement';
import 'reakit-utils/contains';
import '../DialogBackdropContext-8775f78b.js';
import 'reakit-utils/isEmpty';
import '../__keys-ed7b48af.js';
import { P as POPOVER_KEYS } from '../__keys-26bb1730.js';
var usePopover = createHook({
name: "Popover",
compose: useDialog,
keys: POPOVER_KEYS,
useOptions: function useOptions(_ref) {
var _ref$modal = _ref.modal,
modal = _ref$modal === void 0 ? false : _ref$modal,
options = _objectWithoutPropertiesLoose(_ref, ["modal"]);
return _objectSpread2({
modal: modal
}, options);
},
useProps: function useProps(options, _ref2) {
var htmlRef = _ref2.ref,
htmlStyle = _ref2.style,
htmlProps = _objectWithoutPropertiesLoose(_ref2, ["ref", "style"]);
return _objectSpread2({
ref: useForkRef(options.unstable_popoverRef, htmlRef),
style: _objectSpread2(_objectSpread2({}, options.unstable_popoverStyles), htmlStyle)
}, htmlProps);
}
});
var Popover = createComponent({
as: "div",
useHook: usePopover,
useCreateElement: function useCreateElement$1(type, props, children) {
process.env.NODE_ENV !== "production" ? useWarning(!props["aria-label"] && !props["aria-labelledby"], "You should provide either `aria-label` or `aria-labelledby` props.", "See https://reakit.io/docs/popover") : void 0;
return useCreateElement(type, props, children);
}
});
export { Popover, usePopover };

73
node_modules/reakit/es/Popover/PopoverArrow.js generated vendored Normal file
View File

@@ -0,0 +1,73 @@
import { _ as _objectWithoutPropertiesLoose, a as _objectSpread2 } from '../_rollupPluginBabelHelpers-1f0bf8c2.js';
import { createComponent } from 'reakit-system/createComponent';
import { createHook } from 'reakit-system/createHook';
import 'reakit-utils/shallowEqual';
import { useMemo, createElement } from 'react';
import { useForkRef } from 'reakit-utils/useForkRef';
import { useRole } from '../Role/Role.js';
import { a as POPOVER_ARROW_KEYS } from '../__keys-26bb1730.js';
var usePopoverArrow = createHook({
name: "PopoverArrow",
compose: useRole,
keys: POPOVER_ARROW_KEYS,
useOptions: function useOptions(_ref) {
var _ref$size = _ref.size,
size = _ref$size === void 0 ? 30 : _ref$size,
options = _objectWithoutPropertiesLoose(_ref, ["size"]);
return _objectSpread2({
size: size
}, options);
},
useProps: function useProps(options, _ref2) {
var _objectSpread2$1;
var htmlRef = _ref2.ref,
htmlStyle = _ref2.style,
htmlProps = _objectWithoutPropertiesLoose(_ref2, ["ref", "style"]);
var _options$placement$sp = options.placement.split("-"),
placement = _options$placement$sp[0];
var transformMap = {
top: "rotateZ(180deg)",
right: "rotateZ(-90deg)",
bottom: "rotateZ(360deg)",
left: "rotateZ(90deg)"
};
var arrowStyles = options.unstable_arrowStyles;
var transform = transformMap[placement];
var children = useMemo(function () {
return /*#__PURE__*/createElement("svg", {
viewBox: "0 0 30 30",
style: {
transform: transform
}
}, /*#__PURE__*/createElement("path", {
className: "stroke",
d: "M23.7,27.1L17,19.9C16.5,19.3,15.8,19,15,19s-1.6,0.3-2.1,0.9l-6.6,7.2C5.3,28.1,3.4,29,2,29h26 C26.7,29,24.6,28.1,23.7,27.1z"
}), /*#__PURE__*/createElement("path", {
className: "fill",
d: "M23,27.8c1.1,1.2,3.4,2.2,5,2.2h2H0h2c1.7,0,3.9-1,5-2.2l6.6-7.2c0.7-0.8,2-0.8,2.7,0L23,27.8L23,27.8z"
}));
}, [transform]);
return _objectSpread2({
ref: useForkRef(options.unstable_arrowRef, htmlRef),
style: _objectSpread2(_objectSpread2({}, arrowStyles), {}, (_objectSpread2$1 = {
fontSize: options.size,
width: "1em",
height: "1em",
pointerEvents: "none"
}, _objectSpread2$1[placement] = "100%", _objectSpread2$1), htmlStyle),
children: children
}, htmlProps);
}
});
var PopoverArrow = createComponent({
as: "div",
memo: true,
useHook: usePopoverArrow
});
export { PopoverArrow, usePopoverArrow };

40
node_modules/reakit/es/Popover/PopoverBackdrop.js generated vendored Normal file
View File

@@ -0,0 +1,40 @@
import { _ as _objectWithoutPropertiesLoose, a as _objectSpread2 } from '../_rollupPluginBabelHelpers-1f0bf8c2.js';
import { createComponent } from 'reakit-system/createComponent';
import { createHook } from 'reakit-system/createHook';
import 'reakit-utils/shallowEqual';
import 'react';
import 'reakit-utils/useLiveRef';
import 'reakit-utils/isSelfTarget';
import 'reakit-utils/useIsomorphicEffect';
import '../Role/Role.js';
import 'reakit-utils/canUseDOM';
import '../__keys-e6a5cfbe.js';
import '../Disclosure/DisclosureContent.js';
import 'react-dom';
import '../Portal/Portal.js';
import '../DialogBackdropContext-8775f78b.js';
import '../__keys-ed7b48af.js';
import { b as POPOVER_BACKDROP_KEYS } from '../__keys-26bb1730.js';
import { useDialogBackdrop } from '../Dialog/DialogBackdrop.js';
var usePopoverBackdrop = createHook({
name: "PopoverBackdrop",
compose: useDialogBackdrop,
keys: POPOVER_BACKDROP_KEYS,
useOptions: function useOptions(_ref) {
var _ref$modal = _ref.modal,
modal = _ref$modal === void 0 ? false : _ref$modal,
options = _objectWithoutPropertiesLoose(_ref, ["modal"]);
return _objectSpread2({
modal: modal
}, options);
}
});
var PopoverBackdrop = createComponent({
as: "div",
memo: true,
useHook: usePopoverBackdrop
});
export { PopoverBackdrop, usePopoverBackdrop };

45
node_modules/reakit/es/Popover/PopoverDisclosure.js generated vendored Normal file
View File

@@ -0,0 +1,45 @@
import { _ as _objectWithoutPropertiesLoose, a as _objectSpread2 } from '../_rollupPluginBabelHelpers-1f0bf8c2.js';
import { createComponent } from 'reakit-system/createComponent';
import { createHook } from 'reakit-system/createHook';
import 'reakit-utils/shallowEqual';
import 'react';
import { useForkRef } from 'reakit-utils/useForkRef';
import 'reakit-utils/isButton';
import 'reakit-warning';
import 'reakit-utils/useLiveRef';
import 'reakit-utils/isSelfTarget';
import 'reakit-utils/useIsomorphicEffect';
import 'reakit-utils/hasFocusWithin';
import 'reakit-utils/isPortalEvent';
import 'reakit-utils/dom';
import 'reakit-utils/tabbable';
import '../Role/Role.js';
import '../Tabbable/Tabbable.js';
import '../Clickable/Clickable.js';
import '../Button/Button.js';
import '../__keys-e6a5cfbe.js';
import '../__keys-ed7b48af.js';
import { c as POPOVER_DISCLOSURE_KEYS } from '../__keys-26bb1730.js';
import '../Disclosure/Disclosure.js';
import { useDialogDisclosure } from '../Dialog/DialogDisclosure.js';
var usePopoverDisclosure = createHook({
name: "PopoverDisclosure",
compose: useDialogDisclosure,
keys: POPOVER_DISCLOSURE_KEYS,
useProps: function useProps(options, _ref) {
var htmlRef = _ref.ref,
htmlProps = _objectWithoutPropertiesLoose(_ref, ["ref"]);
return _objectSpread2({
ref: useForkRef(options.unstable_referenceRef, htmlRef)
}, htmlProps);
}
});
var PopoverDisclosure = createComponent({
as: "button",
memo: true,
useHook: usePopoverDisclosure
});
export { PopoverDisclosure, usePopoverDisclosure };

195
node_modules/reakit/es/Popover/PopoverState.js generated vendored Normal file
View File

@@ -0,0 +1,195 @@
import { _ as _objectWithoutPropertiesLoose, a as _objectSpread2 } from '../_rollupPluginBabelHelpers-1f0bf8c2.js';
import { shallowEqual } from 'reakit-utils/shallowEqual';
import { useRef, useState, useCallback, useEffect } from 'react';
import 'reakit-warning';
import { useIsomorphicEffect } from 'reakit-utils/useIsomorphicEffect';
import { isUA } from 'reakit-utils/dom';
import { useSealedState } from 'reakit-utils/useSealedState';
import '../Id/IdProvider.js';
import '../Id/IdState.js';
import { createPopper } from '@popperjs/core';
import '../Disclosure/DisclosureState.js';
import { useDialogState } from '../Dialog/DialogState.js';
var isSafari = isUA("Mac") && !isUA("Chrome") && isUA("Safari");
function applyStyles(styles) {
return function (prevStyles) {
if (styles && !shallowEqual(prevStyles, styles)) {
return styles;
}
return prevStyles;
};
}
function usePopoverState(initialState) {
if (initialState === void 0) {
initialState = {};
}
var _useSealedState = useSealedState(initialState),
_useSealedState$gutte = _useSealedState.gutter,
gutter = _useSealedState$gutte === void 0 ? 12 : _useSealedState$gutte,
_useSealedState$place = _useSealedState.placement,
sealedPlacement = _useSealedState$place === void 0 ? "bottom" : _useSealedState$place,
_useSealedState$unsta = _useSealedState.unstable_flip,
flip = _useSealedState$unsta === void 0 ? true : _useSealedState$unsta,
sealedOffset = _useSealedState.unstable_offset,
_useSealedState$unsta2 = _useSealedState.unstable_preventOverflow,
preventOverflow = _useSealedState$unsta2 === void 0 ? true : _useSealedState$unsta2,
_useSealedState$unsta3 = _useSealedState.unstable_fixed,
fixed = _useSealedState$unsta3 === void 0 ? false : _useSealedState$unsta3,
_useSealedState$modal = _useSealedState.modal,
modal = _useSealedState$modal === void 0 ? false : _useSealedState$modal,
sealed = _objectWithoutPropertiesLoose(_useSealedState, ["gutter", "placement", "unstable_flip", "unstable_offset", "unstable_preventOverflow", "unstable_fixed", "modal"]);
var popper = useRef(null);
var referenceRef = useRef(null);
var popoverRef = useRef(null);
var arrowRef = useRef(null);
var _React$useState = useState(sealedPlacement),
originalPlacement = _React$useState[0],
place = _React$useState[1];
var _React$useState2 = useState(sealedPlacement),
placement = _React$useState2[0],
setPlacement = _React$useState2[1];
var _React$useState3 = useState(sealedOffset || [0, gutter]),
offset = _React$useState3[0];
var _React$useState4 = useState({
position: "fixed",
left: "100%",
top: "100%"
}),
popoverStyles = _React$useState4[0],
setPopoverStyles = _React$useState4[1];
var _React$useState5 = useState({}),
arrowStyles = _React$useState5[0],
setArrowStyles = _React$useState5[1];
var dialog = useDialogState(_objectSpread2({
modal: modal
}, sealed));
var update = useCallback(function () {
if (popper.current) {
popper.current.forceUpdate();
return true;
}
return false;
}, []);
var updateState = useCallback(function (state) {
if (state.placement) {
setPlacement(state.placement);
}
if (state.styles) {
setPopoverStyles(applyStyles(state.styles.popper));
if (arrowRef.current) {
setArrowStyles(applyStyles(state.styles.arrow));
}
}
}, []);
useIsomorphicEffect(function () {
if (referenceRef.current && popoverRef.current) {
popper.current = createPopper(referenceRef.current, popoverRef.current, {
// https://popper.js.org/docs/v2/constructors/#options
placement: originalPlacement,
strategy: fixed ? "fixed" : "absolute",
// Safari needs styles to be applied in the first render, otherwise
// hovering over the popover when it gets visible for the first time
// will change its dimensions unexpectedly.
onFirstUpdate: isSafari ? updateState : undefined,
modifiers: [{
// https://popper.js.org/docs/v2/modifiers/event-listeners/
name: "eventListeners",
enabled: dialog.visible
}, {
// https://popper.js.org/docs/v2/modifiers/apply-styles/
name: "applyStyles",
enabled: false
}, {
// https://popper.js.org/docs/v2/modifiers/flip/
name: "flip",
enabled: flip,
options: {
padding: 8
}
}, {
// https://popper.js.org/docs/v2/modifiers/offset/
name: "offset",
options: {
offset: offset
}
}, {
// https://popper.js.org/docs/v2/modifiers/prevent-overflow/
name: "preventOverflow",
enabled: preventOverflow,
options: {
tetherOffset: function tetherOffset() {
var _arrowRef$current;
return ((_arrowRef$current = arrowRef.current) === null || _arrowRef$current === void 0 ? void 0 : _arrowRef$current.clientWidth) || 0;
}
}
}, {
// https://popper.js.org/docs/v2/modifiers/arrow/
name: "arrow",
enabled: !!arrowRef.current,
options: {
element: arrowRef.current
}
}, {
// https://popper.js.org/docs/v2/modifiers/#custom-modifiers
name: "updateState",
phase: "write",
requires: ["computeStyles"],
enabled: dialog.visible && process.env.NODE_ENV !== "test",
fn: function fn(_ref) {
var state = _ref.state;
return updateState(state);
}
}]
});
}
return function () {
if (popper.current) {
popper.current.destroy();
popper.current = null;
}
};
}, [originalPlacement, fixed, dialog.visible, flip, offset, preventOverflow]); // Ensure that the popover will be correctly positioned with an additional
// update.
useEffect(function () {
if (!dialog.visible) return undefined;
var id = window.requestAnimationFrame(function () {
var _popper$current;
(_popper$current = popper.current) === null || _popper$current === void 0 ? void 0 : _popper$current.forceUpdate();
});
return function () {
window.cancelAnimationFrame(id);
};
}, [dialog.visible]);
return _objectSpread2(_objectSpread2({}, dialog), {}, {
unstable_referenceRef: referenceRef,
unstable_popoverRef: popoverRef,
unstable_arrowRef: arrowRef,
unstable_popoverStyles: popoverStyles,
unstable_arrowStyles: arrowStyles,
unstable_update: update,
unstable_originalPlacement: originalPlacement,
placement: placement,
place: place
});
}
export { usePopoverState };

54
node_modules/reakit/es/Popover/index.js generated vendored Normal file
View File

@@ -0,0 +1,54 @@
import '../_rollupPluginBabelHelpers-1f0bf8c2.js';
import 'reakit-system/createComponent';
import 'reakit-system/createHook';
import 'reakit-utils/shallowEqual';
import 'react';
import 'reakit-utils/useForkRef';
import 'reakit-utils/isButton';
import 'reakit-warning';
import 'reakit-utils/useLiveRef';
import 'reakit-utils/isSelfTarget';
import 'reakit-utils/useIsomorphicEffect';
import 'reakit-utils/hasFocusWithin';
import 'reakit-utils/isPortalEvent';
import 'reakit-utils/dom';
import 'reakit-utils/tabbable';
import '../Role/Role.js';
import '../Tabbable/Tabbable.js';
import '../Clickable/Clickable.js';
import '../Button/Button.js';
import 'reakit-utils/useSealedState';
import 'reakit-utils/useUpdateEffect';
import 'reakit-system/useCreateElement';
import 'reakit-utils/getDocument';
import 'reakit-utils/canUseDOM';
import 'reakit-utils/getNextActiveElementOnBlur';
import 'reakit-utils/ensureFocus';
import '../Id/IdProvider.js';
import '../Id/IdState.js';
import '@popperjs/core';
import '../Disclosure/DisclosureState.js';
import '../Dialog/DialogState.js';
export { usePopoverState } from './PopoverState.js';
import '../__keys-e6a5cfbe.js';
import '../Disclosure/DisclosureContent.js';
import 'react-dom';
import '../Portal/Portal.js';
import 'reakit-utils/removeItemFromArray';
import '../MenuContext-6af6cf92.js';
import '../Dialog/Dialog.js';
import 'body-scroll-lock';
import 'reakit-utils/closest';
import 'reakit-utils/getActiveElement';
import 'reakit-utils/contains';
import '../DialogBackdropContext-8775f78b.js';
import 'reakit-utils/isEmpty';
import '../__keys-ed7b48af.js';
import '../__keys-26bb1730.js';
export { Popover, usePopover } from './Popover.js';
import '../Dialog/DialogBackdrop.js';
import '../Disclosure/Disclosure.js';
import '../Dialog/DialogDisclosure.js';
export { PopoverArrow, usePopoverArrow } from './PopoverArrow.js';
export { PopoverDisclosure, usePopoverDisclosure } from './PopoverDisclosure.js';
export { PopoverBackdrop, usePopoverBackdrop } from './PopoverBackdrop.js';