@rc-component/trigger
Version:
base abstract trigger component for react
22 lines (21 loc) • 819 B
JavaScript
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;