{"version":3,"file":"useColumns2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useColumns.ts"],"sourcesContent":["// import { usePermission } from \"/@/hooks/web/usePermission\";\nimport { computed, ref, toRaw, unref, watch } from 'vue'\nimport { cloneDeep, isEqual } from 'lodash-es'\nimport { tavI18n } from '@tav-ui/locales'\nimport { formatToDate } from '@tav-ui/utils/dateUtil'\nimport { type VueNode, formatNumber } from '@tav-ui/utils'\nimport { isArray, isBoolean, isFunction, isMap, isString } from '@tav-ui/utils/is'\nimport { renderEditCell } from '../components/editable'\nimport { ACTION_COLUMN_FLAG, DEFAULT_ALIGN, INDEX_COLUMN_FLAG, PAGE_SIZE } from '../const'\nimport type { ComputedRef, Ref } from 'vue'\nimport type { PaginationProps } from '../types/pagination'\nimport type {\n  BasicColumn,\n  BasicTableProps,\n  CellFormat,\n  GetColumnsParams,\n  RowKeyType,\n} from '../types/table'\n\ntype Recordable<T = any> = Record<string, T>\n\nfunction handleItem(item: BasicColumn, ellipsis: boolean) {\n  const { key, dataIndex, children } = item\n  item.align = item.align || DEFAULT_ALIGN\n  if (ellipsis) {\n    if (!key) {\n      item.key = dataIndex as RowKeyType\n    }\n    if (!isBoolean(item.ellipsis)) {\n      Object.assign(item, {\n        ellipsis,\n      })\n    }\n  }\n  if (children && children.length) {\n    handleChildren(children, !!ellipsis)\n  }\n}\n\nfunction handleChildren(children: BasicColumn[] | undefined, ellipsis: boolean) {\n  if (!children) return\n  children.forEach((item) => {\n    const { children } = item\n    handleItem(item, ellipsis)\n    handleChildren(children, ellipsis)\n  })\n}\n\nfunction handleIndexColumn(\n  propsRef: ComputedRef<BasicTableProps>,\n  getPaginationRef: ComputedRef<boolean | PaginationProps>,\n  columns: BasicColumn[]\n) {\n  const { showIndexColumn, indexColumnProps, isTreeTable } = unref(propsRef)\n\n  let pushIndexColumns = false\n  if (unref(isTreeTable)) {\n    return\n  }\n  columns.forEach(() => {\n    const indIndex = columns.findIndex((column) => column.flag === INDEX_COLUMN_FLAG)\n    if (showIndexColumn) {\n      pushIndexColumns = indIndex === -1\n    } else if (!showIndexColumn && indIndex !== -1) {\n      columns.splice(indIndex, 1)\n    }\n  })\n\n  if (!pushIndexColumns) return\n\n  const isFixedLeft = columns.some((item) => item.fixed === 'left')\n\n  columns.unshift({\n    flag: INDEX_COLUMN_FLAG,\n    width: 50,\n    title: tavI18n('Tav.tablePro.columns.1'),\n    align: 'center',\n    customRender: ({ index }) => {\n      const getPagination = unref(getPaginationRef)\n      if (isBoolean(getPagination)) {\n        return `${index + 1}`\n      }\n      const { current = 1, pageSize = PAGE_SIZE } = getPagination\n      return ((current < 1 ? 1 : current) - 1) * pageSize + index + 1\n    },\n    ...(isFixedLeft\n      ? {\n          fixed: 'left',\n        }\n      : {}),\n    ...indexColumnProps,\n  })\n}\n\nfunction handleActionColumn(propsRef: ComputedRef<BasicTableProps>, columns: BasicColumn[]) {\n  const { actionColumn } = unref(propsRef)\n  if (!actionColumn) return\n\n  const hasIndex = columns.findIndex((column) => column.flag === ACTION_COLUMN_FLAG)\n  if (hasIndex === -1) {\n    columns.push({\n      ...columns[hasIndex],\n      fixed: 'right',\n      ...actionColumn,\n      flag: ACTION_COLUMN_FLAG,\n    })\n  }\n}\n\nexport function useColumns(\n  propsRef: ComputedRef<BasicTableProps>,\n  getPaginationRef: ComputedRef<boolean | PaginationProps>\n) {\n  const columnsRef = ref(unref(propsRef).columns) as unknown as Ref<BasicColumn[]>\n  let cacheColumns = unref(propsRef).columns\n\n  const getColumnsRef = computed(() => {\n    const columns = cloneDeep(unref(columnsRef))\n\n    handleIndexColumn(propsRef, getPaginationRef, columns)\n    handleActionColumn(propsRef, columns)\n    if (!columns) {\n      return []\n    }\n    const { ellipsis } = unref(propsRef)\n\n    columns.forEach((item) => {\n      const { customRender, slots } = item\n\n      handleItem(\n        item,\n        Reflect.has(item, 'ellipsis') ? !!item.ellipsis : !!ellipsis && !customRender && !slots\n      )\n    })\n    return columns\n  })\n\n  function isIfShow(column: BasicColumn): boolean {\n    const ifShow = column.ifShow\n\n    let isIfShow = true\n\n    if (isBoolean(ifShow)) {\n      isIfShow = ifShow\n    }\n    if (isFunction(ifShow)) {\n      isIfShow = ifShow(column)\n    }\n    return isIfShow\n  }\n  // const { hasPermission } = usePermission();\n\n  const getViewColumns = computed(() => {\n    const viewColumns = sortFixedColumn(unref(getColumnsRef))\n\n    const columns = cloneDeep(viewColumns)\n    return columns\n      .filter((column) => {\n        // return hasPermission(column.auth) && isIfShow(column);\n        return isIfShow(column)\n      })\n      .map((column) => {\n        const { slots, dataIndex, customRender, format, edit, editRow, flag } = column\n\n        if (!slots || !slots?.title) {\n          column.slots = { title: `header-${dataIndex}`, ...(slots || {}) }\n          column.customTitle = column.title as VueNode\n          Reflect.deleteProperty(column, 'title')\n        }\n        const isDefaultAction = [INDEX_COLUMN_FLAG, ACTION_COLUMN_FLAG].includes(flag!)\n        if (!customRender && format && !edit && !isDefaultAction) {\n          column.customRender = ({ text, record, index }) => {\n            return formatCell(text, format, record, index)\n          }\n        }\n\n        // edit table\n        if ((edit || editRow) && !isDefaultAction) {\n          column.customRender = renderEditCell(column)\n        }\n        return column\n      })\n  })\n\n  watch(\n    () => unref(propsRef).columns,\n    (columns) => {\n      columnsRef.value = columns\n      cacheColumns = columns?.filter((item) => !item.flag) ?? []\n    }\n  )\n\n  function setCacheColumnsByField(dataIndex: string | undefined, value: Partial<BasicColumn>) {\n    if (!dataIndex || !value) {\n      return\n    }\n    cacheColumns.forEach((item) => {\n      if (item.dataIndex === dataIndex) {\n        Object.assign(item, value)\n        return\n      }\n    })\n  }\n  /**\n   * set columns\n   * @param columnList key｜column\n   */\n  function setColumns(columnList: Partial<BasicColumn>[] | string[]) {\n    const columns = cloneDeep(columnList)\n    if (!isArray(columns)) return\n\n    if (columns.length <= 0) {\n      columnsRef.value = []\n      return\n    }\n\n    const firstColumn = columns[0]\n\n    const cacheKeys = cacheColumns.map((item) => item.dataIndex)\n\n    if (!isString(firstColumn)) {\n      columnsRef.value = columns as BasicColumn[]\n    } else {\n      const columnKeys = columns as string[]\n      const newColumns: BasicColumn[] = []\n      cacheColumns.forEach((item) => {\n        newColumns.push({\n          ...item,\n          defaultHidden: !columnKeys.includes(item.dataIndex?.toString() || (item.key as string)),\n        })\n      })\n      // Sort according to another array\n      if (!isEqual(cacheKeys, columns)) {\n        newColumns.sort((prev, next) => {\n          return (\n            columnKeys.indexOf(prev.dataIndex as string) -\n            columnKeys.indexOf(next.dataIndex as string)\n          )\n        })\n      }\n      columnsRef.value = newColumns\n    }\n  }\n\n  function getColumns(opt?: GetColumnsParams) {\n    const { ignoreIndex, ignoreAction, sort } = opt || {}\n    let columns = toRaw(unref(getColumnsRef))\n    if (ignoreIndex) {\n      columns = columns.filter((item) => item.flag !== INDEX_COLUMN_FLAG)\n    }\n    if (ignoreAction) {\n      columns = columns.filter((item) => item.flag !== ACTION_COLUMN_FLAG)\n    }\n\n    if (sort) {\n      columns = sortFixedColumn(columns)\n    }\n\n    return columns\n  }\n  function getCacheColumns() {\n    return cacheColumns\n  }\n\n  return {\n    getColumnsRef,\n    getCacheColumns,\n    getColumns,\n    setColumns,\n    getViewColumns,\n    setCacheColumnsByField,\n  }\n}\n\nfunction sortFixedColumn(columns: BasicColumn[]) {\n  const fixedLeftColumns: BasicColumn[] = []\n  const fixedRightColumns: BasicColumn[] = []\n  const defColumns: BasicColumn[] = []\n  for (const column of columns) {\n    if (column.fixed === 'left') {\n      fixedLeftColumns.push(column)\n      continue\n    }\n    if (column.fixed === 'right') {\n      fixedRightColumns.push(column)\n      continue\n    }\n    defColumns.push(column)\n  }\n  return [...fixedLeftColumns, ...defColumns, ...fixedRightColumns].filter(\n    (item) => !item.defaultHidden\n  )\n}\n\n// format cell\nexport function formatCell(text: string, format: CellFormat, record: Recordable, index: number) {\n  if (!format) {\n    return text\n  }\n\n  // custom function\n  if (isFunction(format)) {\n    return format(text, record, index)\n  }\n\n  try {\n    //#region define prefix\n    const FORMAT_PREFIX = ['date|', 'number|'] as const\n    const FORMAT_FN = [formatToDate, formatNumber] as const\n    type MapKeyType = typeof FORMAT_PREFIX[number]\n\n    const FORMAT_MAP = new Map<MapKeyType, (...args: any[]) => any>()\n    FORMAT_PREFIX.forEach((el, index) => {\n      FORMAT_MAP.set(el, FORMAT_FN[index])\n    })\n    //#endregion\n\n    if (isString(format)) {\n      const PREFIX = FORMAT_PREFIX.find((prefix) => format.startsWith(prefix))\n      if (PREFIX) {\n        let dateFormat: string | undefined = format.replace(PREFIX, '')\n        /**\n         * 表格的数值格式化全局修改\n         * 数值格式化方法的格式 取默认值\n         */\n        if (PREFIX === 'number|' && dateFormat === '') {\n          dateFormat = 'auto'\n        }\n\n        if ((PREFIX !== 'number|' && !dateFormat) || text == null) {\n          return text\n        }\n        const formatFn = FORMAT_MAP.get(PREFIX)\n        if (!formatFn) return text\n        return formatFn(text, dateFormat)\n      }\n    }\n\n    // Map\n    if (isMap(format)) {\n      return format.get(text)\n    }\n  } catch (error) {\n    return text\n  }\n}\n"],"names":[],"mappings":"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"}