'use strict';

Object.defineProperty(exports, '__esModule', { value: true });

var React = require('react');

/**
 * Данный хук рекурсивно проходится по дереву items и создает 2 мапы: мапу путей и мапу фокусов.
 * Нужно для получения всей информации об item, зная только путь до него.
 */
var usePathMaps = function usePathMaps(items) {
  return React.useMemo(function () {
    var pathMap = new Map();
    var focusedToValueMap = new Map();
    pathMap.set('root', items.length);
    var rec = function rec(items) {
      var prevIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
      items.forEach(function (item, index) {
        var value = item.value,
          innerItems = item.items;
        var currIndex = "".concat(prevIndex, "/").concat(index).replace(/^(\/)/, '');
        focusedToValueMap.set(currIndex, item);
        if (innerItems) {
          pathMap.set(value, innerItems.length);
          rec(innerItems, currIndex);
        }
      });
    };
    rec(items);
    return [pathMap, focusedToValueMap];
  }, [items]);
};

exports.usePathMaps = usePathMaps;
