core/core.services.yml | 2 +- core/includes/common.inc | 55 +--------------------- core/includes/theme.inc | 7 +-- core/lib/Drupal/Core/Ajax/AjaxResponse.php | 7 +-- core/lib/Drupal/Core/Render/BubbleableMetadata.php | 31 +++++------- .../Core/Render/MainContent/AjaxRenderer.php | 31 +++++------- .../Core/Render/MainContent/DialogRenderer.php | 2 +- .../Core/Render/MainContent/ModalRenderer.php | 2 +- core/lib/Drupal/Core/Render/Renderer.php | 14 ++++++ core/lib/Drupal/Core/Render/RendererInterface.php | 44 +++++++++++++++++ core/modules/editor/src/Element.php | 3 +- .../src/Controller/FileWidgetAjaxController.php | 2 +- core/modules/quickedit/src/QuickEditController.php | 4 +- .../src/Tests/Common/MergeAttachmentsTest.php | 19 ++++---- .../src/Controller/AjaxTestController.php | 2 +- .../ajax_test/src/Form/AjaxTestDialogForm.php | 2 +- .../views/src/Controller/ViewAjaxController.php | 2 +- .../views_ui/src/Form/Ajax/ViewsFormBase.php | 2 +- .../Tests/Core/Render/BubbleableMetadataTest.php | 42 +++++++++++++++++ 19 files changed, 158 insertions(+), 115 deletions(-) diff --git a/core/core.services.yml b/core/core.services.yml index ee5c7f0..b2ea111 100644 --- a/core/core.services.yml +++ b/core/core.services.yml @@ -725,7 +725,7 @@ services: - { name: render.main_content_renderer, format: html } main_content_renderer.ajax: class: Drupal\Core\Render\MainContent\AjaxRenderer - arguments: ['@element_info'] + arguments: ['@element_info', '@renderer'] tags: - { name: render.main_content_renderer, format: drupal_ajax } main_content_renderer.dialog: diff --git a/core/includes/common.inc b/core/includes/common.inc index 27c9c54..e82ad36 100644 --- a/core/includes/common.inc +++ b/core/includes/common.inc @@ -22,6 +22,7 @@ use Drupal\Component\Utility\UrlHelper; use Drupal\Core\Cache\Cache; use Drupal\Core\Language\LanguageInterface; +use Drupal\Core\Render\Renderer; use Drupal\Core\Site\Settings; use Drupal\Core\Url; use Symfony\Component\HttpFoundation\Response; @@ -849,58 +850,6 @@ function drupal_js_defaults($data = NULL) { } /** - * Merges two #attached arrays. - * - * The values under the 'drupalSettings' key are merged in a special way, to - * match the behavior of - * - * @code - * jQuery.extend(true, {}, $settings_items[0], $settings_items[1], ...) - * @endcode - * - * This means integer indices are preserved just like string indices are, - * rather than re-indexed as is common in PHP array merging. - * - * Example: - * @code - * function module1_page_attachments(&$page) { - * $page['a']['#attached']['drupalSettings']['foo'] = ['a', 'b', 'c']; - * } - * function module2_page_attachments(&$page) { - * $page['#attached']['drupalSettings']['foo'] = ['d']; - * } - * // When the page is rendered after the above code, and the browser runs the - * // resulting