{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/table/src/table.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"tableWrapper\"\n    :class=\"[\n      {\n        [ns.m('fit')]: fit,\n        [ns.m('striped')]: stripe,\n        [ns.m('border')]: border || isGroup,\n        [ns.m('hidden')]: isHidden,\n        [ns.m('group')]: isGroup,\n        [ns.m('fluid-height')]: maxHeight,\n        [ns.m('scrollable-x')]: layout.scrollX.value,\n        [ns.m('scrollable-y')]: layout.scrollY.value,\n        [ns.m('enable-row-hover')]: !store.states.isComplex.value,\n        [ns.m('enable-row-transition')]:\n          (store.states.data.value || []).length !== 0 &&\n          (store.states.data.value || []).length < 100,\n        'has-footer': showSummary,\n      },\n      ns.m(tableSize),\n      className,\n      ns.b(),\n      ns.m(`layout-${tableLayout}`),\n    ]\"\n    :style=\"style\"\n    :data-prefix=\"ns.namespace.value\"\n    @mouseleave=\"handleMouseLeave()\"\n  >\n    <div :class=\"ns.e('inner-wrapper')\">\n      <div ref=\"hiddenColumns\" class=\"hidden-columns\">\n        <slot></slot>\n      </div>\n      <div\n        v-if=\"showHeader && tableLayout === 'fixed'\"\n        ref=\"headerWrapper\"\n        v-mousewheel=\"handleHeaderFooterMousewheel\"\n        :class=\"ns.e('header-wrapper')\"\n      >\n        <table\n          ref=\"tableHeader\"\n          :class=\"ns.e('header')\"\n          :style=\"tableBodyStyles\"\n          border=\"0\"\n          cellpadding=\"0\"\n          cellspacing=\"0\"\n        >\n          <hColgroup\n            :columns=\"store.states.columns.value\"\n            :table-layout=\"tableLayout\"\n          ></hColgroup>\n          <table-header\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            @set-drag-visible=\"setDragVisible\"\n          />\n        </table>\n      </div>\n      <div ref=\"bodyWrapper\" :style=\"bodyHeight\" :class=\"ns.e('body-wrapper')\">\n        <el-scrollbar\n          ref=\"scrollWrapper\"\n          :height=\"maxHeight ? undefined : height\"\n          :max-height=\"maxHeight ? height : undefined\"\n        >\n          <table\n            ref=\"tableBody\"\n            :class=\"ns.e('body')\"\n            cellspacing=\"0\"\n            cellpadding=\"0\"\n            border=\"0\"\n            :style=\"{\n              width: bodyWidth,\n              tableLayout,\n            }\"\n          >\n            <hColgroup\n              :columns=\"store.states.columns.value\"\n              :table-layout=\"tableLayout\"\n            ></hColgroup>\n            <table-header\n              v-if=\"showHeader && tableLayout === 'auto'\"\n              :border=\"border\"\n              :default-sort=\"defaultSort\"\n              :store=\"store\"\n              @set-drag-visible=\"setDragVisible\"\n            />\n            <table-body\n              :context=\"context\"\n              :highlight=\"highlightCurrentRow\"\n              :row-class-name=\"rowClassName\"\n              :tooltip-effect=\"tooltipEffect\"\n              :row-style=\"rowStyle\"\n              :store=\"store\"\n              :stripe=\"stripe\"\n            />\n          </table>\n          <div\n            v-if=\"isEmpty\"\n            ref=\"emptyBlock\"\n            :style=\"emptyBlockStyle\"\n            :class=\"ns.e('empty-block')\"\n          >\n            <span :class=\"ns.e('empty-text')\">\n              <slot name=\"empty\">{{ computedEmptyText }}</slot>\n            </span>\n          </div>\n          <div\n            v-if=\"$slots.append\"\n            ref=\"appendWrapper\"\n            :class=\"ns.e('append-wrapper')\"\n          >\n            <slot name=\"append\"></slot>\n          </div>\n        </el-scrollbar>\n      </div>\n      <div v-if=\"border || isGroup\" :class=\"ns.e('border-left-patch')\"></div>\n    </div>\n    <div\n      v-if=\"showSummary\"\n      v-show=\"!isEmpty\"\n      ref=\"footerWrapper\"\n      v-mousewheel=\"handleHeaderFooterMousewheel\"\n      :class=\"ns.e('footer-wrapper')\"\n    >\n      <table-footer\n        :border=\"border\"\n        :default-sort=\"defaultSort\"\n        :store=\"store\"\n        :style=\"tableBodyStyles\"\n        :sum-text=\"computedSumText\"\n        :summary-method=\"summaryMethod\"\n      />\n    </div>\n    <div\n      v-show=\"resizeProxyVisible\"\n      ref=\"resizeProxy\"\n      :class=\"ns.e('column-resize-proxy')\"\n    ></div>\n  </div>\n</template>\n\n<script lang=\"ts\">\nimport { defineComponent, getCurrentInstance, computed, provide } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { Mousewheel } from '@element-plus/directives'\nimport { useLocale, useNamespace } from '@element-plus/hooks'\nimport ElScrollbar from '@element-plus/components/scrollbar'\nimport { createStore } from './store/helper'\nimport TableLayout from './table-layout'\nimport TableHeader from './table-header'\nimport TableBody from './table-body'\nimport TableFooter from './table-footer'\nimport useUtils from './table/utils-helper'\nimport useStyle from './table/style-helper'\nimport defaultProps from './table/defaults'\nimport { TABLE_INJECTION_KEY } from './tokens'\nimport { hColgroup } from './h-helper'\n\nimport type { Table } from './table/defaults'\n\nlet tableIdSeed = 1\nexport default defineComponent({\n  name: 'ElTable',\n  directives: {\n    Mousewheel,\n  },\n  components: {\n    TableHeader,\n    TableBody,\n    TableFooter,\n    ElScrollbar,\n    hColgroup,\n  },\n  props: defaultProps,\n  emits: [\n    'select',\n    'select-all',\n    'selection-change',\n    'cell-mouse-enter',\n    'cell-mouse-leave',\n    'cell-contextmenu',\n    'cell-click',\n    'cell-dblclick',\n    'row-click',\n    'row-contextmenu',\n    'row-dblclick',\n    'header-click',\n    'header-contextmenu',\n    'sort-change',\n    'filter-change',\n    'current-change',\n    'header-dragend',\n    'expand-change',\n  ],\n  setup(props) {\n    type Row = typeof props.data[number]\n    const { t } = useLocale()\n    const ns = useNamespace('table')\n    const table = getCurrentInstance() as Table<Row>\n    provide(TABLE_INJECTION_KEY, table)\n    const store = createStore<Row>(table, props)\n    table.store = store\n    const layout = new TableLayout<Row>({\n      store: table.store,\n      table,\n      fit: props.fit,\n      showHeader: props.showHeader,\n    })\n    table.layout = layout\n\n    const isEmpty = computed(() => (store.states.data.value || []).length === 0)\n\n    /**\n     * open functions\n     */\n    const {\n      setCurrentRow,\n      toggleRowSelection,\n      clearSelection,\n      clearFilter,\n      toggleAllSelection,\n      toggleRowExpansion,\n      clearSort,\n      sort,\n    } = useUtils<Row>(store)\n    const {\n      isHidden,\n      renderExpanded,\n      setDragVisible,\n      isGroup,\n      handleMouseLeave,\n      handleHeaderFooterMousewheel,\n      tableSize,\n      bodyHeight,\n      height,\n      emptyBlockStyle,\n      handleFixedMousewheel,\n      fixedHeight,\n      fixedBodyHeight,\n      resizeProxyVisible,\n      bodyWidth,\n      resizeState,\n      doLayout,\n      tableBodyStyles,\n      tableLayout,\n    } = useStyle<Row>(props, layout, store, table)\n\n    const debouncedUpdateLayout = debounce(doLayout, 50)\n\n    const tableId = `el-table_${tableIdSeed++}`\n    table.tableId = tableId\n    table.state = {\n      isGroup,\n      resizeState,\n      doLayout,\n      debouncedUpdateLayout,\n    }\n    const computedSumText = computed(\n      () => props.sumText || t('el.table.sumText')\n    )\n\n    const computedEmptyText = computed(() => {\n      return props.emptyText || t('el.table.emptyText')\n    })\n\n    return {\n      ns,\n      layout,\n      store,\n      handleHeaderFooterMousewheel,\n      handleMouseLeave,\n      tableId,\n      tableSize,\n      isHidden,\n      isEmpty,\n      renderExpanded,\n      resizeProxyVisible,\n      resizeState,\n      isGroup,\n      bodyWidth,\n      bodyHeight,\n      height,\n      tableBodyStyles,\n      emptyBlockStyle,\n      debouncedUpdateLayout,\n      handleFixedMousewheel,\n      fixedHeight,\n      fixedBodyHeight,\n      setCurrentRow,\n      toggleRowSelection,\n      clearSelection,\n      clearFilter,\n      toggleAllSelection,\n      toggleRowExpansion,\n      clearSort,\n      doLayout,\n      sort,\n      t,\n      setDragVisible,\n      context: table,\n      computedSumText,\n      computedEmptyText,\n      tableLayout,\n    }\n  },\n})\n</script>\n"],"names":["_openBlock","_createElementBlock","_normalizeClass","_normalizeStyle","_createCommentVNode","_withCtx","_createElementVNode"],"mappings":"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"}