import type { ModifierItems } from '../models/ModifierItems'; /** * @param modifierItems * @returns generate BEM styled class names with belonging prefix. */ export default function useComponentModifiers() { /** * @param { string } prefix * @returns string[] | { prefix: string, modifiers: string[] } */ function getModifiersClass(prefix: string, modifierItems?: ModifierItems) { if (!modifierItems || typeof modifierItems === 'string') { return prefix; } const modifiers = (modifierItems as any)?.filter( (modifier: any) => modifier.prefix === prefix, )[0]?.modifiers || modifierItems; const modifierClassNames = modifiers ?.filter( (modifier: Record | string) => typeof modifier !== 'object' && modifier != undefined, ) ?.map((modifier: string) => prefix + '--' + modifier) .join(' '); return `${prefix} ${modifierClassNames}`; } return { getModifiersClass }; }