UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 1.8 kB
{"version":3,"file":"resolve-class-names.cjs","names":[],"sources":["../../../../../../src/core/styles-api/use-styles/get-class-name/resolve-class-names/resolve-class-names.ts"],"sourcesContent":["import cx from 'clsx';\nimport { MantineTheme } from '../../../../MantineProvider';\nimport type { _ClassNames } from '../get-class-name';\n\nexport interface ResolveClassNamesInput {\n theme: MantineTheme;\n classNames: _ClassNames;\n props: Record<string, any>;\n stylesCtx: Record<string, any> | undefined;\n}\n\nconst EMPTY_CLASS_NAMES: Partial<Record<string, string>> = {};\n\nfunction mergeClassNames(objects: Partial<Record<string, string>>[]) {\n const merged: Partial<Record<string, string>> = {};\n\n objects.forEach((obj) => {\n Object.entries(obj).forEach(([key, value]) => {\n if (merged[key]) {\n merged[key] = cx(merged[key], value);\n } else {\n merged[key] = value;\n }\n });\n });\n\n return merged;\n}\n\nexport function resolveClassNames({ theme, classNames, props, stylesCtx }: ResolveClassNamesInput) {\n const arrayClassNames = Array.isArray(classNames) ? classNames : [classNames];\n const resolvedClassNames = arrayClassNames.map((item) =>\n typeof item === 'function' ? item(theme, props, stylesCtx) : item || EMPTY_CLASS_NAMES\n );\n\n return mergeClassNames(resolvedClassNames);\n}\n"],"mappings":";;;;;AAWA,MAAM,oBAAqD,CAAC;AAE5D,SAAS,gBAAgB,SAA4C;CACnE,MAAM,SAA0C,CAAC;CAEjD,QAAQ,SAAS,QAAQ;EACvB,OAAO,QAAQ,GAAG,EAAE,SAAS,CAAC,KAAK,WAAW;GAC5C,IAAI,OAAO,MACT,OAAO,QAAA,GAAA,KAAA,SAAU,OAAO,MAAM,KAAK;QAEnC,OAAO,OAAO;EAElB,CAAC;CACH,CAAC;CAED,OAAO;AACT;AAEA,SAAgB,kBAAkB,EAAE,OAAO,YAAY,OAAO,aAAqC;CAMjG,OAAO,iBALiB,MAAM,QAAQ,UAAU,IAAI,aAAa,CAAC,UAAU,GACjC,KAAK,SAC9C,OAAO,SAAS,aAAa,KAAK,OAAO,OAAO,SAAS,IAAI,QAAQ,iBAG/B,CAAC;AAC3C"}