{"version":3,"file":"useRowSelection2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useRowSelection.ts"],"sourcesContent":["import { computed, nextTick, ref, toRaw, unref, watch } from 'vue'\nimport { omit } from 'lodash-es'\nimport { findNodeAll } from '@tav-ui/utils/helper/treeHelper'\nimport { isFunction } from '@tav-ui/utils/is'\nimport { ROW_KEY } from '../const'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { BasicTableProps, TableEmitType, TableRowSelection } from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\n\nexport function useRowSelection(\n  propsRef: ComputedRef<BasicTableProps>,\n  tableData: Ref<Recordable[]>,\n  emit: TableEmitType\n) {\n  const selectedRowKeysRef = ref<string[]>([])\n  const selectedRowRef = ref<Recordable[]>([])\n  const changing = ref(false)\n  const tempSelectedRowKeysRef = ref<string[]>([])\n\n  const getRowSelectionRef = computed((): TableRowSelection | null => {\n    const { rowSelection } = unref(propsRef)\n    if (!rowSelection) {\n      return null\n    }\n    return {\n      ...(changing.value ? { selectedRowKeys: unref(tempSelectedRowKeysRef) } : {}),\n      // selectedRowKeys: unref(selectedRowKeysRef),\n      hideSelectAll: false,\n      onChange: (selectedRowKeys: any) => {\n        setSelectedRowKeys(selectedRowKeys, false)\n        // selectedRowKeysRef.value = selectedRowKeys;\n        // selectedRowRef.value = selectedRows;\n      },\n      ...omit([rowSelection, 'onChange']),\n    }\n  })\n\n  watch(\n    () => unref(propsRef).rowSelection?.selectedRowKeys,\n    (v: any) => {\n      setSelectedRowKeys(v)\n    }\n  )\n\n  watch(\n    () => unref(selectedRowKeysRef),\n    () => {\n      nextTick(() => {\n        const { rowSelection } = unref(propsRef)\n        if (rowSelection) {\n          const { onChange } = rowSelection\n          if (onChange && isFunction(onChange)) onChange(getSelectRowKeys(), getSelectRows())\n        }\n        emit('selection-change', {\n          keys: getSelectRowKeys(),\n          rows: getSelectRows(),\n        })\n      })\n    },\n    { deep: true }\n  )\n\n  const getAutoCreateKey = computed(() => {\n    return unref(propsRef).autoCreateKey && !unref(propsRef).rowKey\n  })\n\n  const getRowKey = computed(() => {\n    const { rowKey } = unref(propsRef)\n    return unref(getAutoCreateKey) ? ROW_KEY : rowKey\n  })\n\n  /**\n   * 设置dom\n   * @param keys 选择项的key\n   */\n  function setTempSelectedRowKeysRef(keys: string[]) {\n    tempSelectedRowKeysRef.value = keys\n    changing.value = true\n    nextTick(() => {\n      changing.value = false\n    })\n  }\n\n  function setSelectedRowKeys(rowKeys: any, syncDom = true) {\n    selectedRowKeysRef.value = rowKeys\n    const allSelectedRows = findNodeAll(\n      toRaw(unref(tableData)).concat(toRaw(unref(selectedRowRef))),\n      (item) => rowKeys.includes(item[unref(getRowKey) as string]),\n      {\n        children: propsRef.value.childrenColumnName ?? 'children',\n      }\n    )\n    const trueSelectedRows: any[] = []\n    rowKeys.forEach((key: string) => {\n      const found = allSelectedRows.find((item) => item[unref(getRowKey) as string] === key)\n      found && trueSelectedRows.push(found)\n    })\n    selectedRowRef.value = trueSelectedRows\n    syncDom && setTempSelectedRowKeysRef(rowKeys)\n  }\n\n  function setSelectedRows(rows: Recordable[]) {\n    selectedRowRef.value = rows\n  }\n\n  function clearSelectedRowKeys() {\n    selectedRowRef.value = []\n    selectedRowKeysRef.value = []\n    setTempSelectedRowKeysRef([])\n  }\n\n  function deleteSelectRowByKey(key: string) {\n    const selectedRowKeys = unref(selectedRowKeysRef)\n    const index = selectedRowKeys.findIndex((item) => item === key)\n    if (index !== -1) {\n      unref(selectedRowKeysRef).splice(index, 1)\n    }\n  }\n\n  function getSelectRowKeys() {\n    return unref(selectedRowKeysRef)\n  }\n\n  function getSelectRows<T = Recordable>() {\n    // const ret = toRaw(unref(selectedRowRef)).map((item) => toRaw(item));\n    return unref(selectedRowRef) as T[]\n  }\n\n  function getRowSelection() {\n    return unref(getRowSelectionRef)!\n  }\n\n  return {\n    getRowSelection,\n    getRowSelectionRef,\n    getSelectRows,\n    getSelectRowKeys,\n    setSelectedRowKeys,\n    clearSelectedRowKeys,\n    deleteSelectRowByKey,\n    setSelectedRows,\n  }\n}\n"],"names":[],"mappings":"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"}