@scrolia/react-native
Version:
A headless scrollbar component
1 lines • 2.63 kB
Source Map (JSON)
{"version":3,"file":"scroll.mjs","names":["scrollbarOffsetNext: number","result: OnScrollResult | undefined","offset: number"],"sources":["../../../../src/hooks/content/functions/scroll.ts"],"sourcesContent":["import type { NativeScrollEvent, NativeSyntheticEvent } from \"react-native\";\n\nimport type { Axis, OnScrollResult, Plugin } from \"#/@types/options\";\n\nimport { tryPlugin } from \"#/functions/plugin\";\n\ntype HandleScrollOptions = {\n axis: Axis;\n event: NativeSyntheticEvent<NativeScrollEvent>;\n disabled: boolean;\n animated: boolean;\n plugins: Plugin[];\n hvTrack: boolean;\n hvThumb: boolean;\n total: React.RefObject<number>;\n view: React.RefObject<number>;\n viewOffset: React.RefObject<number>;\n scrollbarOffset: number;\n setScrollbarOffset: React.Dispatch<React.SetStateAction<number>>;\n};\n\nconst handleScrollFn = ({\n axis,\n event,\n disabled,\n animated,\n plugins,\n hvTrack,\n hvThumb,\n total,\n view,\n viewOffset,\n scrollbarOffset,\n setScrollbarOffset,\n}: HandleScrollOptions): void => {\n viewOffset.current = event.nativeEvent.contentOffset[axis];\n\n const scrollbarOffsetNext: number =\n (viewOffset.current / total.current) * view.current;\n\n let result: OnScrollResult | undefined;\n\n for (const plugin of plugins) {\n if (!plugin.onScroll) continue;\n\n result =\n tryPlugin(plugin, plugin.onScroll, {\n axis,\n isDisabled: disabled,\n isAnimated: animated,\n isDefined: hvTrack && hvThumb,\n total: total.current,\n view: view.current,\n viewOffset: viewOffset.current,\n scrollbarOffsetPrev: scrollbarOffset,\n scrollbarOffsetNext,\n }) ?? result;\n }\n\n let offset: number;\n\n if (result?.scrollbarOffset) {\n offset = result.scrollbarOffset;\n } else {\n offset = scrollbarOffsetNext;\n }\n\n setScrollbarOffset(offset);\n};\n\nexport type { HandleScrollOptions };\nexport { handleScrollFn };\n"],"mappings":";;AAqBA,MAAM,iBAAiB,CAAC,EACpB,MACA,OACA,UACA,UACA,SACA,SACA,SACA,OACA,MACA,YACA,iBACA,oBACkB,KAAW;CAC7B,WAAW,UAAU,MAAM,YAAY,cAAc;CAErD,MAAMA,sBACD,WAAW,UAAU,MAAM,UAAW,KAAK;CAEhD,IAAIC;AAEJ,MAAK,MAAM,UAAU,SAAS;AAC1B,MAAI,CAAC,OAAO,SAAU;EAEtB,SACI,UAAU,QAAQ,OAAO,UAAU;GAC/B;GACA,YAAY;GACZ,YAAY;GACZ,WAAW,WAAW;GACtB,OAAO,MAAM;GACb,MAAM,KAAK;GACX,YAAY,WAAW;GACvB,qBAAqB;GACrB;EACH,EAAC,IAAI;CACb;CAED,IAAIC;AAEJ,KAAI,QAAQ,iBACR,SAAS,OAAO;MAEhB,SAAS;CAGb,mBAAmB,OAAO;AAC7B"}