{"version":3,"file":"class.cjs","sources":["../src/class.ts"],"sourcesContent":["import { default as easyBem } from 'easy-bem';\nimport { BemBlocks, BemSchema } from './types';\n\ntype KeysOfSet<T> = T extends Set<infer U> ? U : never;\n\nfunction generateBemClassNames<B extends BemBlocks<BemSchema>>() {\n\tconst bemBlocks = new Map<string, ReturnType<typeof easyBem>>();\n\n\treturn <BlockName extends keyof B, ElementName extends keyof NonNullable<B[BlockName]['elements']>>(\n\t\tblockName: BlockName,\n\n\t\t// Block-Modifier oder Element-Name\n\t\tblockModifiersOrElementName?:\n\t\t\t| (KeysOfSet<B[BlockName]['modifiers']> extends never ? undefined : Partial<Record<KeysOfSet<B[BlockName]['modifiers']>, boolean>>)\n\t\t\t| ElementName,\n\n\t\t// Element-Modifier, wenn ein Element angegeben wurde\n\t\telementModifiers?: KeysOfSet<NonNullable<B[BlockName]['elements']>[ElementName]['modifiers']> extends never\n\t\t\t? undefined\n\t\t\t: Partial<Record<KeysOfSet<NonNullable<B[BlockName]['elements']>[ElementName]['modifiers']>, boolean>>,\n\t) => {\n\t\ttry {\n\t\t\treturn bemBlocks.get(blockName as string)!(blockModifiersOrElementName as string, elementModifiers);\n\t\t} catch {\n\t\t\treturn bemBlocks.set(blockName as string, easyBem(blockName as string)).get(blockName as string)!(\n\t\t\t\tblockModifiersOrElementName as string,\n\t\t\t\telementModifiers,\n\t\t\t);\n\t\t}\n\t};\n}\n\nexport { generateBemClassNames };\n"],"names":["generateBemClassNames","bemBlocks","blockName","blockModifiersOrElementName","elementModifiers","easyBem"],"mappings":"6KAKA,SAASA,GAAwD,CAChE,MAAMC,EAAY,IAAI,IAEtB,MAAO,CACNC,EAGAC,EAKAC,IAGI,CACJ,GAAI,CACH,OAAOH,EAAU,IAAIC,CAAmB,EAAGC,EAAuCC,CAAgB,CACnG,MAAQ,CACP,OAAOH,EAAU,IAAIC,EAAqBG,WAAQH,CAAmB,CAAC,EAAE,IAAIA,CAAmB,EAC9FC,EACAC,CACD,CACD,CACD,CACD"}