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

105
node_modules/reakit/lib/Tab/Tab.js generated vendored Normal file
View File

@@ -0,0 +1,105 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-8f9a8751.js');
var createComponent = require('reakit-system/createComponent');
var createHook = require('reakit-system/createHook');
require('reakit-utils/shallowEqual');
var React = require('react');
require('reakit-utils/useForkRef');
require('reakit-utils/isButton');
require('reakit-warning');
var useLiveRef = require('reakit-utils/useLiveRef');
require('reakit-utils/isSelfTarget');
require('reakit-utils/useIsomorphicEffect');
require('reakit-utils/hasFocusWithin');
require('reakit-utils/isPortalEvent');
require('reakit-utils/dom');
require('reakit-utils/tabbable');
require('../Role/Role.js');
require('../Tabbable/Tabbable.js');
require('../Clickable/Clickable.js');
require('reakit-utils/getDocument');
require('../getCurrentId-eade2850.js');
require('../__keys-3b597476.js');
require('../userFocus-0afea51a.js');
require('reakit-utils/isTextField');
require('reakit-utils/ensureFocus');
require('../Id/IdProvider.js');
require('../Id/Id.js');
require('reakit-utils/fireEvent');
require('../setTextFieldValue-b0584ae1.js');
var Composite_CompositeItem = require('../Composite/CompositeItem.js');
var __keys = require('../__keys-f590d919.js');
function useTabPanelId(options) {
return React.useMemo(function () {
var _options$panels, _options$panels$find;
return ((_options$panels = options.panels) === null || _options$panels === void 0 ? void 0 : (_options$panels$find = _options$panels.find(function (panel) {
return panel.groupId === options.id;
})) === null || _options$panels$find === void 0 ? void 0 : _options$panels$find.id) || undefined;
}, [options.panels, options.id]);
}
var useTab = createHook.createHook({
name: "Tab",
compose: Composite_CompositeItem.useCompositeItem,
keys: __keys.TAB_KEYS,
useOptions: function useOptions(_ref) {
var _ref$focusable = _ref.focusable,
focusable = _ref$focusable === void 0 ? true : _ref$focusable,
options = _rollupPluginBabelHelpers._objectWithoutPropertiesLoose(_ref, ["focusable"]);
return _rollupPluginBabelHelpers._objectSpread2({
focusable: focusable
}, options);
},
useProps: function useProps(options, _ref2) {
var htmlOnClick = _ref2.onClick,
htmlOnFocus = _ref2.onFocus,
htmlProps = _rollupPluginBabelHelpers._objectWithoutPropertiesLoose(_ref2, ["onClick", "onFocus"]);
var selected = options.selectedId === options.id;
var tabPanelId = useTabPanelId(options);
var onClickRef = useLiveRef.useLiveRef(htmlOnClick);
var onFocusRef = useLiveRef.useLiveRef(htmlOnFocus);
var onClick = React.useCallback(function (event) {
var _onClickRef$current, _options$select;
(_onClickRef$current = onClickRef.current) === null || _onClickRef$current === void 0 ? void 0 : _onClickRef$current.call(onClickRef, event);
if (event.defaultPrevented) return;
if (options.disabled) return;
if (!options.id) return;
if (selected) return;
(_options$select = options.select) === null || _options$select === void 0 ? void 0 : _options$select.call(options, options.id);
}, [options.disabled, selected, options.select, options.id]);
var onFocus = React.useCallback(function (event) {
var _onFocusRef$current, _options$select2;
(_onFocusRef$current = onFocusRef.current) === null || _onFocusRef$current === void 0 ? void 0 : _onFocusRef$current.call(onFocusRef, event);
if (event.defaultPrevented) return;
if (options.disabled) return;
if (options.manual) return;
if (!options.id) return;
if (selected) return;
(_options$select2 = options.select) === null || _options$select2 === void 0 ? void 0 : _options$select2.call(options, options.id);
}, [options.id, options.disabled, options.manual, selected, options.select]);
return _rollupPluginBabelHelpers._objectSpread2({
role: "tab",
"aria-selected": selected,
"aria-controls": tabPanelId,
onClick: onClick,
onFocus: onFocus
}, htmlProps);
}
});
var Tab = createComponent.createComponent({
as: "button",
memo: true,
useHook: useTab
});
exports.Tab = Tab;
exports.useTab = useTab;

57
node_modules/reakit/lib/Tab/TabList.js generated vendored Normal file
View File

@@ -0,0 +1,57 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-8f9a8751.js');
var createComponent = require('reakit-system/createComponent');
var createHook = require('reakit-system/createHook');
require('reakit-utils/shallowEqual');
require('react');
require('reakit-utils/useForkRef');
require('reakit-utils/isButton');
var reakitWarning = require('reakit-warning');
require('reakit-utils/useLiveRef');
require('reakit-utils/isSelfTarget');
require('reakit-utils/useIsomorphicEffect');
require('reakit-utils/hasFocusWithin');
require('reakit-utils/isPortalEvent');
require('reakit-utils/dom');
require('reakit-utils/tabbable');
require('../Role/Role.js');
require('../Tabbable/Tabbable.js');
var useCreateElement = require('reakit-system/useCreateElement');
require('reakit-utils/getDocument');
require('reakit-utils/fireBlurEvent');
require('reakit-utils/fireKeyboardEvent');
require('reakit-utils/canUseDOM');
require('reakit-utils/getNextActiveElementOnBlur');
require('../reverse-4756a49e.js');
require('../getCurrentId-eade2850.js');
require('../findEnabledItemById-03112678.js');
require('../__keys-3b597476.js');
require('../userFocus-0afea51a.js');
var Composite_Composite = require('../Composite/Composite.js');
var __keys = require('../__keys-f590d919.js');
var useTabList = createHook.createHook({
name: "TabList",
compose: Composite_Composite.useComposite,
keys: __keys.TAB_LIST_KEYS,
useProps: function useProps(options, htmlProps) {
return _rollupPluginBabelHelpers._objectSpread2({
role: "tablist",
"aria-orientation": options.orientation
}, htmlProps);
}
});
var TabList = createComponent.createComponent({
as: "div",
useHook: useTabList,
useCreateElement: function useCreateElement$1(type, props, children) {
process.env.NODE_ENV !== "production" ? reakitWarning.useWarning(!props["aria-label"] && !props["aria-labelledby"], "You should provide either `aria-label` or `aria-labelledby` props.", "See https://reakit.io/docs/tab") : void 0;
return useCreateElement.useCreateElement(type, props, children);
}
});
exports.TabList = TabList;
exports.useTabList = useTabList;

114
node_modules/reakit/lib/Tab/TabPanel.js generated vendored Normal file
View File

@@ -0,0 +1,114 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-8f9a8751.js');
var createComponent = require('reakit-system/createComponent');
var createHook = require('reakit-system/createHook');
require('reakit-utils/shallowEqual');
var React = require('react');
var useForkRef = require('reakit-utils/useForkRef');
require('reakit-utils/useLiveRef');
require('reakit-utils/isSelfTarget');
require('../Role/Role.js');
require('../Id/IdProvider.js');
var Id_Id = require('../Id/Id.js');
require('../__keys-f41a441b.js');
var Disclosure_DisclosureContent = require('../Disclosure/DisclosureContent.js');
var __keys = require('../__keys-f590d919.js');
function getTabsWithoutPanel(tabs, panels) {
var panelsTabIds = panels.map(function (panel) {
return panel.groupId;
}).filter(Boolean);
return tabs.filter(function (item) {
return panelsTabIds.indexOf(item.id || undefined) === -1;
});
}
function getPanelIndex(panels, panel) {
var panelsWithoutTabId = panels.filter(function (p) {
return !p.groupId;
});
return panelsWithoutTabId.indexOf(panel);
}
/**
* When <TabPanel> is used without tabId:
*
* - First render: getTabId will return undefined because options.panels
* doesn't contain the current panel yet (registerPanel wasn't called yet).
* Thus registerPanel will be called without groupId (tabId).
*
* - Second render: options.panels already contains the current panel
* (because registerPanel was called in the previous render). This means that
* we'll be able to get the related tabId with the tab panel index. Basically,
* we filter out all the tabs and panels that have already matched. In this
* phase, registerPanel will be called again with the proper groupId (tabId).
*
* - In the third render, panel.groupId will be already defined, so we just
* return it. registerPanel is not called.
*/
function getTabId(options) {
var _options$panels, _tabsWithoutPanel$pan;
var panel = (_options$panels = options.panels) === null || _options$panels === void 0 ? void 0 : _options$panels.find(function (p) {
return p.id === options.id;
});
var tabId = options.tabId || (panel === null || panel === void 0 ? void 0 : panel.groupId);
if (tabId || !panel || !options.panels || !options.items) {
return tabId;
}
var panelIndex = getPanelIndex(options.panels, panel);
var tabsWithoutPanel = getTabsWithoutPanel(options.items, options.panels);
return ((_tabsWithoutPanel$pan = tabsWithoutPanel[panelIndex]) === null || _tabsWithoutPanel$pan === void 0 ? void 0 : _tabsWithoutPanel$pan.id) || undefined;
}
var useTabPanel = createHook.createHook({
name: "TabPanel",
compose: [Id_Id.unstable_useId, Disclosure_DisclosureContent.useDisclosureContent],
keys: __keys.TAB_PANEL_KEYS,
useProps: function useProps(options, _ref) {
var htmlRef = _ref.ref,
htmlProps = _rollupPluginBabelHelpers._objectWithoutPropertiesLoose(_ref, ["ref"]);
var ref = React.useRef(null);
var tabId = getTabId(options);
var id = options.id,
registerPanel = options.registerPanel,
unregisterPanel = options.unregisterPanel;
React.useEffect(function () {
if (!id) return undefined;
registerPanel === null || registerPanel === void 0 ? void 0 : registerPanel({
id: id,
ref: ref,
groupId: tabId
});
return function () {
unregisterPanel === null || unregisterPanel === void 0 ? void 0 : unregisterPanel(id);
};
}, [tabId, id, registerPanel, unregisterPanel]);
return _rollupPluginBabelHelpers._objectSpread2({
ref: useForkRef.useForkRef(ref, htmlRef),
role: "tabpanel",
tabIndex: 0,
"aria-labelledby": tabId
}, htmlProps);
},
useComposeOptions: function useComposeOptions(options) {
var tabId = getTabId(options);
return _rollupPluginBabelHelpers._objectSpread2({
visible: tabId ? options.selectedId === tabId : false
}, options);
}
});
var TabPanel = createComponent.createComponent({
as: "div",
useHook: useTabPanel
});
exports.TabPanel = TabPanel;
exports.useTabPanel = useTabPanel;

73
node_modules/reakit/lib/Tab/TabState.js generated vendored Normal file
View File

@@ -0,0 +1,73 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
var _rollupPluginBabelHelpers = require('../_rollupPluginBabelHelpers-8f9a8751.js');
var React = require('react');
require('reakit-utils/useIsomorphicEffect');
var useSealedState = require('reakit-utils/useSealedState');
require('reakit-utils/getDocument');
require('../reverse-4756a49e.js');
require('../getCurrentId-eade2850.js');
require('../findEnabledItemById-03112678.js');
require('../Id/IdProvider.js');
require('reakit-utils/applyState');
require('../Id/IdState.js');
var Composite_CompositeState = require('../Composite/CompositeState.js');
function useTabState(initialState) {
if (initialState === void 0) {
initialState = {};
}
var _useSealedState = useSealedState.useSealedState(initialState),
initialSelectedId = _useSealedState.selectedId,
_useSealedState$loop = _useSealedState.loop,
loop = _useSealedState$loop === void 0 ? true : _useSealedState$loop,
_useSealedState$manua = _useSealedState.manual,
manual = _useSealedState$manua === void 0 ? false : _useSealedState$manua,
sealed = _rollupPluginBabelHelpers._objectWithoutPropertiesLoose(_useSealedState, ["selectedId", "loop", "manual"]);
var composite = Composite_CompositeState.useCompositeState(_rollupPluginBabelHelpers._objectSpread2({
loop: loop,
currentId: initialSelectedId
}, sealed));
var panels = Composite_CompositeState.useCompositeState();
var _React$useState = React.useState(initialSelectedId),
selectedId = _React$useState[0],
setSelectedId = _React$useState[1];
var select = React.useCallback(function (id) {
composite.move(id);
setSelectedId(id);
}, [composite.move]); // If selectedId is not set, use the currentId. It's still possible to have
// no selected tab with useTabState({ selectedId: null });
React.useEffect(function () {
if (selectedId === null) return;
var selectedItem = composite.items.find(function (item) {
return item.id === selectedId;
});
if (selectedItem) return;
if (composite.currentId) {
setSelectedId(composite.currentId);
}
}, [selectedId, composite.items, composite.currentId]);
return _rollupPluginBabelHelpers._objectSpread2(_rollupPluginBabelHelpers._objectSpread2({}, composite), {}, {
selectedId: selectedId,
panels: panels.items,
manual: manual,
select: select,
setSelectedId: setSelectedId,
registerPanel: React.useCallback(function (panel) {
return panels.registerItem(panel);
}, [panels.registerItem]),
unregisterPanel: React.useCallback(function (id) {
return panels.unregisterItem(id);
}, [panels.unregisterItem])
});
}
exports.useTabState = useTabState;

62
node_modules/reakit/lib/Tab/index.js generated vendored Normal file
View File

@@ -0,0 +1,62 @@
'use strict';
Object.defineProperty(exports, '__esModule', { value: true });
require('../_rollupPluginBabelHelpers-8f9a8751.js');
require('reakit-system/createComponent');
require('reakit-system/createHook');
require('reakit-utils/shallowEqual');
require('react');
require('reakit-utils/useForkRef');
require('reakit-utils/isButton');
require('reakit-warning');
require('reakit-utils/useLiveRef');
require('reakit-utils/isSelfTarget');
require('reakit-utils/useIsomorphicEffect');
require('reakit-utils/hasFocusWithin');
require('reakit-utils/isPortalEvent');
require('reakit-utils/dom');
require('reakit-utils/tabbable');
require('../Role/Role.js');
require('../Tabbable/Tabbable.js');
require('../Clickable/Clickable.js');
require('reakit-utils/useSealedState');
require('reakit-system/useCreateElement');
require('reakit-utils/getDocument');
require('reakit-utils/fireBlurEvent');
require('reakit-utils/fireKeyboardEvent');
require('reakit-utils/canUseDOM');
require('reakit-utils/getNextActiveElementOnBlur');
require('../reverse-4756a49e.js');
require('../getCurrentId-eade2850.js');
require('../findEnabledItemById-03112678.js');
require('../__keys-3b597476.js');
require('../userFocus-0afea51a.js');
require('../Composite/Composite.js');
require('reakit-utils/isTextField');
require('reakit-utils/ensureFocus');
require('../Id/IdProvider.js');
require('../Id/Id.js');
require('reakit-utils/fireEvent');
require('../setTextFieldValue-b0584ae1.js');
require('../Composite/CompositeItem.js');
require('reakit-utils/applyState');
require('../Id/IdState.js');
require('../Composite/CompositeState.js');
require('../__keys-f41a441b.js');
require('../Disclosure/DisclosureContent.js');
require('../__keys-f590d919.js');
var Tab_Tab = require('./Tab.js');
var Tab_TabList = require('./TabList.js');
var Tab_TabPanel = require('./TabPanel.js');
var Tab_TabState = require('./TabState.js');
exports.Tab = Tab_Tab.Tab;
exports.useTab = Tab_Tab.useTab;
exports.TabList = Tab_TabList.TabList;
exports.useTabList = Tab_TabList.useTabList;
exports.TabPanel = Tab_TabPanel.TabPanel;
exports.useTabPanel = Tab_TabPanel.useTabPanel;
exports.useTabState = Tab_TabState.useTabState;