@dark-engine/platform-desktop
Version:
Dark renderer to desktop platforms like Windows, Linux, macOS via Nodegui and Qt
34 lines (33 loc) • 1.32 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
exports.DropShadowEffect = void 0;
const nodegui_1 = require('@nodegui/nodegui');
const core_1 = require('@dark-engine/core');
const utils_1 = require('../utils');
const DropShadowEffect = (0, core_1.component)(
props => {
const { ref, blurRadius, xOffset = 1, yOffset = 1, color, disabled = false, slot } = props;
const component = slot;
const rootRef = (0, core_1.useRef)(null);
const gfx = (0, core_1.useMemo)(() => new nodegui_1.QGraphicsDropShadowEffect(), []);
if ((0, core_1.detectIsArray)(slot)) {
(0, utils_1.illegal)(`The DropShadowEffect supports only one child node!`);
}
(0, core_1.useLayoutEffect)(() => {
rootRef.current.setGraphicsEffect(gfx);
}, []);
(0, core_1.useLayoutEffect)(() => {
gfx.setBlurRadius(blurRadius);
gfx.setXOffset(xOffset);
gfx.setYOffset(yOffset);
color && gfx.setColor(color);
gfx.setEnabled(!disabled);
}, [blurRadius, xOffset, yOffset, color, disabled]);
(0, core_1.useImperativeHandle)(ref, () => ({ node: rootRef.current }));
component.props.ref = ref;
return component;
},
{ displayName: 'DropShadowEffect' },
);
exports.DropShadowEffect = DropShadowEffect;
//# sourceMappingURL=drop-shadow-effect.js.map