UNPKG

split-pane-react-test

Version:
54 lines (53 loc) 2.12 kB
/** * Element names may consist of Latin letters, digits, dashes and underscores. * CSS class is formed as block name plus two underscores plus element name: .block__elem * @param block * @param element */ function getBEMElement(block, element) { return `${block}__${element}`; } /** * CSS class is formed as block’s or element’s name plus two dashes: * .block--mod or .block__elem--mod and .block--color-black with .block--color-red. * Spaces in complicated modifiers are replaced by dash. * @param blockOrElement * @param modifier */ function getBEMModifier(blockOrElement, modifier) { return `${blockOrElement}--${modifier}`; } export const splitClassName = 'react-split'; export const splitDragClassName = getBEMModifier(splitClassName, 'dragging'); export const splitVerticalClassName = getBEMModifier(splitClassName, 'vertical'); export const splitHorizontalClassName = getBEMModifier(splitClassName, 'horizontal'); export const paneClassName = getBEMElement(splitClassName, 'pane'); export const sashClassName = getBEMElement(splitClassName, 'sash'); export const sashVerticalClassName = getBEMModifier(sashClassName, 'vertical'); export const sashHorizontalClassName = getBEMModifier(sashClassName, 'horizontal'); export const sashDisabledClassName = getBEMModifier(sashClassName, 'disabled'); export const sashHoverClassName = getBEMModifier(sashClassName, 'hover'); export function classNames(...args) { const classList = []; for (const arg of args) { if (!arg) continue; const argType = typeof arg; if (argType === 'string' || argType === 'number') { classList.push(`${arg}`); continue; } if (argType === 'object') { if (arg.toString !== Object.prototype.toString) { classList.push(arg.toString()); continue; } for (const key in arg) { if (Object.hasOwnProperty.call(arg, key) && arg[key]) { classList.push(key); } } } } return classList.join(' '); }