UNPKG

@yandex/ui

Version:

Yandex UI components

48 lines (47 loc) 1.71 kB
import { canUseDOM } from './canUseDOM'; /** * Копирует ссылку на DOM элемент из одного объекта в другой и возвращает объект со ссылкой. * * @param source Объект содержащий DOM элемент * @param target Объект куда необходимо скопировать DOM элемент */ export var mergeRefs = function (source) { var targets = []; for (var _i = 1; _i < arguments.length; _i++) { targets[_i - 1] = arguments[_i]; } // Используем raf, т.к. ссылки устанавливаются асинхронно. if (canUseDOM()) { requestAnimationFrame(function () { targets.forEach(function (target) { if (source !== undefined && target !== undefined) { if (typeof target === 'function') { target(source.current); } else { target.current = source.current; } } }); }); } return source; }; // TODO(ISL-8110): @yandex-lego/components: Поддержать callback для innerRef // Перейти на эту функцию export function mergeAllRefs() { var refs = []; for (var _i = 0; _i < arguments.length; _i++) { refs[_i] = arguments[_i]; } return function (node) { refs.forEach(function (ref) { if (typeof ref === 'function') { ref(node); } else if (ref !== null && ref !== undefined) { ref.current = node; } }); }; }