UNPKG

@wordpress/block-editor

Version:
54 lines (46 loc) 1.25 kB
/** * 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; }