UNPKG

@yandex/ui

Version:

Yandex UI components

53 lines (52 loc) 1.9 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeAllRefs = exports.mergeRefs = void 0; var canUseDOM_1 = require("./canUseDOM"); /** * Копирует ссылку на DOM элемент из одного объекта в другой и возвращает объект со ссылкой. * * @param source Объект содержащий DOM элемент * @param target Объект куда необходимо скопировать DOM элемент */ var mergeRefs = function (source) { var targets = []; for (var _i = 1; _i < arguments.length; _i++) { targets[_i - 1] = arguments[_i]; } // Используем raf, т.к. ссылки устанавливаются асинхронно. if (canUseDOM_1.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; }; exports.mergeRefs = mergeRefs; // TODO(ISL-8110): @yandex-lego/components: Поддержать callback для innerRef // Перейти на эту функцию 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; } }); }; } exports.mergeAllRefs = mergeAllRefs;