import { toConsumableArray as _toConsumableArray } from '../../../_virtual/_rollupPluginBabelHelpers.js';
import { useMemo } from 'react';
import { isEmpty } from '../../../utils/isEmpty.js';

var createPathMaps = function createPathMaps() {
  var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  var pathMap = new Map();
  var focusedToValueMap = new Map();
  var valueToCheckedMap = new Map();
  var valueToItemMap = new Map();
  var valueToPathMap = new Map();
  pathMap.set('root', items.length);
  var rec = function rec(itemsToMap) {
    var prevIndex = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
    var path = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : [];
    itemsToMap.forEach(function (item, index) {
      var value = item.value,
        innerItems = item.items;
      var currIndex = "".concat(prevIndex, "/").concat(index).replace(/^(\/)/, '');
      focusedToValueMap.set(currIndex, item);
      valueToCheckedMap.set(value, false);
      valueToPathMap.set(value.toString(), [].concat(_toConsumableArray(path), [value.toString()]));
      if (!innerItems || isEmpty(innerItems)) {
        valueToItemMap.set(value, item);
      } else {
        pathMap.set(value, innerItems.length);
        rec(innerItems, currIndex, [].concat(_toConsumableArray(path), [value.toString()]));
      }
    });
  };
  rec(items);
  return [pathMap, focusedToValueMap, valueToCheckedMap, valueToItemMap, valueToPathMap];
};

// Рекурсивно проходим по дереву items и создаем мапы для быстрой работы с деревом.
var usePathMaps = function usePathMaps() {
  var items = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
  return useMemo(function () {
    return createPathMaps(items);
  }, [items]);
};

export { usePathMaps };
