command-palette-root.tsx 893 B

123456789101112131415161718192021222324252627282930313233343536373839
  1. import {
  2. Dispatch,
  3. SetStateAction,
  4. useCallback,
  5. useEffect,
  6. useState,
  7. } from 'react'
  8. import useCommandPaletteTriggers from '../hooks/use-command-palette-triggers'
  9. import CommandPaletteBody from './command-palette-body'
  10. import { useLayoutContext } from '@/shared/context/layout-context'
  11. const CommandPaletteRoot = () => {
  12. const [show, _setShow] = useState(false)
  13. const { view } = useLayoutContext()
  14. const setShow: Dispatch<SetStateAction<boolean>> = useCallback(
  15. value => {
  16. _setShow(view === 'history' ? false : value)
  17. },
  18. [view]
  19. )
  20. useEffect(() => {
  21. if (view === 'history') {
  22. _setShow(false)
  23. }
  24. }, [view])
  25. useCommandPaletteTriggers(setShow)
  26. const onHide = useCallback(() => setShow(false), [setShow])
  27. if (!show) {
  28. return null
  29. }
  30. return <CommandPaletteBody show={show} onHide={onHide} />
  31. }
  32. export default CommandPaletteRoot