{"version":3,"file":"table-layout.mjs","sources":["../../../../../../packages/components/table/src/table-layout.ts"],"sourcesContent":["// @ts-nocheck\nimport { isRef, nextTick, ref } from 'vue'\nimport { isClient } from '@vueuse/core'\nimport { hasOwn } from '@bigin/utils'\nimport { parseHeight } from './util'\nimport type { Ref } from 'vue'\n\nimport type { TableColumnCtx } from './table-column/defaults'\nimport type { TableHeader } from './table-header'\nimport type { Table } from './table/defaults'\nimport type { Store } from './store'\nclass TableLayout<T> {\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\n    this.store = null\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 string].value = options[name]\n        } else {\n          this[name as string] = 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 (height === null) return false\n    const scrollBarRef = this.table.refs.scrollBarRef\n    if (this.table.vnode.el && scrollBarRef) {\n      let scrollY = true\n      const prevScrollY = this.scrollY.value\n      scrollY =\n        scrollBarRef.wrap$.scrollHeight > scrollBarRef.wrap$.clientHeight\n      this.scrollY.value = scrollY\n      return prevScrollY !== scrollY\n    }\n    return false\n  }\n\n  setHeight(value: string | number, 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      return nextTick(() => this.setHeight(value, prop))\n\n    if (typeof value === 'number') {\n      el.style[prop] = `${value}px`\n      this.updateElsHeight()\n    } else if (typeof value === 'string') {\n      el.style[prop] = value\n      this.updateElsHeight()\n    }\n  }\n\n  setMaxHeight(value: string | number) {\n    this.setHeight(value, 'max-height')\n  }\n\n  getFlattenColumns(): TableColumnCtx<T>[] {\n    const flattenColumns = []\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) => typeof column.width !== 'number'\n    )\n    flattenColumns.forEach((column) => {\n      // Clean those columns whose width changed from flex to unflex\n      if (typeof column.width === 'number' && column.realWidth)\n        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)\n          break\n        case 'scrollable':\n          observer.state?.onScrollableChange(this)\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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"}