12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- import { get, isFunction } from "./basic.mjs";
- import { camelize } from "./format.mjs";
- import locale from "../locale/index.mjs";
- function createTranslate(name) {
- const prefix = camelize(name) + ".";
- return (path, ...args) => {
- const messages = locale.messages();
- const message = get(messages, prefix + path) || get(messages, path);
- return isFunction(message) ? message(...args) : message;
- };
- }
- function genBem(name, mods) {
- if (!mods) {
- return "";
- }
- if (typeof mods === "string") {
- return ` ${name}--${mods}`;
- }
- if (Array.isArray(mods)) {
- return mods.reduce(
- (ret, item) => ret + genBem(name, item),
- ""
- );
- }
- return Object.keys(mods).reduce(
- (ret, key) => ret + (mods[key] ? genBem(name, key) : ""),
- ""
- );
- }
- function createBEM(name) {
- return (el, mods) => {
- if (el && typeof el !== "string") {
- mods = el;
- el = "";
- }
- el = el ? `${name}__${el}` : name;
- return `${el}${genBem(el, mods)}`;
- };
- }
- function createNamespace(name) {
- const prefixedName = `van-${name}`;
- return [
- prefixedName,
- createBEM(prefixedName),
- createTranslate(prefixedName)
- ];
- }
- export {
- createBEM,
- createNamespace,
- createTranslate
- };
|