{"version":3,"file":"layout-observer.mjs","sources":["../../../../../../packages/components/table/src/layout-observer.ts"],"sourcesContent":["// @ts-nocheck\nimport {\n  computed,\n  getCurrentInstance,\n  onBeforeMount,\n  onMounted,\n  onUnmounted,\n  onUpdated,\n} from 'vue'\n\nimport type { TableHeader } from './table-header'\nimport type TableLayout from './table-layout'\nimport type { Table } from './table/defaults'\n\nfunction useLayoutObserver<T>(root: Table<T>) {\n  const instance = getCurrentInstance() as TableHeader\n  onBeforeMount(() => {\n    tableLayout.value.addObserver(instance)\n  })\n  onMounted(() => {\n    onColumnsChange(tableLayout.value)\n    onScrollableChange(tableLayout.value)\n  })\n  onUpdated(() => {\n    onColumnsChange(tableLayout.value)\n    onScrollableChange(tableLayout.value)\n  })\n  onUnmounted(() => {\n    tableLayout.value.removeObserver(instance)\n  })\n  const tableLayout = computed(() => {\n    const layout = root.layout as TableLayout<T>\n    if (!layout) {\n      throw new Error('Can not find table layout.')\n    }\n    return layout\n  })\n  const onColumnsChange = (layout: TableLayout<T>) => {\n    const cols = root.vnode.el?.querySelectorAll('colgroup > col') || []\n    if (!cols.length) return\n    const flattenColumns = layout.getFlattenColumns()\n    const columnsMap = {}\n    flattenColumns.forEach((column) => {\n      columnsMap[column.id] = column\n    })\n    for (let i = 0, j = cols.length; i < j; i++) {\n      const col = cols[i]\n      const name = col.getAttribute('name')\n      const column = columnsMap[name]\n      if (column) {\n        col.setAttribute('width', column.realWidth || column.width)\n      }\n    }\n  }\n\n  const onScrollableChange = (layout: TableLayout<T>) => {\n    const cols =\n      root.vnode.el?.querySelectorAll('colgroup > col[name=gutter]') || []\n    for (let i = 0, j = cols.length; i < j; i++) {\n      const col = cols[i]\n      col.setAttribute('width', layout.scrollY.value ? layout.gutterWidth : '0')\n    }\n    const ths = root.vnode.el?.querySelectorAll('th.gutter') || []\n    for (let i = 0, j = ths.length; i < j; i++) {\n      const th = ths[i]\n      th.style.width = layout.scrollY.value ? `${layout.gutterWidth}px` : '0'\n      th.style.display = layout.scrollY.value ? '' : 'none'\n    }\n  }\n\n  return {\n    tableLayout: tableLayout.value,\n    onColumnsChange,\n    onScrollableChange,\n  }\n}\n\nexport default useLayoutObserver\n"],"names":[],"mappings":"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"}