(props)
| 18 | import Slider from "react-slider" |
| 19 | |
| 20 | const FXDialog: React.FunctionComponent = (props) => { |
| 21 | const {fxDialogActive} = useActiveSelector() |
| 22 | const {setFXDialogActive} = useActiveActions() |
| 23 | const [hover, setHover] = useState(false) |
| 24 | const {brightness, contrast, hue, saturation, lightness, blur, sharpen, pixelate} = useFilterSelector() |
| 25 | const {setBrightness, setContrast, setHue, setSaturation, setLightness, setBlur, setSharpen, setPixelate} = useFilterActions() |
| 26 | |
| 27 | useEffect(() => { |
| 28 | const showFXDialog = (event: any) => { |
| 29 | setFXDialogActive(!fxDialogActive) |
| 30 | } |
| 31 | const closeAllDialogs = (event: any, ignore: any) => { |
| 32 | if (ignore !== "fx") setFXDialogActive(false) |
| 33 | } |
| 34 | window.ipcRenderer.on("show-fx-dialog", showFXDialog) |
| 35 | window.ipcRenderer.on("close-all-dialogs", closeAllDialogs) |
| 36 | return () => { |
| 37 | window.ipcRenderer.removeListener("show-fx-dialog", showFXDialog) |
| 38 | window.ipcRenderer.removeListener("close-all-dialogs", closeAllDialogs) |
| 39 | } |
| 40 | }, [fxDialogActive]) |
| 41 | |
| 42 | useEffect(() => { |
| 43 | const escapePressed = () => { |
| 44 | if (fxDialogActive) setFXDialogActive(false) |
| 45 | } |
| 46 | window.ipcRenderer.on("escape-pressed", escapePressed) |
| 47 | return () => { |
| 48 | window.ipcRenderer.removeListener("escape-pressed", escapePressed) |
| 49 | } |
| 50 | }) |
| 51 | |
| 52 | const close = () => { |
| 53 | setTimeout(() => { |
| 54 | if (!hover && fxDialogActive) setFXDialogActive(false) |
| 55 | }, 100) |
| 56 | } |
| 57 | |
| 58 | const resetFilters = () => { |
| 59 | setBrightness(100) |
| 60 | setContrast(100) |
| 61 | setHue(180) |
| 62 | setSaturation(100) |
| 63 | setLightness(100) |
| 64 | setBlur(0) |
| 65 | setSharpen(0) |
| 66 | setPixelate(1) |
| 67 | } |
| 68 | return ( |
| 69 | <section className="fx-dialog" onMouseDown={close}> |
| 70 | <div className={`fx-dropdown ${!fxDialogActive ? `hide-fx-dropdown` : ""}`} onMouseOver={() => setHover(true)} onMouseLeave={() => setHover(false)} |
| 71 | style={{marginLeft: "260px", top: "30px"}}> |
| 72 | <div className="fx-dropdown-row"> |
| 73 | <BrightnessIcon className="fx-dropdown-img"/> |
| 74 | <span className="fx-dropdown-text">Brightness</span> |
| 75 | <Slider className="fx-slider" trackClassName="fx-slider-track" thumbClassName="fx-slider-thumb" |
| 76 | onChange={(value) => setBrightness(value)} min={60} max={140} step={1} value={brightness}/> |
| 77 | </div> |
nothing calls this directly
no test coverage detected