UNPKG

@scrolia/react

Version:

A headless scrollbar component

1 lines 1.34 kB
{"version":3,"file":"props.mjs","names":["options: GetComponentPropsOptions<P>","result: P"],"sources":["../../src/functions/props.ts"],"sourcesContent":["import type { Plugin } from \"#/@types/options\";\n\n/** The name of the component. */\ntype GetComponentPropsName =\n | \"container\"\n | \"content\"\n | \"trackX\"\n | \"trackY\"\n | \"thumbX\"\n | \"thumbY\";\n\n/** The options for `getComponentProps` function. */\ntype GetComponentPropsOptions<P> = {\n name: GetComponentPropsName;\n props: P;\n plugins: Plugin[];\n};\n\n/** The function to get component props with plugins. */\nconst getComponentProps = <P extends object>(\n options: GetComponentPropsOptions<P>,\n): P => {\n const { name, props, plugins } = options;\n\n let result: P = props;\n\n for (const plugin of plugins) {\n if (!plugin.props?.[name]) continue;\n\n result = {\n ...result,\n ...plugin.props[name](result),\n };\n }\n\n return result;\n};\n\nexport type { GetComponentPropsName, GetComponentPropsOptions };\nexport { getComponentProps };\n"],"mappings":";AAmBA,MAAM,oBAAoB,CACtBA,YACI;CACJ,MAAM,EAAE,MAAM,OAAO,SAAS,GAAG;CAEjC,IAAIC,SAAY;AAEhB,MAAK,MAAM,UAAU,SAAS;AAC1B,OAAK,OAAO,QAAQ,MAAO;AAE3B,WAAS;GACL,GAAG;GACH,GAAG,OAAO,MAAM,MAAM,OAAO;EAChC;CACJ;AAED,QAAO;AACV"}