{"version":3,"file":"useTableScrollTo2.mjs","sources":["../../../../../../../../packages/components/table/src/hooks/useTableScrollTo.ts"],"sourcesContent":["import { nextTick, unref } from 'vue'\nimport { warn } from '@tav-ui/utils/log'\nimport type { ComputedRef, Ref } from 'vue'\n\ntype Recordable<T = any> = Record<string, T>\ninterface ComponentElRef<T extends HTMLElement = HTMLDivElement> {\n  $el: T\n}\ntype ComponentRef<T extends HTMLElement = HTMLDivElement> = ComponentElRef<T> | null\nexport function useTableScrollTo(\n  tableElRef: Ref<ComponentRef>,\n  getDataSourceRef: ComputedRef<Recordable[]>\n) {\n  let bodyEl: HTMLElement | null\n\n  async function findTargetRowToScroll(targetRowData: Recordable) {\n    const { id } = targetRowData\n    const targetRowEl: HTMLElement | null | undefined = bodyEl?.querySelector(\n      `[data-row-key=\"${id}\"]`\n    )\n    //Add a delay to get new dataSource\n    await nextTick()\n    bodyEl?.scrollTo({\n      top: targetRowEl?.offsetTop ?? 0,\n      behavior: 'smooth',\n    })\n  }\n\n  function scrollTo(pos: string): void {\n    const table = unref(tableElRef)\n    if (!table) return\n\n    const tableEl: Element = table.$el\n    if (!tableEl) return\n\n    if (!bodyEl) {\n      bodyEl = tableEl.querySelector('.ant-table-body')\n      if (!bodyEl) return\n    }\n\n    const dataSource = unref(getDataSourceRef)\n    if (!dataSource) return\n\n    // judge pos type\n    if (pos === 'top') {\n      findTargetRowToScroll(dataSource[0])\n    } else if (pos === 'bottom') {\n      findTargetRowToScroll(dataSource[dataSource.length - 1])\n    } else {\n      const targetRowData = dataSource.find((data) => data.id === pos)\n      if (targetRowData) {\n        findTargetRowToScroll(targetRowData)\n      } else {\n        warn(`id: ${pos} doesn't exist`)\n      }\n    }\n  }\n\n  return { scrollTo }\n}\n"],"names":[],"mappings":";;;AAEO,SAAS,gBAAgB,CAAC,UAAU,EAAE,gBAAgB,EAAE;AAC/D,EAAE,IAAI,MAAM,CAAC;AACb,EAAE,eAAe,qBAAqB,CAAC,aAAa,EAAE;AACtD,IAAI,MAAM,EAAE,EAAE,EAAE,GAAG,aAAa,CAAC;AACjC,IAAI,MAAM,WAAW,GAAG,MAAM,EAAE,aAAa,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACxE,IAAI,MAAM,QAAQ,EAAE,CAAC;AACrB,IAAI,MAAM,EAAE,QAAQ,CAAC;AACrB,MAAM,GAAG,EAAE,WAAW,EAAE,SAAS,IAAI,CAAC;AACtC,MAAM,QAAQ,EAAE,QAAQ;AACxB,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,SAAS,QAAQ,CAAC,GAAG,EAAE;AACzB,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC;AACpC,IAAI,IAAI,CAAC,KAAK;AACd,MAAM,OAAO;AACb,IAAI,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC;AAC9B,IAAI,IAAI,CAAC,OAAO;AAChB,MAAM,OAAO;AACb,IAAI,IAAI,CAAC,MAAM,EAAE;AACjB,MAAM,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,iBAAiB,CAAC,CAAC;AACxD,MAAM,IAAI,CAAC,MAAM;AACjB,QAAQ,OAAO;AACf,KAAK;AACL,IAAI,MAAM,UAAU,GAAG,KAAK,CAAC,gBAAgB,CAAC,CAAC;AAC/C,IAAI,IAAI,CAAC,UAAU;AACnB,MAAM,OAAO;AACb,IAAI,IAAI,GAAG,KAAK,KAAK,EAAE;AACvB,MAAM,qBAAqB,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC;AAC3C,KAAK,MAAM,IAAI,GAAG,KAAK,QAAQ,EAAE;AACjC,MAAM,qBAAqB,CAAC,UAAU,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;AAC/D,KAAK,MAAM;AACX,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,EAAE,KAAK,GAAG,CAAC,CAAC;AACvE,MAAM,IAAI,aAAa,EAAE;AACzB,QAAQ,qBAAqB,CAAC,aAAa,CAAC,CAAC;AAC7C,OAAO,MAAM;AACb,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC;AACzC,OAAO;AACP,KAAK;AACL,GAAG;AACH,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC;AACtB;;;;"}