Our minions are coding away as we speak

Sorry, we're doing some work on the site

function register_block_style_handle( $metadata, $field_name, $index = 0 ) {

if ( empty( $metadata[ $field_name ] ) ) {

return false;

}


$style_handle = $metadata[ $field_name ];

if ( is_array( $style_handle ) ) {

if ( empty( $style_handle[ $index ] ) ) {

return false;

}

$style_handle = $style_handle[ $index ];

}


$style_handle_name = generate_block_asset_handle( $metadata['name'], $field_name, $index );

// If the style handle is already registered, skip re-registering.

if ( wp_style_is( $style_handle_name, 'registered' ) ) {

return $style_handle_name;

}


static $wpinc_path_norm = '';

if ( ! $wpinc_path_norm ) {

$wpinc_path_norm = wp_normalize_path( realpath( ABSPATH . WPINC ) );

}


$is_core_block = isset( $metadata['file'] ) && str_starts_with( $metadata['file'], $wpinc_path_norm );

// Skip registering individual styles for each core block when a bundled version provided.

if ( $is_core_block && ! wp_should_load_separate_core_block_assets() ) {

return false;

}


$style_path      = remove_block_asset_path_prefix( $style_handle );

$is_style_handle = $style_handle === $style_path;

// Allow only passing style handles for core blocks.

if ( $is_core_block && ! $is_style_handle ) {

return false;

}

// Return the style handle unless it's the first item for every core block that requires special treatment.

if ( $is_style_handle && ! ( $is_core_block && 0 === $index ) ) {

return $style_handle;

}


// Check whether styles should have a ".min" suffix or not.

$suffix = SCRIPT_DEBUG ? '' : '.min';

if ( $is_core_block ) {

$style_path = ( 'editorStyle' === $field_name ) ? "editor{$suffix}.css" : "style{$suffix}.css";

}


$style_path_norm = wp_normalize_path( realpath( dirname( $metadata['file'] ) . '/' . $style_path ) );

$style_uri       = get_block_asset_url( $style_path_norm );


$version = ! $is_core_block && isset( $metadata['version'] ) ? $metadata['version'] : false;

$result  = wp_register_style(

$style_handle_name,

$style_uri,

array(),

$version

);

if ( ! $result ) {

return false;

}


if ( $style_uri ) {

wp_style_add_data( $style_handle_name, 'path', $style_path_norm );


if ( $is_core_block ) {

$rtl_file = str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $style_path_norm );

} else {

$rtl_file = str_replace( '.css', '-rtl.css', $style_path_norm );

}


if ( is_rtl() && file_exists( $rtl_file ) ) {

wp_style_add_data( $style_handle_name, 'rtl', 'replace' );

wp_style_add_data( $style_handle_name, 'suffix', $suffix );

wp_style_add_data( $style_handle_name, 'path', $rtl_file );

}

}


return $style_handle_name;

}