{"version":3,"file":"table-layout.mjs","sources":["../../../../../../packages/components/table/src/table-layout.ts"],"sourcesContent":["import { isRef, nextTick, ref } from 'vue'\nimport { isNull } from 'lodash-unified'\nimport { hasOwn, isClient, isNumber, isString } from '@element-plus/utils'\nimport { parseHeight } from './util'\n\nimport type { Ref } from 'vue'\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { TableHeader } from './table-header'\nimport type { DefaultRow, Table } from './table/defaults'\nimport type { Store } from './store'\n\nclass TableLayout<T extends DefaultRow> {\n  observers: TableHeader[]\n  table: Table<T>\n  store: Store<T>\n  columns: TableColumnCtx<T>[]\n  fit: boolean\n  showHeader: boolean\n\n  height: Ref<null | number>\n  scrollX: Ref<boolean>\n  scrollY: Ref<boolean>\n  bodyWidth: Ref<null | number>\n  fixedWidth: Ref<null | number>\n  rightFixedWidth: Ref<null | number>\n  tableHeight!: Ref<null | number>\n  headerHeight!: Ref<null | number> // Table Header Height\n  appendHeight!: Ref<null | number> // Append Slot Height\n  footerHeight!: Ref<null | number> // Table Footer Height\n  gutterWidth: number\n  constructor(options: Record<string, any>) {\n    this.observers = []\n    this.table = null as unknown as Table<T>\n    this.store = null as unknown as Store<T>\n    this.columns = []\n    this.fit = true\n    this.showHeader = true\n    this.height = ref(null)\n    this.scrollX = ref(false)\n    this.scrollY = ref(false)\n    this.bodyWidth = ref(null)\n    this.fixedWidth = ref(null)\n    this.rightFixedWidth = ref(null)\n    this.gutterWidth = 0\n    for (const name in options) {\n      if (hasOwn(options, name)) {\n        if (isRef(this[name])) {\n          ;(this[name] as Ref).value = options[name]\n        } else {\n          this[name as keyof typeof this] = options[name]\n        }\n      }\n    }\n    if (!this.table) {\n      throw new Error('Table is required for Table Layout')\n    }\n    if (!this.store) {\n      throw new Error('Store is required for Table Layout')\n    }\n  }\n\n  updateScrollY() {\n    const height = this.height.value\n    /**\n     * When the height is not initialized, it is null.\n     * After the table is initialized, when the height is not configured, the height is 0.\n     */\n    if (isNull(height)) return false\n    const scrollBarRef = this.table.refs.scrollBarRef\n    if (this.table.vnode.el && scrollBarRef?.wrapRef) {\n      let scrollY = true\n      const prevScrollY = this.scrollY.value\n      scrollY =\n        scrollBarRef.wrapRef.scrollHeight > scrollBarRef.wrapRef.clientHeight\n      this.scrollY.value = scrollY\n      return prevScrollY !== scrollY\n    }\n    return false\n  }\n\n  setHeight(value: string | number | null, prop = 'height') {\n    if (!isClient) return\n    const el = this.table.vnode.el\n    value = parseHeight(value)\n    this.height.value = Number(value)\n\n    if (!el && (value || value === 0)) {\n      nextTick(() => this.setHeight(value, prop))\n      return\n    }\n\n    if (el && isNumber(value)) {\n      el.style[prop] = `${value}px`\n      this.updateElsHeight()\n    } else if (el && isString(value)) {\n      el.style[prop] = value\n      this.updateElsHeight()\n    }\n  }\n\n  setMaxHeight(value: string | number | null) {\n    this.setHeight(value, 'max-height')\n  }\n\n  getFlattenColumns(): TableColumnCtx<T>[] {\n    const flattenColumns: TableColumnCtx<T>[] = []\n    const columns = this.table.store.states.columns.value\n    columns.forEach((column) => {\n      if (column.isColumnGroup) {\n        // eslint-disable-next-line prefer-spread\n        flattenColumns.push.apply(flattenColumns, column.columns)\n      } else {\n        flattenColumns.push(column)\n      }\n    })\n\n    return flattenColumns\n  }\n\n  updateElsHeight() {\n    this.updateScrollY()\n    this.notifyObservers('scrollable')\n  }\n\n  headerDisplayNone(elm: HTMLElement) {\n    if (!elm) return true\n    let headerChild = elm\n    while (headerChild.tagName !== 'DIV') {\n      if (getComputedStyle(headerChild).display === 'none') {\n        return true\n      }\n      headerChild = headerChild.parentElement!\n    }\n    return false\n  }\n\n  updateColumnsWidth() {\n    if (!isClient) return\n    const fit = this.fit\n    const bodyWidth = this.table.vnode.el?.clientWidth\n    let bodyMinWidth = 0\n\n    const flattenColumns = this.getFlattenColumns()\n    const flexColumns = flattenColumns.filter(\n      (column) => !isNumber(column.width)\n    )\n    flattenColumns.forEach((column) => {\n      // Clean those columns whose width changed from flex to unflex\n      if (isNumber(column.width) && column.realWidth) column.realWidth = null\n    })\n    if (flexColumns.length > 0 && fit) {\n      flattenColumns.forEach((column) => {\n        bodyMinWidth += Number(column.width || column.minWidth || 80)\n      })\n      if (bodyMinWidth <= bodyWidth) {\n        // DON'T HAVE SCROLL BAR\n        this.scrollX.value = false\n\n        const totalFlexWidth = bodyWidth - bodyMinWidth\n\n        if (flexColumns.length === 1) {\n          flexColumns[0].realWidth =\n            Number(flexColumns[0].minWidth || 80) + totalFlexWidth\n        } else {\n          const allColumnsWidth = flexColumns.reduce(\n            (prev, column) => prev + Number(column.minWidth || 80),\n            0\n          )\n          const flexWidthPerPixel = totalFlexWidth / allColumnsWidth\n          let noneFirstWidth = 0\n\n          flexColumns.forEach((column, index) => {\n            if (index === 0) return\n            const flexWidth = Math.floor(\n              Number(column.minWidth || 80) * flexWidthPerPixel\n            )\n            noneFirstWidth += flexWidth\n            column.realWidth = Number(column.minWidth || 80) + flexWidth\n          })\n\n          flexColumns[0].realWidth =\n            Number(flexColumns[0].minWidth || 80) +\n            totalFlexWidth -\n            noneFirstWidth\n        }\n      } else {\n        // HAVE HORIZONTAL SCROLL BAR\n        this.scrollX.value = true\n        flexColumns.forEach((column) => {\n          column.realWidth = Number(column.minWidth)\n        })\n      }\n\n      this.bodyWidth.value = Math.max(bodyMinWidth, bodyWidth)\n      this.table.state.resizeState.value.width = this.bodyWidth.value\n    } else {\n      flattenColumns.forEach((column) => {\n        if (!column.width && !column.minWidth) {\n          column.realWidth = 80\n        } else {\n          column.realWidth = Number(column.width || column.minWidth)\n        }\n        bodyMinWidth += column.realWidth\n      })\n      this.scrollX.value = bodyMinWidth > bodyWidth\n\n      this.bodyWidth.value = bodyMinWidth\n    }\n\n    const fixedColumns = this.store.states.fixedColumns.value\n\n    if (fixedColumns.length > 0) {\n      let fixedWidth = 0\n      fixedColumns.forEach((column) => {\n        fixedWidth += Number(column.realWidth || column.width)\n      })\n\n      this.fixedWidth.value = fixedWidth\n    }\n\n    const rightFixedColumns = this.store.states.rightFixedColumns.value\n    if (rightFixedColumns.length > 0) {\n      let rightFixedWidth = 0\n      rightFixedColumns.forEach((column) => {\n        rightFixedWidth += Number(column.realWidth || column.width)\n      })\n\n      this.rightFixedWidth.value = rightFixedWidth\n    }\n    this.notifyObservers('columns')\n  }\n\n  addObserver(observer: TableHeader) {\n    this.observers.push(observer)\n  }\n\n  removeObserver(observer: TableHeader) {\n    const index = this.observers.indexOf(observer)\n    if (index !== -1) {\n      this.observers.splice(index, 1)\n    }\n  }\n\n  notifyObservers(event: string) {\n    const observers = this.observers\n    observers.forEach((observer) => {\n      switch (event) {\n        case 'columns':\n          observer.state?.onColumnsChange(this as TableLayout<DefaultRow>)\n          break\n        case 'scrollable':\n          observer.state?.onScrollableChange(this as TableLayout<DefaultRow>)\n          break\n        default:\n          throw new Error(`Table Layout don't have event ${event}.`)\n      }\n    })\n  }\n}\n\nexport default TableLayout\n"],"names":[],"mappings":"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"}