{"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"}