diff --git a/package.json b/package.json index c63fbf42..81c5d218 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "bem-react-core", - "version": "1.0.0", + "version": "1.1.0", "description": "BEM React Core", "repository": { "url": "git://github.com/bem/bem-react-core.git", diff --git a/src/Bem.js b/src/Bem.js index 07eb5303..362ba366 100644 --- a/src/Bem.js +++ b/src/Bem.js @@ -13,7 +13,7 @@ const bemModes = { cls : 1 }; -export default function({ preset, naming }) { +export default function({ preset, naming, beforeStringify }) { const { Base, classAttribute, Render, typeField, attrsField } = preset, getRenderProps = function(instance, props) { const mergedProps = { @@ -120,8 +120,15 @@ export default function({ preset, naming }) { cls && entities.push(cls.toString()); - return entities.map(entity => typeof entity === 'string'? - entity : entityClassName(entity)).join(' '); + return entities.map((entity) => { + if(typeof entity === 'string') + return entity; + + if(typeof beforeStringify === 'function') + return beforeStringify(entityClassName(entity)); + + return entityClassName(entity); + }).join(' '); } }; }; diff --git a/src/presets/React.d.ts b/src/presets/React.d.ts index 2638d163..9ce7fc28 100644 --- a/src/presets/React.d.ts +++ b/src/presets/React.d.ts @@ -21,7 +21,7 @@ export interface JsonMix { elemMods?: Mods; } -export type Mix = JsonMix | JsonMix[] | string | JSX.Element | JSX.Element[]; +export type Mix = JsonMix | JsonMix[] | JSX.Element | JSX.Element[]; export type Replaceble = null | number | string | JSX.Element; export declare interface Block {