element-plus
Version:
A Component Library for Vue 3
1 lines • 3.73 kB
Source Map (JSON)
{"version":3,"file":"use-data.mjs","sources":["../../../../../../../packages/components/table-v2/src/composables/use-data.ts"],"sourcesContent":["import { computed, ref, unref, watch } from 'vue'\nimport { isArray } from '@element-plus/utils'\n\nimport type { TableV2Props } from '../table'\nimport type { KeyType } from '../types'\nimport type { UseRowReturn } from './use-row'\n\ntype UseDataProps = {\n expandedRowKeys: UseRowReturn['expandedRowKeys']\n lastRenderedRowIndex: UseRowReturn['lastRenderedRowIndex']\n resetAfterIndex: UseRowReturn['resetAfterIndex']\n}\n\nexport const useData = (\n props: TableV2Props,\n { expandedRowKeys, lastRenderedRowIndex, resetAfterIndex }: UseDataProps\n) => {\n const depthMap = ref<Record<KeyType, number>>({})\n\n const flattenedData = computed(() => {\n const depths: Record<KeyType, number> = {}\n const { data, rowKey } = props\n\n const _expandedRowKeys = unref(expandedRowKeys)\n\n if (!_expandedRowKeys || !_expandedRowKeys.length) return data\n\n const array: any[] = []\n const keysSet = new Set()\n _expandedRowKeys.forEach((x) => keysSet.add(x))\n\n let copy: any[] = data.slice()\n copy.forEach((x) => (depths[x[rowKey]] = 0))\n while (copy.length > 0) {\n const item = copy.shift()!\n\n array.push(item)\n if (\n keysSet.has(item[rowKey]) &&\n isArray(item.children) &&\n item.children.length > 0\n ) {\n copy = [...item.children, ...copy]\n item.children.forEach(\n (child: any) => (depths[child[rowKey]] = depths[item[rowKey]] + 1)\n )\n }\n }\n\n depthMap.value = depths\n return array\n })\n\n const data = computed(() => {\n const { data, expandColumnKey } = props\n return expandColumnKey ? unref(flattenedData) : data\n })\n\n watch(data, (val, prev) => {\n if (val !== prev) {\n lastRenderedRowIndex.value = -1\n resetAfterIndex(0, true)\n }\n })\n\n return {\n data,\n depthMap,\n }\n}\n\nexport type UseDataReturn = ReturnType<typeof useData>\n"],"names":["data"],"mappings":";;;AAaO,MAAM,UAAU,CACrB,KAAA,EACA,EAAE,eAAA,EAAiB,oBAAA,EAAsB,iBAAgB,KACtD;AACH,EAAA,MAAM,QAAA,GAAW,GAAA,CAA6B,EAAE,CAAA;AAEhD,EAAA,MAAM,aAAA,GAAgB,SAAS,MAAM;AACnC,IAAA,MAAM,SAAkC,EAAC;AACzC,IAAA,MAAM,EAAE,IAAA,EAAAA,KAAAA,EAAM,MAAA,EAAO,GAAI,KAAA;AAEzB,IAAA,MAAM,gBAAA,GAAmB,MAAM,eAAe,CAAA;AAE9C,IAAA,IAAI,CAAC,gBAAA,IAAoB,CAAC,gBAAA,CAAiB,QAAQ,OAAOA,KAAAA;AAE1D,IAAA,MAAM,QAAe,EAAC;AACtB,IAAA,MAAM,OAAA,uBAAc,GAAA,EAAI;AACxB,IAAA,gBAAA,CAAiB,QAAQ,CAAC,CAAA,KAAM,OAAA,CAAQ,GAAA,CAAI,CAAC,CAAC,CAAA;AAE9C,IAAA,IAAI,IAAA,GAAcA,MAAK,KAAA,EAAM;AAC7B,IAAA,IAAA,CAAK,OAAA,CAAQ,CAAC,CAAA,KAAO,MAAA,CAAO,EAAE,MAAM,CAAC,IAAI,CAAE,CAAA;AAC3C,IAAA,OAAO,IAAA,CAAK,SAAS,CAAA,EAAG;AACtB,MAAA,MAAM,IAAA,GAAO,KAAK,KAAA,EAAM;AAExB,MAAA,KAAA,CAAM,KAAK,IAAI,CAAA;AACf,MAAA,IACE,OAAA,CAAQ,GAAA,CAAI,IAAA,CAAK,MAAM,CAAC,CAAA,IACxB,OAAA,CAAQ,IAAA,CAAK,QAAQ,CAAA,IACrB,IAAA,CAAK,QAAA,CAAS,SAAS,CAAA,EACvB;AACA,QAAA,IAAA,GAAO,CAAC,GAAG,IAAA,CAAK,QAAA,EAAU,GAAG,IAAI,CAAA;AACjC,QAAA,IAAA,CAAK,QAAA,CAAS,OAAA;AAAA,UACZ,CAAC,KAAA,KAAgB,MAAA,CAAO,KAAA,CAAM,MAAM,CAAC,CAAA,GAAI,MAAA,CAAO,IAAA,CAAK,MAAM,CAAC,CAAA,GAAI;AAAA,SAClE;AAAA,MACF;AAAA,IACF;AAEA,IAAA,QAAA,CAAS,KAAA,GAAQ,MAAA;AACjB,IAAA,OAAO,KAAA;AAAA,EACT,CAAC,CAAA;AAED,EAAA,MAAM,IAAA,GAAO,SAAS,MAAM;AAC1B,IAAA,MAAM,EAAE,IAAA,EAAAA,KAAAA,EAAM,eAAA,EAAgB,GAAI,KAAA;AAClC,IAAA,OAAO,eAAA,GAAkB,KAAA,CAAM,aAAa,CAAA,GAAIA,KAAAA;AAAA,EAClD,CAAC,CAAA;AAED,EAAA,KAAA,CAAM,IAAA,EAAM,CAAC,GAAA,EAAK,IAAA,KAAS;AACzB,IAAA,IAAI,QAAQ,IAAA,EAAM;AAChB,MAAA,oBAAA,CAAqB,KAAA,GAAQ,EAAA;AAC7B,MAAA,eAAA,CAAgB,GAAG,IAAI,CAAA;AAAA,IACzB;AAAA,EACF,CAAC,CAAA;AAED,EAAA,OAAO;AAAA,IACL,IAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}