@mui/x-data-grid
Version:
The Community plan edition of the MUI X Data Grid components.
72 lines (71 loc) • 2.73 kB
JavaScript
;
'use client';
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard").default;
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault").default;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.GridPanelContext = void 0;
exports.GridPanelContextProvider = GridPanelContextProvider;
exports.useGridPanelContext = useGridPanelContext;
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _formatErrorMessage2 = _interopRequireDefault(require("@mui/x-internals/formatErrorMessage"));
var React = _interopRequireWildcard(require("react"));
var _jsxRuntime = require("react/jsx-runtime");
const GridPanelContext = exports.GridPanelContext = /*#__PURE__*/React.createContext(undefined);
if (process.env.NODE_ENV !== "production") GridPanelContext.displayName = "GridPanelContext";
function useGridPanelContext() {
const context = React.useContext(GridPanelContext);
if (context === undefined) {
throw new Error(process.env.NODE_ENV !== "production" ? 'MUI X: Missing context.' : (0, _formatErrorMessage2.default)(61));
}
return context;
}
function GridPanelContextProvider({
children
}) {
const [triggerElements, setTriggerElements] = React.useState({
columnsPanel: null,
filterPanel: null,
aiAssistantPanel: null
});
const updateTriggerElement = React.useCallback((key, instance) => {
setTriggerElements(prev => {
if (prev[key] === instance) {
return prev;
}
return (0, _extends2.default)({}, prev, {
[key]: instance
});
});
}, []);
const setColumnsPanelTrigger = React.useCallback(instance => {
updateTriggerElement('columnsPanel', instance);
}, [updateTriggerElement]);
const setFilterPanelTrigger = React.useCallback(instance => {
updateTriggerElement('filterPanel', instance);
}, [updateTriggerElement]);
const setAiAssistantPanelTrigger = React.useCallback(instance => {
updateTriggerElement('aiAssistantPanel', instance);
}, [updateTriggerElement]);
const value = React.useMemo(() => ({
triggers: {
columnsPanel: {
element: triggerElements.columnsPanel,
setRef: setColumnsPanelTrigger
},
filterPanel: {
element: triggerElements.filterPanel,
setRef: setFilterPanelTrigger
},
aiAssistantPanel: {
element: triggerElements.aiAssistantPanel,
setRef: setAiAssistantPanelTrigger
}
}
}), [triggerElements, setColumnsPanelTrigger, setFilterPanelTrigger, setAiAssistantPanelTrigger]);
return /*#__PURE__*/(0, _jsxRuntime.jsx)(GridPanelContext.Provider, {
value: value,
children: children
});
}