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



block_core_gallery_get_responsive_flex_style_rules › WordPress Function

Since7.1.0
Deprecatedn/a
block_core_gallery_get_responsive_flex_style_rules ( $selector, $viewport_style, $media_query )
Parameters: (3)
  • (string) $selector Gallery block selector.
    Required: Yes
  • (mixed) $viewport_style Viewport style data.
    Required: Yes
  • (string) $media_query Viewport media query.
    Required: Yes
Returns:
  • (array[]) Gallery responsive Flex rules.
Defined at:
Codex:

Returns Gallery-specific responsive Flex rules for a viewport.



Source

function block_core_gallery_get_responsive_flex_style_rules( $selector, $viewport_style, $media_query ) {
	if ( ! is_array( $viewport_style ) || ! is_string( $media_query ) ) {
		return array();
	}

	$rules            = array();
	$gallery_selector = "{$selector}.wp-block-gallery.has-nested-images:where(.is-layout-flex)";
	$image_selector   = "{$gallery_selector} figure.wp-block-image:not(#individual-image)";
	$columns          = $viewport_style['columns'] ?? null;

	if ( is_int( $columns ) && $columns >= 1 && $columns <= 8 ) {
		$width   = 1 === $columns
			? '100%'
			: sprintf(
				'calc((100%% - (var(--wp--style--unstable-gallery-gap, 16px) * %1$d)) / %2$d)',
				$columns - 1,
				$columns
			);
		$rules[] = array(
			'selector'     => $image_selector,
			'declarations' => array( 'width' => "{$width} !important" ),
			'rules_group'  => $media_query,
		);
	}

	$image_crop = $viewport_style['imageCrop'] ?? null;
	if ( ! is_bool( $image_crop ) ) {
		return $rules;
	}

	$rules[] = array(
		'selector'     => $image_selector,
		'declarations' => $image_crop
			? array(
				'align-self'    => 'inherit !important',
				'margin-bottom' => '0 !important',
			)
			: array(
				'align-self'    => 'auto !important',
				'margin-top'    => '0 !important',
				'margin-bottom' => 'auto !important',
			),
		'rules_group'  => $media_query,
	);
	$rules[] = array(
		'selector'     => "{$image_selector} > div:not(.components-drop-zone)",
		'declarations' => array( 'display' => $image_crop ? 'flex !important' : 'block !important' ),
		'rules_group'  => $media_query,
	);
	$rules[] = array(
		'selector'     => "{$image_selector} > a",
		'declarations' => array( 'display' => $image_crop ? 'flex !important' : 'inline-block !important' ),
		'rules_group'  => $media_query,
	);
	$rules[] = array(
		'selector'     => "{$image_selector} a,{$image_selector} img",
		'declarations' => $image_crop
			? array(
				'width'      => '100% !important',
				'flex'       => '1 0 0% !important',
				'height'     => '100% !important',
				'object-fit' => 'cover !important',
			)
			: array(
				'width'      => 'auto !important',
				'flex'       => '0 1 auto !important',
				'height'     => 'auto !important',
				'object-fit' => 'fill !important',
			),
		'rules_group'  => $media_query,
	);

	return $rules;
}