import { updateDescendants } from './updateDescendants.js';
import { updateAncestors } from './updateAncestors.js';
import { isEmpty } from '../../../utils/isEmpty.js';
import { updateSingleAncestors } from './updateSingleAncestors.js';

// Пересчитывает мапу checked-состояний согласно value с обновлением родителей и потомков.
var syncCheckedState = function syncCheckedState(value, valueToCheckedMap, valueToItemMap) {
  var checked = new Map(valueToCheckedMap);
  checked.forEach(function (_, key) {
    checked.set(key, false);
  });
  if (Array.isArray(value)) {
    value.forEach(function (currentValue) {
      var currentItem = valueToItemMap.get(currentValue);
      if (!currentItem) {
        return;
      }
      checked.set(currentValue, true);
      updateDescendants(currentItem, checked, true);
      updateAncestors(currentItem, checked);
    });
    return checked;
  }
  var currentItem = valueToItemMap.get(value);
  if (!isEmpty(value) && currentItem) {
    checked.set(value, 'done');
    updateSingleAncestors(currentItem, checked, 'dot');
  }
  return checked;
};

export { syncCheckedState };
