{"version":3,"file":"use-selection.mjs","sources":["../../../../../../../packages/components/table/src/hooks/use-selection.ts"],"sourcesContent":["import type { Ref } from 'vue'\nimport { computed, ref, watch } from 'vue'\nimport type { TableData } from '../types'\nexport const useSelection = ({\n  selection, // 全部选中数据\n  allEnabledSelectionRows, // 当前列可选数据\n  emit\n}: {\n  selection: Ref<TableData[]>\n  allEnabledSelectionRows: Ref<TableData[]>\n  emit: any\n}) => {\n  const innerSelection = ref(selection.value ?? [])\n  const keepSelection = computed(() => innerSelection.value.filter((row) => row.disabled))\n  // 选中行\n  const selectionRows = computed(() => innerSelection.value)\n  // 选中行的key\n  const selectionRowKeys = computed(() => {\n    return innerSelection.value.map((row) => row.key)\n  })\n  // todo 下一步启用\n  const useSelectedKeys = ref<(string | number)[]>([])\n\n  const toggleSelectAll = (checked: boolean) => {\n    // console.log('榉木接地----', allEnabledSelectionRows.value, keepSelection.value)\n    // 当前列全部数据，包含disabled\n    const _allEnabledSelectionRows = [...allEnabledSelectionRows.value, ...keepSelection.value]\n    // 全选，则用当前页中所有可选行，不含disabled，都则使用disabled行\n    const _selection = checked ? _allEnabledSelectionRows : [...keepSelection.value]\n    // console.log('useSelectedKeys', useSelectedKeys.value)\n    let originSelection = [...innerSelection.value]\n    // 下面要处理全选数据插入的问题，同时需要处理取消全选数据剔除的问题\n    // 如果全选\n    if (checked) {\n      _selection.map((row) => {\n        // 如果全部选中项中不包含当前页的数据，则插入\n        if (!selectionRowKeys.value.includes(row.key)) {\n          originSelection.push(row)\n        }\n      })\n    } else {\n      // 取消全选\n      _allEnabledSelectionRows.map((row) => {\n        // console.log('徐丽华~~~~', row.disabled)\n        if (selectionRowKeys.value.includes(row.key) && !row.disabled) {\n          originSelection = originSelection.filter((r) => r.key !== row.key)\n        }\n      })\n      _selection.map((row) => {\n        if (!selectionRowKeys.value.includes(row.key)) {\n          originSelection.push(row)\n        }\n      })\n    }\n    innerSelection.value = originSelection\n    // TODO 没有绑定事件不需要触发事件函数\n    emit('update:selection', originSelection)\n    emit('selection-change', originSelection)\n  }\n\n  /**\n   * Table Checkbox全选\n   * @param checked\n   */\n  const selectAll = (checked: boolean) => {\n    // console.log('selectAll', checked)\n    toggleSelectAll(checked)\n    emit('select-all', checked)\n  }\n\n  watch(selection, (val) => {\n    innerSelection.value = val\n  })\n\n  /**\n   * 切换选中状态\n   * @param row\n   * @param checked\n   */\n  const toggleSelect = (row: TableData, checked: boolean) => {\n    let originSelection = [...innerSelection.value]\n    if (checked) {\n      if (row.key && !selectionRowKeys.value.includes(row.key)) {\n        originSelection.push(row)\n      }\n    } else {\n      // const index = originSelection.findIndex((r) => r === row)\n      // if (index > -1) {\n      //   originSelection.splice(index, 1)\n      // }\n      if (selectionRowKeys.value.includes(row.key) && !row.disabled) {\n        originSelection = originSelection.filter((r) => r.key !== row.key)\n      }\n    }\n    innerSelection.value = originSelection\n\n    emit('update:selection', originSelection)\n    emit('selection-change', originSelection)\n  }\n\n  return {\n    toggleSelect,\n    toggleSelectAll,\n    selectAll,\n    selectionRows,\n    // 选中的Keys\n    selectionRowKeys,\n    useSelectedKeys\n  }\n}\n"],"names":[],"mappings":"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"}