UNPKG

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