/** * WordPress dependencies */ const TokenList = wp.tokenList; /** * Returns the active style from the given className. * * @param {string} className Class name * @param {string} namespace The replacing class namespace. * * @return {string} The active style. */ export function getActiveClass( className, namespace ) { const list = new TokenList( className ); for ( const activeClass of list.values() ) { if ( activeClass.indexOf( `${ namespace }-` ) === -1 ) { continue; } return activeClass; } return false; } /** * Replaces the active class with namespace in the className. * * @param {string} className Class name. * @param {string} namespace The replacing class namespace. * @param {string} newClass The replacing class. * * @return {string} The updated className. */ export function replaceClass( className, namespace, newClass ) { const list = new TokenList( className ); const namespaceRegExp = new RegExp( `${ namespace }-` ); // remove classes with the same namespace. for ( const activeClass of list.values() ) { if ( namespaceRegExp.test( activeClass ) ) { list.remove( activeClass ); } } // add new class. if ( newClass ) { list.add( `${ namespace }-${ newClass }` ); } return list.value; }