UNPKG

@rc-component/trigger

Version:

base abstract trigger component for react

22 lines (21 loc) 819 B
import { fillRef, getNodeRef, supportRef, useComposeRef } from "@rc-component/util/es/ref"; import * as React from 'react'; const TriggerWrapper = /*#__PURE__*/React.forwardRef((props, ref) => { const { children, getTriggerDOMNode } = props; const canUseRef = supportRef(children); // When use `getTriggerDOMNode`, we should do additional work to get the real dom const setRef = React.useCallback(node => { fillRef(ref, getTriggerDOMNode ? getTriggerDOMNode(node) : node); }, [getTriggerDOMNode]); const mergedRef = useComposeRef(setRef, getNodeRef(children)); return canUseRef ? /*#__PURE__*/React.cloneElement(children, { ref: mergedRef }) : children; }); if (process.env.NODE_ENV !== 'production') { TriggerWrapper.displayName = 'TriggerWrapper'; } export default TriggerWrapper;