import { TreeData, TreeItem } from '../src/tree-select-types';

export const nodeMap = new Map<string, TreeItem>();

export function attributeExtension(data: TreeData): any {
  data.forEach((el) => {
    let level = 1;
    el.level = level;
    nodeMap.set(el.label, el);
    const nodeQueue = [];
    nodeQueue.push(el);
    while(nodeQueue.length !== 0) {
      const node = nodeQueue.shift();
      if(node.children) {
        node.children.forEach((el) => {
          el.level = level + 1;
          el.parent = node;
          nodeMap.set(el.label, el);
          nodeQueue.push(el);
        });
      }
      level += 1;
    }
  });
  return data;
}

/**
 * 动态获取class字符串
 * @param classStr 是一个字符串,固定的class名
 * @param classOpt 是一个对象,key表示class名,value为布尔值,true则添加,否则不添加
 * @returns 最终的class字符串
 */
export function className(
  classStr: string,
  classOpt?: { [key: string]: boolean }
): string {
  let classname = classStr;
  if (typeof classOpt === 'object') {
    Object.keys(classOpt).forEach((key) => {
      classOpt[key] && (classname += ` ${key}`);
    });
  }

  return classname;
}