tav-ui
Version:
1 lines • 2.37 kB
Source Map (JSON)
{"version":3,"file":"useScrollToCenter2.mjs","sources":["../../../../../../packages/hooks/event/useScrollToCenter.ts"],"sourcesContent":["import { useScrollTo } from './useScrollTo'\nimport type { Ref } from 'vue'\ntype ElRef<T extends HTMLElement = HTMLDivElement> = Nullable<T>\ninterface ComponentElRef<T extends HTMLElement = HTMLDivElement> {\n $el: T\n}\ntype Nullable<T> = T | null\ninterface Fn<T = any, R = T> {\n (...arg: T[]): R\n}\nexport const useScrollToCenter = (\n scrollRef: Ref<ElRef | ComponentElRef>,\n opt: {\n duration?: number\n callback?: Fn\n direction?: 'scrollTop' | 'scrollLeft'\n } = {}\n) => {\n let currentStopFn: Nullable<Fn>\n const scrollToCenter = <T extends HTMLElement = HTMLButtonElement>(buttonEl: T) => {\n currentStopFn?.()\n const buttonGroupEl = (scrollRef.value as ComponentElRef)?.$el ?? scrollRef.value\n\n // undefined || null\n if (undefined == buttonGroupEl) return\n // const path = (e as unknown as { path: HTMLElement[] }).path;\n // const buttonEl =\n // path[0].nodeName === \"BUTTON\"\n // ? path[0]\n // : path[1].nodeName === \"BUTTON\"\n // ? path[1]\n // : path.filter((el) => el.nodeName === \"BUTTON\")[0];\n\n if (undefined === buttonEl) return\n const to = buttonEl.offsetLeft - (buttonGroupEl.clientWidth - buttonEl.offsetWidth) / 2\n\n const { start, stop } = useScrollTo({\n el: buttonGroupEl,\n to,\n direction: 'scrollLeft',\n duration: 300,\n ...opt,\n })\n start()\n currentStopFn = stop\n }\n\n return { scrollToCenter }\n}\n"],"names":[],"mappings":";;AACY,MAAC,iBAAiB,GAAG,CAAC,SAAS,EAAE,GAAG,GAAG,EAAE,KAAK;AAC1D,EAAE,IAAI,aAAa,CAAC;AACpB,EAAE,MAAM,cAAc,GAAG,CAAC,QAAQ,KAAK;AACvC,IAAI,aAAa,IAAI,CAAC;AACtB,IAAI,MAAM,aAAa,GAAG,SAAS,CAAC,KAAK,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC;AAClE,IAAI,IAAI,aAAa,IAAI,KAAK,CAAC;AAC/B,MAAM,OAAO;AACb,IAAI,IAAI,QAAQ,KAAK,KAAK,CAAC;AAC3B,MAAM,OAAO;AACb,IAAI,MAAM,EAAE,GAAG,QAAQ,CAAC,UAAU,GAAG,CAAC,aAAa,CAAC,WAAW,GAAG,QAAQ,CAAC,WAAW,IAAI,CAAC,CAAC;AAC5F,IAAI,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,WAAW,CAAC;AACxC,MAAM,EAAE,EAAE,aAAa;AACvB,MAAM,EAAE;AACR,MAAM,SAAS,EAAE,YAAY;AAC7B,MAAM,QAAQ,EAAE,GAAG;AACnB,MAAM,GAAG,GAAG;AACZ,KAAK,CAAC,CAAC;AACP,IAAI,KAAK,EAAE,CAAC;AACZ,IAAI,aAAa,GAAG,IAAI,CAAC;AACzB,GAAG,CAAC;AACJ,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC;AAC5B;;;;"}