@scrolia/vanilla
Version:
A headless scrollbar component
1 lines • 6.16 kB
Source Map (JSON)
{"version":3,"file":"index.mjs","names":["props: Atom.Props<typeof _Provider>","elRef: Required<Atom.Ref<DOM.AtomicoThis>>","totalX: Atom.Ref<number>","totalY: Atom.Ref<number>","viewX: Atom.Ref<number>","viewY: Atom.Ref<number>","viewOffsetX: Atom.Ref<number>","viewOffsetY: Atom.Ref<number>","props: ComponentProps<\"div\">","newProps: ComponentProps<\"div\">"],"sources":["../../../src/components/provider/index.tsx"],"sourcesContent":["import type * as DOM from \"atomico/types/dom\";\nimport type * as Schema from \"atomico/types/schema\";\n\nimport type { ComponentProps, ComponentTypes } from \"#/@types/component\";\nimport type { Plugin } from \"#/@types/options\";\n\nimport * as Atom from \"atomico\";\n\nimport { ScrollCoreContext } from \"#/contexts/scrollcore\";\nimport { getPropsFromAttributes } from \"#/functions/attribute\";\nimport { getComponentProps } from \"#/functions/props/get\";\nimport { setComponentProps } from \"#/functions/props/set\";\n\nfunction _Provider(props: Atom.Props<typeof _Provider>): Atom.Host<any> {\n const elRef: Required<Atom.Ref<DOM.AtomicoThis>> = Atom.useHost();\n\n const [disabled] = Atom.useState<boolean>(props.disabled ?? false);\n const [page] = Atom.useState<boolean>(props.page ?? false);\n const [plugins] = Atom.useState<Plugin[]>(props.plugins ?? []);\n\n const contentRef = Atom.useRef<HTMLElement | null>();\n\n const [hvTrackX, setHvTrackX] = Atom.useState<boolean>(false);\n const [hvThumbX, setHvThumbX] = Atom.useState<boolean>(false);\n const [hvTrackY, setHvTrackY] = Atom.useState<boolean>(false);\n const [hvThumbY, setHvThumbY] = Atom.useState<boolean>(false);\n\n const totalX: Atom.Ref<number> = Atom.useRef<number>(0);\n const totalY: Atom.Ref<number> = Atom.useRef<number>(0);\n\n const viewX: Atom.Ref<number> = Atom.useRef<number>(0);\n const viewY: Atom.Ref<number> = Atom.useRef<number>(0);\n\n const viewOffsetX: Atom.Ref<number> = Atom.useRef<number>(0);\n const viewOffsetY: Atom.Ref<number> = Atom.useRef<number>(0);\n\n const [scrollbarLengthX, setScrollbarLengthX] = Atom.useState<number>(0);\n const [scrollbarLengthY, setScrollbarLengthY] = Atom.useState<number>(0);\n\n const [scrollbarOffsetX, setScrollbarOffsetX] = Atom.useState<number>(0);\n const [scrollbarOffsetY, setScrollbarOffsetY] = Atom.useState<number>(0);\n\n Atom.useProvider(ScrollCoreContext, {\n options: {\n disabled,\n page,\n 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 Atom.useEffect((): void => {\n const props: ComponentProps<\"div\"> = getPropsFromAttributes(\n elRef.current.attributes,\n );\n\n const newProps: ComponentProps<\"div\"> = getComponentProps({\n name: \"provider\",\n props,\n plugins: plugins ?? [],\n });\n\n setComponentProps(elRef.current, newProps);\n }, [\n plugins,\n ]);\n\n return (\n <host shadowDom>\n <slot />\n </host>\n );\n}\n\n_Provider.props = {\n disabled: {\n type: Boolean,\n reflect: true,\n attr: \"disabled\",\n },\n page: {\n type: Boolean,\n reflect: true,\n attr: \"page\",\n },\n plugins: {\n type: Array as Atom.Type<Plugin[]>,\n reflect: true,\n attr: \"plugins\",\n },\n} satisfies Schema.SchemaProps;\n\n/** Scrollbar provider type. */\ntype ProviderElement = ComponentTypes<typeof _Provider>;\n\nconst Provider = Atom.c(_Provider);\n\nexport type { ProviderElement };\nexport { Provider };\n"],"mappings":";;;;;;;AAaA,SAAS,UAAUA,OAAqD;CACpE,MAAMC,QAA6C,KAAK,SAAS;CAEjE,MAAM,CAAC,SAAS,GAAG,KAAK,SAAkB,MAAM,YAAY,MAAM;CAClE,MAAM,CAAC,KAAK,GAAG,KAAK,SAAkB,MAAM,QAAQ,MAAM;CAC1D,MAAM,CAAC,QAAQ,GAAG,KAAK,SAAmB,MAAM,WAAW,CAAE,EAAC;CAE9D,MAAM,aAAa,KAAK,QAA4B;CAEpD,MAAM,CAAC,UAAU,YAAY,GAAG,KAAK,SAAkB,MAAM;CAC7D,MAAM,CAAC,UAAU,YAAY,GAAG,KAAK,SAAkB,MAAM;CAC7D,MAAM,CAAC,UAAU,YAAY,GAAG,KAAK,SAAkB,MAAM;CAC7D,MAAM,CAAC,UAAU,YAAY,GAAG,KAAK,SAAkB,MAAM;CAE7D,MAAMC,SAA2B,KAAK,OAAe,EAAE;CACvD,MAAMC,SAA2B,KAAK,OAAe,EAAE;CAEvD,MAAMC,QAA0B,KAAK,OAAe,EAAE;CACtD,MAAMC,QAA0B,KAAK,OAAe,EAAE;CAEtD,MAAMC,cAAgC,KAAK,OAAe,EAAE;CAC5D,MAAMC,cAAgC,KAAK,OAAe,EAAE;CAE5D,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,KAAK,SAAiB,EAAE;CACxE,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,KAAK,SAAiB,EAAE;CAExE,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,KAAK,SAAiB,EAAE;CACxE,MAAM,CAAC,kBAAkB,oBAAoB,GAAG,KAAK,SAAiB,EAAE;AAExE,MAAK,YAAY,mBAAmB;EAChC,SAAS;GACL;GACA;GACA;EACH;EACD;EACA,GAAG;GACC,SAAS;GACT,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,OAAO;GACP,MAAM;GACN,YAAY;GACZ,iBAAiB;GACjB,oBAAoB;GACpB,iBAAiB;GACjB,oBAAoB;EACvB;EACD,GAAG;GACC,SAAS;GACT,YAAY;GACZ,SAAS;GACT,YAAY;GACZ,OAAO;GACP,MAAM;GACN,YAAY;GACZ,iBAAiB;GACjB,oBAAoB;GACpB,iBAAiB;GACjB,oBAAoB;EACvB;CACJ,EAAC;AAEF,MAAK,UAAU,MAAY;EACvB,MAAMC,UAA+B,uBACjC,MAAM,QAAQ,WACjB;EAED,MAAMC,WAAkC,kBAAkB;GACtD,MAAM;GACN;GACA,SAAS,WAAW,CAAE;EACzB,EAAC;AAEF,oBAAkB,MAAM,SAAS,SAAS;CAC7C,GAAE,CACC,OACH,EAAC;AAEF,wBACI,IAAC;EAAK;4BACF,IAAC,WAAO;GACL;AAEd;AAED,UAAU,QAAQ;CACd,UAAU;EACN,MAAM;EACN,SAAS;EACT,MAAM;CACT;CACD,MAAM;EACF,MAAM;EACN,SAAS;EACT,MAAM;CACT;CACD,SAAS;EACL,MAAM;EACN,SAAS;EACT,MAAM;CACT;AACJ;AAKD,MAAM,WAAW,KAAK,EAAE,UAAU"}