{"version":3,"file":"index.mjs","sources":["../../../../../../../packages/components/table/src/table-body/index.ts"],"sourcesContent":["import {\n  defineComponent,\n  getCurrentInstance,\n  h,\n  watch,\n  onUnmounted,\n  onUpdated,\n} from 'vue'\nimport { addClass, removeClass } from '@element-plus/utils/dom'\nimport isServer from '@element-plus/utils/isServer'\nimport { hColgroup } from '../h-helper'\nimport useLayoutObserver from '../layout-observer'\nimport { removePopper } from '../util'\nimport useRender from './render-helper'\nimport defaultProps from './defaults'\n\nimport type { VNode } from 'vue'\nimport type { DefaultRow, Table } from '../table/defaults'\n\nexport default defineComponent({\n  name: 'ElTableBody',\n  props: defaultProps,\n  setup(props) {\n    const instance = getCurrentInstance()\n    const parent = instance.parent as Table<DefaultRow>\n\n    const { wrappedRowRender, tooltipContent, tooltipTrigger } =\n      useRender(props)\n    const { onColumnsChange, onScrollableChange } = useLayoutObserver(parent)\n\n    watch(props.store.states.hoverRow, (newVal: any, oldVal: any) => {\n      if (!props.store.states.isComplex.value || isServer) return\n      let raf = window.requestAnimationFrame\n      if (!raf) {\n        raf = (fn) => window.setTimeout(fn, 16)\n      }\n      raf(() => {\n        const rows = instance.vnode.el.querySelectorAll('.el-table__row')\n        const oldRow = rows[oldVal]\n        const newRow = rows[newVal]\n        if (oldRow) {\n          removeClass(oldRow, 'hover-row')\n        }\n        if (newRow) {\n          addClass(newRow, 'hover-row')\n        }\n      })\n    })\n\n    onUnmounted(() => {\n      removePopper?.()\n    })\n    onUpdated(() => {\n      removePopper?.()\n    })\n\n    return {\n      onColumnsChange,\n      onScrollableChange,\n      wrappedRowRender,\n      tooltipContent,\n      tooltipTrigger,\n    }\n  },\n  render() {\n    const data = this.store.states.data.value || []\n    return h(\n      'table',\n      {\n        class: 'el-table__body',\n        cellspacing: '0',\n        cellpadding: '0',\n        border: '0',\n      },\n      [\n        hColgroup(this.store.states.columns.value),\n        h('tbody', {}, [\n          data.reduce((acc: VNode[], row) => {\n            return acc.concat(this.wrappedRowRender(row, acc.length))\n          }, []),\n        ]),\n      ]\n    )\n  },\n})\n"],"names":[],"mappings":";;;;;;;;;AAmBA,gBAAe,gBAAgB;AAAA,EAC7B,MAAM;AAAA,EACN,OAAO;AAAA,EACP,MAAM,OAAO;AACX,UAAM,WAAW;AACjB,UAAM,SAAS,SAAS;AAExB,UAAM,EAAE,kBAAkB,gBAAgB,mBACxC,UAAU;AACZ,UAAM,EAAE,iBAAiB,uBAAuB,kBAAkB;AAElE,UAAM,MAAM,MAAM,OAAO,UAAU,CAAC,QAAa,WAAgB;AAC/D,UAAI,CAAC,MAAM,MAAM,OAAO,UAAU,SAAS;AAAU;AACrD,UAAI,MAAM,OAAO;AACjB,UAAI,CAAC,KAAK;AACR,cAAM,CAAC,OAAO,OAAO,WAAW,IAAI;AAAA;AAEtC,UAAI,MAAM;AACR,cAAM,OAAO,SAAS,MAAM,GAAG,iBAAiB;AAChD,cAAM,SAAS,KAAK;AACpB,cAAM,SAAS,KAAK;AACpB,YAAI,QAAQ;AACV,sBAAY,QAAQ;AAAA;AAEtB,YAAI,QAAQ;AACV,mBAAS,QAAQ;AAAA;AAAA;AAAA;AAKvB,gBAAY,MAAM;AAjDtB;AAkDM;AAAA;AAEF,cAAU,MAAM;AApDpB;AAqDM;AAAA;AAGF,WAAO;AAAA,MACL;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA;AAAA;AAAA,EAGJ,SAAS;AACP,UAAM,OAAO,KAAK,MAAM,OAAO,KAAK,SAAS;AAC7C,WAAO,EACL,SACA;AAAA,MACE,OAAO;AAAA,MACP,aAAa;AAAA,MACb,aAAa;AAAA,MACb,QAAQ;AAAA,OAEV;AAAA,MACE,UAAU,KAAK,MAAM,OAAO,QAAQ;AAAA,MACpC,EAAE,SAAS,IAAI;AAAA,QACb,KAAK,OAAO,CAAC,KAAc,QAAQ;AACjC,iBAAO,IAAI,OAAO,KAAK,iBAAiB,KAAK,IAAI;AAAA,WAChD;AAAA;AAAA;AAAA;AAAA;;;;"}