UNPKG

@scrolia/react

Version:

A headless scrollbar component

1 lines 4.26 kB
{"version":3,"file":"index.mjs","names":["options: ProviderProps"],"sources":["../../../src/components/provider/index.tsx"],"sourcesContent":["\"use client\";\n\nimport type { Format } from \"ts-vista\";\n\nimport type { Options } from \"#/@types/options\";\n\nimport * as React from \"react\";\n\nimport { ScrollCoreContext } from \"#/contexts/scrollcore\";\n\n/** Props for the `Provider` component. */\ntype ProviderProps = Format<\n Options & {\n children?: React.ReactNode;\n }\n>;\n\n/** Provider component. */\nconst Provider = (options: ProviderProps): React.JSX.Element => {\n const contentRef = React.useRef<HTMLDivElement | null>(null);\n\n const [hvTrackX, setHvTrackX] = React.useState<boolean>(false);\n const [hvThumbX, setHvThumbX] = React.useState<boolean>(false);\n const [hvTrackY, setHvTrackY] = React.useState<boolean>(false);\n const [hvThumbY, setHvThumbY] = React.useState<boolean>(false);\n\n const totalX = React.useRef<number>(0);\n const totalY = React.useRef<number>(0);\n\n const viewX = React.useRef<number>(0);\n const viewY = React.useRef<number>(0);\n\n const viewOffsetX = React.useRef<number>(0);\n const viewOffsetY = React.useRef<number>(0);\n\n const [scrollbarLengthX, setScrollbarLengthX] = React.useState<number>(0);\n const [scrollbarLengthY, setScrollbarLengthY] = React.useState<number>(0);\n\n const [scrollbarOffsetX, setScrollbarOffsetX] = React.useState<number>(0);\n const [scrollbarOffsetY, setScrollbarOffsetY] = React.useState<number>(0);\n\n return (\n <ScrollCoreContext\n value={{\n options: {\n ...options,\n disabled: options.disabled ?? false,\n page: options.page ?? false,\n plugins: options.plugins ?? [],\n },\n contentRef,\n x: {\n hvTrack: hvTrackX,\n setHvTrack: setHvTrackX,\n hvThumb: hvThumbX,\n setHvThumb: setHvThumbX,\n total: totalX,\n view: viewX,\n viewOffset: viewOffsetX,\n scrollbarLength: scrollbarLengthX,\n setScrollbarLength: setScrollbarLengthX,\n scrollbarOffset: scrollbarOffsetX,\n setScrollbarOffset: setScrollbarOffsetX,\n },\n y: {\n hvTrack: hvTrackY,\n setHvTrack: setHvTrackY,\n hvThumb: hvThumbY,\n setHvThumb: setHvThumbY,\n total: totalY,\n view: viewY,\n viewOffset: viewOffsetY,\n scrollbarLength: scrollbarLengthY,\n setScrollbarLength: setScrollbarLengthY,\n scrollbarOffset: scrollbarOffsetY,\n setScrollbarOffset: setScrollbarOffsetY,\n },\n }}\n >\n {options.children}\n </ScrollCoreContext>\n );\n};\n\nexport type { ProviderProps };\nexport { Provider };\n"],"mappings":";;;;;;;;AAkBA,MAAM,WAAW,CAACA,YAA8C;CAC5D,MAAM,aAAa,MAAM,OAA8B,KAAK;CAE5D,MAAM,CAAC,UAAU,YAAY,GAAG,MAAM,SAAkB,MAAM;CAC9D,MAAM,CAAC,UAAU,YAAY,GAAG,MAAM,SAAkB,MAAM;CAC9D,MAAM,CAAC,UAAU,YAAY,GAAG,MAAM,SAAkB,MAAM;CAC9D,MAAM,CAAC,UAAU,YAAY,GAAG,MAAM,SAAkB,MAAM;CAE9D,MAAM,SAAS,MAAM,OAAe,EAAE;CACtC,MAAM,SAAS,MAAM,OAAe,EAAE;CAEtC,MAAM,QAAQ,MAAM,OAAe,EAAE;CACrC,MAAM,QAAQ,MAAM,OAAe,EAAE;CAErC,MAAM,cAAc,MAAM,OAAe,EAAE;CAC3C,MAAM,cAAc,MAAM,OAAe,EAAE;CAE3C,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,MAAM,SAAiB,EAAE;CACzE,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,MAAM,SAAiB,EAAE;CAEzE,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,MAAM,SAAiB,EAAE;CACzE,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,MAAM,SAAiB,EAAE;AAEzE,wBACI,IAAC;EACG,OAAO;GACH,SAAS;IACL,GAAG;IACH,UAAU,QAAQ,YAAY;IAC9B,MAAM,QAAQ,QAAQ;IACtB,SAAS,QAAQ,WAAW,CAAE;GACjC;GACD;GACA,GAAG;IACC,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,OAAO;IACP,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;GACvB;GACD,GAAG;IACC,SAAS;IACT,YAAY;IACZ,SAAS;IACT,YAAY;IACZ,OAAO;IACP,MAAM;IACN,YAAY;IACZ,iBAAiB;IACjB,oBAAoB;IACpB,iBAAiB;IACjB,oBAAoB;GACvB;EACJ;YAEA,QAAQ;GACO;AAE3B"}