UNPKG

element-plus

Version:

A Component Library for Vue 3

1 lines 2.54 kB
{"version":3,"file":"use-wheel.mjs","sources":["../../../../../../../packages/components/virtual-list/src/hooks/use-wheel.ts"],"sourcesContent":["import { cAF, isFirefox, rAF } from '@element-plus/utils'\nimport { HORIZONTAL } from '../defaults'\n\nimport type { ComputedRef } from 'vue'\nimport type { LayoutDirection } from '../types'\n\ninterface ListWheelState {\n atStartEdge: ComputedRef<boolean> // exclusive to reachEnd\n atEndEdge: ComputedRef<boolean>\n layout: ComputedRef<LayoutDirection>\n}\n\ntype ListWheelHandler = (offset: number) => void\n\nconst useWheel = (\n { atEndEdge, atStartEdge, layout }: ListWheelState,\n onWheelDelta: ListWheelHandler\n) => {\n let frameHandle: number\n let offset = 0\n\n const hasReachedEdge = (offset: number) => {\n const edgeReached =\n (offset < 0 && atStartEdge.value) || (offset > 0 && atEndEdge.value)\n\n return edgeReached\n }\n\n const onWheel = (e: WheelEvent) => {\n cAF(frameHandle)\n\n let { deltaX, deltaY } = e\n // Special case for windows machine with shift key + wheel scrolling\n if (e.shiftKey && deltaY !== 0) {\n deltaX = deltaY\n deltaY = 0\n }\n\n const newOffset = layout.value === HORIZONTAL ? deltaX : deltaY\n\n if (hasReachedEdge(newOffset)) return\n\n offset += newOffset\n\n if (!isFirefox() && newOffset !== 0) {\n e.preventDefault()\n }\n\n frameHandle = rAF(() => {\n onWheelDelta(offset)\n offset = 0\n })\n }\n\n return {\n hasReachedEdge,\n onWheel,\n }\n}\n\nexport default useWheel\n"],"names":["offset"],"mappings":";;;;AAcA,MAAM,WAAW,CACf,EAAE,WAAW,WAAA,EAAa,MAAA,IAC1B,YAAA,KACG;AACH,EAAA,IAAI,WAAA;AACJ,EAAA,IAAI,MAAA,GAAS,CAAA;AAEb,EAAA,MAAM,cAAA,GAAiB,CAACA,OAAAA,KAAmB;AACzC,IAAA,MAAM,cACHA,OAAAA,GAAS,CAAA,IAAK,YAAY,KAAA,IAAWA,OAAAA,GAAS,KAAK,SAAA,CAAU,KAAA;AAEhE,IAAA,OAAO,WAAA;AAAA,EACT,CAAA;AAEA,EAAA,MAAM,OAAA,GAAU,CAAC,CAAA,KAAkB;AACjC,IAAA,GAAA,CAAI,WAAW,CAAA;AAEf,IAAA,IAAI,EAAE,MAAA,EAAQ,MAAA,EAAO,GAAI,CAAA;AAEzB,IAAA,IAAI,CAAA,CAAE,QAAA,IAAY,MAAA,KAAW,CAAA,EAAG;AAC9B,MAAA,MAAA,GAAS,MAAA;AACT,MAAA,MAAA,GAAS,CAAA;AAAA,IACX;AAEA,IAAA,MAAM,SAAA,GAAY,MAAA,CAAO,KAAA,KAAU,UAAA,GAAa,MAAA,GAAS,MAAA;AAEzD,IAAA,IAAI,cAAA,CAAe,SAAS,CAAA,EAAG;AAE/B,IAAA,MAAA,IAAU,SAAA;AAEV,IAAA,IAAI,CAAC,SAAA,EAAU,IAAK,SAAA,KAAc,CAAA,EAAG;AACnC,MAAA,CAAA,CAAE,cAAA,EAAe;AAAA,IACnB;AAEA,IAAA,WAAA,GAAc,IAAI,MAAM;AACtB,MAAA,YAAA,CAAa,MAAM,CAAA;AACnB,MAAA,MAAA,GAAS,CAAA;AAAA,IACX,CAAC,CAAA;AAAA,EACH,CAAA;AAEA,EAAA,OAAO;AAAA,IACL,cAAA;AAAA,IACA;AAAA,GACF;AACF;;;;"}