{"version":3,"file":"config.mjs","names":[],"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-vue'\nimport { getProp, isBoolean, isFunction, isNumber } from '@element-plus/utils'\n\nimport type { VNode } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { Store } from './store'\nimport type { DefaultRow, TreeNode } from './table/defaults'\n\nconst defaultClassNames = {\n  selection: 'table-column--selection',\n  expand: 'table__expand-column',\n} as const\n\nexport const cellStarts = {\n  default: {\n    order: '',\n  },\n  selection: {\n    width: 48,\n    minWidth: 48,\n    realWidth: 48,\n    order: '',\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\nexport const getDefaultClassName = (type: string) => {\n  return defaultClassNames[type as keyof typeof defaultClassNames] || ''\n}\n\n// 这些选项不应该被覆盖\nexport const cellForced = {\n  selection: {\n    renderHeader<T extends DefaultRow>({ 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 ?? undefined,\n        modelValue: store.states.isAllSelected.value,\n        ariaLabel: store.t('el.table.selectAllLabel'),\n      })\n    },\n    renderCell<T extends DefaultRow>({\n      row,\n      column,\n      store,\n      $index,\n    }: {\n      row: T\n      column: TableColumnCtx<T>\n      store: Store<T>\n      $index: number\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        ariaLabel: store.t('el.table.selectRowLabel'),\n      })\n    },\n    sortable: false,\n    resizable: false,\n  },\n  index: {\n    renderHeader<T extends DefaultRow>({\n      column,\n    }: {\n      column: TableColumnCtx<T>\n    }) {\n      return column.label || '#'\n    },\n    renderCell<T extends DefaultRow>({\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 (isNumber(index)) {\n        i = $index + index\n      } else if (isFunction(index)) {\n        i = index($index)\n      }\n      return h('div', {}, [i])\n    },\n    sortable: false,\n  },\n  expand: {\n    renderHeader<T extends DefaultRow>({\n      column,\n    }: {\n      column: TableColumnCtx<T>\n    }) {\n      return column.label || ''\n    },\n    renderCell<T extends DefaultRow>({\n      column,\n      row,\n      store,\n      expanded,\n      $index,\n    }: {\n      column: TableColumnCtx<T>\n      row: T\n      store: Store<T>\n      expanded: boolean\n      $index: number\n    }) {\n      const { ns } = store\n      const classes = [ns.e('expand-icon')]\n\n      if (!column.renderExpand && expanded) {\n        classes.push(ns.em('expand-icon', 'expanded'))\n      }\n      const callback = function (e: Event) {\n        e.stopPropagation()\n        store.toggleRowExpansion(row)\n      }\n      const isRowExpandable =\n        store.states.rowExpandable.value?.(row, $index) ?? true\n      if (!isRowExpandable) {\n        classes.push(ns.is('disabled'))\n      }\n      return h(\n        'button',\n        {\n          type: 'button',\n          disabled: !isRowExpandable,\n          'aria-label': store.t(\n            expanded ? 'el.table.collapseRowLabel' : 'el.table.expandRowLabel'\n          ),\n          'aria-expanded': expanded,\n          class: classes,\n          onClick: callback,\n        },\n        {\n          default: () => {\n            if (column.renderExpand) {\n              return [\n                column.renderExpand({\n                  expanded,\n                  expandable: isRowExpandable,\n                }),\n              ]\n            }\n\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  },\n}\n\nexport function defaultRenderCell<T extends DefaultRow>({\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 && getProp(row, property).value\n  if (column && column.formatter) {\n    return column.formatter(row, column, value, $index)\n  }\n  return value?.toString?.() || ''\n}\n\nexport function treeCellPrefix<T extends DefaultRow>(\n  {\n    row,\n    treeNode,\n    store,\n  }: {\n    row: T\n    treeNode: TreeNode\n    store: Store<T>\n  },\n  createPlaceholder = false\n) {\n  const { ns } = store\n  if (!treeNode) {\n    if (createPlaceholder) {\n      return [\n        h('span', {\n          class: ns.e('placeholder'),\n        }),\n      ]\n    }\n    return null\n  }\n  const ele: VNode[] = []\n  const callback = function (e: Event) {\n    e.stopPropagation()\n    if (treeNode.loading) {\n      return\n    }\n    store.loadOrToggle(row)\n  }\n  if (treeNode.indent) {\n    ele.push(\n      h('span', {\n        class: ns.e('indent'),\n        style: { 'padding-left': `${treeNode.indent}px` },\n      })\n    )\n  }\n  if (isBoolean(treeNode.expanded) && !treeNode.noLazyChildren) {\n    const expandClasses = [\n      ns.e('expand-icon'),\n      treeNode.expanded ? ns.em('expand-icon', 'expanded') : '',\n    ]\n    let icon = ArrowRight\n    if (treeNode.loading) {\n      icon = Loading\n    }\n\n    ele.push(\n      h(\n        'button',\n        {\n          type: 'button',\n          'aria-label': store.t(\n            treeNode.expanded\n              ? 'el.table.collapseRowLabel'\n              : 'el.table.expandRowLabel'\n          ),\n          'aria-expanded': treeNode.expanded,\n          class: expandClasses,\n          onClick: callback,\n        },\n        {\n          default: () => {\n            return [\n              h(\n                ElIcon,\n                { class: ns.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: ns.e('placeholder'),\n      })\n    )\n  }\n  return ele\n}\n"],"mappings":"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"}