UNPKG

@mui/x-data-grid

Version:

The Community plan edition of the MUI X Data Grid components.

63 lines (62 loc) 2.19 kB
'use client'; import _extends from "@babel/runtime/helpers/esm/extends"; import _formatErrorMessage from "@mui/x-internals/formatErrorMessage"; import * as React from 'react'; import { jsx as _jsx } from "react/jsx-runtime"; export const GridPanelContext = /*#__PURE__*/React.createContext(undefined); if (process.env.NODE_ENV !== "production") GridPanelContext.displayName = "GridPanelContext"; export function useGridPanelContext() { const context = React.useContext(GridPanelContext); if (context === undefined) { throw new Error(process.env.NODE_ENV !== "production" ? 'MUI X: Missing context.' : _formatErrorMessage(61)); } return context; } export 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 _extends({}, 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__*/_jsx(GridPanelContext.Provider, { value: value, children: children }); }