UNPKG

tav-ui

Version:
1 lines 2.16 kB
{"version":3,"file":"useKeepScroll2.mjs","sources":["../../../../../../packages/hooks/event/useKeepScroll.ts"],"sourcesContent":["import { onBeforeUnmount } from 'vue'\n\nexport type KeepScrollType = Partial<{\n scrollEl: HTMLElement\n getScrollTop: () => number\n setScrollTop: (scrollTop: number) => void\n}>\n\nexport function useKeepScroll(keepScrollOpt: KeepScrollType) {\n if (!keepScrollOpt.scrollEl && (!keepScrollOpt.getScrollTop || !keepScrollOpt.setScrollTop))\n throw new Error('invalid params!')\n let scrollTop = 0\n const getScrollTop =\n keepScrollOpt.getScrollTop ??\n function () {\n return keepScrollOpt.scrollEl!.scrollTop\n }\n\n const setScrollTop =\n keepScrollOpt.setScrollTop ??\n function (value) {\n keepScrollOpt.scrollEl!.scrollTop = value\n }\n function onScroll() {\n scrollTop = getScrollTop()\n }\n const scrollFn = () => {\n setScrollTop(scrollTop)\n }\n\n scrollFn()\n if (keepScrollOpt.scrollEl) {\n keepScrollOpt.scrollEl.addEventListener('scroll', onScroll)\n\n onBeforeUnmount(() => {\n keepScrollOpt.scrollEl?.removeEventListener('scroll', onScroll)\n })\n }\n\n return { onScroll, scrollFn, scrollTop }\n}\n"],"names":[],"mappings":";;AACO,SAAS,aAAa,CAAC,aAAa,EAAE;AAC7C,EAAE,IAAI,CAAC,aAAa,CAAC,QAAQ,KAAK,CAAC,aAAa,CAAC,YAAY,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC;AAC7F,IAAI,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;AACvC,EAAE,IAAI,SAAS,GAAG,CAAC,CAAC;AACpB,EAAE,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,IAAI,WAAW;AAChE,IAAI,OAAO,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;AAC5C,GAAG,CAAC;AACJ,EAAE,MAAM,YAAY,GAAG,aAAa,CAAC,YAAY,IAAI,SAAS,KAAK,EAAE;AACrE,IAAI,aAAa,CAAC,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC;AAC7C,GAAG,CAAC;AACJ,EAAE,SAAS,QAAQ,GAAG;AACtB,IAAI,SAAS,GAAG,YAAY,EAAE,CAAC;AAC/B,GAAG;AACH,EAAE,MAAM,QAAQ,GAAG,MAAM;AACzB,IAAI,YAAY,CAAC,SAAS,CAAC,CAAC;AAC5B,GAAG,CAAC;AACJ,EAAE,QAAQ,EAAE,CAAC;AACb,EAAE,IAAI,aAAa,CAAC,QAAQ,EAAE;AAC9B,IAAI,aAAa,CAAC,QAAQ,CAAC,gBAAgB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AAChE,IAAI,eAAe,CAAC,MAAM;AAC1B,MAAM,aAAa,CAAC,QAAQ,EAAE,mBAAmB,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;AACtE,KAAK,CAAC,CAAC;AACP,GAAG;AACH,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;AAC3C;;;;"}