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