| @@ -86,17 +86,26 @@ | ||
| 86 | 86 | } |
| 87 | 87 | add_filter( 'load_script_translation_file', 'gutenberg_override_translation_file', 10, 2 ); |
| 88 | 88 | |
| 89 | 89 | /** |
| 90 | - * Adds the 'editor' dependency to wp-block-library, required by the Classic block. | |
| 90 | + * Handle special case dependencies for wp-block-library that depend on runtime conditions. | |
| 91 | 91 | * |
| 92 | + * This adds the 'editor' dependency conditionally based on experiments and classic block requirements. | |
| 93 | + * All other script registrations are handled by the auto-generated build/scripts.php file. | |
| 94 | + * | |
| 92 | 95 | * @param WP_Scripts $scripts WP_Scripts instance. |
| 93 | 96 | */ |
| 94 | 97 | function gutenberg_register_block_library_script_special_case( $scripts ) { |
| 95 | 98 | $handle = 'wp-block-library'; |
| 96 | 99 | $script = $scripts->query( $handle, 'registered' ); |
| 97 | - if ( ! in_array( 'editor', $script->deps, true ) ) { | |
| 98 | - $script->deps[] = 'editor'; | |
| 100 | + if ( | |
| 101 | + ! gutenberg_is_experiment_enabled( 'gutenberg-no-tinymce' ) || | |
| 102 | + ! empty( $_GET['requiresTinymce'] ) || | |
| 103 | + gutenberg_post_being_edited_requires_classic_block() | |
| 104 | + ) { | |
| 105 | + if ( ! in_array( 'editor', $script->deps, true ) ) { | |
| 106 | + $script->deps[] = 'editor'; | |
| 107 | + } | |
| 99 | 108 | } |
| 100 | 109 | } |
| 101 | 110 | add_action( 'wp_default_scripts', 'gutenberg_register_block_library_script_special_case', 11 ); |
| 102 | 111 | |
| @@ -357,36 +366,34 @@ | ||
| 357 | 366 | * |
| 358 | 367 | * @param WP_Scripts $scripts WP_Scripts instance. |
| 359 | 368 | */ |
| 360 | 369 | function gutenberg_register_vendor_scripts( $scripts ) { |
| 361 | - $extension = SCRIPT_DEBUG ? '.js' : '.min.js'; | |
| 362 | - $vendors_dir = gutenberg_dir_path() . 'build/scripts/vendors/'; | |
| 370 | + $extension = SCRIPT_DEBUG ? '.js' : '.min.js'; | |
| 363 | 371 | |
| 364 | - $vendor_handles = array( 'react', 'react-dom', 'react-jsx-runtime' ); | |
| 372 | + gutenberg_override_script( | |
| 373 | + $scripts, | |
| 374 | + 'react', | |
| 375 | + gutenberg_url( 'build/scripts/vendors/react' . $extension ), | |
| 376 | + // WordPress Core in `wp_register_development_scripts` sets `wp-react-refresh-entry` as a dependency to `react` when `SCRIPT_DEBUG` is true. | |
| 377 | + // We need to preserve that here. | |
| 378 | + SCRIPT_DEBUG ? array( 'wp-react-refresh-entry', 'wp-polyfill' ) : array( 'wp-polyfill' ), | |
| 379 | + '18' | |
| 380 | + ); | |
| 381 | + gutenberg_override_script( | |
| 382 | + $scripts, | |
| 383 | + 'react-dom', | |
| 384 | + gutenberg_url( 'build/scripts/vendors/react-dom' . $extension ), | |
| 385 | + array( 'react' ), | |
| 386 | + '18' | |
| 387 | + ); | |
| 365 | 388 | |
| 366 | - foreach ( $vendor_handles as $handle ) { | |
| 367 | - $asset_file = $vendors_dir . $handle . '.min.asset.php'; | |
| 368 | - $asset = file_exists( $asset_file ) ? require $asset_file : array(); | |
| 369 | - $dependencies = $asset['dependencies'] ?? array(); | |
| 370 | - $version = $asset['version'] ?? '0'; | |
| 371 | - | |
| 372 | - gutenberg_override_script( | |
| 373 | - $scripts, | |
| 374 | - $handle, | |
| 375 | - gutenberg_url( 'build/scripts/vendors/' . $handle . $extension ), | |
| 376 | - $dependencies, | |
| 377 | - $version | |
| 378 | - ); | |
| 379 | - } | |
| 380 | - | |
| 381 | - // WordPress Core in `wp_register_development_scripts` sets `wp-react-refresh-entry` | |
| 382 | - // as a dependency to `react` when `SCRIPT_DEBUG` is true. Preserve that here. | |
| 383 | - if ( SCRIPT_DEBUG ) { | |
| 384 | - $react = $scripts->query( 'react', 'registered' ); | |
| 385 | - if ( $react && ! in_array( 'wp-react-refresh-entry', $react->deps, true ) ) { | |
| 386 | - $react->deps[] = 'wp-react-refresh-entry'; | |
| 387 | - } | |
| 388 | - } | |
| 389 | + gutenberg_override_script( | |
| 390 | + $scripts, | |
| 391 | + 'react-jsx-runtime', | |
| 392 | + gutenberg_url( 'build/scripts/vendors/react-jsx-runtime' . $extension ), | |
| 393 | + array( 'react' ), | |
| 394 | + '18' | |
| 395 | + ); | |
| 389 | 396 | } |
| 390 | 397 | add_action( 'wp_default_scripts', 'gutenberg_register_vendor_scripts' ); |
| 391 | 398 | |
| 392 | 399 | /** |
| @@ -440,11 +447,9 @@ | ||
| 440 | 447 | * when client-side media processing is triggered via @wordpress/upload-media. |
| 441 | 448 | * |
| 442 | 449 | * @see packages/vips/src/loader.ts |
| 443 | 450 | */ |
| 444 | -if ( defined( 'IS_GUTENBERG_PLUGIN' ) && IS_GUTENBERG_PLUGIN ) { | |
| 445 | - add_action( 'enqueue_block_editor_assets', 'gutenberg_enqueue_vips_loader' ); | |
| 446 | -} | |
| 451 | +add_action( 'enqueue_block_editor_assets', 'gutenberg_enqueue_vips_loader' ); | |
| 447 | 452 | function gutenberg_enqueue_vips_loader() { |
| 448 | 453 | wp_enqueue_script_module( '@wordpress/vips/loader' ); |
| 449 | 454 | } |
| 450 | 455 | |