{"version":3,"file":"create.mjs","sources":["../../../../../packages/utils/create.ts"],"sourcesContent":["import { camelCase, get, upperFirst } from 'lodash-unified'\nimport locale from '@xzx-design/locale'\nimport { camelize, isFunction } from '.'\n\nexport function createTranslate(name: string) {\n  const prefix = `${camelize(name)}.`\n  return (path: string, ...args: unknown[]) => {\n    const messages = locale.messages()\n    const message = get(messages, prefix + path) || get(messages, path)\n\n    return isFunction(message) ? message(...args) : message\n  }\n}\n\nexport type Translate = ReturnType<typeof createTranslate>\n\nexport type Mod = string | { [key: string]: any }\nexport type Mods = Mod | Mod[]\n\nfunction genBem(name: string, mods?: Mods): string {\n  if (!mods) {\n    return ''\n  }\n\n  if (typeof mods === 'string') {\n    return ` ${name}--${mods}`\n  }\n\n  if (Array.isArray(mods)) {\n    return (mods as Mod[]).reduce<string>(\n      (ret, item) => ret + genBem(name, item),\n      ''\n    )\n  }\n\n  return Object.keys(mods).reduce(\n    (ret, key) => ret + (mods[key] ? genBem(name, key) : ''),\n    ''\n  )\n}\n\n/**\n * bem helper\n * b() // 'button'\n * b('text') // 'button__text'\n * b({ disabled }) // 'button button--disabled'\n * b('text', { disabled }) // 'button__text button__text--disabled'\n * b(['disabled', 'primary']) // 'button button--disabled button--primary'\n */\nexport function createBEM(name: string) {\n  return (el?: Mods, mods?: Mods): Mods => {\n    if (el && typeof el !== 'string') {\n      mods = el\n      el = ''\n    }\n\n    el = el ? `${name}__${el}` : name\n\n    return `${el}${genBem(el, mods)}`\n  }\n}\n\nexport type BEM = ReturnType<typeof createBEM>\n\nexport function createNamespace(name: string) {\n  const prefixedName = `xzx-${name}`\n  const upperCamelName = upperFirst(camelCase(prefixedName))\n  return [\n    upperCamelName,\n    createBEM(prefixedName),\n    createTranslate(prefixedName),\n  ] as const\n}\n"],"names":["locale"],"mappings":";;;;;AAIO,SAAS,gBAAgB,IAAc,EAAA;AAC5C,EAAM,MAAA,MAAA,GAAS,CAAG,EAAA,QAAA,CAAS,IAAI,CAAA,CAAA,CAAA,CAAA,CAAA;AAC/B,EAAO,OAAA,CAAC,SAAiB,IAAoB,KAAA;AAC3C,IAAM,MAAA,QAAA,GAAWA,OAAO,QAAS,EAAA,CAAA;AACjC,IAAM,MAAA,OAAA,GAAU,IAAI,QAAU,EAAA,MAAA,GAAS,IAAI,CAAK,IAAA,GAAA,CAAI,UAAU,IAAI,CAAA,CAAA;AAElE,IAAA,OAAO,WAAW,OAAO,CAAA,GAAI,OAAQ,CAAA,GAAG,IAAI,CAAI,GAAA,OAAA,CAAA;AAAA,GAClD,CAAA;AACF,CAAA;AAOA,SAAS,MAAA,CAAO,MAAc,IAAqB,EAAA;AACjD,EAAA,IAAI,CAAC,IAAM,EAAA;AACT,IAAO,OAAA,EAAA,CAAA;AAAA,GACT;AAEA,EAAI,IAAA,OAAO,SAAS,QAAU,EAAA;AAC5B,IAAA,OAAO,IAAI,IAAS,CAAA,EAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AAAA,GACtB;AAEA,EAAI,IAAA,KAAA,CAAM,OAAQ,CAAA,IAAI,CAAG,EAAA;AACvB,IAAA,OAAQ,IAAe,CAAA,MAAA;AAAA,MACrB,CAAC,GAAK,EAAA,IAAA,KAAS,GAAM,GAAA,MAAA,CAAO,MAAM,IAAI,CAAA;AAAA,MACtC,EAAA;AAAA,KACF,CAAA;AAAA,GACF;AAEA,EAAO,OAAA,MAAA,CAAO,IAAK,CAAA,IAAI,CAAE,CAAA,MAAA;AAAA,IACvB,CAAC,KAAK,GAAQ,KAAA,GAAA,IAAO,KAAK,GAAO,CAAA,GAAA,MAAA,CAAO,IAAM,EAAA,GAAG,CAAI,GAAA,EAAA,CAAA;AAAA,IACrD,EAAA;AAAA,GACF,CAAA;AACF,CAAA;AAUO,SAAS,UAAU,IAAc,EAAA;AACtC,EAAO,OAAA,CAAC,IAAW,IAAsB,KAAA;AACvC,IAAI,IAAA,EAAA,IAAM,OAAO,EAAA,KAAO,QAAU,EAAA;AAChC,MAAO,IAAA,GAAA,EAAA,CAAA;AACP,MAAK,EAAA,GAAA,EAAA,CAAA;AAAA,KACP;AAEA,IAAK,EAAA,GAAA,EAAA,GAAK,CAAG,EAAA,IAAA,CAAA,EAAA,EAAS,EAAO,CAAA,CAAA,GAAA,IAAA,CAAA;AAE7B,IAAA,OAAO,CAAG,EAAA,EAAA,CAAA,EAAK,MAAO,CAAA,EAAA,EAAI,IAAI,CAAA,CAAA,CAAA,CAAA;AAAA,GAChC,CAAA;AACF,CAAA;AAIO,SAAS,gBAAgB,IAAc,EAAA;AAC5C,EAAA,MAAM,eAAe,CAAO,IAAA,EAAA,IAAA,CAAA,CAAA,CAAA;AAC5B,EAAA,MAAM,cAAiB,GAAA,UAAA,CAAW,SAAU,CAAA,YAAY,CAAC,CAAA,CAAA;AACzD,EAAO,OAAA;AAAA,IACL,cAAA;AAAA,IACA,UAAU,YAAY,CAAA;AAAA,IACtB,gBAAgB,YAAY,CAAA;AAAA,GAC9B,CAAA;AACF;;;;"}