@wordpress/block-editor
Version:
54 lines (46 loc) • 1.25 kB
JavaScript
/**
* External dependencies
*/
import { find } from 'lodash';
/**
* WordPress dependencies
*/
import TokenList from '@wordpress/token-list';
/**
* Returns the active style from the given className.
*
* @param {Array} styles Block style variations.
* @param {string} className Class name
*
* @return {Object?} The active style.
*/
export function getActiveStyle( styles, className ) {
for ( const style of new TokenList( className ).values() ) {
if ( style.indexOf( 'is-style-' ) === -1 ) {
continue;
}
const potentialStyleName = style.substring( 9 );
const activeStyle = find( styles, { name: potentialStyleName } );
if ( activeStyle ) {
return activeStyle;
}
}
return find( styles, 'isDefault' );
}
/**
* Replaces the active style in the block's className.
*
* @param {string} className Class name.
* @param {Object?} activeStyle The replaced style.
* @param {Object} newStyle The replacing style.
*
* @return {string} The updated className.
*/
export function replaceActiveStyle( className, activeStyle, newStyle ) {
const list = new TokenList( className );
if ( activeStyle ) {
list.remove( 'is-style-' + activeStyle.name );
}
list.add( 'is-style-' + newStyle.name );
return list.value;
}