UNPKG

@mantine/core

Version:

React components library focused on usability, accessibility and developer experience

1 lines 1.78 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,EAAE;AAE7D,SAAS,gBAAgB,SAA4C;CACnE,MAAM,SAA0C,EAAE;AAElD,SAAQ,SAAS,QAAQ;AACvB,SAAO,QAAQ,IAAI,CAAC,SAAS,CAAC,KAAK,WAAW;AAC5C,OAAI,OAAO,KACT,QAAO,QAAA,GAAA,KAAA,SAAU,OAAO,MAAM,MAAM;OAEpC,QAAO,OAAO;IAEhB;GACF;AAEF,QAAO;;AAGT,SAAgB,kBAAkB,EAAE,OAAO,YAAY,OAAO,aAAqC;AAMjG,QAAO,iBALiB,MAAM,QAAQ,WAAW,GAAG,aAAa,CAAC,WAAW,EAClC,KAAK,SAC9C,OAAO,SAAS,aAAa,KAAK,OAAO,OAAO,UAAU,GAAG,QAAQ,kBACtE,CAEyC"}