UNPKG

@dark-engine/platform-desktop

Version:

Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt

30 lines (29 loc) 1.14 kB
import { QGraphicsBlurEffect } from '@nodegui/nodegui'; import { BlurHint } from '@nodegui/nodegui/dist/lib/QtWidgets/QGraphicsBlurEffect'; import { component, useRef, useMemo, useLayoutEffect, useImperativeHandle, detectIsArray } from '@dark-engine/core'; import { illegal } from '../utils'; const BlurEffect = component( props => { const { ref, blurRadius, blurHint = BlurHint.PerformanceHint, disabled = false, slot } = props; const component = slot; const rootRef = useRef(null); const gfx = useMemo(() => new QGraphicsBlurEffect(), []); if (detectIsArray(slot)) { illegal(`The BlurEffect supports only one child node!`); } useLayoutEffect(() => { rootRef.current.setGraphicsEffect(gfx); }, []); useLayoutEffect(() => { gfx.setBlurRadius(blurRadius); gfx.setBlurHints(blurHint); gfx.setEnabled(!disabled); }, [blurRadius, blurHint, disabled]); useImperativeHandle(ref, () => ({ node: rootRef.current })); component.props.ref = ref; return component; }, { displayName: 'BlurEffect' }, ); export { BlurEffect }; //# sourceMappingURL=blur-effect.js.map