{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/table/src/table.tsx"],"sourcesContent":["import type { ComponentPublicInstance, Ref, StyleValue } from 'vue'\nimport { computed, defineComponent, ref, watch, provide, reactive, toRef, Transition } from 'vue'\nimport { getComponentNamespace, getNamespace } from '../../../utils/global-config'\nimport Scrollbar from '../../scrollbar/src/scrollbar.vue'\nimport Empty from '../../empty/src/empty.vue'\nimport { isArray } from '../../../utils/is'\nimport { addUnit, compose } from '../../../shared/utils'\nimport { tableProps } from './table-props'\n\nimport type { TableDataWithRaw, TableData, TableColumnData } from './types'\n\nimport Tbody from './layout/table-tbody'\nimport Tr from './layout/table-tr'\nimport Td from './layout/table-td'\nimport Th from './layout/table-th'\nimport Thead from './layout/table-thead'\nimport ColGroup from './layout/table-col-group'\nimport SettingIcon from './layout/table-setting-icon'\nimport Loading from './layout/table-loading'\n\nimport {\n  injectPrivatePropToTableColumnData,\n  injectPrivatePropToTableData,\n  splitColumns,\n  genSortFn\n} from './utils'\nimport { tableInjectionKey, tableColumnInjectionKey } from './context'\n\nimport { useSelection } from './hooks/use-selection'\nimport { useColumnResize } from './hooks/use-column-resize'\nimport { useScroll } from './hooks/use-scroll'\nimport { useSorter } from './hooks/use-sorter'\n\nexport default defineComponent({\n  name: getComponentNamespace('Table'),\n  props: tableProps,\n  emits: ['update:selection', 'update:selectedKeys', 'selection-change', 'select-all'],\n  setup(props, { slots, emit }) {\n    const ns = getNamespace('table')\n\n    const flattenData = ref<TableData[]>([])\n    const renderData = ref<TableData[]>([])\n\n    // 拆解分组后的数据表头信息\n    const dataColumns = ref<TableColumnData[]>([])\n    // 二维数组\n    const groupColumns = ref<TableColumnData[][]>([])\n\n    const renderDataColumns = ref<TableColumnData[]>([])\n    const renderGroupColumns = ref<TableColumnData[][]>([])\n\n    // resize\n    const thRefs = ref<Record<string, HTMLElement>>({})\n\n    const { theadComRef, tbodyComRef, horScrollPosition, onTbodyScroll } =\n      useScroll(renderDataColumns)\n\n    // sortable\n    const { activeProp, activeSort, isSortPopup, handleSortChange } = useSorter({\n      sort: props.defaultSort.sort || '',\n      prop: props.defaultSort.prop || '',\n      popup: props.defaultSort.popup || false,\n      callback: () => {\n        updateRenderData()\n      }\n    })\n\n    const updateRenderData = () => {\n      renderData.value = compose((data: TableData[]) => {\n        // 排序\n        const prop = activeProp.value\n        const sort = activeSort.value\n        return genSortFn(prop, sort)!(data)\n      })([...flattenData.value])\n    }\n\n    const updateRenderColumnsData = (columnPropSortArray?: string[]) => {\n      const _renderDataColumns = compose(\n        (columns: TableColumnData[]) => splitColumns(columns),\n        (columns: TableColumnData[]) => {\n          return columns.filter((column) => !column.hidden)\n        },\n        // 处理拖动排序column位置\n        (columns: TableColumnData[]) => {\n          const temp: TableColumnData[] = []\n          if (isArray(columnPropSortArray)) {\n            columnPropSortArray.forEach((prop) => {\n              const index = columns.findIndex((column) => column.prop === prop)\n              if (index >= -1) {\n                const _column = columns.splice(index, 1)[0]\n                temp.push(_column)\n              }\n            })\n\n            const regroupColumns = [...columns, ...temp]\n            // 覆盖\n            dataColumns.value = regroupColumns\n\n            return regroupColumns\n          }\n          return columns\n        }\n      )([...dataColumns.value])\n\n      renderDataColumns.value = _renderDataColumns\n      // TODO 多级表头\n      renderGroupColumns.value = [_renderDataColumns]\n    }\n\n    watch(\n      () => props.columns,\n      (columns) => {\n        const result = injectPrivatePropToTableColumnData(columns)\n        dataColumns.value = result.dataColumns\n        groupColumns.value = result.groupColumns\n        updateRenderColumnsData()\n      },\n      { immediate: true, deep: true }\n    )\n\n    watch(\n      () => props.data,\n      () => {\n        flattenData.value = injectPrivatePropToTableData(props.data)\n        updateRenderData()\n      },\n      { immediate: true, deep: true }\n    )\n\n    const renderHeader = () => {\n      const Component = Scrollbar\n      return (\n        <div class={[`${ns}__header`]}>\n          <Component\n            ref={theadComRef}\n            class={[`${ns}__header-scroll`]}\n            hide={true}\n            disableVertical={true}\n          >\n            <table\n              cellpadding={0}\n              cellspacing={0}\n              class={[`${ns}__element`]}\n              style={{\n                height: '100%',\n                tableLayout: 'fixed'\n              }}\n            >\n              {renderDataColumns.value.length !== 0 && (\n                <ColGroup dataColumns={renderDataColumns.value} columnWidth={columnWidth} />\n              )}\n              <Thead>\n                {renderGroupColumns.value.map((row, index) => {\n                  return (\n                    <Tr key={`header-row-${index}`}>\n                      {row.map((column, index) => {\n                        // 最后一个不添加可拖动区域\n                        const resizable =\n                          props.border &&\n                          props.columnResizable &&\n                          Boolean(column.prop) &&\n                          index < row.length - 1\n\n                        return (\n                          <Th\n                            key={`th-${index}`}\n                            column={column}\n                            dataColumns={row}\n                            resizable={resizable}\n                            ref={(ins: ComponentPublicInstance) => {\n                              if (ins?.$el && column.prop) {\n                                thRefs.value[column.prop] = ins.$el\n                              }\n                            }}\n                          />\n                        )\n                      })}\n                    </Tr>\n                  )\n                })}\n              </Thead>\n            </table>\n          </Component>\n\n          {props.config.setting && <SettingIcon></SettingIcon>}\n        </div>\n      )\n    }\n\n    // rows\n    const renderRecord = (record: TableDataWithRaw, rowIndex: number) => {\n      const currentKey = record.key\n      const uniqueKey = props.primaryKey && record?.raw?.[props.primaryKey]\n      return (\n        <>\n          <Tr key={currentKey} rowHeight={props.rowHeight} uniqueIndex={uniqueKey}>\n            {renderDataColumns.value.map((column, index) => {\n              // const cellId = `${rowIndex}-${index}`\n              const [rowspan, colspan] = [1, 1]\n              return (\n                <Td\n                  key={`td-${index}`}\n                  rowIndex={rowIndex}\n                  record={record}\n                  column={column}\n                  dataColumns={renderDataColumns.value}\n                  rowSpan={rowspan}\n                  colSpan={colspan}\n                  defaultEmptyFill={props.defaultEmptyFill}\n                />\n              )\n            })}\n          </Tr>\n        </>\n      )\n    }\n\n    // table body height\n    const tableBodyStyle = computed(() => {\n      const style: StyleValue = {\n        height: addUnit(props.height),\n        maxHeight: addUnit(props.maxHeight)\n      }\n      return style\n    })\n\n    const renderEmpty = () => {\n      return (\n        <Tr>\n          <Td colSpan={dataColumns.value.length} empty={true}>\n            {slots.empty?.() ?? <Empty />}\n          </Td>\n        </Tr>\n      )\n    }\n\n    // 水平滚动列时当表格没有数据 表头支持滚动\n    const calcTableBodyMinWidth = computed(() => {\n      const arr: any[] = []\n      renderDataColumns.value.forEach((column) => {\n        if (column.width) {\n          arr.push(addUnit(column.width))\n        } else if (column.minWidth) {\n          arr.push(addUnit(column.minWidth))\n        }\n      })\n\n      return `calc(${arr.join(' + ')})`\n    })\n\n    const renderBody = () => {\n      const Component = Scrollbar\n      return (\n        <div class={[`${ns}__body`, renderData.value.length === 0 && 'is-empty']}>\n          <Component\n            class={[`${ns}__body-scroll`]}\n            onScroll={onTbodyScroll}\n            style={{\n              height: tableBodyStyle.value.height,\n              maxHeight: tableBodyStyle.value.maxHeight\n            }}\n            ref={tbodyComRef}\n          >\n            <table\n              cellpadding={0}\n              cellspacing={0}\n              class={[`${ns}__element`]}\n              style={{\n                maxHeight: tableBodyStyle.value.maxHeight,\n                tableLayout: 'fixed',\n                height: !renderData.value.length ? '100%' : '',\n                minWidth: calcTableBodyMinWidth.value\n              }}\n            >\n              {renderData.value.length !== 0 && (\n                <ColGroup dataColumns={renderDataColumns.value} columnWidth={columnWidth} />\n              )}\n\n              <Tbody>\n                {renderData.value.length > 0\n                  ? renderData.value.map((record, index) => renderRecord(record, index))\n                  : renderEmpty()}\n              </Tbody>\n            </table>\n          </Component>\n        </div>\n      )\n    }\n\n    const renderFooter = () => {}\n\n    const allEnabledSelectionRows = computed(() => {\n      const rows: TableData[] = []\n      const travel = (data: TableDataWithRaw[]) => {\n        for (const record of data) {\n          if (!record.disabled) {\n            rows.push(record.raw!)\n          }\n          if (record.children) {\n            travel(record.children)\n          }\n        }\n      }\n      // renderData为列表中渲染的数据\n      travel(renderData.value)\n      return rows\n    })\n\n    // hooks\n\n    const { toggleSelectAll, toggleSelect, selectAll, selectionRows, selectionRowKeys } =\n      useSelection({\n        selection: toRef(props, 'selection') as Ref<TableData[]>,\n        allEnabledSelectionRows,\n        emit\n      })\n\n    const { resizingProp, columnWidth, handleThMouseDown } = useColumnResize(thRefs)\n\n    // tableContext\n    provide(\n      tableInjectionKey,\n      reactive({\n        slots,\n        scroll: {\n          horScrollPosition\n        },\n        sortStore: {\n          activeProp,\n          activeSort,\n          isSortPopup,\n          handleSortChange\n        },\n        opsStore: {\n          selectionRows,\n          selectionRowKeys,\n          allEnabledSelectionRows,\n          toggleSelectAll,\n          toggleSelect,\n          selectAll\n        },\n        resizeStore: {\n          handleThMouseDown,\n          prop: resizingProp\n        }\n      })\n    )\n\n    // tableColumnContext\n    provide(\n      tableColumnInjectionKey,\n      reactive({\n        groupColumns: dataColumns,\n        handleUpdateColumn: updateRenderColumnsData\n      })\n    )\n\n    const renderTable = () => {\n      return (\n        <>\n          {renderHeader()}\n          {renderBody()}\n          {renderFooter()}\n        </>\n      )\n    }\n\n    return () => {\n      return (\n        <div\n          class={[\n            ns,\n            props.border && 'is-border',\n            props.hover && 'is-hover',\n            props.stripe && 'is-stripe'\n          ]}\n        >\n          {slots.header && <div class={[`${ns}__external-header`]}>{slots.header()}</div>}\n          {renderTable()}\n          {slots.footer && <div class={[`${ns}__external-footer`]}>{slots.footer()}</div>}\n\n          {<Transition name=\"bn-fade-in\">{props.loading && <Loading />}</Transition>}\n        </div>\n      )\n    }\n  }\n})\n"],"names":["_isSlot","s","Object","prototype","toString","call","_isVNode","name","getComponentNamespace","props","tableProps","emits","setup","slots","emit","ns","getNamespace","flattenData","ref","renderData","dataColumns","groupColumns","renderDataColumns","renderGroupColumns","thRefs","theadComRef","tbodyComRef","horScrollPosition","onTbodyScroll","useScroll","activeProp","activeSort","isSortPopup","handleSortChange","useSorter","sort","defaultSort","prop","popup","callback","updateRenderData","value","compose","data","genSortFn","updateRenderColumnsData","columnPropSortArray","_renderDataColumns","columns","splitColumns","filter","column","hidden","temp","isArray","forEach","index","findIndex","_column","splice","push","regroupColumns","watch","result","injectPrivatePropToTableColumnData","immediate","deep","injectPrivatePropToTableData","renderHeader","_slot2","Component","Scrollbar","_createVNode","default","height","tableLayout","length","ColGroup","columnWidth","Thead","map","row","_slot","Tr","resizable","border","columnResizable","Boolean","Th","ins","$el","config","setting","SettingIcon","renderRecord","record","rowIndex","_slot3","currentKey","key","uniqueKey","primaryKey","raw","_Fragment","rowHeight","rowspan","colspan","Td","defaultEmptyFill","tableBodyStyle","computed","style","addUnit","maxHeight","renderEmpty","empty","Empty","calcTableBodyMinWidth","arr","width","minWidth","join","renderBody","Tbody","renderFooter","allEnabledSelectionRows","rows","travel","disabled","children","toggleSelectAll","toggleSelect","selectAll","selectionRows","selectionRowKeys","useSelection","selection","toRef","resizingProp","handleThMouseDown","useColumnResize","provide","tableInjectionKey","reactive","scroll","sortStore","opsStore","resizeStore","tableColumnInjectionKey","handleUpdateColumn","renderTable","hover","stripe","header","footer","Transition","loading","Loading"],"mappings":"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"}