MCPcopy Create free account
hub / github.com/Moebytes/Frame-Player / FXDialog

Function FXDialog

components/FXDialog.tsx:20–126  ·  view source on GitHub ↗
(props)

Source from the content-addressed store, hash-verified

18import Slider from "react-slider"
19
20const 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>

Callers

nothing calls this directly

Calls 5

useActiveSelectorFunction · 0.85
useActiveActionsFunction · 0.85
useFilterSelectorFunction · 0.85
useFilterActionsFunction · 0.85
resetFiltersFunction · 0.85

Tested by

no test coverage detected