|
import { createSelector } from '@reduxjs/toolkit'; |
|
import { useAppSelector } from 'app/store/storeHooks'; |
|
import { selectConfigSlice } from 'features/system/store/configSlice'; |
|
import type { TabName } from 'features/ui/store/uiTypes'; |
|
import type { PropsWithChildren } from 'react'; |
|
import { memo, useMemo } from 'react'; |
|
|
|
export const TabMountGate = memo(({ tab, children }: PropsWithChildren<{ tab: TabName }>) => { |
|
const selectIsTabEnabled = useMemo( |
|
() => createSelector(selectConfigSlice, (config) => !config.disabledTabs.includes(tab)), |
|
[tab] |
|
); |
|
const isEnabled = useAppSelector(selectIsTabEnabled); |
|
|
|
if (!isEnabled) { |
|
return null; |
|
} |
|
|
|
return children; |
|
}); |
|
|
|
TabMountGate.displayName = 'TabMountGate'; |
|
|