{"version":3,"file":"index.mjs","sources":["../src/hooks/useBem/useBem.ts"],"sourcesContent":["export function useBem(base: string) {\n    // ToDo Will return scrambled classname\n    const bem = (\n        name?: string | Record<string, boolean>,\n        ...names: Array<string | Record<string, boolean>>\n    ) => {\n        const classnames: string[] = [];\n\n        const addClass = (classname: string) => {\n            if (classname && !classnames.includes(classname)) {\n                classnames.push(classname);\n            }\n        };\n\n        const handleObject = (\n            obj: Record<string, boolean>,\n            prefixBase = true\n        ) => {\n            for (const [key, value] of Object.entries(obj)) {\n                if (value) {\n                    if (key === base) {\n                        addClass(base);\n                    } else {\n                        addClass(prefixBase ? `${base}__${key}` : key);\n                    }\n                }\n            }\n        };\n\n        if (name === base || name === undefined) {\n            addClass(base);\n        } else {\n            if (typeof name === 'string' && name !== '') {\n                addClass(`${base}__${name}`);\n            }\n\n            if (typeof name === 'object') {\n                handleObject(name);\n            }\n        }\n\n        for (const classname of names) {\n            if (classname === base) {\n                addClass(base);\n            } else {\n                if (typeof classname === 'string' && classname !== '') {\n                    addClass(classname);\n                }\n\n                if (typeof classname === 'object') {\n                    handleObject(classname, false);\n                }\n\n                addClass(base);\n            }\n        }\n\n        return classnames.join(' ');\n    };\n\n    // ToDo Looks unnecesery, but later will return unscrambled className\n    const element = (element?: string | Record<string, boolean>) => {\n        if (typeof element === 'string' && element !== '') {\n            return `${base}__${element}`;\n        }\n\n        if (typeof element === 'object') {\n            return Object.entries(element)\n                .filter(([, value]) => value)\n                .map(([key]) => `${base}__${key}`)\n                .join(' ');\n        }\n\n        return base;\n    };\n\n    const modifier = (modifier: string | Record<string, boolean>) => {\n        if (typeof modifier === 'string' && modifier !== '') {\n            return `${base}--${modifier}`;\n        }\n\n        if (typeof modifier === 'object') {\n            return Object.entries(modifier)\n                .filter(([, value]) => value)\n                .map(([key]) => `${base}--${key}`)\n                .join(' ');\n        }\n\n        return '';\n    };\n\n    return {\n        bem,\n        element,\n        modifier,\n        base,\n    };\n}\n"],"names":["useBem","base","bem","name","names","_i","arguments","length","classnames","addClass","classname","includes","push","handleObject","obj","prefixBase","_a","Object","entries","_b","key","concat","undefined","names_1","join","element","filter","map","modifier"],"mappings":"AAAM,SAAUA,EAAOC,GA2FnB,MAAO,CACHC,IA1FQ,SACRC,OACA,IAAAC,EAAA,GAAAC,EAAA,EAAAA,EAAAC,UAAAC,OAAAF,IAAAD,EAAAC,EAAA,GAAAC,UAAAD,GAEA,IAAMG,EAAuB,GAEvBC,EAAW,SAACC,GACVA,IAAcF,EAAWG,SAASD,IAClCF,EAAWI,KAAKF,EAExB,EAEMG,EAAe,SACjBC,EACAC,QAAA,IAAAA,IAAAA,GAAA,GAEA,IAA2B,IAAAV,EAAA,EAAAW,EAAAC,OAAOC,QAAQJ,GAAfT,EAAAW,EAAAT,OAAAF,IAAqB,CAArC,IAAAc,OAACC,EAAGD,EAAA,GAAOA,EAAA,IAGVV,EADAW,IAAQnB,EACCA,EAEAc,EAAa,GAAAM,OAAGpB,EAAI,MAAAoB,OAAKD,GAAQA,EAGtD,CACJ,EAEIjB,IAASF,QAAiBqB,IAATnB,EACjBM,EAASR,IAEW,iBAATE,GAA8B,KAATA,GAC5BM,EAAS,GAAAY,OAAGpB,eAASE,IAGL,iBAATA,GACPU,EAAaV,IAIrB,IAAwB,IAAAa,EAAA,EAAAO,EAAAnB,EAAAY,WAAAA,IAAO,CAA1B,IAAMN,EAASa,EAAAP,GACZN,IAAcT,IAGW,iBAAdS,GAAwC,KAAdA,GACjCD,EAASC,GAGY,iBAAdA,GACPG,EAAaH,GAAW,IAP5BD,EAASR,EAYjB,CAEA,OAAOO,EAAWgB,KAAK,IAC3B,EAmCIC,QAhCY,SAACA,GACb,MAAuB,iBAAZA,GAAoC,KAAZA,EACxB,GAAAJ,OAAGpB,EAAI,MAAAoB,OAAKI,GAGA,iBAAZA,EACAR,OAAOC,QAAQO,GACjBC,OAAO,SAACV,GAAc,OAANA,EAAA,EAAM,GACtBW,IAAI,SAACX,GAAC,IAAAI,EAAGJ,EAAA,GAAM,MAAA,GAAAK,OAAGpB,EAAI,MAAAoB,OAAKD,EAAZ,GACfI,KAAK,KAGPvB,CACX,EAoBI2B,SAlBa,SAACA,GACd,MAAwB,iBAAbA,GAAsC,KAAbA,EACzB,GAAAP,OAAGpB,EAAI,MAAAoB,OAAKO,GAGC,iBAAbA,EACAX,OAAOC,QAAQU,GACjBF,OAAO,SAACV,GAAc,OAANA,EAAA,EAAM,GACtBW,IAAI,SAACX,GAAC,IAAAI,EAAGJ,EAAA,GAAM,MAAA,GAAAK,OAAGpB,EAAI,MAAAoB,OAAKD,EAAZ,GACfI,KAAK,KAGP,EACX,EAMIvB,KAAIA,EAEZ"}