import { FolderIcon, PhotoIcon } from '@heroicons/react/24/outline' import { PlayIcon } from '@radix-ui/react-icons' import React, { useState } from 'react' import { useRecoilState, useRecoilValue } from 'recoil' import * as PopoverPrimitive from '@radix-ui/react-popover' import { enableFileManagerState, fileState, isInpaintingState, isSDState, maskState, runManuallyState, showFileManagerState, } from '../../store/Atoms' import Button from '../shared/Button' import Shortcuts from '../Shortcuts/Shortcuts' import { ThemeChanger } from './ThemeChanger' import SettingIcon from '../Settings/SettingIcon' import PromptInput from './PromptInput' import CoffeeIcon from '../CoffeeIcon/CoffeeIcon' import emitter, { EVENT_CUSTOM_MASK } from '../../event' import { useImage } from '../../utils' import useHotKey from '../../hooks/useHotkey' const Header = () => { const isInpainting = useRecoilValue(isInpaintingState) const [file, setFile] = useRecoilState(fileState) const [mask, setMask] = useRecoilState(maskState) const [maskImage, maskImageLoaded] = useImage(mask) const [uploadElemId] = useState(`file-upload-${Math.random().toString()}`) const [maskUploadElemId] = useState(`mask-upload-${Math.random().toString()}`) const isSD = useRecoilValue(isSDState) const runManually = useRecoilValue(runManuallyState) const [openMaskPopover, setOpenMaskPopover] = useState(false) const [showFileManager, setShowFileManager] = useRecoilState(showFileManagerState) const enableFileManager = useRecoilValue(enableFileManagerState) useHotKey( 'f', () => { if (enableFileManager) { setShowFileManager(!showFileManager) } }, {}, [showFileManager, enableFileManager] ) const renderHeader = () => { return (
{enableFileManager ? (
setOpenMaskPopover(true)} onMouseLeave={() => setOpenMaskPopover(false)} style={{ visibility: mask ? 'visible' : 'hidden', outline: 'none', }} onClick={() => { if (mask) { emitter.emit(EVENT_CUSTOM_MASK, { mask }) } }} > {maskImageLoaded ? ( mask ) : ( <> )}
{isSD && file ? : <>}
) } return renderHeader() } export default Header