From 2c9c93d1900271b84f50c37451b57730f41e2ffc Mon Sep 17 00:00:00 2001
From: mohammad faqeh <59777-faqeh@users.noreply.drupalcode.org>
Date: Thu, 30 Nov 2023 08:23:01 +0000
Subject: [PATCH] Issue #3404910 by mohammad faqeh: Implement Theme Negotiator
 for Layout Builder Route with Regular Expression Purge Match

---
 .../VarbaseLayoutBuilderThemeNegotiator.php   |  2 +-
 varbase_layout_builder.module                 | 19 +++++++++++++++++++
 2 files changed, 20 insertions(+), 1 deletion(-)

diff --git a/src/Theme/VarbaseLayoutBuilderThemeNegotiator.php b/src/Theme/VarbaseLayoutBuilderThemeNegotiator.php
index 5a3b3e4a..d4eac964 100644
--- a/src/Theme/VarbaseLayoutBuilderThemeNegotiator.php
+++ b/src/Theme/VarbaseLayoutBuilderThemeNegotiator.php
@@ -75,7 +75,7 @@ class VarbaseLayoutBuilderThemeNegotiator extends AjaxBasePageNegotiator {
     if (isset($use_claro) && $use_claro == 1) {
 
       $route_name = $route_match->getRouteName();
-      if (isset($route_name) && strpos($route_name, 'layout_builder') !== FALSE) {
+      if (varbase_layout_builder__is_layout_builder_route()) {
         if ($this->themeHandler->themeExists('gin') || $this->themeHandler->themeExists('claro')) {
           return TRUE;
         }
diff --git a/varbase_layout_builder.module b/varbase_layout_builder.module
index 17e6f673..0bcc524b 100644
--- a/varbase_layout_builder.module
+++ b/varbase_layout_builder.module
@@ -352,3 +352,22 @@ function varbase_layout_builder_library_info_alter(&$libraries, $extension) {
 
   }
 }
+
+function varbase_layout_builder__is_layout_builder_route() {
+  $layout_builder_route = drupal_static(__FUNCTION__);
+  if ($layout_builder_route !== NULL) {
+    return $layout_builder_route;
+  }
+
+  $route_name = \Drupal::routeMatch()->getRouteName();
+  $layout_builder_route = FALSE;
+
+  if ($route_name !== NULL && preg_match('/^(layout_builder\.([^.]+\.)?)/', $route_name)) {
+    $layout_builder_route = TRUE;
+  }
+
+  $context = NULL;
+  \Drupal::moduleHandler()->alter('varbase_layout_builder__is_layout_builder_route', $layout_builder_route, $context);
+  unset($context);
+  return $layout_builder_route;
+}
-- 
GitLab