wpseek.com
A WordPress-centric search engine for devs and theme authors



wp_get_state_style_groups › WordPress Function

Since7.1.0
Deprecatedn/a
wp_get_state_style_groups ( $state_style, $block_selectors )
Parameters: (2)
  • (array) $state_style State style object.
    Required: Yes
  • (array) $block_selectors Block selectors metadata.
    Required: Yes
Returns:
  • (array[]) Selector/style groups.
Defined at:
Codex:

Splits a state style object into groups based on block feature selectors.



Source

function wp_get_state_style_groups( $state_style, $block_selectors ) {
	$groups = array();

	foreach ( $state_style as $feature => $feature_styles ) {
		$feature_selectors = $block_selectors[ $feature ] ?? null;

		if ( is_string( $feature_selectors ) ) {
			wp_add_state_style_group(
				$groups,
				$feature_selectors,
				array( $feature => $feature_styles )
			);
			continue;
		}

		if ( is_array( $feature_selectors ) && is_array( $feature_styles ) ) {
			$remaining_styles = $feature_styles;

			foreach ( $feature_selectors as $subfeature => $subfeature_selector ) {
				if (
					'root' === $subfeature ||
					! is_string( $subfeature_selector ) ||
					! array_key_exists( $subfeature, $feature_styles )
				) {
					continue;
				}

				wp_add_state_style_group(
					$groups,
					$subfeature_selector,
					array(
						$feature => array(
							$subfeature => $feature_styles[ $subfeature ],
						),
					)
				);
				unset( $remaining_styles[ $subfeature ] );
			}

			if ( array() !== $remaining_styles ) {
				wp_add_state_style_group(
					$groups,
					$feature_selectors['root'] ?? ( $block_selectors['root'] ?? null ),
					array( $feature => $remaining_styles )
				);
			}
			continue;
		}

		wp_add_state_style_group(
			$groups,
			$block_selectors['root'] ?? null,
			array( $feature => $feature_styles )
		);
	}

	return array_values( $groups );
}