From ff81e7093c880a9d5a3c946248fa60ee1ce107b7 Mon Sep 17 00:00:00 2001
From: Chris Eastwood <eastwood.chris@gmail.com>
Date: Fri, 24 Aug 2018 10:20:43 -0700
Subject: [PATCH] Store pattern hooks in an array keyed by hook name for faster
 lookup

---
 src/UiPatternsManager.php | 17 +++++++++++++----
 1 file changed, 13 insertions(+), 4 deletions(-)

diff --git a/src/UiPatternsManager.php b/src/UiPatternsManager.php
index 254f8a25..9f1a0d00 100644
--- a/src/UiPatternsManager.php
+++ b/src/UiPatternsManager.php
@@ -26,6 +26,13 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
    */
   protected $themeHandler;
 
+  /**
+   * An array of pattern theme hooks for fast lookup.
+   *
+   * @var array
+   */
+  protected $patternHooks;
+
   /**
    * UiPatternsManager constructor.
    */
@@ -85,10 +92,12 @@ class UiPatternsManager extends DefaultPluginManager implements PluginManagerInt
    * {@inheritdoc}
    */
   public function isPatternHook($hook) {
-    $definitions = array_filter($this->getDefinitions(), function (PatternDefinition $definition) use ($hook) {
-      return $definition->getThemeHook() == $hook;
-    });
-    return !empty($definitions);
+    if (empty($this->patternHooks)) {
+      foreach ($this->getDefinitions() as $definition) {
+        $this->patternHooks[$definition->getThemeHook()] = $definition->getThemeHook();
+      }
+    }
+    return !empty($this->patternHooks[$hook]);
   }
 
   /**
-- 
GitLab