UNPKG

@atlaskit/popup

Version:

A popup displays brief content in an overlay.

39 lines (38 loc) 1.53 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports.useGetMemoizedMergedTriggerRef = void 0; var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray")); var _react = require("react"); var _memoizeOne = _interopRequireDefault(require("memoize-one")); /* * Get a memoized functional ref for use within a Popup's Trigger. * This is still very volatile to change as `prop.isOpen` will regularly change, but it's better than nothing. * This is memoized within a component as to not be shared across all Popup instances. * * This is complex because the inputs are split across three different scopes: * - `props.isOpen` * - `useState.setTriggerRef` * - `renderProps.ref` */ var useGetMemoizedMergedTriggerRef = exports.useGetMemoizedMergedTriggerRef = function useGetMemoizedMergedTriggerRef() { var _useState = (0, _react.useState)(function () { return (0, _memoizeOne.default)(function (ref, setTriggerRef, isOpen) { return function (node) { if (node && isOpen) { if (typeof ref === 'function') { ref(node); } else if (ref) { ref.current = node; } setTriggerRef(node); } }; }); }), _useState2 = (0, _slicedToArray2.default)(_useState, 1), getMemoizedMergedTriggerRef = _useState2[0]; return getMemoizedMergedTriggerRef; };