{"version":3,"file":"use-columns.mjs","sources":["../../../../../../../packages/components/table-v2/src/composables/use-columns.ts"],"sourcesContent":["// @ts-nocheck\nimport { computed, unref } from 'vue'\nimport { isObject } from '@bigin/utils'\nimport { SortOrder, oppositeOrderMap } from '../constants'\nimport { placeholderSign } from '../private'\nimport { calcColumnStyle } from './utils'\n\nimport type { CSSProperties, Ref } from 'vue'\nimport type { TableV2Props } from '../table'\nimport type { AnyColumns, Column, KeyType } from '../types'\n\nfunction useColumns(\n  props: TableV2Props,\n  columns: Ref<AnyColumns>,\n  fixed: Ref<boolean>\n) {\n  const visibleColumns = computed(() => {\n    return unref(columns).filter((column) => !column.hidden)\n  })\n\n  const fixedColumnsOnLeft = computed(() =>\n    unref(visibleColumns).filter(\n      (column) => column.fixed === 'left' || column.fixed === true\n    )\n  )\n\n  const fixedColumnsOnRight = computed(() =>\n    unref(visibleColumns).filter((column) => column.fixed === 'right')\n  )\n\n  const normalColumns = computed(() =>\n    unref(visibleColumns).filter((column) => !column.fixed)\n  )\n\n  const mainColumns = computed(() => {\n    const ret: AnyColumns = []\n\n    unref(fixedColumnsOnLeft).forEach((column) => {\n      ret.push({\n        ...column,\n        placeholderSign,\n      })\n    })\n\n    unref(normalColumns).forEach((column) => {\n      ret.push(column)\n    })\n\n    unref(fixedColumnsOnRight).forEach((column) => {\n      ret.push({\n        ...column,\n        placeholderSign,\n      })\n    })\n\n    return ret\n  })\n\n  const hasFixedColumns = computed(() => {\n    return unref(fixedColumnsOnLeft).length || unref(fixedColumnsOnRight).length\n  })\n\n  const columnsStyles = computed(() => {\n    const _columns = unref(columns)\n\n    return _columns.reduce<Record<Column<any>['key'], CSSProperties>>(\n      (style, column) => {\n        style[column.key] = calcColumnStyle(column, unref(fixed), props.fixed)\n        return style\n      },\n      {}\n    )\n  })\n\n  const columnsTotalWidth = computed(() => {\n    return unref(visibleColumns).reduce(\n      (width, column) => width + column.width,\n      0\n    )\n  })\n\n  const getColumn = (key: KeyType) => {\n    return unref(columns).find((column) => column.key === key)\n  }\n\n  const getColumnStyle = (key: KeyType) => {\n    return unref(columnsStyles)[key]\n  }\n\n  const updateColumnWidth = (column: Column<any>, width: number) => {\n    column.width = width\n  }\n\n  function onColumnSorted(e: MouseEvent) {\n    const { key } = (e.currentTarget as HTMLElement).dataset\n    if (!key) return\n    const { sortState, sortBy } = props\n\n    let order = SortOrder.ASC\n\n    if (isObject(sortState)) {\n      order = oppositeOrderMap[sortState[key]]\n    } else {\n      order = oppositeOrderMap[sortBy.order]\n    }\n\n    props.onColumnSort?.({ column: getColumn(key)!, key, order })\n  }\n\n  return {\n    columns,\n    columnsStyles,\n    columnsTotalWidth,\n    fixedColumnsOnLeft,\n    fixedColumnsOnRight,\n    hasFixedColumns,\n    mainColumns,\n    normalColumns,\n    visibleColumns,\n\n    getColumn,\n    getColumnStyle,\n    updateColumnWidth,\n    onColumnSorted,\n  }\n}\n\nexport { useColumns }\nexport type UseColumnsReturn = ReturnType<typeof useColumns>\n"],"names":[],"mappings":"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"}