{"version":3,"file":"index.mjs","names":["axis: Axis","options?: UseContentHandlerOptions","event: LayoutChangeEvent","width: number","height: number","event: NativeSyntheticEvent<NativeScrollEvent>"],"sources":["../../../src/hooks/content/index.ts"],"sourcesContent":["import type {\n    LayoutChangeEvent,\n    NativeScrollEvent,\n    NativeSyntheticEvent,\n} from \"react-native\";\n\nimport type { Axis } from \"#/@types/options\";\n\nimport { useScrollCore } from \"#/contexts/scrollcore\";\nimport { setLengthFn } from \"#/hooks/content/functions/length\";\nimport { handleScrollFn } from \"#/hooks/content/functions/scroll\";\n\n/** Options for the `useContentHandler` hook. */\ntype UseContentHandlerOptions = {\n    props?: any;\n};\n\n/** Content handler. */\nconst createContentHandler = (\n    axis: Axis,\n    options?: UseContentHandlerOptions,\n) => {\n    const { props } = options ?? {};\n\n    const {\n        options: { disabled, animated, plugins },\n        [axis]: {\n            hvTrack,\n            hvThumb,\n            total,\n            view,\n            viewOffset,\n            scrollbarLength,\n            setScrollbarLength,\n            scrollbarOffset,\n            setScrollbarOffset,\n        },\n    } = useScrollCore();\n\n    const setLength = setLengthFn({\n        axis,\n        disabled,\n        animated,\n        plugins,\n        hvTrack,\n        hvThumb,\n        total,\n        view,\n        viewOffset,\n        scrollbarLength,\n        setScrollbarLength,\n    });\n\n    const onLayout = (event: LayoutChangeEvent): void => {\n        if (!disabled) {\n            if (axis === \"x\") {\n                view.current = event.nativeEvent.layout.width;\n            } else {\n                view.current = event.nativeEvent.layout.height;\n            }\n\n            setLength();\n        }\n\n        props?.onLayout?.(event);\n    };\n\n    const onContentSizeChange = (width: number, height: number): void => {\n        if (!disabled) {\n            if (axis === \"x\") {\n                total.current = width;\n            } else {\n                total.current = height;\n            }\n\n            setLength();\n        }\n\n        props?.onContentSizeChange?.(width, height);\n    };\n\n    const onScroll = (event: NativeSyntheticEvent<NativeScrollEvent>): void => {\n        if (!disabled)\n            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            });\n\n        props?.onScroll?.(event);\n    };\n\n    return {\n        onLayout,\n        onContentSizeChange,\n        onScroll,\n    };\n};\n\nconst useContentXHandler = (options?: UseContentHandlerOptions) => {\n    return createContentHandler(\"x\", options);\n};\n\nconst useContentYHandler = (options?: UseContentHandlerOptions) => {\n    return createContentHandler(\"y\", options);\n};\n\n/** Result of the `useContentXHandler` hook. */\ntype ContentXHandler = ReturnType<typeof useContentXHandler>;\n\n/** Result of the `useContentYHandler` hook. */\ntype ContentYHandler = ReturnType<typeof useContentYHandler>;\n\nexport type { UseContentHandlerOptions, ContentXHandler, ContentYHandler };\nexport { useContentXHandler, useContentYHandler };\n"],"mappings":";;;;;AAkBA,MAAM,uBAAuB,CACzBA,MACAC,YACC;CACD,MAAM,EAAE,OAAO,GAAG,WAAW,CAAE;CAE/B,MAAM,EACF,SAAS,EAAE,UAAU,UAAU,SAAS,EACxC,CAAC,OAAO,EACJ,SACA,SACA,OACA,MACA,YACA,iBACA,oBACA,iBACA,oBACH,EACJ,GAAG,eAAe;CAEnB,MAAM,YAAY,YAAY;EAC1B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;CACH,EAAC;CAEF,MAAM,WAAW,CAACC,UAAmC;AACjD,MAAI,CAAC,UAAU;AACX,OAAI,SAAS,KACT,KAAK,UAAU,MAAM,YAAY,OAAO;QAExC,KAAK,UAAU,MAAM,YAAY,OAAO;GAG5C,WAAW;EACd;EAED,OAAO,WAAW,MAAM;CAC3B;CAED,MAAM,sBAAsB,CAACC,OAAeC,WAAyB;AACjE,MAAI,CAAC,UAAU;AACX,OAAI,SAAS,KACT,MAAM,UAAU;QAEhB,MAAM,UAAU;GAGpB,WAAW;EACd;EAED,OAAO,sBAAsB,OAAO,OAAO;CAC9C;CAED,MAAM,WAAW,CAACC,UAAyD;AACvE,MAAI,CAAC,UACD,eAAe;GACX;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACH,EAAC;EAEN,OAAO,WAAW,MAAM;CAC3B;AAED,QAAO;EACH;EACA;EACA;CACH;AACJ;AAED,MAAM,qBAAqB,CAACJ,YAAuC;AAC/D,QAAO,qBAAqB,KAAK,QAAQ;AAC5C;AAED,MAAM,qBAAqB,CAACA,YAAuC;AAC/D,QAAO,qBAAqB,KAAK,QAAQ;AAC5C"}