{"version":3,"file":"util.cjs","sources":["../../../../../../packages/vue-components/vc-tree/src/util.tsx"],"sourcesContent":["/**\n * Legacy code. Should avoid to use if you are new to import these code.\n */\n\nimport type { Key } from '@antdv/types';\n\nimport type {\n  BasicDataNode,\n  DataEntity,\n  DataNode,\n  Direction,\n  DragNodeEvent,\n  FlattenNode,\n  NodeElement,\n} from './interface';\nimport type { AllowDrop, TreeProps } from './props';\nimport { warning } from '@antdv/utils';\n\nexport function arrDel(list: Key[], value: Key) {\n  if (!list) return [];\n  const clone = list.slice();\n  const index = clone.indexOf(value);\n  if (index >= 0)\n    clone.splice(index, 1);\n\n  return clone;\n}\n\nexport function arrAdd(list: Key[], value: Key) {\n  const clone = (list || []).slice();\n  if (!clone.includes(value))\n    clone.push(value);\n\n  return clone;\n}\n\nexport function posToArr(pos: string) {\n  return pos.split('-');\n}\n\nexport function getPosition(level: string | number, index: number) {\n  return `${level}-${index}`;\n}\n\nexport function isTreeNode(node: NodeElement) {\n  return node && node.type && (node.type as any).isTreeNode;\n}\n\nexport function getDragChildrenKeys<TreeDataType extends BasicDataNode = DataNode>(\n  dragNodeKey: Key,\n  keyEntities: Record<Key, DataEntity<TreeDataType>>,\n): Key[] {\n  // not contains self\n  // self for left or right drag\n  const dragChildrenKeys = [];\n\n  const entity = keyEntities[dragNodeKey];\n  function dig(list: Array<DataEntity<TreeDataType>> = []) {\n    list.forEach(({ key, children }) => {\n      dragChildrenKeys.push(key);\n      dig(children);\n    });\n  }\n\n  dig(entity.children);\n\n  return dragChildrenKeys;\n}\n\nexport function isLastChild<TreeDataType extends BasicDataNode = DataNode>(\n  treeNodeEntity: DataEntity<TreeDataType>,\n) {\n  if (treeNodeEntity.parent) {\n    const posArr = posToArr(treeNodeEntity.pos);\n    return Number(posArr[posArr.length - 1]) === treeNodeEntity.parent.children.length - 1;\n  }\n  return false;\n}\n\nexport function isFirstChild<TreeDataType extends BasicDataNode = DataNode>(\n  treeNodeEntity: DataEntity<TreeDataType>,\n) {\n  const posArr = posToArr(treeNodeEntity.pos);\n  return Number(posArr[posArr.length - 1]) === 0;\n}\n\n// Only used when drag, not affect SSR.\nexport function calcDropPosition<TreeDataType extends BasicDataNode = DataNode>(\n  event: MouseEvent,\n  dragNode: DragNodeEvent,\n  targetNode: DragNodeEvent,\n  indent: number,\n  startMousePosition: {\n    x: number;\n    y: number;\n  },\n  allowDrop: AllowDrop<TreeDataType>,\n  flattenedNodes: FlattenNode[],\n  keyEntities: Record<Key, DataEntity<TreeDataType>>,\n  expandKeysSet: Set<Key>,\n  direction: Direction,\n): {\n    dropPosition: -1 | 0 | 1;\n    dropLevelOffset: number;\n    dropTargetKey: Key;\n    dropTargetPos: string;\n    dropContainerKey: Key;\n    dragOverNodeKey: Key;\n    dropAllowed: boolean;\n  } {\n  const { clientX, clientY } = event;\n  const { top, height } = (event.target as HTMLElement).getBoundingClientRect();\n  // optional chain for testing\n  const horizontalMouseOffset\n    = (direction === 'rtl' ? -1 : 1) * ((startMousePosition?.x || 0) - clientX);\n  const rawDropLevelOffset = (horizontalMouseOffset - 12) / indent;\n\n  // find abstract drop node by horizontal offset\n  let abstractDropNodeEntity: DataEntity<TreeDataType> = keyEntities[targetNode.eventKey];\n\n  if (clientY < top + height / 2) {\n    // first half, set abstract drop node to previous node\n    const nodeIndex = flattenedNodes.findIndex(\n      flattenedNode => flattenedNode.key === abstractDropNodeEntity.key,\n    );\n    const prevNodeIndex = nodeIndex <= 0 ? 0 : nodeIndex - 1;\n    const prevNodeKey = flattenedNodes[prevNodeIndex].key;\n    abstractDropNodeEntity = keyEntities[prevNodeKey];\n  }\n\n  const initialAbstractDropNodeKey = abstractDropNodeEntity.key;\n\n  const abstractDragOverEntity = abstractDropNodeEntity;\n  const dragOverNodeKey = abstractDropNodeEntity.key;\n\n  let dropPosition: -1 | 0 | 1 = 0;\n  let dropLevelOffset = 0;\n\n  // Only allow cross level drop when dragging on a non-expanded node\n  if (!expandKeysSet.has(initialAbstractDropNodeKey)) {\n    for (let i = 0; i < rawDropLevelOffset; i += 1) {\n      if (isLastChild(abstractDropNodeEntity)) {\n        abstractDropNodeEntity = abstractDropNodeEntity.parent;\n        dropLevelOffset += 1;\n      } else {\n        break;\n      }\n    }\n  }\n  const abstractDragDataNode = dragNode.eventData;\n  const abstractDropDataNode = abstractDropNodeEntity.node;\n  let dropAllowed = true;\n  if (\n    isFirstChild(abstractDropNodeEntity)\n    && abstractDropNodeEntity.level === 0\n    && clientY < top + height / 2\n    && allowDrop({\n      dragNode: abstractDragDataNode,\n      dropNode: abstractDropDataNode,\n      dropPosition: -1,\n    })\n    && abstractDropNodeEntity.key === targetNode.eventKey\n  ) {\n    // first half of first node in first level\n    dropPosition = -1;\n  } else if ((abstractDragOverEntity.children || []).length && expandKeysSet.has(dragOverNodeKey)) {\n    // drop on expanded node\n    // only allow drop inside\n    if (\n      allowDrop({\n        dragNode: abstractDragDataNode,\n        dropNode: abstractDropDataNode,\n        dropPosition: 0,\n      })\n    ) {\n      dropPosition = 0;\n    }\n    else {\n      dropAllowed = false;\n    }\n  } else if (dropLevelOffset === 0) {\n    if (rawDropLevelOffset > -1.5) {\n      // | Node     | <- abstractDropNode\n      // | -^-===== | <- mousePosition\n      // 1. try drop after\n      // 2. do not allow drop\n      if (\n        allowDrop({\n          dragNode: abstractDragDataNode,\n          dropNode: abstractDropDataNode,\n          dropPosition: 1,\n        })\n      ) {\n        dropPosition = 1;\n      }\n      else {\n        dropAllowed = false;\n      }\n    } else {\n      // | Node     | <- abstractDropNode\n      // | ---==^== | <- mousePosition\n      // whether it has children or doesn't has children\n      // always\n      // 1. try drop inside\n      // 2. try drop after\n      // 3. do not allow drop\n      if (\n        allowDrop({\n          dragNode: abstractDragDataNode,\n          dropNode: abstractDropDataNode,\n          dropPosition: 0,\n        })\n      ) {\n        dropPosition = 0;\n      }\n      else if (\n        allowDrop({\n          dragNode: abstractDragDataNode,\n          dropNode: abstractDropDataNode,\n          dropPosition: 1,\n        })\n      ) {\n        dropPosition = 1;\n      }\n      else {\n        dropAllowed = false;\n      }\n    }\n  } else {\n    // | Node1 | <- abstractDropNode\n    //      |  Node2  |\n    // --^--|----=====| <- mousePosition\n    // 1. try insert after Node1\n    // 2. do not allow drop\n    if (\n      allowDrop({\n        dragNode: abstractDragDataNode,\n        dropNode: abstractDropDataNode,\n        dropPosition: 1,\n      })\n    ) {\n      dropPosition = 1;\n    }\n    else {\n      dropAllowed = false;\n    }\n  }\n\n  return {\n    dropPosition,\n    dropLevelOffset,\n    dropTargetKey: abstractDropNodeEntity.key,\n    dropTargetPos: abstractDropNodeEntity.pos,\n    dragOverNodeKey,\n    dropContainerKey: dropPosition === 0 ? null : abstractDropNodeEntity.parent?.key || null,\n    dropAllowed,\n  };\n}\n\n/**\n * Return selectedKeys according with multiple prop\n * @param selectedKeys\n * @param props\n * @returns [string]\n */\nexport function calcSelectedKeys(selectedKeys: Key[], props: TreeProps) {\n  if (!selectedKeys) return undefined;\n\n  const { multiple } = props;\n  if (multiple)\n    return selectedKeys.slice();\n\n  if (selectedKeys.length)\n    return [selectedKeys[0]];\n\n  return selectedKeys;\n}\n\n/**\n * Parse `checkedKeys` to { checkedKeys, halfCheckedKeys } style\n */\nexport function parseCheckedKeys(keys: Key[] | { checked: Key[]; halfChecked: Key[] }) {\n  if (!keys)\n    return null;\n\n  // Convert keys to object format\n  let keyProps;\n  if (Array.isArray(keys)) {\n    // [Legacy] Follow the api doc\n    keyProps = {\n      checkedKeys: keys,\n      halfCheckedKeys: undefined,\n    };\n  } else if (typeof keys === 'object') {\n    keyProps = {\n      checkedKeys: keys.checked || undefined,\n      halfCheckedKeys: keys.halfChecked || undefined,\n    };\n  } else {\n    warning(false, '`checkedKeys` is not an array or an object');\n    return null;\n  }\n\n  return keyProps;\n}\n\n/**\n * If user use `autoExpandParent` we should get the list of parent node\n * @param keyList\n * @param keyEntities\n */\nexport function conductExpandParent(keyList: Key[], keyEntities: Record<Key, DataEntity>): Key[] {\n  const expandedKeys = new Set<Key>();\n\n  function conductUp(key: Key) {\n    if (expandedKeys.has(key)) return;\n\n    const entity = keyEntities[key];\n    if (!entity) return;\n\n    expandedKeys.add(key);\n\n    const { parent, node } = entity;\n\n    if (node.disabled) return;\n\n    if (parent)\n      conductUp(parent.key);\n  }\n\n  (keyList || []).forEach((key) => {\n    conductUp(key);\n  });\n\n  return [...expandedKeys];\n}\n"],"names":["arrDel","list","value","clone","slice","index","indexOf","splice","arrAdd","includes","push","posToArr","pos","split","getPosition","level","isTreeNode","node","type","getDragChildrenKeys","dragNodeKey","keyEntities","dragChildrenKeys","entity","dig","forEach","key","children","isLastChild","treeNodeEntity","parent","posArr","Number","length","isFirstChild","calcDropPosition","event","dragNode","targetNode","indent","startMousePosition","allowDrop","flattenedNodes","expandKeysSet","direction","clientX","clientY","top","height","target","getBoundingClientRect","horizontalMouseOffset","x","rawDropLevelOffset","abstractDropNodeEntity","eventKey","nodeIndex","findIndex","flattenedNode","prevNodeIndex","prevNodeKey","initialAbstractDropNodeKey","abstractDragOverEntity","dragOverNodeKey","dropPosition","dropLevelOffset","has","i","abstractDragDataNode","eventData","abstractDropDataNode","dropAllowed","dropNode","dropTargetKey","dropTargetPos","dropContainerKey","calcSelectedKeys","selectedKeys","props","undefined","multiple","parseCheckedKeys","keys","keyProps","Array","isArray","checkedKeys","halfCheckedKeys","checked","halfChecked","warning","conductExpandParent","keyList","expandedKeys","Set","conductUp","add","disabled"],"mappings":"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"}