UNPKG

visual-design

Version:
1 lines 6.68 kB
{"version":3,"file":"index.mjs","sources":["../../../../../packages/hooks/use-namespace/index.ts"],"sourcesContent":["import { computed, unref } from 'vue'\n// 命名前缀\nexport const defaultNamespace = 'vi'\nconst statePrefix = 'is-'\n// BEM 命名字符拼接函数\nconst _bem = (\n namespace: string,\n block: string,\n blockSuffix: string,\n element: string,\n modifier: string\n) => {\n // 默认是 Block\n let cls = `${namespace}-${block}`\n // 如果存在 Block 前缀,也就是 Block 里面还有 Block,例如:el-form 下面还有一个 el-form-item\n if (blockSuffix) {\n cls += `-${blockSuffix}`\n }\n // 如果存在元素\n if (element) {\n cls += `__${element}`\n }\n // 如果存在修改器\n if (modifier) {\n cls += `--${modifier}`\n }\n return cls\n}\n\nexport const useNamespace = (block: string) => {\n // 命名前缀也就是命名空间\n const namespace = computed(() => defaultNamespace)\n // 创建块 例如:el-form\n const b = (blockSuffix = '') =>\n _bem(unref(namespace), block, blockSuffix, '', '')\n // 创建元素 例如:el-input__inner\n const e = (element?: string) =>\n element ? _bem(unref(namespace), block, '', element, '') : ''\n // 创建块修改器 例如:el-form--default\n const m = (modifier?: string) =>\n modifier ? _bem(unref(namespace), block, '', '', modifier) : ''\n // 创建前缀块元素 例如:el-form-item\n const be = (blockSuffix?: string, element?: string) =>\n blockSuffix && element\n ? _bem(unref(namespace), block, blockSuffix, element, '')\n : ''\n // 创建元素修改器 例如:el-scrollbar__wrap--hidden-default\n const em = (element?: string, modifier?: string) =>\n element && modifier\n ? _bem(unref(namespace), block, '', element, modifier)\n : ''\n // 创建块前缀修改器 例如:el-form-item--default\n const bm = (blockSuffix?: string, modifier?: string) =>\n blockSuffix && modifier\n ? _bem(unref(namespace), block, blockSuffix, '', modifier)\n : ''\n // 创建块元素修改器 例如:el-form-item__content--xxx\n const bem = (blockSuffix?: string, element?: string, modifier?: string) =>\n blockSuffix && element && modifier\n ? _bem(unref(namespace), block, blockSuffix, element, modifier)\n : ''\n // 动作状态 例如:is-success is-required\n const is: {\n (name: string, state: boolean | undefined): string\n (name: string): string\n } = (name: string, ...args: [boolean | undefined] | []) => {\n const state = args.length >= 1 ? args[0]! : true\n return name && state ? `${statePrefix}${name}` : ''\n }\n\n // for css var\n // --el-xxx: value;\n const cssVar = (object: Record<string, string>) => {\n const styles: Record<string, string> = {}\n for (const key in object) {\n if (object[key]) {\n styles[`--${namespace.value}-${key}`] = object[key]\n }\n }\n return styles\n }\n // with block\n const cssVarBlock = (object: Record<string, string>) => {\n const styles: Record<string, string> = {}\n for (const key in object) {\n if (object[key]) {\n styles[`--${namespace.value}-${block}-${key}`] = object[key]\n }\n }\n return styles\n }\n\n const cssVarName = (name: string) => `--${namespace.value}-${name}`\n const cssVarBlockName = (name: string) =>\n `--${namespace.value}-${block}-${name}`\n\n return {\n namespace,\n b,\n e,\n m,\n be,\n em,\n bm,\n bem,\n is,\n // css\n cssVar,\n cssVarName,\n cssVarBlock,\n cssVarBlockName,\n }\n}\n\nexport type UseNamespaceReturn = ReturnType<typeof useNamespace>\n"],"names":[],"mappings":";;AAEO,MAAM,gBAAmB,GAAA,KAAA;AAChC,MAAM,WAAc,GAAA,KAAA,CAAA;AAEpB,MAAM,OAAO,CACX,SAAA,EACA,KACA,EAAA,WAAA,EACA,SACA,QACG,KAAA;AAEH,EAAA,IAAI,GAAM,GAAA,CAAA,EAAG,SAAS,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,CAAA;AAE/B,EAAA,IAAI,WAAa,EAAA;AACf,IAAA,GAAA,IAAO,IAAI,WAAW,CAAA,CAAA,CAAA;AAAA,GACxB;AAEA,EAAA,IAAI,OAAS,EAAA;AACX,IAAA,GAAA,IAAO,KAAK,OAAO,CAAA,CAAA,CAAA;AAAA,GACrB;AAEA,EAAA,IAAI,QAAU,EAAA;AACZ,IAAA,GAAA,IAAO,KAAK,QAAQ,CAAA,CAAA,CAAA;AAAA,GACtB;AACA,EAAO,OAAA,GAAA,CAAA;AACT,CAAA,CAAA;AAEa,MAAA,YAAA,GAAe,CAAC,KAAkB,KAAA;AAE7C,EAAM,MAAA,SAAA,GAAY,QAAS,CAAA,MAAM,gBAAgB,CAAA,CAAA;AAEjD,EAAM,MAAA,CAAA,GAAI,CAAC,WAAA,GAAc,EACvB,KAAA,IAAA,CAAK,KAAM,CAAA,SAAS,CAAG,EAAA,KAAA,EAAO,WAAa,EAAA,EAAA,EAAI,EAAE,CAAA,CAAA;AAEnD,EAAA,MAAM,CAAI,GAAA,CAAC,OACT,KAAA,OAAA,GAAU,IAAK,CAAA,KAAA,CAAM,SAAS,CAAA,EAAG,KAAO,EAAA,EAAA,EAAI,OAAS,EAAA,EAAE,CAAI,GAAA,EAAA,CAAA;AAE7D,EAAA,MAAM,CAAI,GAAA,CAAC,QACT,KAAA,QAAA,GAAW,IAAK,CAAA,KAAA,CAAM,SAAS,CAAA,EAAG,KAAO,EAAA,EAAA,EAAI,EAAI,EAAA,QAAQ,CAAI,GAAA,EAAA,CAAA;AAE/D,EAAA,MAAM,EAAK,GAAA,CAAC,WAAsB,EAAA,OAAA,KAChC,eAAe,OACX,GAAA,IAAA,CAAK,KAAM,CAAA,SAAS,CAAG,EAAA,KAAA,EAAO,WAAa,EAAA,OAAA,EAAS,EAAE,CACtD,GAAA,EAAA,CAAA;AAEN,EAAA,MAAM,EAAK,GAAA,CAAC,OAAkB,EAAA,QAAA,KAC5B,WAAW,QACP,GAAA,IAAA,CAAK,KAAM,CAAA,SAAS,CAAG,EAAA,KAAA,EAAO,EAAI,EAAA,OAAA,EAAS,QAAQ,CACnD,GAAA,EAAA,CAAA;AAEN,EAAA,MAAM,EAAK,GAAA,CAAC,WAAsB,EAAA,QAAA,KAChC,eAAe,QACX,GAAA,IAAA,CAAK,KAAM,CAAA,SAAS,CAAG,EAAA,KAAA,EAAO,WAAa,EAAA,EAAA,EAAI,QAAQ,CACvD,GAAA,EAAA,CAAA;AAEN,EAAA,MAAM,MAAM,CAAC,WAAA,EAAsB,OAAkB,EAAA,QAAA,KACnD,eAAe,OAAW,IAAA,QAAA,GACtB,IAAK,CAAA,KAAA,CAAM,SAAS,CAAG,EAAA,KAAA,EAAO,WAAa,EAAA,OAAA,EAAS,QAAQ,CAC5D,GAAA,EAAA,CAAA;AAEN,EAAM,MAAA,EAAA,GAGF,CAAC,IAAA,EAAA,GAAiB,IAAqC,KAAA;AACzD,IAAA,MAAM,QAAQ,IAAK,CAAA,MAAA,IAAU,CAAI,GAAA,IAAA,CAAK,CAAC,CAAK,GAAA,IAAA,CAAA;AAC5C,IAAA,OAAO,QAAQ,KAAQ,GAAA,CAAA,EAAG,WAAW,CAAA,EAAG,IAAI,CAAK,CAAA,GAAA,EAAA,CAAA;AAAA,GACnD,CAAA;AAIA,EAAM,MAAA,MAAA,GAAS,CAAC,MAAmC,KAAA;AACjD,IAAA,MAAM,SAAiC,EAAC,CAAA;AACxC,IAAA,KAAA,MAAW,OAAO,MAAQ,EAAA;AACxB,MAAI,IAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AACf,QAAO,MAAA,CAAA,CAAA,EAAA,EAAK,UAAU,KAAK,CAAA,CAAA,EAAI,GAAG,CAAE,CAAA,CAAA,GAAI,OAAO,GAAG,CAAA,CAAA;AAAA,OACpD;AAAA,KACF;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAM,MAAA,WAAA,GAAc,CAAC,MAAmC,KAAA;AACtD,IAAA,MAAM,SAAiC,EAAC,CAAA;AACxC,IAAA,KAAA,MAAW,OAAO,MAAQ,EAAA;AACxB,MAAI,IAAA,MAAA,CAAO,GAAG,CAAG,EAAA;AACf,QAAO,MAAA,CAAA,CAAA,EAAA,EAAK,SAAU,CAAA,KAAK,CAAI,CAAA,EAAA,KAAK,IAAI,GAAG,CAAA,CAAE,CAAI,GAAA,MAAA,CAAO,GAAG,CAAA,CAAA;AAAA,OAC7D;AAAA,KACF;AACA,IAAO,OAAA,MAAA,CAAA;AAAA,GACT,CAAA;AAEA,EAAA,MAAM,aAAa,CAAC,IAAA,KAAiB,KAAK,SAAU,CAAA,KAAK,IAAI,IAAI,CAAA,CAAA,CAAA;AACjE,EAAM,MAAA,eAAA,GAAkB,CAAC,IACvB,KAAA,CAAA,EAAA,EAAK,UAAU,KAAK,CAAA,CAAA,EAAI,KAAK,CAAA,CAAA,EAAI,IAAI,CAAA,CAAA,CAAA;AAEvC,EAAO,OAAA;AAAA,IACL,SAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,CAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,EAAA;AAAA,IACA,GAAA;AAAA,IACA,EAAA;AAAA;AAAA,IAEA,MAAA;AAAA,IACA,UAAA;AAAA,IACA,WAAA;AAAA,IACA,eAAA;AAAA,GACF,CAAA;AACF;;;;"}