@loke/ui
Version:
2 lines (1 loc) • 613 B
JavaScript
import React from"react";function setRef(ref,value){if(typeof ref==="function")return ref(value);if(ref!==null&&ref!==void 0)ref.current=value}function composeRefs(...refs){return(node)=>{let hasCleanup=!1,cleanups=refs.map((ref)=>{let cleanup=setRef(ref,node);if(!hasCleanup&&typeof cleanup==="function")hasCleanup=!0;return cleanup});if(hasCleanup)return()=>{for(let i=0;i<cleanups.length;i++){let cleanup=cleanups[i];if(typeof cleanup==="function")cleanup();else setRef(refs[i],null)}}}}function useComposedRefs(...refs){return React.useCallback(composeRefs(...refs),refs)}export{useComposedRefs,composeRefs};