@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
JavaScript
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