@dark-engine/platform-desktop
Version:
Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt
39 lines (38 loc) • 1.36 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.BlurEffect = void 0;
const nodegui_1 = require('@nodegui/nodegui');
const QGraphicsBlurEffect_1 = require('@nodegui/nodegui/dist/lib/QtWidgets/QGraphicsBlurEffect');
const core_1 = require('@dark-engine/core');
const utils_1 = require('../utils');
const BlurEffect = (0, core_1.component)(
props => {
const {
ref,
blurRadius,
blurHint = QGraphicsBlurEffect_1.BlurHint.PerformanceHint,
disabled = false,
slot,
} = props;
const component = slot;
const rootRef = (0, core_1.useRef)(null);
const gfx = (0, core_1.useMemo)(() => new nodegui_1.QGraphicsBlurEffect(), []);
if ((0, core_1.detectIsArray)(slot)) {
(0, utils_1.illegal)(`The BlurEffect supports only one child node!`);
}
(0, core_1.useLayoutEffect)(() => {
rootRef.current.setGraphicsEffect(gfx);
}, []);
(0, core_1.useLayoutEffect)(() => {
gfx.setBlurRadius(blurRadius);
gfx.setBlurHints(blurHint);
gfx.setEnabled(!disabled);
}, [blurRadius, blurHint, disabled]);
(0, core_1.useImperativeHandle)(ref, () => ({ node: rootRef.current }));
component.props.ref = ref;
return component;
},
{ displayName: 'BlurEffect' },
);
exports.BlurEffect = BlurEffect;
//# sourceMappingURL=blur-effect.js.map