@atlaskit/popup
Version:
A popup displays brief content in an overlay.
24 lines (23 loc) • 748 B
JavaScript
import { useState } from 'react';
import memoizeOne from 'memoize-one';
/**
* Here setting ref is not dependent on isOpen flag which is failing in React 18 strict mode
* Used behind ff `platform-design-system-popup-ref` for regular popup.
* Compositional popup always uses this variant.
* @returns Function to set trigger ref
*/
export const useGetMemoizedMergedTriggerRefNew = () => {
const [getMemoizedMergedTriggerRefNew] = useState(() => memoizeOne((ref, setTriggerRef) => {
return node => {
if (node) {
if (typeof ref === 'function') {
ref(node);
} else if (ref) {
ref.current = node;
}
setTriggerRef(node);
}
};
}));
return getMemoizedMergedTriggerRefNew;
};