{"version":3,"file":"config.mjs","sources":["../../../../../../packages/components/table/src/config.ts"],"sourcesContent":["import { h } from 'vue'\nimport ElCheckbox from '@element-plus/components/checkbox'\nimport { ElIcon } from '@element-plus/components/icon'\nimport { ArrowRight, Loading } from '@element-plus/icons'\nimport { getPropByPath } from '@element-plus/utils/util'\n\nimport type { VNode } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { Store } from './store'\nimport type { TreeNode } from './table/defaults'\n\nexport const cellStarts = {\n  default: {\n    order: '',\n  },\n  selection: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\n    className: 'el-table-column--selection',\n  },\n  expand: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\n  },\n  index: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\n  },\n}\n\n// 这些选项不应该被覆盖\nexport const cellForced = {\n  selection: {\n    renderHeader<T>({ store }: { store: Store<T> }) {\n      function isDisabled() {\n        return store.states.data.value && store.states.data.value.length === 0\n      }\n      return h(ElCheckbox, {\n        disabled: isDisabled(),\n        size: store.states.tableSize.value,\n        indeterminate:\n          store.states.selection.value.length > 0 &&\n          !store.states.isAllSelected.value,\n        'onUpdate:modelValue': store.toggleAllSelection,\n        modelValue: store.states.isAllSelected.value,\n      })\n    },\n    renderCell<T>({\n      row,\n      column,\n      store,\n      $index,\n    }: {\n      row: T\n      column: TableColumnCtx<T>\n      store: Store<T>\n      $index: string\n    }) {\n      return h(ElCheckbox, {\n        disabled: column.selectable\n          ? !column.selectable.call(null, row, $index)\n          : false,\n        size: store.states.tableSize.value,\n        onChange: () => {\n          store.commit('rowSelectedChanged', row)\n        },\n        onClick: (event: Event) => event.stopPropagation(),\n        modelValue: store.isSelected(row),\n      })\n    },\n    sortable: false,\n    resizable: false,\n  },\n  index: {\n    renderHeader<T>({ column }: { column: TableColumnCtx<T> }) {\n      return column.label || '#'\n    },\n    renderCell<T>({\n      column,\n      $index,\n    }: {\n      column: TableColumnCtx<T>\n      $index: number\n    }) {\n      let i = $index + 1\n      const index = column.index\n\n      if (typeof index === 'number') {\n        i = $index + index\n      } else if (typeof index === 'function') {\n        i = index($index)\n      }\n      return h('div', {}, [i])\n    },\n    sortable: false,\n  },\n  expand: {\n    renderHeader<T>({ column }: { column: TableColumnCtx<T> }) {\n      return column.label || ''\n    },\n    renderCell<T>({ row, store }: { row: T; store: Store<T> }) {\n      const classes = ['el-table__expand-icon']\n      if (store.states.expandRows.value.indexOf(row) > -1) {\n        classes.push('el-table__expand-icon--expanded')\n      }\n      const callback = function (e: Event) {\n        e.stopPropagation()\n        store.toggleRowExpansion(row)\n      }\n      return h(\n        'div',\n        {\n          class: classes,\n          onClick: callback,\n        },\n        {\n          default: () => {\n            return [\n              h(ElIcon, null, {\n                default: () => {\n                  return [h(ArrowRight)]\n                },\n              }),\n            ]\n          },\n        }\n      )\n    },\n    sortable: false,\n    resizable: false,\n    className: 'el-table__expand-column',\n  },\n}\n\nexport function defaultRenderCell<T>({\n  row,\n  column,\n  $index,\n}: {\n  row: T\n  column: TableColumnCtx<T>\n  $index: number\n}) {\n  const property = column.property\n  const value = property && getPropByPath(row, property, false).v\n  if (column && column.formatter) {\n    return column.formatter(row, column, value, $index)\n  }\n  return value?.toString?.() || ''\n}\n\nexport function treeCellPrefix<T>({\n  row,\n  treeNode,\n  store,\n}: {\n  row: T\n  treeNode: TreeNode\n  store: Store<T>\n}) {\n  if (!treeNode) return null\n  const ele: VNode[] = []\n  const callback = function (e) {\n    e.stopPropagation()\n    store.loadOrToggle(row)\n  }\n  if (treeNode.indent) {\n    ele.push(\n      h('span', {\n        class: 'el-table__indent',\n        style: { 'padding-left': `${treeNode.indent}px` },\n      })\n    )\n  }\n  if (typeof treeNode.expanded === 'boolean' && !treeNode.noLazyChildren) {\n    const expandClasses = [\n      'el-table__expand-icon',\n      treeNode.expanded ? 'el-table__expand-icon--expanded' : '',\n    ]\n    let icon = ArrowRight\n    if (treeNode.loading) {\n      icon = Loading\n    }\n\n    ele.push(\n      h(\n        'div',\n        {\n          class: expandClasses,\n          onClick: callback,\n        },\n        {\n          default: () => {\n            return [\n              h(\n                ElIcon,\n                { class: { 'is-loading': treeNode.loading } },\n                {\n                  default: () => [h(icon)],\n                }\n              ),\n            ]\n          },\n        }\n      )\n    )\n  } else {\n    ele.push(\n      h('span', {\n        class: 'el-table__placeholder',\n      })\n    )\n  }\n  return ele\n}\n"],"names":[],"mappings":"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"}