UNPKG

@scrolia/vanilla

Version:

A headless scrollbar component

1 lines 2.29 kB
{"version":3,"file":"get.mjs","names":["options: GetComponentPropsOptions<P>","result: P","newResult: ComponentProps<\"div\">"],"sources":["../../../src/functions/props/get.ts"],"sourcesContent":["import type { ComponentProps } from \"#/@types/component\";\nimport type { Plugin } from \"#/@types/options\";\n\nimport { mergeClassNames } from \"#/functions/classname\";\nimport { tryPlugin } from \"#/functions/plugin\";\n\n/** Component name. */\ntype GetComponentPropsName =\n | \"provider\"\n | \"container\"\n | \"content\"\n | \"trackX\"\n | \"trackY\"\n | \"thumbX\"\n | \"thumbY\";\n\n/** Options for the `getComponentProps` function. */\ntype GetComponentPropsOptions<P> = {\n name: GetComponentPropsName;\n props: P;\n plugins: Plugin[];\n};\n\n/** Get component props. */\nconst getComponentProps = <P extends object>(\n options: GetComponentPropsOptions<P>,\n): P => {\n const { name, props, plugins } = options;\n\n let result: P = {\n ...props,\n className: (props as any).class ?? (props as any).className,\n };\n\n for (const plugin of plugins) {\n if (!plugin.props?.[name]) continue;\n\n const newResult: ComponentProps<\"div\"> = tryPlugin(\n plugin,\n plugin.props[name],\n result,\n );\n\n result = {\n ...result,\n ...newResult,\n ...(newResult.id\n ? {\n id: mergeClassNames(newResult.id),\n }\n : {}),\n ...(newResult.className\n ? {\n className: mergeClassNames(newResult.className),\n }\n : {}),\n };\n }\n\n return result;\n};\n\nexport type { GetComponentPropsName, GetComponentPropsOptions };\nexport { getComponentProps };\n"],"mappings":";;;;AAwBA,MAAM,oBAAoB,CACtBA,YACI;CACJ,MAAM,EAAE,MAAM,OAAO,SAAS,GAAG;CAEjC,IAAIC,SAAY;EACZ,GAAG;EACH,WAAY,MAAc,SAAU,MAAc;CACrD;AAED,MAAK,MAAM,UAAU,SAAS;AAC1B,OAAK,OAAO,QAAQ,MAAO;EAE3B,MAAMC,YAAmC,UACrC,QACA,OAAO,MAAM,OACb,OACH;AAED,WAAS;GACL,GAAG;GACH,GAAG;GACH,GAAI,UAAU,KACR,EACI,IAAI,gBAAgB,UAAU,GAAG,CACpC,IACD,CAAE;GACR,GAAI,UAAU,YACR,EACI,WAAW,gBAAgB,UAAU,UAAU,CAClD,IACD,CAAE;EACX;CACJ;AAED,QAAO;AACV"}