{"version":3,"file":"data-table-header-cell.mjs","sources":["../../../../../packages/components/data-table/src/data-table-header-cell.tsx"],"sourcesContent":["import { defineComponent, inject, PropType } from 'vue'\nimport { dataHeaderToken, dataTableToken } from './token'\nimport type { InternalColumn, TableHeader } from './utils'\n\nconst classNameHooksMap = {\n  LeftCell() {\n    const { cellClass, leftCellClass } = inject(dataHeaderToken)!\n    return [cellClass, leftCellClass]\n  },\n  CenterCell() {\n    const { cellClass, centerCellClass } = inject(dataHeaderToken)!\n    return [cellClass, centerCellClass]\n  },\n  RightCell() {\n    const { cellClass, rightCellClass } = inject(dataHeaderToken)!\n    return [cellClass, rightCellClass]\n  }\n}\n\nconst getHeaderStyle = (column: InternalColumn) => {\n\n  return {\n    'text-align': column.align || 'left',\n    left: column.left + 'px',\n    right: column.right + 'px'\n  }\n}\n\nconst buildCell = (name: 'LeftCell' | 'CenterCell' | 'RightCell') => {\n  const getClassName = classNameHooksMap[name]\n\n  return defineComponent({\n    name,\n\n    props: {\n      header: {\n        type: Object as PropType<TableHeader>,\n        required: true\n      },\n\n      rowIndex: {\n        type: Number,\n        required: true\n      }\n    },\n\n    setup(props) {\n      const {\n        getCellRowSpan,\n        resizeClass,\n        handleResizeMousedown,\n        adjusterRef\n      } = inject(dataHeaderToken)!\n      const commonClassName = getClassName()\n      const { handleSort, store, ns } = inject(dataTableToken)!\n\n      return () => {\n\n        const { header, rowIndex } = props\n        const { data } = header\n        let className = [...commonClassName]\n        header.isLeaf && className.push('is-leaf')\n\n        /** 尺寸调节器 */\n        const resizer =\n          header.isLeaf && !header.isPre ? (\n            <span\n              class={resizeClass}\n              style='right: 0'\n              onMousedown={event => {\n                handleResizeMousedown(event, header)\n              }}\n            ></span>\n          ) : null\n\n        /** 排序器 */\n        const sorter =\n          header.isLeaf && data.sortable ? (\n            <span\n              class={ns.e('sort-trigger')}\n              onClick={e => handleSort(data.key)}\n            >\n              <i\n                class={{\n                  asc: true,\n                  'is-active': store.sortKeys[data.key] === 'asc'\n                }}\n              ></i>\n              <i\n                class={{\n                  dsc: true,\n                  'is-active': store.sortKeys[data.key] === 'dsc'\n                }}\n              ></i>\n            </span>\n          ) : null\n\n        /** 表头展示内容 */\n        let content = typeof data.name === 'function' ? data.name() : data.name\n\n        if (!header.isPre) {\n          // span用来减少触发范围\n          content = (\n            <span\n              onClick={e =>\n                adjusterRef.value?.open(e.target as HTMLTableCellElement, data)\n              }\n              class=\"adjuster-trigger\"\n              style='cursor: default'\n            >\n              {content}\n            </span>\n          )\n        }\n\n        return (\n          <th\n            rowspan={getCellRowSpan(header, rowIndex)}\n            colspan={header.size || undefined}\n            key={data.key}\n            class={className}\n            style={getHeaderStyle(data)}\n          >\n            {resizer}\n            {/*\n              因为th需要用shadow来定位而到外部作固定列的阴影效果\n              所以包裹一个div来做省略号功能\n            */}\n            <div>\n              {content}\n              {sorter}\n            </div>\n          </th>\n        )\n      }\n    }\n  })\n}\n\nexport const LeftCell = buildCell('LeftCell')\nexport const CenterCell = buildCell('CenterCell')\nexport const RightCell = buildCell('RightCell')\n\nconst renderers = {\n  left(header: TableHeader, rowIndex: number) {\n    return <LeftCell header={header} rowIndex={rowIndex} />\n  },\n  center(header: TableHeader, rowIndex: number) {\n    return <CenterCell header={header} rowIndex={rowIndex} />\n  },\n  right(header: TableHeader, rowIndex: number) {\n    return <RightCell header={header} rowIndex={rowIndex} />\n  }\n}\n\nexport default function renderHeaderCell(\n  header: TableHeader,\n  rowIndex: number\n) {\n  return renderers[header.data.fixed || 'center'](header, rowIndex)\n}\n"],"names":["classNameHooksMap","LeftCell","cellClass","leftCellClass","inject","dataHeaderToken","CenterCell","centerCellClass","RightCell","rightCellClass","getHeaderStyle","column","align","left","right","buildCell","name","getClassName","props","header","type","Object","required","rowIndex","Number","setup","getCellRowSpan","resizeClass","handleResizeMousedown","adjusterRef","commonClassName","handleSort","store","ns","dataTableToken","data","className","isLeaf","push","resizer","isPre","_createVNode","event","sorter","sortable","e","key","asc","sortKeys","dsc","content","_content","value","open","target","size","undefined","renderers","center","renderHeaderCell","fixed"],"mappings":"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"}