{"version":3,"file":"useTableExpand2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useTableExpand.ts"],"sourcesContent":["import { computed, ref, toRaw, unref } from 'vue'\nimport { ROW_KEY } from '../const'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { BasicTableProps, TableEmitType } from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\n\nexport function useTableExpand(\n  propsRef: ComputedRef<BasicTableProps>,\n  tableData: Ref<Recordable[]>,\n  emit: TableEmitType\n) {\n  const expandedRowKeys = ref<string[]>([])\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  const getExpandOption = computed(() => {\n    const { isTreeTable } = unref(propsRef)\n    if (!isTreeTable) return {}\n\n    return {\n      expandedRowKeys: unref(expandedRowKeys),\n      onExpandedRowsChange: (keys: string[]) => {\n        expandedRowKeys.value = keys\n        emit('expanded-rows-change', keys)\n      },\n    }\n  })\n\n  function expandAll() {\n    const keys = getAllKeys()\n    expandedRowKeys.value = keys\n  }\n\n  function expandRows(keys: string[], cover = false) {\n    const { isTreeTable } = unref(propsRef)\n    if (!isTreeTable) return\n    if (cover) {\n      expandedRowKeys.value = keys\n    } else {\n      expandedRowKeys.value = [...expandedRowKeys.value, ...keys]\n    }\n  }\n\n  function getAllKeys(data?: Recordable[]) {\n    const keys: string[] = []\n    const { childrenColumnName } = unref(propsRef)\n    toRaw(data || unref(tableData)).forEach((item) => {\n      keys.push(item[unref(getRowKey) as string])\n      const children = item[childrenColumnName || 'children']\n      if (children?.length) {\n        keys.push(...getAllKeys(children))\n      }\n    })\n    return keys\n  }\n\n  function collapseAll() {\n    expandedRowKeys.value = []\n  }\n\n  return { getExpandOption, expandAll, expandRows, collapseAll }\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,cAAc,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,EAAE;AAC1D,EAAE,MAAM,eAAe,GAAG,GAAG,CAAC,EAAE,CAAC,CAAC;AAClC,EAAE,MAAM,gBAAgB,GAAG,QAAQ,CAAC,MAAM;AAC1C,IAAI,OAAO,KAAK,CAAC,QAAQ,CAAC,CAAC,aAAa,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC;AACpE,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,SAAS,GAAG,QAAQ,CAAC,MAAM;AACnC,IAAI,MAAM,EAAE,MAAM,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACvC,IAAI,OAAO,KAAK,CAAC,gBAAgB,CAAC,GAAG,OAAO,GAAG,MAAM,CAAC;AACtD,GAAG,CAAC,CAAC;AACL,EAAE,MAAM,eAAe,GAAG,QAAQ,CAAC,MAAM;AACzC,IAAI,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,WAAW;AACpB,MAAM,OAAO,EAAE,CAAC;AAChB,IAAI,OAAO;AACX,MAAM,eAAe,EAAE,KAAK,CAAC,eAAe,CAAC;AAC7C,MAAM,oBAAoB,EAAE,CAAC,IAAI,KAAK;AACtC,QAAQ,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACrC,QAAQ,IAAI,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;AAC3C,OAAO;AACP,KAAK,CAAC;AACN,GAAG,CAAC,CAAC;AACL,EAAE,SAAS,SAAS,GAAG;AACvB,IAAI,MAAM,IAAI,GAAG,UAAU,EAAE,CAAC;AAC9B,IAAI,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACjC,GAAG;AACH,EAAE,SAAS,UAAU,CAAC,IAAI,EAAE,KAAK,GAAG,KAAK,EAAE;AAC3C,IAAI,MAAM,EAAE,WAAW,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AAC5C,IAAI,IAAI,CAAC,WAAW;AACpB,MAAM,OAAO;AACb,IAAI,IAAI,KAAK,EAAE;AACf,MAAM,eAAe,CAAC,KAAK,GAAG,IAAI,CAAC;AACnC,KAAK,MAAM;AACX,MAAM,eAAe,CAAC,KAAK,GAAG,CAAC,GAAG,eAAe,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;AAClE,KAAK;AACL,GAAG;AACH,EAAE,SAAS,UAAU,CAAC,IAAI,EAAE;AAC5B,IAAI,MAAM,IAAI,GAAG,EAAE,CAAC;AACpB,IAAI,MAAM,EAAE,kBAAkB,EAAE,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;AACnD,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,IAAI,KAAK;AACtD,MAAM,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;AACxC,MAAM,MAAM,QAAQ,GAAG,IAAI,CAAC,kBAAkB,IAAI,UAAU,CAAC,CAAC;AAC9D,MAAM,IAAI,QAAQ,EAAE,MAAM,EAAE;AAC5B,QAAQ,IAAI,CAAC,IAAI,CAAC,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AAC3C,OAAO;AACP,KAAK,CAAC,CAAC;AACP,IAAI,OAAO,IAAI,CAAC;AAChB,GAAG;AACH,EAAE,SAAS,WAAW,GAAG;AACzB,IAAI,eAAe,CAAC,KAAK,GAAG,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,OAAO,EAAE,eAAe,EAAE,SAAS,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;AACjE;;;;"}