You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
1 line
6.4 KiB
1 line
6.4 KiB
{"ast":null,"code":"import { ref, unref, watch } from 'vue';\nconst useScrollbar = (props, {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n onMaybeEndReached\n}) => {\n const scrollPos = ref({\n scrollLeft: 0,\n scrollTop: 0\n });\n function doScroll(params) {\n var _a, _b, _c;\n const {\n scrollTop\n } = params;\n (_a = mainTableRef.value) == null ? void 0 : _a.scrollTo(params);\n (_b = leftTableRef.value) == null ? void 0 : _b.scrollToTop(scrollTop);\n (_c = rightTableRef.value) == null ? void 0 : _c.scrollToTop(scrollTop);\n }\n function scrollTo(params) {\n scrollPos.value = params;\n doScroll(params);\n }\n function scrollToTop(scrollTop) {\n scrollPos.value.scrollTop = scrollTop;\n doScroll(unref(scrollPos));\n }\n function scrollToLeft(scrollLeft) {\n var _a, _b;\n scrollPos.value.scrollLeft = scrollLeft;\n (_b = (_a = mainTableRef.value) == null ? void 0 : _a.scrollTo) == null ? void 0 : _b.call(_a, unref(scrollPos));\n }\n function onScroll(params) {\n var _a;\n scrollTo(params);\n (_a = props.onScroll) == null ? void 0 : _a.call(props, params);\n }\n function onVerticalScroll({\n scrollTop\n }) {\n const {\n scrollTop: currentScrollTop\n } = unref(scrollPos);\n if (scrollTop !== currentScrollTop) scrollToTop(scrollTop);\n }\n function scrollToRow(row, strategy = \"auto\") {\n var _a;\n (_a = mainTableRef.value) == null ? void 0 : _a.scrollToRow(row, strategy);\n }\n watch(() => unref(scrollPos).scrollTop, (cur, prev) => {\n if (cur > prev) onMaybeEndReached();\n });\n return {\n scrollPos,\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n onScroll,\n onVerticalScroll\n };\n};\nexport { useScrollbar };","map":{"version":3,"names":["useScrollbar","props","mainTableRef","leftTableRef","rightTableRef","onMaybeEndReached","scrollPos","ref","scrollLeft","scrollTop","doScroll","params","_a","_b","_c","value","scrollTo","scrollToTop","unref","scrollToLeft","call","onScroll","onVerticalScroll","currentScrollTop","scrollToRow","row","strategy","watch","cur","prev"],"sources":["../../../../../../../packages/components/table-v2/src/composables/use-scrollbar.ts"],"sourcesContent":["import { ref, unref, watch } from 'vue'\n\nimport type { Ref } from 'vue'\nimport type { Alignment as ScrollStrategy } from '@element-plus/components/virtual-list'\nimport type { TableV2Props } from '../table'\nimport type { TableGridInstance } from '../table-grid'\n\nexport type ScrollPos = { scrollLeft: number; scrollTop: number }\ntype GridInstanceRef = Ref<TableGridInstance | undefined>\n\ntype UseScrollBarProps = {\n mainTableRef: GridInstanceRef\n leftTableRef: GridInstanceRef\n rightTableRef: GridInstanceRef\n\n onMaybeEndReached: () => void\n}\n\nexport type { ScrollStrategy }\n\nexport const useScrollbar = (\n props: TableV2Props,\n {\n mainTableRef,\n leftTableRef,\n rightTableRef,\n onMaybeEndReached,\n }: UseScrollBarProps\n) => {\n const scrollPos = ref<ScrollPos>({ scrollLeft: 0, scrollTop: 0 })\n\n function doScroll(params: ScrollPos) {\n const { scrollTop } = params\n\n mainTableRef.value?.scrollTo(params)\n leftTableRef.value?.scrollToTop(scrollTop)\n rightTableRef.value?.scrollToTop(scrollTop)\n }\n\n // methods\n function scrollTo(params: ScrollPos) {\n scrollPos.value = params\n\n doScroll(params)\n }\n\n function scrollToTop(scrollTop: number) {\n scrollPos.value.scrollTop = scrollTop\n\n doScroll(unref(scrollPos))\n }\n\n function scrollToLeft(scrollLeft: number) {\n scrollPos.value.scrollLeft = scrollLeft\n\n mainTableRef.value?.scrollTo?.(unref(scrollPos))\n }\n\n function onScroll(params: ScrollPos) {\n scrollTo(params)\n props.onScroll?.(params)\n }\n\n function onVerticalScroll({ scrollTop }: ScrollPos) {\n const { scrollTop: currentScrollTop } = unref(scrollPos)\n if (scrollTop !== currentScrollTop) scrollToTop(scrollTop)\n }\n\n function scrollToRow(row: number, strategy: ScrollStrategy = 'auto') {\n mainTableRef.value?.scrollToRow(row, strategy)\n }\n\n // When scrollTop changes, maybe reaching the bottom\n watch(\n () => unref(scrollPos).scrollTop,\n (cur, prev) => {\n if (cur > prev) onMaybeEndReached()\n }\n )\n\n return {\n scrollPos,\n\n scrollTo,\n scrollToLeft,\n scrollToTop,\n scrollToRow,\n onScroll,\n onVerticalScroll,\n }\n}\n"],"mappings":";AACY,MAACA,YAAY,GAAGA,CAACC,KAAK,EAAE;EAClCC,YAAY;EACZC,YAAY;EACZC,aAAa;EACbC;AACF,CAAC,KAAK;EACJ,MAAMC,SAAS,GAAGC,GAAG,CAAC;IAAEC,UAAU,EAAE,CAAC;IAAEC,SAAS,EAAE;EAAC,CAAE,CAAC;EACtD,SAASC,QAAQA,CAACC,MAAM,EAAE;IACxB,IAAIC,EAAE,EAAEC,EAAE,EAAEC,EAAE;IACd,MAAM;MAAEL;IAAS,CAAE,GAAGE,MAAM;IAC5B,CAACC,EAAE,GAAGV,YAAY,CAACa,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGH,EAAE,CAACI,QAAQ,CAACL,MAAM,CAAC;IAChE,CAACE,EAAE,GAAGV,YAAY,CAACY,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGF,EAAE,CAACI,WAAW,CAACR,SAAS,CAAC;IACtE,CAACK,EAAE,GAAGV,aAAa,CAACW,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGD,EAAE,CAACG,WAAW,CAACR,SAAS,CAAC;EAC3E;EACE,SAASO,QAAQA,CAACL,MAAM,EAAE;IACxBL,SAAS,CAACS,KAAK,GAAGJ,MAAM;IACxBD,QAAQ,CAACC,MAAM,CAAC;EACpB;EACE,SAASM,WAAWA,CAACR,SAAS,EAAE;IAC9BH,SAAS,CAACS,KAAK,CAACN,SAAS,GAAGA,SAAS;IACrCC,QAAQ,CAACQ,KAAK,CAACZ,SAAS,CAAC,CAAC;EAC9B;EACE,SAASa,YAAYA,CAACX,UAAU,EAAE;IAChC,IAAII,EAAE,EAAEC,EAAE;IACVP,SAAS,CAACS,KAAK,CAACP,UAAU,GAAGA,UAAU;IACvC,CAACK,EAAE,GAAG,CAACD,EAAE,GAAGV,YAAY,CAACa,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGH,EAAE,CAACI,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGH,EAAE,CAACO,IAAI,CAACR,EAAE,EAAEM,KAAK,CAACZ,SAAS,CAAC,CAAC;EACpH;EACE,SAASe,QAAQA,CAACV,MAAM,EAAE;IACxB,IAAIC,EAAE;IACNI,QAAQ,CAACL,MAAM,CAAC;IAChB,CAACC,EAAE,GAAGX,KAAK,CAACoB,QAAQ,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGT,EAAE,CAACQ,IAAI,CAACnB,KAAK,EAAEU,MAAM,CAAC;EACnE;EACE,SAASW,gBAAgBA,CAAC;IAAEb;EAAS,CAAE,EAAE;IACvC,MAAM;MAAEA,SAAS,EAAEc;IAAgB,CAAE,GAAGL,KAAK,CAACZ,SAAS,CAAC;IACxD,IAAIG,SAAS,KAAKc,gBAAgB,EAChCN,WAAW,CAACR,SAAS,CAAC;EAC5B;EACE,SAASe,WAAWA,CAACC,GAAG,EAAEC,QAAQ,GAAG,MAAM,EAAE;IAC3C,IAAId,EAAE;IACN,CAACA,EAAE,GAAGV,YAAY,CAACa,KAAK,KAAK,IAAI,GAAG,KAAK,CAAC,GAAGH,EAAE,CAACY,WAAW,CAACC,GAAG,EAAEC,QAAQ,CAAC;EAC9E;EACEC,KAAK,CAAC,MAAMT,KAAK,CAACZ,SAAS,CAAC,CAACG,SAAS,EAAE,CAACmB,GAAG,EAAEC,IAAI,KAAK;IACrD,IAAID,GAAG,GAAGC,IAAI,EACZxB,iBAAiB,EAAE;EACzB,CAAG,CAAC;EACF,OAAO;IACLC,SAAS;IACTU,QAAQ;IACRG,YAAY;IACZF,WAAW;IACXO,WAAW;IACXH,QAAQ;IACRC;EACJ,CAAG;AACH","ignoreList":[]},"metadata":{},"sourceType":"module","externalDependencies":[]} |