From a415c29efee45520ae252d2aa28f1083a521cd7b Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Wed, 17 Apr 2024 09:56:49 +0200 Subject: Adding upstream version 6.4.3+dfsg1. Signed-off-by: Daniel Baumann --- wp-includes/blocks/index.php | 157 +++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 157 insertions(+) create mode 100644 wp-includes/blocks/index.php (limited to 'wp-includes/blocks/index.php') diff --git a/wp-includes/blocks/index.php b/wp-includes/blocks/index.php new file mode 100644 index 0000000..4096772 --- /dev/null +++ b/wp-includes/blocks/index.php @@ -0,0 +1,157 @@ + 'style', + 'editorStyle' => 'editor', + ); + + static $core_blocks_meta; + if ( ! $core_blocks_meta ) { + $core_blocks_meta = require BLOCKS_PATH . 'blocks-json.php'; + } + + $files = false; + $transient_name = 'wp_core_block_css_files'; + + /* + * Ignore transient cache when the development mode is set to 'core'. Why? To avoid interfering with + * the core developer's workflow. + */ + $can_use_cached = ! wp_is_development_mode( 'core' ); + + if ( $can_use_cached ) { + $cached_files = get_transient( $transient_name ); + + // Check the validity of cached values by checking against the current WordPress version. + if ( + is_array( $cached_files ) + && isset( $cached_files['version'] ) + && $cached_files['version'] === $wp_version + && isset( $cached_files['files'] ) + ) { + $files = $cached_files['files']; + } + } + + if ( ! $files ) { + $files = glob( wp_normalize_path( BLOCKS_PATH . '**/**.css' ) ); + + // Normalize BLOCKS_PATH prior to substitution for Windows environments. + $normalized_blocks_path = wp_normalize_path( BLOCKS_PATH ); + + $files = array_map( + static function ( $file ) use ( $normalized_blocks_path ) { + return str_replace( $normalized_blocks_path, '', $file ); + }, + $files + ); + + // Save core block style paths in cache when not in development mode. + if ( $can_use_cached ) { + set_transient( + $transient_name, + array( + 'version' => $wp_version, + 'files' => $files, + ) + ); + } + } + + $register_style = static function ( $name, $filename, $style_handle ) use ( $blocks_url, $suffix, $wp_styles, $files ) { + $style_path = "{$name}/{$filename}{$suffix}.css"; + $path = wp_normalize_path( BLOCKS_PATH . $style_path ); + + if ( ! in_array( $style_path, $files, true ) ) { + $wp_styles->add( + $style_handle, + false + ); + return; + } + + $wp_styles->add( $style_handle, $blocks_url . $style_path ); + $wp_styles->add_data( $style_handle, 'path', $path ); + + $rtl_file = "{$name}/{$filename}-rtl{$suffix}.css"; + if ( is_rtl() && in_array( $rtl_file, $files, true ) ) { + $wp_styles->add_data( $style_handle, 'rtl', 'replace' ); + $wp_styles->add_data( $style_handle, 'suffix', $suffix ); + $wp_styles->add_data( $style_handle, 'path', str_replace( "{$suffix}.css", "-rtl{$suffix}.css", $path ) ); + } + }; + + foreach ( $core_blocks_meta as $name => $schema ) { + /** This filter is documented in wp-includes/blocks.php */ + $schema = apply_filters( 'block_type_metadata', $schema ); + + // Backfill these properties similar to `register_block_type_from_metadata()`. + if ( ! isset( $schema['style'] ) ) { + $schema['style'] = "wp-block-{$name}"; + } + if ( ! isset( $schema['editorStyle'] ) ) { + $schema['editorStyle'] = "wp-block-{$name}-editor"; + } + + // Register block theme styles. + $register_style( $name, 'theme', "wp-block-{$name}-theme" ); + + foreach ( $style_fields as $style_field => $filename ) { + $style_handle = $schema[ $style_field ]; + if ( is_array( $style_handle ) ) { + continue; + } + $register_style( $name, $filename, $style_handle ); + } + } +} +add_action( 'init', 'register_core_block_style_handles', 9 ); + +/** + * Registers core block types using metadata files. + * Dynamic core blocks are registered separately. + * + * @since 5.5.0 + */ +function register_core_block_types_from_metadata() { + $block_folders = require BLOCKS_PATH . 'require-static-blocks.php'; + foreach ( $block_folders as $block_folder ) { + register_block_type_from_metadata( + BLOCKS_PATH . $block_folder + ); + } +} +add_action( 'init', 'register_core_block_types_from_metadata' ); -- cgit v1.2.3