{"ast":null,"code":"import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridLogger, useGridApiMethod, useGridApiEventHandler } from '../../utils';\nimport { gridColumnMenuSelector } from './columnMenuSelector';\nimport { gridClasses } from '../../../constants/gridClasses';\nexport const columnMenuStateInitializer = state => _extends({}, state, {\n columnMenu: {\n open: false\n }\n});\n/**\n * @requires useGridColumnResize (event)\n * @requires useGridInfiniteLoader (event)\n */\n\nexport const useGridColumnMenu = apiRef => {\n const logger = useGridLogger(apiRef, 'useGridColumnMenu');\n /**\n * API METHODS\n */\n\n const showColumnMenu = React.useCallback(field => {\n const shouldUpdate = apiRef.current.setState(state => {\n if (state.columnMenu.open && state.columnMenu.field === field) {\n return state;\n }\n logger.debug('Opening Column Menu');\n return _extends({}, state, {\n columnMenu: {\n open: true,\n field\n }\n });\n });\n if (shouldUpdate) {\n apiRef.current.hidePreferences();\n apiRef.current.forceUpdate();\n }\n }, [apiRef, logger]);\n const hideColumnMenu = React.useCallback(() => {\n const shouldUpdate = apiRef.current.setState(state => {\n if (!state.columnMenu.open && state.columnMenu.field === undefined) {\n return state;\n }\n logger.debug('Hiding Column Menu');\n return _extends({}, state, {\n columnMenu: _extends({}, state.columnMenu, {\n open: false,\n field: undefined\n })\n });\n });\n if (shouldUpdate) {\n apiRef.current.forceUpdate();\n }\n }, [apiRef, logger]);\n const toggleColumnMenu = React.useCallback(field => {\n logger.debug('Toggle Column Menu');\n const columnMenu = gridColumnMenuSelector(apiRef.current.state);\n if (!columnMenu.open || columnMenu.field !== field) {\n showColumnMenu(field);\n } else {\n hideColumnMenu();\n }\n }, [apiRef, logger, showColumnMenu, hideColumnMenu]);\n const columnMenuApi = {\n showColumnMenu,\n hideColumnMenu,\n toggleColumnMenu\n };\n useGridApiMethod(apiRef, columnMenuApi, 'GridColumnMenuApi');\n /**\n * EVENTS\n */\n\n const handleColumnHeaderFocus = React.useCallback((params, event) => {\n // Check if the column menu button received focus\n if (!event.target.classList.contains(gridClasses.menuIconButton)) {\n return;\n } // Check if there's an element which lost focus\n\n if (!event.relatedTarget) {\n return;\n } // `true` if the focus was on the column menu itself, not on any item\n\n const columnMenuLostFocus = event.relatedTarget.classList.contains(gridClasses.menuList); // `true` if the focus was on an item from the column menu\n\n const columnMenuItemLostFocus = event.relatedTarget.getAttribute('role') === 'menuitem';\n if (columnMenuLostFocus || columnMenuItemLostFocus) {\n apiRef.current.setColumnHeaderFocus(params.field);\n }\n }, [apiRef]);\n useGridApiEventHandler(apiRef, 'columnResizeStart', hideColumnMenu);\n useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);\n useGridApiEventHandler(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);\n useGridApiEventHandler(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);\n};","map":{"version":3,"names":["_extends","React","useGridLogger","useGridApiMethod","useGridApiEventHandler","gridColumnMenuSelector","gridClasses","columnMenuStateInitializer","state","columnMenu","open","useGridColumnMenu","apiRef","logger","showColumnMenu","useCallback","field","shouldUpdate","current","setState","debug","hidePreferences","forceUpdate","hideColumnMenu","undefined","toggleColumnMenu","columnMenuApi","handleColumnHeaderFocus","params","event","target","classList","contains","menuIconButton","relatedTarget","columnMenuLostFocus","menuList","columnMenuItemLostFocus","getAttribute","setColumnHeaderFocus"],"sources":["/home/gnx/Desktop/ETB/ETB-FrontEnd/node_modules/@mui/x-data-grid/hooks/features/columnMenu/useGridColumnMenu.js"],"sourcesContent":["import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport * as React from 'react';\nimport { useGridLogger, useGridApiMethod, useGridApiEventHandler } from '../../utils';\nimport { gridColumnMenuSelector } from './columnMenuSelector';\nimport { gridClasses } from '../../../constants/gridClasses';\nexport const columnMenuStateInitializer = state => _extends({}, state, {\n columnMenu: {\n open: false\n }\n});\n/**\n * @requires useGridColumnResize (event)\n * @requires useGridInfiniteLoader (event)\n */\n\nexport const useGridColumnMenu = apiRef => {\n const logger = useGridLogger(apiRef, 'useGridColumnMenu');\n /**\n * API METHODS\n */\n\n const showColumnMenu = React.useCallback(field => {\n const shouldUpdate = apiRef.current.setState(state => {\n if (state.columnMenu.open && state.columnMenu.field === field) {\n return state;\n }\n\n logger.debug('Opening Column Menu');\n return _extends({}, state, {\n columnMenu: {\n open: true,\n field\n }\n });\n });\n\n if (shouldUpdate) {\n apiRef.current.hidePreferences();\n apiRef.current.forceUpdate();\n }\n }, [apiRef, logger]);\n const hideColumnMenu = React.useCallback(() => {\n const shouldUpdate = apiRef.current.setState(state => {\n if (!state.columnMenu.open && state.columnMenu.field === undefined) {\n return state;\n }\n\n logger.debug('Hiding Column Menu');\n return _extends({}, state, {\n columnMenu: _extends({}, state.columnMenu, {\n open: false,\n field: undefined\n })\n });\n });\n\n if (shouldUpdate) {\n apiRef.current.forceUpdate();\n }\n }, [apiRef, logger]);\n const toggleColumnMenu = React.useCallback(field => {\n logger.debug('Toggle Column Menu');\n const columnMenu = gridColumnMenuSelector(apiRef.current.state);\n\n if (!columnMenu.open || columnMenu.field !== field) {\n showColumnMenu(field);\n } else {\n hideColumnMenu();\n }\n }, [apiRef, logger, showColumnMenu, hideColumnMenu]);\n const columnMenuApi = {\n showColumnMenu,\n hideColumnMenu,\n toggleColumnMenu\n };\n useGridApiMethod(apiRef, columnMenuApi, 'GridColumnMenuApi');\n /**\n * EVENTS\n */\n\n const handleColumnHeaderFocus = React.useCallback((params, event) => {\n // Check if the column menu button received focus\n if (!event.target.classList.contains(gridClasses.menuIconButton)) {\n return;\n } // Check if there's an element which lost focus\n\n\n if (!event.relatedTarget) {\n return;\n } // `true` if the focus was on the column menu itself, not on any item\n\n\n const columnMenuLostFocus = event.relatedTarget.classList.contains(gridClasses.menuList); // `true` if the focus was on an item from the column menu\n\n const columnMenuItemLostFocus = event.relatedTarget.getAttribute('role') === 'menuitem';\n\n if (columnMenuLostFocus || columnMenuItemLostFocus) {\n apiRef.current.setColumnHeaderFocus(params.field);\n }\n }, [apiRef]);\n useGridApiEventHandler(apiRef, 'columnResizeStart', hideColumnMenu);\n useGridApiEventHandler(apiRef, 'columnHeaderFocus', handleColumnHeaderFocus);\n useGridApiEventHandler(apiRef, 'virtualScrollerWheel', apiRef.current.hideColumnMenu);\n useGridApiEventHandler(apiRef, 'virtualScrollerTouchMove', apiRef.current.hideColumnMenu);\n};"],"mappings":"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","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]}