{"version":3,"file":"table.mjs","sources":["../../../../../../packages/components/table/src/table.vue"],"sourcesContent":["<template>\n  <div\n    ref=\"tableWrapper\"\n    :class=\"[\n      {\n        'fit': fit,\n        'list': list,\n        'striped-odd': stripe === 'odd',\n        'striped-even': stripe === 'even' || typeof stripe === 'boolean' && stripe,\n        'bordered': border || isGroup,\n        'table-hidden': isHidden,\n        'table-group': isGroup,\n        'fluid-height': maxHeight,\n        'table-scrollable-x': layout.scrollX.value,\n        'table-scrollable-y': layout.scrollY.value,\n        'enable-row-hover': !store.states.isComplex.value,\n        'enable-row-transition':\n          (store.states.data.value || []).length !== 0 &&\n          (store.states.data.value || []).length < 100,\n        'has-footer': showSummary,\n      },\n      tableSize,\n      className,\n      namespace,\n      `layout-${tableLayout}`,\n    ]\"\n    :style=\"style\"\n    :data-prefix=\"defaultNamespace\"\n    @mouseleave=\"handleMouseLeave\"\n  >\n    <div class=\"table-inner-wrapper\" :style=\"tableInnerStyle\">\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=\"table-header-wrapper\"\n      >\n        <table\n          ref=\"tableHeader\"\n          class=\"table-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          />\n          <table-header\n            ref=\"tableHeaderRef\"\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            @set-drag-visible=\"setDragVisible\"\n          />\n        </table>\n      </div>\n      <div ref=\"bodyWrapper\" class=\"table-body-wrapper\">\n        <hl-scrollbar\n          ref=\"scrollBarRef\"\n          :view-style=\"scrollbarViewStyle\"\n          :wrap-style=\"scrollbarStyle\"\n          :always=\"scrollbarAlwaysOn\"\n        >\n          <table\n            ref=\"tableBody\"\n            class=\"table-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            />\n            <table-header\n              v-if=\"showHeader && tableLayout === 'auto'\"\n              ref=\"tableHeaderRef\"\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              :tooltip-options=\"tooltipOptions\"\n              :row-style=\"rowStyle\"\n              :store=\"store\"\n              :stripe=\"stripe\"\n            />\n            <table-footer\n              v-if=\"showSummary && tableLayout === 'auto'\"\n              class=\"table-body-footer\"\n              :border=\"border\"\n              :default-sort=\"defaultSort\"\n              :store=\"store\"\n              :sum-text=\"computedSumText\"\n              :summary-method=\"summaryMethod\"\n            />\n          </table>\n          <div\n            v-if=\"isEmpty\"\n            ref=\"emptyBlock\"\n            :style=\"emptyBlockStyle\"\n            class=\"table-empty-block\"\n          >\n            <span class=\"table-empty-text\">\n              <slot name=\"empty\">{{ computedEmptyText }}</slot>\n            </span>\n          </div>\n          <div\n            v-if=\"$slots.append\"\n            ref=\"appendWrapper\"\n            class=\"table-append-wrapper\"\n          >\n            <slot name=\"append\"></slot>\n          </div>\n        </hl-scrollbar>\n      </div>\n      <div\n        v-if=\"showSummary && tableLayout === 'fixed'\"\n        v-show=\"!isEmpty\"\n        ref=\"footerWrapper\"\n        v-mousewheel=\"handleHeaderFooterMousewheel\"\n        class=\"table-footer-wrapper\"\n      >\n        <table\n          class=\"table-footer\"\n          cellspacing=\"0\"\n          cellpadding=\"0\"\n          border=\"0\"\n          :style=\"tableBodyStyles\"\n        >\n          <hColgroup\n            :columns=\"store.states.columns.value\"\n            :table-layout=\"tableLayout\"\n          />\n          <table-footer\n            :border=\"border\"\n            :default-sort=\"defaultSort\"\n            :store=\"store\"\n            :sum-text=\"computedSumText\"\n            :summary-method=\"summaryMethod\"\n          />\n        </table>\n      </div>\n      <div v-if=\"border || isGroup\" class=\"table-border-left-patch\"></div>\n    </div>\n    <div\n      v-show=\"resizeProxyVisible\"\n      ref=\"resizeProxy\"\n      class=\"table-column-resize-proxy\"\n    ></div>\n  </div>\n</template>\n\n<script lang=\"ts\">\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\n// @ts-nocheck\nimport { computed, defineComponent, getCurrentInstance, provide } from 'vue'\nimport { debounce } from 'lodash-unified'\nimport { Mousewheel } from '@hongluan-ui/directives'\nimport { useLocale, useNamespace } from '@hongluan-ui/hooks'\nimport HlScrollbar from '@hongluan-ui/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 { convertToRows } from './table-header/utils-helper'\nimport useUtils from './table/utils-helper'\nimport useStyle from './table/style-helper'\nimport useKeyRender from './table/key-render-helper'\nimport defaultProps from './table/defaults'\nimport { TABLE_INJECTION_KEY } from './tokens'\nimport { hColgroup } from './h-helper'\nimport { useScrollbar } from './composables/use-scrollbar'\n\nimport type { Table } from './table/defaults'\n\nlet tableIdSeed = 1\nexport default defineComponent({\n  name: 'Table',\n  directives: {\n    Mousewheel,\n  },\n  components: {\n    TableHeader,\n    TableBody,\n    TableFooter,\n    HlScrollbar,\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 { namespace, defaultNamespace } = 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      getSelectionRows,\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      emptyBlockStyle,\n      handleFixedMousewheel,\n      resizeProxyVisible,\n      bodyWidth,\n      resizeState,\n      doLayout,\n      tableBodyStyles,\n      tableLayout,\n      scrollbarViewStyle,\n      tableInnerStyle,\n      scrollbarStyle,\n    } = useStyle<Row>(props, layout, store, table)\n\n    const { scrollBarRef, scrollTo, setScrollLeft, setScrollTop } =\n      useScrollbar()\n\n    const debouncedUpdateLayout = debounce(doLayout, 50)\n\n    const tableId = `${namespace.value}-${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    const columns = computed(() => {\n      return convertToRows(store.states.originColumns.value)[0]\n    })\n\n    useKeyRender(table)\n\n    return {\n      namespace,\n      defaultNamespace,\n      layout,\n      store,\n      columns,\n      handleHeaderFooterMousewheel,\n      handleMouseLeave,\n      tableId,\n      tableSize,\n      isHidden,\n      isEmpty,\n      renderExpanded,\n      resizeProxyVisible,\n      resizeState,\n      isGroup,\n      bodyWidth,\n      tableBodyStyles,\n      emptyBlockStyle,\n      debouncedUpdateLayout,\n      handleFixedMousewheel,\n      /**\n       * @description used in single selection Table, set a certain row selected. If called without any parameter, it will clear selection\n       */\n      setCurrentRow,\n      /**\n       * @description returns the currently selected rows\n       */\n      getSelectionRows,\n      /**\n       * @description used in multiple selection Table, toggle if a certain row is selected. With the second parameter, you can directly set if this row is selected\n       */\n      toggleRowSelection,\n      /**\n       * @description used in multiple selection Table, clear user selection\n       */\n      clearSelection,\n      /**\n       * @description clear filters of the columns whose `columnKey` are passed in. If no params, clear all filters\n       */\n      clearFilter,\n      /**\n       * @description used in multiple selection Table, toggle select all and deselect all\n       */\n      toggleAllSelection,\n      /**\n       * @description used in expandable Table or tree Table, toggle if a certain row is expanded. With the second parameter, you can directly set if this row is expanded or collapsed\n       */\n      toggleRowExpansion,\n      /**\n       * @description clear sorting, restore data to the original order\n       */\n      clearSort,\n      /**\n       * @description refresh the layout of Table. When the visibility of Table changes, you may need to call this method to get a correct layout\n       */\n      doLayout,\n      /**\n       * @description sort Table manually. Property `prop` is used to set sort column, property `order` is used to set sort order\n       */\n      sort,\n      t,\n      setDragVisible,\n      context: table,\n      computedSumText,\n      computedEmptyText,\n      tableLayout,\n      scrollbarViewStyle,\n      tableInnerStyle,\n      scrollbarStyle,\n      scrollBarRef,\n      /**\n       * @description scrolls to a particular set of coordinates\n       */\n      scrollTo,\n      /**\n       * @description set horizontal scroll position\n       */\n      setScrollLeft,\n      /**\n       * @description set vertical scroll position\n       */\n      setScrollTop,\n    }\n  },\n})\n</script>\n"],"names":["_createElementBlock","_normalizeClass","_normalizeStyle","_createElementVNode","_renderSlot","_createVNode","_createBlock"],"mappings":"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"}