Plugin Directory

Changeset 3078539


Ignore:
Timestamp:
04/29/2024 09:33:15 AM (2 years ago)
Author:
morganhvidt
Message:

4.0.1

Location:
find-my-blocks
Files:
25 added
5 edited

Legend:

Unmodified
Added
Removed
  • find-my-blocks/trunk/assets/js/find-my-blocks.asset.php

    r3078392 r3078539  
    1 <?php return array('dependencies' => array('react', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => '26cd1b451aa10aa4a913');
     1<?php return array('dependencies' => array('react', 'wp-api-fetch', 'wp-components', 'wp-element', 'wp-i18n'), 'version' => 'e7b50b672b42da168d56');
  • find-my-blocks/trunk/assets/js/find-my-blocks.js

    r3078392 r3078539  
    1 (()=>{"use strict";var M={46:(M,e,N)=>{N.d(e,{A:()=>D}),N(609);const D="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzk0IiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDM5NCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMDQuNTA3IDYyQzEwNC4wMjkgNjIgMTAzLjY1NyA2MS44NzAyIDEwMy4zOTQgNjEuNjEwNkMxMDMuMTMxIDYxLjM1MSAxMDMgNjAuOTg1MyAxMDMgNjAuNTEzM1YzOS40ODczQzEwMyAzOS4wMTU0IDEwMy4xMzEgMzguNjQ5NiAxMDMuMzk0IDM4LjM5QzEwMy42NTcgMzguMTMwNCAxMDQuMDI3IDM4LjAwMDYgMTA0LjUwNSAzOC4wMDA2SDExNy42OTVDMTE4LjE3MiAzOC4wMDA2IDExOC41NDMgMzguMTMwNCAxMTguODA2IDM4LjM5QzExOS4wNjggMzguNjQ5NiAxMTkuMiAzOS4wMTU0IDExOS4yIDM5LjQ4NzNDMTE5LjIgMzkuOTU5MyAxMTkuMDY4IDQwLjMyNTEgMTE4LjgwNiA0MC41ODQ2QzExOC41NDMgNDAuODQ0MiAxMTguMTcyIDQwLjk3NCAxMTcuNjk1IDQwLjk3NEgxMDYuMDExVjQ4LjQwNzRIMTEzLjIxNUMxMTMuNjkyIDQ4LjQwNzQgMTE0LjA2MyA0OC41MzcyIDExNC4zMjYgNDguNzk2OEMxMTQuNTg4IDQ5LjA1NjQgMTE0LjcyIDQ5LjQyMjIgMTE0LjcyIDQ5Ljg5NDFDMTE0LjcyIDUwLjM2NjEgMTE0LjU4OCA1MC43MzE5IDExNC4zMjYgNTAuOTkxNEMxMTQuMDYzIDUxLjI1MSAxMTMuNjkyIDUxLjM4MDggMTEzLjIxNSA1MS4zODA4SDEwNi4wMTFWNjAuNTEzM0MxMDYuMDExIDYwLjk4NTMgMTA1Ljg3OSA2MS4zNTEgMTA1LjYxNiA2MS42MTA2QzEwNS4zNTQgNjEuODcwMiAxMDQuOTgzIDYyIDEwNC41MDUgNjJIMTA0LjUwN1pNMTI0LjQyMSA2MkMxMjMuODk1IDYyIDEyMy41MTMgNjEuODgyIDEyMy4yNzQgNjEuNjQ2QzEyMy4wMzUgNjEuNDEgMTIyLjkxNSA2MS4wMzI1IDEyMi45MTUgNjAuNTEzM1YzOS41MjI3QzEyMi45MTUgMzkuMDAzNiAxMjMuMDM1IDM4LjYyNiAxMjMuMjc0IDM4LjM5QzEyMy41MTMgMzguMTU0IDEyMy44OTUgMzguMDM2IDEyNC40MjEgMzguMDM2QzEyNC45NDYgMzguMDM2IDEyNS4zMjkgMzguMTU0IDEyNS41NjcgMzguMzlDMTI1LjgwNiAzOC42MjYgMTI1LjkyNiAzOS4wMDM2IDEyNS45MjYgMzkuNTIyN1Y2MC41MTMzQzEyNS45MjYgNjEuMDMyNSAxMjUuODA2IDYxLjQxIDEyNS41NjcgNjEuNjQ2QzEyNS4zMjkgNjEuODgyIDEyNC45NDYgNjIgMTI0LjQyMSA2MlpNMTUxLjU1MiAzOC4wMDA2QzE1Mi4wMyAzOC4wMDA2IDE1Mi40IDM4LjEzMDQgMTUyLjY2MyAzOC4zOUMxNTIuOTI2IDM4LjY0OTYgMTUzLjA1NyAzOS4wMTU0IDE1My4wNTcgMzkuNDg3M1Y2MC41MTMzQzE1My4wNTcgNjAuOTg1MyAxNTIuOTI2IDYxLjM1MSAxNTIuNjYzIDYxLjYxMDZDMTUyLjQgNjEuODcwMiAxNTIuMDMgNjIgMTUxLjU1MiA2MkMxNTEuMjY1IDYyIDE1MS4wMDIgNjEuOTI5MiAxNTAuNzYzIDYxLjc4NzZDMTUwLjQ4NCA2MS42MDkxIDE1MC4yNDEgNjEuMzgxMSAxNTAuMDQ2IDYxLjExNTFMMTM2LjM5MSA0My43MzVWNjAuNTEzM0MxMzYuMzkxIDYwLjk4NTMgMTM2LjI2IDYxLjM1MSAxMzUuOTk3IDYxLjYxMDZDMTM1LjczNCA2MS44NzAyIDEzNS4zNjQgNjIgMTM0Ljg4NiA2MkMxMzQuNDA4IDYyIDEzNC4wMzggNjEuODcwMiAxMzMuNzc1IDYxLjYxMDZDMTMzLjUxMiA2MS4zNTEgMTMzLjM4MSA2MC45ODUzIDEzMy4zODEgNjAuNTEzM1YzOS40ODczQzEzMy4zODEgMzkuMDE1NCAxMzMuNTEyIDM4LjY0OTYgMTMzLjc3NSAzOC4zOUMxMzQuMDM4IDM4LjEzMDQgMTM0LjQwOCAzOC4wMDA2IDEzNC44ODYgMzguMDAwNkMxMzUuMTczIDM4LjAwMDYgMTM1LjQyNCAzOC4wNzE0IDEzNS42MzkgMzguMjEzQzEzNS44NzggMzguMzU0NiAxMzYuMTI4IDM4LjU3ODggMTM2LjM5MSAzOC44ODU2TDE1MC4wNDYgNTYuMjY1NlYzOS40ODczQzE1MC4wNDYgMzkuMDE1NCAxNTAuMTc4IDM4LjY0OTYgMTUwLjQ0MSAzOC4zOUMxNTAuNzA0IDM4LjEzMDQgMTUxLjA3NCAzOC4wMDA2IDE1MS41NTIgMzguMDAwNlpNMTYyLjAxMSA2MkMxNjEuNTMzIDYyIDE2MS4xNjMgNjEuODcwMiAxNjAuOSA2MS42MTA2QzE2MC42MzcgNjEuMzUxIDE2MC41MDYgNjAuOTg1MyAxNjAuNTA2IDYwLjUxMzNWMzkuNDg3M0MxNjAuNTA2IDM5LjAxNTQgMTYwLjYzNyAzOC42NDk2IDE2MC45IDM4LjM5QzE2MS4xNjMgMzguMTMwNCAxNjEuNTMzIDM4LjAwMDYgMTYyLjAxMSAzOC4wMDA2SDE3MC42NDlDMTczLjc3OSAzOC4wMDA2IDE3Ni4wNzMgMzguNzMyMiAxNzcuNTMgNDAuMTk1M0MxNzkuMDExIDQxLjYzNDggMTc5Ljc1MiA0My45MDAyIDE3OS43NTIgNDYuOTkxNVY1My4wMDkxQzE3OS43NTIgNTYuMTAwNCAxNzkuMDExIDU4LjM3NzcgMTc3LjUzIDU5Ljg0MDhDMTc2LjA3MyA2MS4yODAyIDE3My43NzkgNjIgMTcwLjY0OSA2MkgxNjIuMDExWk0xNzAuNjQ5IDU5LjAyNjZDMTcyLjIwMiA1OS4wMjY2IDE3My40MDggNTguODM3OCAxNzQuMjY5IDU4LjQ2MDNDMTc1LjEyIDU4LjExNDEgMTc1LjgwMiA1Ny40NTM5IDE3Ni4xNjggNTYuNjE5NkMxNzYuNTUgNTUuNzQ2NSAxNzYuNzQyIDU0LjU0MyAxNzYuNzQyIDUzLjAwOTFWNDYuOTkxNUMxNzYuNzQyIDQ1LjQ1NzcgMTc2LjU1IDQ0LjI2NiAxNzYuMTY4IDQzLjQxNjRDMTc1LjgxMSA0Mi41Njc5IDE3NS4xMjggNDEuODkzNSAxNzQuMjY5IDQxLjU0MDRDMTczLjQwOCA0MS4xNjI4IDE3Mi4yMDIgNDAuOTc0IDE3MC42NDkgNDAuOTc0SDE2My41MTZWNTkuMDI2NkgxNzAuNjQ5Wk0yMTguOTMyIDM4LjAwMDZDMjE5Ljc0NCAzOC4wMDA2IDIyMC4xNSAzOC40OTYyIDIyMC4xNSAzOS40ODczVjYwLjUxMzNDMjIwLjE1IDYwLjk4NTMgMjIwLjAxOSA2MS4zNTEgMjE5Ljc1NiA2MS42MTA2QzIxOS40OTMgNjEuODcwMiAyMTkuMTIzIDYyIDIxOC42NDUgNjJDMjE4LjE2NyA2MiAyMTcuNzk3IDYxLjg3MDIgMjE3LjUzNCA2MS42MTA2QzIxNy4yNzEgNjEuMzUxIDIxNy4xNCA2MC45ODUzIDIxNy4xNCA2MC41MTMzVjQ0LjEyNDRMMjEwLjU0NSA1My43MTdDMjEwLjMwNiA1NC4wNDc0IDIxMC4wNDMgNTQuMjk1MiAyMDkuNzU3IDU0LjQ2MDRDMjA5LjQzMiA1NC42MTAxIDIwOS4wNzYgNTQuNjgyOCAyMDguNzE3IDU0LjY3MjhDMjA4LjQzIDU0LjY3MjggMjA4LjE2OCA1NC42MDIgMjA3LjkyOSA1NC40NjA0QzIwNy42NjcgNTQuMjQ1NSAyMDcuNDM4IDUzLjk5NTIgMjA3LjI0OCA1My43MTdMMjAwLjYxNyA0NC4wODlWNjAuNTEzM0MyMDAuNjE3IDYwLjk4NTMgMjAwLjQ4NiA2MS4zNTEgMjAwLjIyMyA2MS42MTA2QzE5OS45NiA2MS44NzAyIDE5OS41OSA2MiAxOTkuMTEyIDYyQzE5OC42MzQgNjIgMTk4LjI2NCA2MS44NzAyIDE5OC4wMDEgNjEuNjEwNkMxOTcuNzM4IDYxLjM1MSAxOTcuNjA3IDYwLjk4NTMgMTk3LjYwNyA2MC41MTMzVjM5LjQ4NzNDMTk3LjYwNyAzOS4wMTU0IDE5Ny43MzggMzguNjQ5NiAxOTguMDAxIDM4LjM5QzE5OC4yNjQgMzguMTMwNCAxOTguNjM0IDM4LjAwMDYgMTk5LjExMiAzOC4wMDA2QzE5OS43ODEgMzguMDAwNiAyMDAuMzMxIDM4LjMxOTIgMjAwLjc2MSAzOC45NTY0TDIwOC45MzIgNTEuMDk3NkwyMTcuMTA0IDM4Ljk1NjRDMjE3LjUxIDM4LjMxOTIgMjE4LjExOSAzOC4wMDA2IDIxOC45MzIgMzguMDAwNlpNMjQ0LjMwNCAzOC4zNTQ2QzI0NC44MjkgMzguNjg1IDI0NS4wOTIgMzkuMDc0NCAyNDUuMDkyIDM5LjUyMjdDMjQ1LjA5MiAzOS44MDU5IDI0NC45ODUgNDAuMDg5MSAyNDQuNzcgNDAuMzcyM0wyMzYuMjQgNTMuMjkyM1Y2MC41MTMzQzIzNi4yNCA2MC45ODUzIDIzNi4xMDggNjEuMzUxIDIzNS44NDUgNjEuNjEwNkMyMzUuNTgzIDYxLjg3MDIgMjM1LjIxMiA2MiAyMzQuNzM0IDYyQzIzNC4yNTYgNjIgMjMzLjg4NiA2MS44NzAyIDIzMy42MjMgNjEuNjEwNkMyMzMuMzYgNjEuMzUxIDIzMy4yMjkgNjAuOTg1MyAyMzMuMjI5IDYwLjUxMzNWNTMuMjkyM0wyMjUuMDIyIDQwLjM3MjNDMjI0LjgzIDQwLjA0MTkgMjI0LjczNSAzOS43NDY5IDIyNC43MzUgMzkuNDg3M0MyMjQuNzM1IDM4Ljk5MTggMjI0Ljk4NiAzOC41OTA2IDIyNS40ODggMzguMjgzOEMyMjUuODIyIDM4LjA5NSAyMjYuMTIxIDM4LjAwMDYgMjI2LjM4NCAzOC4wMDA2QzIyNi44MzcgMzguMDAwNiAyMjcuMjMyIDM4LjI0ODQgMjI3LjU2NiAzOC43NDRMMjM0LjczNCA1MC4xMDY1TDI0Mi4yNjEgMzguNzQ0QzI0Mi41NDggMzguMjcyIDI0Mi45MyAzOC4wMzYgMjQzLjQwOCAzOC4wMzZDMjQzLjY5NCAzOC4wMzYgMjQzLjk5MyAzOC4xNDIyIDI0NC4zMDQgMzguMzU0NlpNMjc2LjE5IDQ4LjM3MkMyNzguMDc3IDQ5LjQ1NzYgMjc5LjAyMSA1MS4zODA4IDI3OS4wMjEgNTQuMTQxOFY1NS4zNDUzQzI3OS4wMjEgNTcuNTE2NCAyNzguNDM2IDU5LjE2ODIgMjc3LjI2NSA2MC4zMDA5QzI3Ni4xMTggNjEuNDMzNyAyNzQuNDQ1IDYyIDI3Mi4yNDcgNjJIMjYyLjQyN0MyNjEuOTQ5IDYyIDI2MS41NzkgNjEuODcwMiAyNjEuMzE2IDYxLjYxMDZDMjYxLjA1MyA2MS4zNTEgMjYwLjkyMiA2MC45ODUzIDI2MC45MjIgNjAuNTEzM1YzOS40ODczQzI2MC45MjIgMzkuMDE1NCAyNjEuMDUzIDM4LjY0OTYgMjYxLjMxNiAzOC4zOUMyNjEuNTc5IDM4LjEzMDQgMjYxLjk0OSAzOC4wMDA2IDI2Mi40MjcgMzguMDAwNkgyNzEuNzgxQzI3My42NjkgMzguMDAwNiAyNzUuMTI2IDM4LjQ5NjIgMjc2LjE1NCAzOS40ODczQzI3Ny4xODEgNDAuNDc4NCAyNzcuNjk1IDQxLjg5NDMgMjc3LjY5NSA0My43MzVWNDQuNjkwN0MyNzcuNjk1IDQ1LjQ0NTkgMjc3LjU2NCA0Ni4xNDIgMjc3LjMwMSA0Ni43NzkyQzI3Ny4wNTggNDcuMzg3IDI3Ni42NzggNDcuOTMxOSAyNzYuMTkgNDguMzcyWk0yNjMuOTMyIDQ3LjUyMjVIMjcyLjg5MkMyNzMuNTE0IDQ3LjQ1MTcgMjczLjk2OCA0Ny4xNjg1IDI3NC4yNTQgNDYuNjczQzI3NC41NDEgNDYuMTUzOCAyNzQuNjg0IDQ1LjQ5MzEgMjc0LjY4NCA0NC42OTA3VjQzLjczNUMyNzQuNjg0IDQyLjcyMDMgMjc0LjQ2OSA0Mi4wMTIzIDI3NC4wMzkgNDEuNjExMkMyNzMuNjA5IDQxLjE4NjQgMjcyLjg1NyA0MC45NzQgMjcxLjc4MSA0MC45NzRIMjYzLjkzMlY0Ny41MjI1Wk0yNzYuMDEgNTQuMTQxOEMyNzYuMDEgNTIuODIwMyAyNzUuNzI0IDUxLjg4ODIgMjc1LjE1IDUxLjM0NTRDMjc0LjU3NyA1MC43NzkxIDI3My42MDkgNTAuNDk1OSAyNzIuMjQ3IDUwLjQ5NTlIMjYzLjkzMlY1OS4wMjY2SDI3Mi4yNDdDMjczLjU4NSA1OS4wMjY2IDI3NC41NDEgNTguNzQzNSAyNzUuMTE0IDU4LjE3NzFDMjc1LjcxMiA1Ny42MTA3IDI3Ni4wMSA1Ni42NjY4IDI3Ni4wMSA1NS4zNDUzVjU0LjE0MThaTTI4Ni41NDMgNjJDMjg1LjU0IDYyIDI4NS4wMzggNjEuNTA0NCAyODUuMDM4IDYwLjUxMzNWMzkuNDg3M0MyODUuMDM4IDM4LjQ5NjIgMjg1LjU0IDM4LjAwMDYgMjg2LjU0MyAzOC4wMDA2QzI4Ny41NDcgMzguMDAwNiAyODguMDQ4IDM4LjQ5NjIgMjg4LjA0OCAzOS40ODczVjU5LjAyNjZIMjk3Ljk3NkMyOTguOTggNTkuMDI2NiAyOTkuNDgxIDU5LjUyMjIgMjk5LjQ4MSA2MC41MTMzQzI5OS40ODEgNjEuNTA0NCAyOTguOTggNjIgMjk3Ljk3NiA2MkgyODYuNTQzWk0zMTAuODk3IDYyQzMwOC4xNDkgNjIgMzA2LjExOCA2MS4zNjI4IDMwNC44MDQgNjAuMDg4NUMzMDMuNTEzIDU4Ljc5MDYgMzAyLjg2NyA1Ni43ODQ4IDMwMi44NjcgNTQuMDcxVjQ1Ljg5NDJDMzAyLjg2NyA0My4xODA0IDMwMy41MjUgNDEuMTg2NCAzMDQuODQgMzkuOTEyMUMzMDYuMTU0IDM4LjYxNDIgMzA4LjE3MyAzNy45NzcgMzEwLjg5NyAzOC4wMDA2SDMxNS4xOTZDMzE3Ljk0NCAzOC4wMDA2IDMxOS45NjMgMzguNjQ5NiAzMjEuMjUzIDM5Ljk0NzVDMzIyLjU2OSA0MS4yMjE4IDMyMy4yMjYgNDMuMjE1OCAzMjMuMjI2IDQ1LjkyOTZWNTQuMDcxQzMyMy4yMjYgNTYuNzg0OCAzMjIuNTY5IDU4Ljc5MDYgMzIxLjI1MyA2MC4wODg1QzMxOS45NjMgNjEuMzYyOCAzMTcuOTQ0IDYyIDMxNS4xOTYgNjJIMzEwLjg5N1pNMzE1LjE5NiA1OS4wMjY2QzMxNi41MTIgNTkuMDI2NiAzMTcuNTE0IDU4Ljg3MzIgMzE4LjIwOCA1OC41NjY1QzMxOC44OTcgNTguMjg2MyAzMTkuNDQ5IDU3Ljc1MzQgMzE5Ljc0OCA1Ny4wNzk4QzMyMC4wNiA1Ni4zNzE4IDMyMC4yMTQgNTUuMzY4OSAzMjAuMjE0IDU0LjA3MVY0NS45Mjk2QzMyMC4yMTQgNDQuNjU1MyAzMjAuMDYgNDMuNjY0MiAzMTkuNzQ4IDQyLjk1NjNDMzE5LjQ1OCA0Mi4yNjgyIDMxOC45MDQgNDEuNzIxMiAzMTguMjA4IDQxLjQzNDJDMzE3LjQ5MSA0MS4xMjc0IDMxNi40ODYgNDAuOTc0IDMxNS4xOTYgNDAuOTc0SDMxMC44OTdDMzA5LjYwNiA0MC45NTA0IDMwOC42MDEgNDEuMDkyIDMwNy44ODUgNDEuMzk4OEMzMDcuMTg4IDQxLjY4NTggMzA2LjYzNSA0Mi4yMzI4IDMwNi4zNDUgNDIuOTIwOUMzMDYuMDM0IDQzLjYyODggMzA1Ljg3OSA0NC42MTk5IDMwNS44NzkgNDUuODk0MlY1NC4wNzFDMzA1Ljg3OSA1NS4zNjg5IDMwNi4wMzQgNTYuMzcxOCAzMDYuMzQ1IDU3LjA3OThDMzA2LjY1NCA1Ny43NjQxIDMwNy4xNTYgNTguMjU5NyAzMDcuODQ5IDU4LjU2NjVDMzA4LjU2NSA1OC44NzMyIDMwOS41ODIgNTkuMDI2NiAzMTAuODk3IDU5LjAyNjZIMzE1LjE5NlpNMzM2Ljk3IDYyQzMzNC4yMjMgNjIgMzMyLjE5MiA2MS4zNjI4IDMzMC44NzggNjAuMDg4NUMzMjkuNTg3IDU4Ljc5MDYgMzI4Ljk0MiA1Ni43ODQ4IDMyOC45NDIgNTQuMDcxVjQ1LjkyOTZDMzI4Ljk0MiA0My4yMTU4IDMyOS41ODcgNDEuMjEgMzMwLjg3OCAzOS45MTIxQzMzMi4xOTIgMzguNjE0MiAzMzQuMjExIDM3Ljk3NyAzMzYuOTM1IDM4LjAwMDZIMzQxLjI3MUMzNDMuNTE3IDM4LjAwMDYgMzQ1LjIyNiAzOC40NjA4IDM0Ni4zOTcgMzkuMzgxMUMzNDcuNTkxIDQwLjMwMTUgMzQ4LjI4NCA0MS43NDEgMzQ4LjQ3NSA0My42OTk2QzM0OC41NDcgNDQuMTk1MiAzNDguNDUxIDQ0LjU3MjcgMzQ4LjE4OSA0NC44MzIzQzM0Ny45MjYgNDUuMDkxOSAzNDcuNTQzIDQ1LjIyMTcgMzQ3LjA0MiA0NS4yMjE3QzM0Ni41NjQgNDUuMjIxNyAzNDYuMTkzIDQ1LjEwMzcgMzQ1LjkzMSA0NC44Njc3QzM0NS42OTIgNDQuNjA4MSAzNDUuNTM2IDQ0LjIzMDYgMzQ1LjQ2NSA0My43MzVDMzQ1LjM0NSA0Mi42NzMxIDM0NC45NzUgNDEuOTUzMyAzNDQuMzU0IDQxLjU3NThDMzQzLjczMiA0MS4xNzQ2IDM0Mi43MDUgNDAuOTc0IDM0MS4yNzEgNDAuOTc0SDMzNi45MzVDMzM1LjY0NCA0MC45NTA0IDMzNC42NDEgNDEuMDkyIDMzMy45MjQgNDEuMzk4OEMzMzMuMjA3IDQxLjcwNTUgMzMyLjY5NCA0Mi4yMTI5IDMzMi4zODMgNDIuOTIwOUMzMzIuMDk2IDQzLjYyODggMzMxLjk1MyA0NC42MzE3IDMzMS45NTMgNDUuOTI5NlY1NC4wNzFDMzMxLjk1MyA1NS4zNjg5IDMzMi4xMDggNTYuMzcxOCAzMzIuNDE5IDU3LjA3OThDMzMyLjcyOSA1Ny43NjQxIDMzMy4yMzEgNTguMjU5NyAzMzMuOTI0IDU4LjU2NjVDMzM0LjY0MSA1OC44NzMyIDMzNS42NTYgNTkuMDI2NiAzMzYuOTcgNTkuMDI2NkgzNDEuMjcxQzM0Mi43MDUgNTkuMDI2NiAzNDMuNzMyIDU4LjgzNzggMzQ0LjM1NCA1OC40NjAzQzM0NC45NzUgNTguMDU5MSAzNDUuMzQ1IDU3LjMyNzYgMzQ1LjQ2NSA1Ni4yNjU2QzM0NS41MzYgNTUuNzcwMSAzNDUuNjkyIDU1LjQwNDMgMzQ1LjkzMSA1NS4xNjgzQzM0Ni4xOTMgNTQuOTA4NyAzNDYuNTY0IDU0Ljc3OSAzNDcuMDQyIDU0Ljc3OUMzNDcuNTQzIDU0Ljc3OSAzNDcuOTI2IDU0LjkwODcgMzQ4LjE4OSA1NS4xNjgzQzM0OC40NTEgNTUuNDI3OSAzNDguNTQ3IDU1LjgwNTUgMzQ4LjQ3NSA1Ni4zMDFDMzQ4LjI4NCA1OC4yNTk3IDM0Ny41OTEgNTkuNjk5MiAzNDYuMzk3IDYwLjYxOTVDMzQ1LjIyNiA2MS41Mzk4IDM0My41MTcgNjIgMzQxLjI3MSA2MkgzMzYuOTdaTTM3MC40MiA1OS40MTZDMzcwLjY4MyA1OS43NDY0IDM3MC44MTQgNjAuMDc2NyAzNzAuODE0IDYwLjQwNzFDMzcwLjgxNCA2MC44MzE5IDM3MC42MTEgNjEuMTk3NyAzNzAuMjA1IDYxLjUwNDRDMzY5LjkzNCA2MS43NTc5IDM2OS41NzQgNjEuODk3NSAzNjkuMjAxIDYxLjg5MzhDMzY4Ljc3MSA2MS44OTM4IDM2OC40MDEgNjEuNjkzMiAzNjguMDkgNjEuMjkyMUwzNTkuMzEgNTAuNTY2N0wzNTcuNzY4IDUyLjE1OTZWNjAuNTEzM0MzNTcuNzY4IDYwLjk4NTMgMzU3LjYzNyA2MS4zNTEgMzU3LjM3NCA2MS42MTA2QzM1Ny4xMTEgNjEuODcwMiAzNTYuNzQxIDYyIDM1Ni4yNjMgNjJDMzU1Ljc4NSA2MiAzNTUuNDE1IDYxLjg3MDIgMzU1LjE1MiA2MS42MTA2QzM1NC44ODkgNjEuMzUxIDM1NC43NTggNjAuOTg1MyAzNTQuNzU4IDYwLjUxMzNWMzkuNDg3M0MzNTQuNzU4IDM5LjAxNTQgMzU0Ljg4OSAzOC42NDk2IDM1NS4xNTIgMzguMzlDMzU1LjQxNSAzOC4xMzA0IDM1NS43ODUgMzguMDAwNiAzNTYuMjYzIDM4LjAwMDZDMzU2Ljc0MSAzOC4wMDA2IDM1Ny4xMTEgMzguMTMwNCAzNTcuMzc0IDM4LjM5QzM1Ny42MzcgMzguNjQ5NiAzNTcuNzY4IDM5LjAxNTQgMzU3Ljc2OCAzOS40ODczVjQ3LjkxMTlMMzY2LjkwOCAzOC41NjdDMzY3LjI2NiAzOC4yMTMgMzY3LjYyNCAzOC4wMzYgMzY3Ljk4MyAzOC4wMzZDMzY4LjM0MSAzOC4wMzYgMzY4LjY4OCAzOC4yMDEyIDM2OS4wMjIgMzguNTMxNkMzNjkuMzgxIDM4Ljg4NTYgMzY5LjU2IDM5LjIzOTUgMzY5LjU2IDM5LjU5MzVDMzY5LjU2IDM5Ljk0NzUgMzY5LjM5MyA0MC4yODk3IDM2OS4wNTggNDAuNjJMMzYxLjQ2IDQ4LjQwNzRMMzcwLjQyIDU5LjQxNlpNMzgxLjg1IDYyQzM3OS43OTUgNjIgMzc4LjE5NCA2MS41OTg4IDM3Ny4wNDggNjAuNzk2NUMzNzUuOTI1IDU5Ljk3MDYgMzc1LjIyIDU4LjcwOCAzNzQuOTMzIDU3LjAwOUMzNzQuODg1IDU2LjUxMzQgMzc0Ljk5MyA1Ni4xMzU5IDM3NS4yNTUgNTUuODc2M0MzNzUuNTE4IDU1LjU5MzEgMzc1LjkwMSA1NS40NTE1IDM3Ni40MDIgNTUuNDUxNUMzNzYuODggNTUuNDUxNSAzNzcuMjM5IDU1LjU2OTUgMzc3LjQ3OCA1NS44MDU1QzM3Ny43MTcgNTYuMDE3OSAzNzcuODg0IDU2LjM4MzYgMzc3Ljk3OSA1Ni45MDI4QzM3OC4xNDcgNTcuNzA1MSAzNzguNTE3IDU4LjI1OTcgMzc5LjA5IDU4LjU2NjVDMzc5LjY4OCA1OC44NzMyIDM4MC42MDggNTkuMDI2NiAzODEuODUgNTkuMDI2NkgzODcuMDExQzM4OC4wNjIgNTkuMDI2NiAzODguODYzIDU4LjkwODYgMzg5LjQxMiA1OC42NzI3QzM4OS42ODQgNTguNTY3NiAzODkuOTMyIDU4LjQxMDIgMzkwLjE0MSA1OC4yMDk3QzM5MC4zNSA1OC4wMDkxIDM5MC41MTcgNTcuNzY5NCAzOTAuNjMxIDU3LjUwNDVDMzkwLjg3IDU2LjkzODIgMzkwLjk4OSA1Ni4xNDc2IDM5MC45ODkgNTUuMTMyOUMzOTAuOTg5IDUzLjYyMjYgMzkwLjcwMyA1Mi41ODQzIDM5MC4xMjkgNTIuMDE4QzM4OS41NTYgNTEuNDUxNiAzODguNTE2IDUxLjE2ODQgMzg3LjAxMSA1MS4xNjg0SDM4Mi41NjdDMzgwLjMyMSA1MS4xNjg0IDM3OC42NDggNTAuNjI1NyAzNzcuNTQ5IDQ5LjU0MDJDMzc2LjQ1IDQ4LjQ1NDYgMzc1LjkwMSA0Ni43OTEgMzc1LjkwMSA0NC41NDkxQzM3NS45MDEgNDIuMzMwOSAzNzYuNDM4IDQwLjY5MDggMzc3LjUxMyAzOS42Mjg5QzM3OC42MTMgMzguNTQzNCAzODAuMjg1IDM4LjAwMDYgMzgyLjUzMSAzOC4wMDA2SDM4Ni43OTZDMzkwLjU3MSAzOC4wMDA2IDM5Mi43NDYgMzkuNTU4MSAzOTMuMzE5IDQyLjY3MzFDMzkzLjM5MSA0My4xNjg2IDM5My4yOTUgNDMuNTU4IDM5My4wMzIgNDMuODQxMkMzOTIuNzcgNDQuMTAwOCAzOTIuMzc1IDQ0LjIzMDYgMzkxLjg1IDQ0LjIzMDZDMzkxLjM3MiA0NC4yMzA2IDM5MS4wMTMgNDQuMTEyNiAzOTAuNzc0IDQzLjg3NjZDMzkwLjUzNSA0My42NDA2IDM5MC4zOCA0My4yNzQ4IDM5MC4zMDggNDIuNzc5M0MzOTAuMTE3IDQyLjA5NDkgMzg5Ljc1OSA0MS42MjMgMzg5LjIzMyA0MS4zNjM0QzM4OC43MDggNDEuMTAzOCAzODcuODk1IDQwLjk3NCAzODYuNzk2IDQwLjk3NEgzODIuNTMxQzM4MS41NTEgNDAuOTc0IDM4MC43OTkgNDEuMDgwMiAzODAuMjczIDQxLjI5MjZDMzgwLjAyOCA0MS4zOTQzIDM3OS44MDcgNDEuNTQzOSAzNzkuNjIyIDQxLjczMjVDMzc5LjQzNyA0MS45MjExIDM3OS4yOTMgNDIuMTQ0NyAzNzkuMTk4IDQyLjM4OTlDMzc5LjAwNyA0Mi44ODU1IDM3OC45MTEgNDMuNjA1MiAzNzguOTExIDQ0LjU0OTFDMzc4LjkxMSA0NS41MTY3IDM3OS4wMTkgNDYuMjYgMzc5LjIzNCA0Ni43NzkyQzM3OS40NDkgNDcuMjc0NyAzNzkuODA3IDQ3LjY0MDUgMzgwLjMwOSA0Ny44NzY1QzM4MC44MzUgNDguMDg4OSAzODEuNTg3IDQ4LjE5NTEgMzgyLjU2NyA0OC4xOTUxSDM4Ny4wMTFDMzg5LjM3NyA0OC4xOTUxIDM5MS4xMzMgNDguNzYxNCAzOTIuMjggNDkuODk0MUMzOTMuNDI3IDUxLjAyNjggMzk0IDUyLjc3MzEgMzk0IDU1LjEzMjlDMzk0IDU3LjQ2OTEgMzkzLjQyNyA1OS4yMDM2IDM5Mi4yOCA2MC4zMzYzQzM5MS4xMzMgNjEuNDQ1NCAzODkuMzc3IDYyIDM4Ny4wMTEgNjJIMzgxLjg1WiIgZmlsbD0iI0UyMkYyMiIvPgo8cGF0aCBkPSJNMzYuNzM2IDBMMCAxOS4yNThMMC40NzA5OTMgNjMuNTczTDIyLjg0MSA3Ni4zMzRMMzYuOTcyIDEwMEw1MC42MyA3Ni4zMzRMNzMgNjMuNjlWMTkuNDlMMzYuNzM2IDBaTTI5LjY3IDY0LjI3TDE0LjM2NCA1NS42ODVWMzUuNDk4TDI5LjY3IDQ0LjU0N1Y2NC4yNjhWNjQuMjdaTTIxLjkgMjMuNDMzTDM2LjczNSAxNS43NzZMNTEuMzM1IDIzLjQzM0wzNi43MzUgMzIuMDE4TDIxLjkgMjMuNDMzWk01OC44NzEgNTUuNjgzTDQzLjggNjQuMjdWNDQuNTQ4TDU4Ljg3MSAzNS43MzFWNTUuNjgzWiIgZmlsbD0iI0UyMkYyMiIvPgo8L3N2Zz4K"},9:(M,e,N)=>{N.d(e,{A:()=>D});const D={navigation:"kiMVxg7uvmObzH9y5Nf7",subtitle:"lh6Gp5uMZoFjdsD0piCQ",active:"IHgUS1orY8DkWO_fbRhQ"}},299:(M,e,N)=>{N.d(e,{A:()=>D});const D={wrapper:"Ub1Qwzm7eiO9i1pfS4JA",header:"MHfJiF9ZtWnpmRSznlsA",container:"bDqx83XSEFfGnp0RCn6r",logo:"s2jFJ3kbxHqVjcXOAa_e",headerNavigation:"O0TgIPrk1w9xxx2FS7rI"}},613:(M,e,N)=>{N.d(e,{A:()=>D});const D={tag:"BBrTfwaRpiXTsfXQotgf",help:"eiQPya4NGNSbJXhlQrFG",default:"Qrwn2ZFHSg4CzQ5B2Hju",info:"dK0gZ8H42AMHDmiT90gt",warning:"Iq2GVHFXIvyadiMTJhPA",error:"IAqnveipCAc7HoEDOSlg",label:"g0nlWBX7OmQcFqR6UoAB",icon:"wLv8qHa44_fOcOtj0hCA"}},609:M=>{M.exports=window.React},455:M=>{M.exports=window.wp.apiFetch},427:M=>{M.exports=window.wp.components},87:M=>{M.exports=window.wp.element},723:M=>{M.exports=window.wp.i18n},129:(M,e,N)=>{N.d(e,{A:()=>n});var D=N(609),t=N(87),z=N(818),j=N(9),c=N(723);const n=({})=>{const{finder:M,preferences:e}=(0,z.h)(),{setSelectedBlock:N}=e,{foundBlocks:n,withFilters:g}=M,[l,u]=(0,t.useState)(null),o=g(n);return(0,D.createElement)("nav",{className:j.A.navigation},(0,D.createElement)("ul",null,o.map((M=>(0,D.createElement)("li",{key:M.name,className:l===M.name?j.A.active:"",onClick:()=>{return e=M.name,N(e),void u(e);var e}},M.name," ",(0,D.createElement)("span",{className:j.A.subtitle},(0,c.__)("Found in","find-my-blocks")," ",M.posts.length," ",M.posts.length>1?(0,c.__)("locations","find-my-blocks"):(0,c.__)("location","find-my-blocks")))))))}},136:(M,e,N)=>{N.d(e,{A:()=>g});var D=N(609),t=N(427),z=N(299),j=N(723),c=N(46),n=N(818);const g=({children:M})=>{const{finder:e}=(0,n.h)(),{isLoading:N,reset:g,startSearch:l,foundBlocks:u}=e;return(0,D.createElement)("div",{className:z.A.wrapper},(0,D.createElement)("div",{className:z.A.header},(0,D.createElement)("div",{className:z.A.container},(0,D.createElement)("img",{className:z.A.logo,src:c.A,alt:"Find My Blocks Logo",onClick:()=>u.length>0&&g()}),(0,D.createElement)("div",{className:z.A.headerNavigation},(0,D.createElement)(t.Button,{onClick:()=>u.length>0?g():l(),icon:u.length>0?"update-alt":null,isPrimary:!0,disabled:N},u.length>0?(0,j.__)("Re-scan","find-my-blocks"):(0,j.__)("Search","find-my-blocks")),(0,D.createElement)(t.DropdownMenu,{icon:"menu",label:"Select a direction"},(({onClose:M})=>(0,D.createElement)(D.Fragment,null,(0,D.createElement)(t.MenuGroup,{label:(0,j.__)("Quick Links","find-my-blocks")},(0,D.createElement)(t.MenuItem,{href:fmbGlobal.admin_url+"/edit.php?post_type=wp_block"},(0,j.__)("Reusable Patterns","find-my-blocks"))),(0,D.createElement)(t.MenuGroup,{label:(0,j.__)("Support","find-my-blocks")},(0,D.createElement)(t.MenuItem,{icon:"star-filled",href:"https://wordpress.org/support/plugin/find-my-blocks/reviews/",target:"_blank"},(0,j.__)("Review on wp.org","find-my-blocks")),(0,D.createElement)(t.MenuItem,{icon:"sos",href:"https://wordpress.org/support/plugin/find-my-blocks/",target:"_blank"},(0,j.__)("Support forum","find-my-blocks")),(0,D.createElement)(t.MenuItem,{icon:"external",href:"https://findmyblocks.com/?utm_source=wordpress_site&utm_medium=navigation&utm_campaign=find_my_blocks_active_install",target:"_blank"},"findmyblocks.com")))))))),M)}},774:(M,e,N)=>{N.d(e,{p:()=>n});var D=N(609),t=N(427),z=N(723),j=N(78);const c=({post:M,blockName:e})=>{const N=function(M){const N=[];return M.hasConditionalBlocks&&N.push({label:(0,z.__)("Conditional","find-my-blocks"),help:(0,D.createElement)("span",null,(0,z.__)("via","find-my-blocks")," ",(0,D.createElement)(t.ExternalLink,{target:"_blank",href:"https://conditionalblocks.com/"},"Conditional Blocks")),icon:"randomize",variation:"info"}),M.isSyncedPattern&&N.push({label:(0,z.__)("Synced Pattern","find-my-blocks"),icon:"networking",variation:"warning"}),M.count>1&&N.push({label:`${M.count}x `+e,icon:"list-view",variation:"info"}),M.isNested&&N.push({label:(0,z.__)("Nested in: ","find-my-blocks")+M.nestedBlockType,icon:"align-center",variation:"info"}),N}(M);return(0,D.createElement)(t.Card,{size:"small",className:"fmb-card"},(0,D.createElement)(t.CardHeader,{isBorderless:!0},(0,D.createElement)("div",null,(0,D.createElement)("span",{className:"fmb-card-title"},M.title),(0,D.createElement)("span",{className:"fmb-card-meta"},(0,D.createElement)("code",null,M?.postType)," ",M?.isThirdPartyTemplate&&(0,D.createElement)("code",null,M?.templateProvider)," ")),(0,D.createElement)("div",null,(0,D.createElement)(t.Button,{target:"_blank",isTertiary:!0,href:M.post_url,size:"small"},(0,z.__)("Preview","find-my-blocks")),(0,D.createElement)(t.Button,{target:"_blank",isTertiary:!0,href:M.edit_url,size:"small"},(0,z.__)("Edit","find-my-blocks")))),N.length>0&&(0,D.createElement)(D.Fragment,null,(0,D.createElement)(t.CardDivider,null),(0,D.createElement)(t.CardBody,null,N.map((M=>(0,D.createElement)(j.v,{key:M.label,...M}))))))};function n({posts:M,blockName:e=""}){return!M||M.length<1?(0,D.createElement)("div",null,(0,D.createElement)("h2",null,(0,z.__)("No locations found","find-my-blocks")),(0,z.__)("Please select a block from the menu, or check the filters.","find-my-blocks")):(0,D.createElement)("div",{className:"fmb-card-grid"},M.map(((M,N)=>(0,D.createElement)(c,{key:e+M?.id,post:M,blockName:e}))))}},78:(M,e,N)=>{N.d(e,{v:()=>j});var D=N(609),t=N(613),z=N(427);const j=({variation:M="default",icon:e,label:N,help:j})=>{const c=((...M)=>M.filter(Boolean).join(" "))(t.A.tag,t.A[M]);return(0,D.createElement)("div",{className:c},e&&(0,D.createElement)(z.Icon,{icon:e,className:t.A.Icon}),(0,D.createElement)("div",{className:t.A.label},N),j&&(0,D.createElement)("div",{className:t.A.help}," ",j))}},818:(M,e,N)=>{N.d(e,{h:()=>g,z:()=>n});var D=N(609),t=N(87),z=N(352),j=N(216);const c=(0,t.createContext)(),n=({children:M})=>{var e;const N=(0,z.g)(),t={posts_per_page:N.postsPerRun},n={preferences:N,finder:(0,j.g)({searchArgs:t,cachedFoundBlocks:null!==(e=N?.cachedFoundBlocks)&&void 0!==e?e:[],setCachedFoundBlocks:N.setCachedFoundBlocks})};return(0,D.createElement)(c.Provider,{value:n},M)},g=()=>{const M=(0,t.useContext)(c);if(!M)throw new Error("useFindMyBlocks must be used within an FindMyBlocksProvider");return M}},216:(M,e,N)=>{N.d(e,{g:()=>j});var D=N(87),t=N(723),z=N(455);const j=({searchArgs:M={},cachedFoundBlocks:e=[],setCachedFoundBlocks:N})=>{const j={name:!1,blockProvider:!1,hasConditionalBlocks:!1},[n,g]=(0,D.useState)([]),[l,u]=(0,D.useState)(j),[o,a]=(0,D.useState)(!1),[r,I]=(0,D.useState)(null),[i,s]=(0,D.useState)({currentPage:0,totalPages:0,percentage:0,totalPosts:0,totalBlocks:0,totalScannedPosts:0}),[A,y]=(0,D.useState)("asc"),T=(0,D.useRef)(null),L=()=>{T.current&&T.current.abort(),g([]),N([]),a(!1),I(null),s({currentPage:0,totalPages:0,percentage:0,totalPosts:0,totalBlocks:0,totalScannedPosts:0}),y("asc")};let E=!0;(0,D.useEffect)((()=>{E&&e&&e.length>0&&(E=!1,g(O(A,e)))}),[e]);const O=(M,e)=>{const N=[...e].sort(((e,N)=>"asc"===M?e.name.localeCompare(N.name):N.name.localeCompare(e.name)));return N.forEach((e=>{e.posts&&Array.isArray(e.posts)&&e.posts.sort(((e,N)=>"asc"===M?e.title.localeCompare(N.title):N.title.localeCompare(e.title)))})),N},k=M=>(l.name&&(M=M.filter((M=>M.name.toLowerCase().includes(l.name.toLowerCase())))),l.blockProvider&&(M=M.filter((M=>M.name.split("/")[0].toLowerCase().includes(l.blockProvider.toLowerCase())))),l.hasConditionalBlocks&&(M=M.map((M=>{const e=M.posts.filter((M=>M.hasConditionalBlocks));return e.length>0?{...M,posts:e}:null})).filter((M=>null!==M))),M);return{reset:L,foundBlocks:n,withFilters:k,setFilters:u,isLoading:o,error:r,startSearch:async()=>{L(),a(!0);const e=new AbortController;T.current=e;let D=1,n=0,l=0,o=[],i=0;try{for(;(l<n||1===D)&&!T.current.signal.aborted;){const N=setTimeout((()=>e.abort()),15e3),j=new URLSearchParams({...M,paged:D}).toString();try{const M=await z({path:`find-my-blocks/v1/search?${j}`,signal:e.signal});if(clearTimeout(N),await new Promise((M=>setTimeout(M,1e3))),!M?.data)break;{const{blocks:e,scanned_posts:N,total_posts:t,total_pages:z}=M.data;if(1===D&&(n=t),i+=e.reduce(((M,e)=>M+e.posts.length),0),l+=N,s({currentPage:D,totalPages:z,percentage:Math.round(D/z*100),totalBlocks:i,totalPosts:n,totalScannedPosts:l}),o=o.concat(e),D++,D>z)break}}catch(M){clearTimeout(N),"AbortError"===M.name?(console.error((0,t.__)("Search aborted or timeout reached - Please try lower the amount of posts to search per request.","find-my-blocks"),M),I(new Error((0,t.__)("Abort/timeout error. Try choosing a lower amount of posts to search per request.","find-my-blocks")))):(console.error("Error fetching blocks:",M),I(M));break}}}finally{if(T.current=null,!r)if(o.length>0){const M=c(o),e=O(A,M);u(j),g(e),N(e)}else console.log(r),L();a(!1)}},abortSearch:()=>{T.current&&(T.current.abort(),console.log("Search aborted by user."),I(new Error((0,t.__)("Search aborted by user","find-my-blocks"))))},progress:i,postsWithBlock:M=>{const e=k(n).find((e=>e.name===M));return e?e.posts:[]}}},c=M=>{const e=new Map;return M.forEach((M=>{if(e.has(M.name)){const N=e.get(M.name);M.posts.forEach((M=>{const e=N.posts.findIndex((e=>e.id===M.id));-1!==e?N.posts[e].count+=M.count:N.posts.push(M)}))}else e.set(M.name,{...M,posts:[...M.posts]})})),Array.from(e.values())}},864:(M,e,N)=>{N.d(e,{M:()=>z});var D=N(87);const t=new Map,z=(M,e)=>{const[N,z]=(0,D.useState)(e),[j,c]=(0,D.useState)(!0);return(0,D.useEffect)((()=>{if(j){c(!1);const N=JSON.parse(localStorage.getItem(M));z(null!=N?N:e)}}),[j,M,e]),(0,D.useEffect)((()=>{const e=M=>{z(M)};return((M,e)=>{t.has(M)||t.set(M,[]),t.get(M).push(e)})(M,e),()=>{((M,e)=>{const N=t.get(M)||[],D=N.indexOf(e);D>-1&&N.splice(D,1)})(M,e)}}),[M]),[N,(0,D.useCallback)((e=>{localStorage.setItem(M,JSON.stringify(e)),((M,e)=>{(t.get(M)||[]).forEach((M=>M(e)))})(M,e)}),[M])]}},352:(M,e,N)=>{N.d(e,{g:()=>t});var D=N(864);const t=()=>{const[M,e]=(0,D.M)("fmb_selected_block",""),[N,t]=(0,D.M)("fmb_posts_per_run",10),[z,j]=(0,D.M)("fmb_found_blocks",!1),[c,n]=(0,D.M)("fmb_selected_provider",!1),[g,l]=(0,D.M)("fmb_version_cache",!1),[u,o]=(0,D.M)("fmb_conditional_blocks",!1);return{cachedFoundBlocks:fmbGlobal.version===g&&z,setCachedFoundBlocks:M=>{l(fmbGlobal.version),n(!1),e(!1),o(!1),j(M)},selectedBlock:M,setSelectedBlock:e,selectedProvider:c,setSelectedProvider:n,postsPerRun:parseInt(N),setPostsPerRun:t,conditionalBlocks:u,setConditionalBlocks:o}}},948:(M,e,N)=>{N.d(e,{A:()=>I});var D=N(609),t=N(87),z=N(723),j=N(774),c=N(129),n=N(818),g=N(431),l=N(427);const u=({error:M})=>M?(0,D.createElement)(l.Notice,{status:"error"},M.message):null;function o({className:M}){const{finder:e,preferences:N}=(0,n.h)(),[z,j]=(0,t.useState)("");return(0,D.createElement)(l.SearchControl,{value:z,onChange:M=>{j(M),e.setFilters((e=>({...e,name:!!M.length&&M})))}})}function a(){var M;const{finder:e,preferences:N}=(0,n.h)(),[z,j]=(0,t.useState)(null!==(M=N?.selectedProvider)&&void 0!==M&&M),c=(0,g.g)(e.foundBlocks);return(0,D.createElement)(l.ComboboxControl,{allowReset:!0,label:"Block Provider",help:"Core or third-party block providers",value:z,onChange:M=>{j(M),N?.setSelectedProvider(M),e.setFilters((e=>({...e,blockProvider:null!=M&&M})))},options:c,onFilterValueChange:M=>j(c.filter((e=>e.label.toLowerCase().startsWith(M.toLowerCase()))))})}const r=()=>{const{finder:M,preferences:e}=(0,n.h)(),[N,j]=(0,t.useState)(!!e?.conditionalBlocks);return(0,D.createElement)(l.CheckboxControl,{label:"Conditional Blocks",help:(0,z.__)("Only blocks with visibility changed by the Conditional Blocks plugin","find-my-blocks"),checked:N,onChange:N=>{j(!!N),e?.setConditionalBlocks(!!N),M.setFilters((M=>({...M,hasConditionalBlocks:!!N})))}})},I=function(){const{finder:M,preferences:e}=(0,n.h)(),{foundBlocks:N,startSearch:g,abortSearch:I,progress:i,isLoading:s,error:A,postsWithBlock:y}=M,{selectedBlock:T,postsPerRun:L,setPostsPerRun:E}=e;if(s)return(0,D.createElement)("div",{className:"fmb-bento-container"},(0,D.createElement)("div",{className:"fmb-bento-grid"},(0,D.createElement)("div",{className:"fmb-box fmb-box-full"},(0,D.createElement)("h2",null,(0,z.__)("Searching for your blocks...","find-my-blocks")),(0,D.createElement)("p",null,(0,z.__)("Progress:","find-my-blocks")," ",i.percentage,"%"),(0,D.createElement)("p",null,(0,z.__)("Scanning batch","find-my-blocks")," ",i.currentPage," ",(0,z.__)("out of","find-my-blocks")," ",i.totalPages),(0,D.createElement)("p",null,(0,z.__)("Total block instances detected:","find-my-blocks")," ",i.totalBlocks," "+(0,z.__)("in","find-my-blocks")," ",i.totalScannedPosts," "+(0,z.__)("locations.","find-my-blocks")),(0,D.createElement)(l.Button,{onClick:()=>I(),isDestructive:!0,isPrimary:!0,disabled:!s},(0,z.__)("Abort Search","find-my-blocks")))));const O=y(T);var k;return!A&&N.length>0?(0,D.createElement)(t.Fragment,null,(0,D.createElement)("div",{className:"fmb-container"},(0,D.createElement)("div",{className:"fmb-grid-results-page"},(0,D.createElement)("div",{className:"fmb-box"},(0,D.createElement)("h2",null,(0,z.__)("Filters","find-my-blocks")),(0,D.createElement)("div",{className:"fmb-search-filters"},(0,D.createElement)(o,null),(0,D.createElement)(a,null),fmbGlobal?.conditional_blocks_installed&&(0,D.createElement)(r,null)),(0,D.createElement)("h2",null,(0,z.__)("Found Blocks","find-my-blocks")),(0,D.createElement)("p",null,(0,z.__)("The below blocks have been detected during the scan.","find-my-blocks")),(0,D.createElement)("nav",{className:"fmb-side-navigation"},(0,D.createElement)(c.A,null))),(0,D.createElement)("div",null,T&&(0,D.createElement)(t.Fragment,null,(0,D.createElement)("h2",null,(0,D.createElement)("span",{className:"fmb-badge"},T)),O?.length>0&&(0,D.createElement)("p",null,(0,z.__)("Instances of the","find-my-blocks")," ",(0,D.createElement)("b",null,T)," ",(0,z.__)("block has been found in these","find-my-blocks")," ",null!==(k=O.length)&&void 0!==k?k:0," ",(0,z.__)("locations.","find-my-blocks"))),(0,D.createElement)(j.p,{blockName:T,posts:O}))))):(0,D.createElement)(t.Fragment,null,(0,D.createElement)(u,{error:A}),(0,D.createElement)("div",{className:"fmb-bento-container"},(0,D.createElement)("div",{className:"fmb-bento-grid"},(0,D.createElement)("div",{className:"fmb-box fmb-box-full"},(0,D.createElement)("h2",null,(0,z.__)("Get Started","find-my-blocks")),(0,D.createElement)("p",null,(0,z.__)("Find My Blocks will search through all your templates, posts and pages to find the WordPress blocks.","find-my-blocks")),(0,D.createElement)(l.RadioControl,{className:"fmb-performance-control",label:"Performance",help:(0,z.__)("Warning! Choose the performance level that matches your server. Fetching too may posts at once may temporarily crash your site.","find-my-blocks"),onChange:M=>{E(M)},options:[{label:(0,z.__)("Low (Recommended for most sites, 10 post per run)","find-my-blocks"),value:10},{label:(0,z.__)("Standard (100 posts per run)","find-my-blocks"),value:100},{label:(0,z.__)("Ultra (500 posts per run)","find-my-blocks"),value:500}],selected:null!=L?L:10}),(0,D.createElement)(l.Button,{onClick:()=>g(),isPrimary:!0,disabled:s},(0,z.__)("Start Search","find-my-blocks"))),(0,D.createElement)("div",{className:"fmb-box"},(0,D.createElement)("h2",null,(0,z.__)("Block Tools & Resources","find-my-blocks")),(0,D.createElement)("p",null,(0,z.__)("Create faster & better WordPress sites with block tutorials from experts.","find-my-blocks")),(0,D.createElement)("ul",null,(0,D.createElement)("li",null,(0,D.createElement)(l.ExternalLink,{href:"https://findmyblocks.com?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install",target:"_blank"},"findmyblocks.com")),(0,D.createElement)("li",null,(0,D.createElement)(l.ExternalLink,{href:"https://conditionalblocks.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install",target:"_blank"},"Conditional Blocks plugin")),(0,D.createElement)("li",null,(0,D.createElement)(l.ExternalLink,{href:"https://morganhvidt.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install",target:"_blank"},"@MorganHvidt"),(0,z.__)("(Developer) ","find-my-blocks")))),(0,D.createElement)("div",{className:"fmb-box"},(0,D.createElement)("h2",null,(0,z.__)("Support Development","find-my-blocks")),(0,D.createElement)("p",null,(0,z.__)("I'm building Find My Blocks in my free time. If you find it useful, please consider donating, or contributing to the project.","find-my-blocks")," ",(0,D.createElement)("em",null,"- Morgan Hvidt")),(0,D.createElement)("div",{style:{marginTop:"30px"}},(0,D.createElement)(l.Button,{isSecondary:!0,target:"_blank",href:"https://github.com/morganhvidt/find-my-blocks/"},(0,z.__)("Contribute on Github","find-my-blocks"))," ",(0,D.createElement)(l.Button,{style:{marginLeft:"10px"},isSecondary:!0,target:"_blank",href:"https://morganhvidt.com/donate/"},(0,z.__)("Donate to development","find-my-blocks")))))))}},431:(M,e,N)=>{function D(M){return M.reduce(((M,e)=>{var N;const D=null!==(N=e.name.split("/")[0])&&void 0!==N&&N;return M.some((M=>M.value===D))||M.push({value:D,label:D}),M}),[])}N.d(e,{g:()=>D})}},e={};function N(D){var t=e[D];if(void 0!==t)return t.exports;var z=e[D]={exports:{}};return M[D](z,z.exports,N),z.exports}N.n=M=>{var e=M&&M.__esModule?()=>M.default:()=>M;return N.d(e,{a:e}),e},N.d=(M,e)=>{for(var D in e)N.o(e,D)&&!N.o(M,D)&&Object.defineProperty(M,D,{enumerable:!0,get:e[D]})},N.o=(M,e)=>Object.prototype.hasOwnProperty.call(M,e),(()=>{var M=N(609),e=N(87),D=(N(723),N(948)),t=N(818),z=N(136);function j(){return(0,M.createElement)(e.Fragment,null,(0,M.createElement)(t.z,null,(0,M.createElement)(z.A,null),(0,M.createElement)(D.A,null)))}document.addEventListener("DOMContentLoaded",(()=>{const N=document.getElementById("find-my-blocks-app");N&&(e.createRoot?(0,e.createRoot)(N).render((0,M.createElement)(j,null)):(0,e.render)((0,M.createElement)(j,null),N))}))})()})();
     1(()=>{"use strict";var M={46:(M,e,N)=>{N.d(e,{A:()=>t}),N(609);const t="data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzk0IiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDM5NCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMDQuNTA3IDYyQzEwNC4wMjkgNjIgMTAzLjY1NyA2MS44NzAyIDEwMy4zOTQgNjEuNjEwNkMxMDMuMTMxIDYxLjM1MSAxMDMgNjAuOTg1MyAxMDMgNjAuNTEzM1YzOS40ODczQzEwMyAzOS4wMTU0IDEwMy4xMzEgMzguNjQ5NiAxMDMuMzk0IDM4LjM5QzEwMy42NTcgMzguMTMwNCAxMDQuMDI3IDM4LjAwMDYgMTA0LjUwNSAzOC4wMDA2SDExNy42OTVDMTE4LjE3MiAzOC4wMDA2IDExOC41NDMgMzguMTMwNCAxMTguODA2IDM4LjM5QzExOS4wNjggMzguNjQ5NiAxMTkuMiAzOS4wMTU0IDExOS4yIDM5LjQ4NzNDMTE5LjIgMzkuOTU5MyAxMTkuMDY4IDQwLjMyNTEgMTE4LjgwNiA0MC41ODQ2QzExOC41NDMgNDAuODQ0MiAxMTguMTcyIDQwLjk3NCAxMTcuNjk1IDQwLjk3NEgxMDYuMDExVjQ4LjQwNzRIMTEzLjIxNUMxMTMuNjkyIDQ4LjQwNzQgMTE0LjA2MyA0OC41MzcyIDExNC4zMjYgNDguNzk2OEMxMTQuNTg4IDQ5LjA1NjQgMTE0LjcyIDQ5LjQyMjIgMTE0LjcyIDQ5Ljg5NDFDMTE0LjcyIDUwLjM2NjEgMTE0LjU4OCA1MC43MzE5IDExNC4zMjYgNTAuOTkxNEMxMTQuMDYzIDUxLjI1MSAxMTMuNjkyIDUxLjM4MDggMTEzLjIxNSA1MS4zODA4SDEwNi4wMTFWNjAuNTEzM0MxMDYuMDExIDYwLjk4NTMgMTA1Ljg3OSA2MS4zNTEgMTA1LjYxNiA2MS42MTA2QzEwNS4zNTQgNjEuODcwMiAxMDQuOTgzIDYyIDEwNC41MDUgNjJIMTA0LjUwN1pNMTI0LjQyMSA2MkMxMjMuODk1IDYyIDEyMy41MTMgNjEuODgyIDEyMy4yNzQgNjEuNjQ2QzEyMy4wMzUgNjEuNDEgMTIyLjkxNSA2MS4wMzI1IDEyMi45MTUgNjAuNTEzM1YzOS41MjI3QzEyMi45MTUgMzkuMDAzNiAxMjMuMDM1IDM4LjYyNiAxMjMuMjc0IDM4LjM5QzEyMy41MTMgMzguMTU0IDEyMy44OTUgMzguMDM2IDEyNC40MjEgMzguMDM2QzEyNC45NDYgMzguMDM2IDEyNS4zMjkgMzguMTU0IDEyNS41NjcgMzguMzlDMTI1LjgwNiAzOC42MjYgMTI1LjkyNiAzOS4wMDM2IDEyNS45MjYgMzkuNTIyN1Y2MC41MTMzQzEyNS45MjYgNjEuMDMyNSAxMjUuODA2IDYxLjQxIDEyNS41NjcgNjEuNjQ2QzEyNS4zMjkgNjEuODgyIDEyNC45NDYgNjIgMTI0LjQyMSA2MlpNMTUxLjU1MiAzOC4wMDA2QzE1Mi4wMyAzOC4wMDA2IDE1Mi40IDM4LjEzMDQgMTUyLjY2MyAzOC4zOUMxNTIuOTI2IDM4LjY0OTYgMTUzLjA1NyAzOS4wMTU0IDE1My4wNTcgMzkuNDg3M1Y2MC41MTMzQzE1My4wNTcgNjAuOTg1MyAxNTIuOTI2IDYxLjM1MSAxNTIuNjYzIDYxLjYxMDZDMTUyLjQgNjEuODcwMiAxNTIuMDMgNjIgMTUxLjU1MiA2MkMxNTEuMjY1IDYyIDE1MS4wMDIgNjEuOTI5MiAxNTAuNzYzIDYxLjc4NzZDMTUwLjQ4NCA2MS42MDkxIDE1MC4yNDEgNjEuMzgxMSAxNTAuMDQ2IDYxLjExNTFMMTM2LjM5MSA0My43MzVWNjAuNTEzM0MxMzYuMzkxIDYwLjk4NTMgMTM2LjI2IDYxLjM1MSAxMzUuOTk3IDYxLjYxMDZDMTM1LjczNCA2MS44NzAyIDEzNS4zNjQgNjIgMTM0Ljg4NiA2MkMxMzQuNDA4IDYyIDEzNC4wMzggNjEuODcwMiAxMzMuNzc1IDYxLjYxMDZDMTMzLjUxMiA2MS4zNTEgMTMzLjM4MSA2MC45ODUzIDEzMy4zODEgNjAuNTEzM1YzOS40ODczQzEzMy4zODEgMzkuMDE1NCAxMzMuNTEyIDM4LjY0OTYgMTMzLjc3NSAzOC4zOUMxMzQuMDM4IDM4LjEzMDQgMTM0LjQwOCAzOC4wMDA2IDEzNC44ODYgMzguMDAwNkMxMzUuMTczIDM4LjAwMDYgMTM1LjQyNCAzOC4wNzE0IDEzNS42MzkgMzguMjEzQzEzNS44NzggMzguMzU0NiAxMzYuMTI4IDM4LjU3ODggMTM2LjM5MSAzOC44ODU2TDE1MC4wNDYgNTYuMjY1NlYzOS40ODczQzE1MC4wNDYgMzkuMDE1NCAxNTAuMTc4IDM4LjY0OTYgMTUwLjQ0MSAzOC4zOUMxNTAuNzA0IDM4LjEzMDQgMTUxLjA3NCAzOC4wMDA2IDE1MS41NTIgMzguMDAwNlpNMTYyLjAxMSA2MkMxNjEuNTMzIDYyIDE2MS4xNjMgNjEuODcwMiAxNjAuOSA2MS42MTA2QzE2MC42MzcgNjEuMzUxIDE2MC41MDYgNjAuOTg1MyAxNjAuNTA2IDYwLjUxMzNWMzkuNDg3M0MxNjAuNTA2IDM5LjAxNTQgMTYwLjYzNyAzOC42NDk2IDE2MC45IDM4LjM5QzE2MS4xNjMgMzguMTMwNCAxNjEuNTMzIDM4LjAwMDYgMTYyLjAxMSAzOC4wMDA2SDE3MC42NDlDMTczLjc3OSAzOC4wMDA2IDE3Ni4wNzMgMzguNzMyMiAxNzcuNTMgNDAuMTk1M0MxNzkuMDExIDQxLjYzNDggMTc5Ljc1MiA0My45MDAyIDE3OS43NTIgNDYuOTkxNVY1My4wMDkxQzE3OS43NTIgNTYuMTAwNCAxNzkuMDExIDU4LjM3NzcgMTc3LjUzIDU5Ljg0MDhDMTc2LjA3MyA2MS4yODAyIDE3My43NzkgNjIgMTcwLjY0OSA2MkgxNjIuMDExWk0xNzAuNjQ5IDU5LjAyNjZDMTcyLjIwMiA1OS4wMjY2IDE3My40MDggNTguODM3OCAxNzQuMjY5IDU4LjQ2MDNDMTc1LjEyIDU4LjExNDEgMTc1LjgwMiA1Ny40NTM5IDE3Ni4xNjggNTYuNjE5NkMxNzYuNTUgNTUuNzQ2NSAxNzYuNzQyIDU0LjU0MyAxNzYuNzQyIDUzLjAwOTFWNDYuOTkxNUMxNzYuNzQyIDQ1LjQ1NzcgMTc2LjU1IDQ0LjI2NiAxNzYuMTY4IDQzLjQxNjRDMTc1LjgxMSA0Mi41Njc5IDE3NS4xMjggNDEuODkzNSAxNzQuMjY5IDQxLjU0MDRDMTczLjQwOCA0MS4xNjI4IDE3Mi4yMDIgNDAuOTc0IDE3MC42NDkgNDAuOTc0SDE2My41MTZWNTkuMDI2NkgxNzAuNjQ5Wk0yMTguOTMyIDM4LjAwMDZDMjE5Ljc0NCAzOC4wMDA2IDIyMC4xNSAzOC40OTYyIDIyMC4xNSAzOS40ODczVjYwLjUxMzNDMjIwLjE1IDYwLjk4NTMgMjIwLjAxOSA2MS4zNTEgMjE5Ljc1NiA2MS42MTA2QzIxOS40OTMgNjEuODcwMiAyMTkuMTIzIDYyIDIxOC42NDUgNjJDMjE4LjE2NyA2MiAyMTcuNzk3IDYxLjg3MDIgMjE3LjUzNCA2MS42MTA2QzIxNy4yNzEgNjEuMzUxIDIxNy4xNCA2MC45ODUzIDIxNy4xNCA2MC41MTMzVjQ0LjEyNDRMMjEwLjU0NSA1My43MTdDMjEwLjMwNiA1NC4wNDc0IDIxMC4wNDMgNTQuMjk1MiAyMDkuNzU3IDU0LjQ2MDRDMjA5LjQzMiA1NC42MTAxIDIwOS4wNzYgNTQuNjgyOCAyMDguNzE3IDU0LjY3MjhDMjA4LjQzIDU0LjY3MjggMjA4LjE2OCA1NC42MDIgMjA3LjkyOSA1NC40NjA0QzIwNy42NjcgNTQuMjQ1NSAyMDcuNDM4IDUzLjk5NTIgMjA3LjI0OCA1My43MTdMMjAwLjYxNyA0NC4wODlWNjAuNTEzM0MyMDAuNjE3IDYwLjk4NTMgMjAwLjQ4NiA2MS4zNTEgMjAwLjIyMyA2MS42MTA2QzE5OS45NiA2MS44NzAyIDE5OS41OSA2MiAxOTkuMTEyIDYyQzE5OC42MzQgNjIgMTk4LjI2NCA2MS44NzAyIDE5OC4wMDEgNjEuNjEwNkMxOTcuNzM4IDYxLjM1MSAxOTcuNjA3IDYwLjk4NTMgMTk3LjYwNyA2MC41MTMzVjM5LjQ4NzNDMTk3LjYwNyAzOS4wMTU0IDE5Ny43MzggMzguNjQ5NiAxOTguMDAxIDM4LjM5QzE5OC4yNjQgMzguMTMwNCAxOTguNjM0IDM4LjAwMDYgMTk5LjExMiAzOC4wMDA2QzE5OS43ODEgMzguMDAwNiAyMDAuMzMxIDM4LjMxOTIgMjAwLjc2MSAzOC45NTY0TDIwOC45MzIgNTEuMDk3NkwyMTcuMTA0IDM4Ljk1NjRDMjE3LjUxIDM4LjMxOTIgMjE4LjExOSAzOC4wMDA2IDIxOC45MzIgMzguMDAwNlpNMjQ0LjMwNCAzOC4zNTQ2QzI0NC44MjkgMzguNjg1IDI0NS4wOTIgMzkuMDc0NCAyNDUuMDkyIDM5LjUyMjdDMjQ1LjA5MiAzOS44MDU5IDI0NC45ODUgNDAuMDg5MSAyNDQuNzcgNDAuMzcyM0wyMzYuMjQgNTMuMjkyM1Y2MC41MTMzQzIzNi4yNCA2MC45ODUzIDIzNi4xMDggNjEuMzUxIDIzNS44NDUgNjEuNjEwNkMyMzUuNTgzIDYxLjg3MDIgMjM1LjIxMiA2MiAyMzQuNzM0IDYyQzIzNC4yNTYgNjIgMjMzLjg4NiA2MS44NzAyIDIzMy42MjMgNjEuNjEwNkMyMzMuMzYgNjEuMzUxIDIzMy4yMjkgNjAuOTg1MyAyMzMuMjI5IDYwLjUxMzNWNTMuMjkyM0wyMjUuMDIyIDQwLjM3MjNDMjI0LjgzIDQwLjA0MTkgMjI0LjczNSAzOS43NDY5IDIyNC43MzUgMzkuNDg3M0MyMjQuNzM1IDM4Ljk5MTggMjI0Ljk4NiAzOC41OTA2IDIyNS40ODggMzguMjgzOEMyMjUuODIyIDM4LjA5NSAyMjYuMTIxIDM4LjAwMDYgMjI2LjM4NCAzOC4wMDA2QzIyNi44MzcgMzguMDAwNiAyMjcuMjMyIDM4LjI0ODQgMjI3LjU2NiAzOC43NDRMMjM0LjczNCA1MC4xMDY1TDI0Mi4yNjEgMzguNzQ0QzI0Mi41NDggMzguMjcyIDI0Mi45MyAzOC4wMzYgMjQzLjQwOCAzOC4wMzZDMjQzLjY5NCAzOC4wMzYgMjQzLjk5MyAzOC4xNDIyIDI0NC4zMDQgMzguMzU0NlpNMjc2LjE5IDQ4LjM3MkMyNzguMDc3IDQ5LjQ1NzYgMjc5LjAyMSA1MS4zODA4IDI3OS4wMjEgNTQuMTQxOFY1NS4zNDUzQzI3OS4wMjEgNTcuNTE2NCAyNzguNDM2IDU5LjE2ODIgMjc3LjI2NSA2MC4zMDA5QzI3Ni4xMTggNjEuNDMzNyAyNzQuNDQ1IDYyIDI3Mi4yNDcgNjJIMjYyLjQyN0MyNjEuOTQ5IDYyIDI2MS41NzkgNjEuODcwMiAyNjEuMzE2IDYxLjYxMDZDMjYxLjA1MyA2MS4zNTEgMjYwLjkyMiA2MC45ODUzIDI2MC45MjIgNjAuNTEzM1YzOS40ODczQzI2MC45MjIgMzkuMDE1NCAyNjEuMDUzIDM4LjY0OTYgMjYxLjMxNiAzOC4zOUMyNjEuNTc5IDM4LjEzMDQgMjYxLjk0OSAzOC4wMDA2IDI2Mi40MjcgMzguMDAwNkgyNzEuNzgxQzI3My42NjkgMzguMDAwNiAyNzUuMTI2IDM4LjQ5NjIgMjc2LjE1NCAzOS40ODczQzI3Ny4xODEgNDAuNDc4NCAyNzcuNjk1IDQxLjg5NDMgMjc3LjY5NSA0My43MzVWNDQuNjkwN0MyNzcuNjk1IDQ1LjQ0NTkgMjc3LjU2NCA0Ni4xNDIgMjc3LjMwMSA0Ni43NzkyQzI3Ny4wNTggNDcuMzg3IDI3Ni42NzggNDcuOTMxOSAyNzYuMTkgNDguMzcyWk0yNjMuOTMyIDQ3LjUyMjVIMjcyLjg5MkMyNzMuNTE0IDQ3LjQ1MTcgMjczLjk2OCA0Ny4xNjg1IDI3NC4yNTQgNDYuNjczQzI3NC41NDEgNDYuMTUzOCAyNzQuNjg0IDQ1LjQ5MzEgMjc0LjY4NCA0NC42OTA3VjQzLjczNUMyNzQuNjg0IDQyLjcyMDMgMjc0LjQ2OSA0Mi4wMTIzIDI3NC4wMzkgNDEuNjExMkMyNzMuNjA5IDQxLjE4NjQgMjcyLjg1NyA0MC45NzQgMjcxLjc4MSA0MC45NzRIMjYzLjkzMlY0Ny41MjI1Wk0yNzYuMDEgNTQuMTQxOEMyNzYuMDEgNTIuODIwMyAyNzUuNzI0IDUxLjg4ODIgMjc1LjE1IDUxLjM0NTRDMjc0LjU3NyA1MC43NzkxIDI3My42MDkgNTAuNDk1OSAyNzIuMjQ3IDUwLjQ5NTlIMjYzLjkzMlY1OS4wMjY2SDI3Mi4yNDdDMjczLjU4NSA1OS4wMjY2IDI3NC41NDEgNTguNzQzNSAyNzUuMTE0IDU4LjE3NzFDMjc1LjcxMiA1Ny42MTA3IDI3Ni4wMSA1Ni42NjY4IDI3Ni4wMSA1NS4zNDUzVjU0LjE0MThaTTI4Ni41NDMgNjJDMjg1LjU0IDYyIDI4NS4wMzggNjEuNTA0NCAyODUuMDM4IDYwLjUxMzNWMzkuNDg3M0MyODUuMDM4IDM4LjQ5NjIgMjg1LjU0IDM4LjAwMDYgMjg2LjU0MyAzOC4wMDA2QzI4Ny41NDcgMzguMDAwNiAyODguMDQ4IDM4LjQ5NjIgMjg4LjA0OCAzOS40ODczVjU5LjAyNjZIMjk3Ljk3NkMyOTguOTggNTkuMDI2NiAyOTkuNDgxIDU5LjUyMjIgMjk5LjQ4MSA2MC41MTMzQzI5OS40ODEgNjEuNTA0NCAyOTguOTggNjIgMjk3Ljk3NiA2MkgyODYuNTQzWk0zMTAuODk3IDYyQzMwOC4xNDkgNjIgMzA2LjExOCA2MS4zNjI4IDMwNC44MDQgNjAuMDg4NUMzMDMuNTEzIDU4Ljc5MDYgMzAyLjg2NyA1Ni43ODQ4IDMwMi44NjcgNTQuMDcxVjQ1Ljg5NDJDMzAyLjg2NyA0My4xODA0IDMwMy41MjUgNDEuMTg2NCAzMDQuODQgMzkuOTEyMUMzMDYuMTU0IDM4LjYxNDIgMzA4LjE3MyAzNy45NzcgMzEwLjg5NyAzOC4wMDA2SDMxNS4xOTZDMzE3Ljk0NCAzOC4wMDA2IDMxOS45NjMgMzguNjQ5NiAzMjEuMjUzIDM5Ljk0NzVDMzIyLjU2OSA0MS4yMjE4IDMyMy4yMjYgNDMuMjE1OCAzMjMuMjI2IDQ1LjkyOTZWNTQuMDcxQzMyMy4yMjYgNTYuNzg0OCAzMjIuNTY5IDU4Ljc5MDYgMzIxLjI1MyA2MC4wODg1QzMxOS45NjMgNjEuMzYyOCAzMTcuOTQ0IDYyIDMxNS4xOTYgNjJIMzEwLjg5N1pNMzE1LjE5NiA1OS4wMjY2QzMxNi41MTIgNTkuMDI2NiAzMTcuNTE0IDU4Ljg3MzIgMzE4LjIwOCA1OC41NjY1QzMxOC44OTcgNTguMjg2MyAzMTkuNDQ5IDU3Ljc1MzQgMzE5Ljc0OCA1Ny4wNzk4QzMyMC4wNiA1Ni4zNzE4IDMyMC4yMTQgNTUuMzY4OSAzMjAuMjE0IDU0LjA3MVY0NS45Mjk2QzMyMC4yMTQgNDQuNjU1MyAzMjAuMDYgNDMuNjY0MiAzMTkuNzQ4IDQyLjk1NjNDMzE5LjQ1OCA0Mi4yNjgyIDMxOC45MDQgNDEuNzIxMiAzMTguMjA4IDQxLjQzNDJDMzE3LjQ5MSA0MS4xMjc0IDMxNi40ODYgNDAuOTc0IDMxNS4xOTYgNDAuOTc0SDMxMC44OTdDMzA5LjYwNiA0MC45NTA0IDMwOC42MDEgNDEuMDkyIDMwNy44ODUgNDEuMzk4OEMzMDcuMTg4IDQxLjY4NTggMzA2LjYzNSA0Mi4yMzI4IDMwNi4zNDUgNDIuOTIwOUMzMDYuMDM0IDQzLjYyODggMzA1Ljg3OSA0NC42MTk5IDMwNS44NzkgNDUuODk0MlY1NC4wNzFDMzA1Ljg3OSA1NS4zNjg5IDMwNi4wMzQgNTYuMzcxOCAzMDYuMzQ1IDU3LjA3OThDMzA2LjY1NCA1Ny43NjQxIDMwNy4xNTYgNTguMjU5NyAzMDcuODQ5IDU4LjU2NjVDMzA4LjU2NSA1OC44NzMyIDMwOS41ODIgNTkuMDI2NiAzMTAuODk3IDU5LjAyNjZIMzE1LjE5NlpNMzM2Ljk3IDYyQzMzNC4yMjMgNjIgMzMyLjE5MiA2MS4zNjI4IDMzMC44NzggNjAuMDg4NUMzMjkuNTg3IDU4Ljc5MDYgMzI4Ljk0MiA1Ni43ODQ4IDMyOC45NDIgNTQuMDcxVjQ1LjkyOTZDMzI4Ljk0MiA0My4yMTU4IDMyOS41ODcgNDEuMjEgMzMwLjg3OCAzOS45MTIxQzMzMi4xOTIgMzguNjE0MiAzMzQuMjExIDM3Ljk3NyAzMzYuOTM1IDM4LjAwMDZIMzQxLjI3MUMzNDMuNTE3IDM4LjAwMDYgMzQ1LjIyNiAzOC40NjA4IDM0Ni4zOTcgMzkuMzgxMUMzNDcuNTkxIDQwLjMwMTUgMzQ4LjI4NCA0MS43NDEgMzQ4LjQ3NSA0My42OTk2QzM0OC41NDcgNDQuMTk1MiAzNDguNDUxIDQ0LjU3MjcgMzQ4LjE4OSA0NC44MzIzQzM0Ny45MjYgNDUuMDkxOSAzNDcuNTQzIDQ1LjIyMTcgMzQ3LjA0MiA0NS4yMjE3QzM0Ni41NjQgNDUuMjIxNyAzNDYuMTkzIDQ1LjEwMzcgMzQ1LjkzMSA0NC44Njc3QzM0NS42OTIgNDQuNjA4MSAzNDUuNTM2IDQ0LjIzMDYgMzQ1LjQ2NSA0My43MzVDMzQ1LjM0NSA0Mi42NzMxIDM0NC45NzUgNDEuOTUzMyAzNDQuMzU0IDQxLjU3NThDMzQzLjczMiA0MS4xNzQ2IDM0Mi43MDUgNDAuOTc0IDM0MS4yNzEgNDAuOTc0SDMzNi45MzVDMzM1LjY0NCA0MC45NTA0IDMzNC42NDEgNDEuMDkyIDMzMy45MjQgNDEuMzk4OEMzMzMuMjA3IDQxLjcwNTUgMzMyLjY5NCA0Mi4yMTI5IDMzMi4zODMgNDIuOTIwOUMzMzIuMDk2IDQzLjYyODggMzMxLjk1MyA0NC42MzE3IDMzMS45NTMgNDUuOTI5NlY1NC4wNzFDMzMxLjk1MyA1NS4zNjg5IDMzMi4xMDggNTYuMzcxOCAzMzIuNDE5IDU3LjA3OThDMzMyLjcyOSA1Ny43NjQxIDMzMy4yMzEgNTguMjU5NyAzMzMuOTI0IDU4LjU2NjVDMzM0LjY0MSA1OC44NzMyIDMzNS42NTYgNTkuMDI2NiAzMzYuOTcgNTkuMDI2NkgzNDEuMjcxQzM0Mi43MDUgNTkuMDI2NiAzNDMuNzMyIDU4LjgzNzggMzQ0LjM1NCA1OC40NjAzQzM0NC45NzUgNTguMDU5MSAzNDUuMzQ1IDU3LjMyNzYgMzQ1LjQ2NSA1Ni4yNjU2QzM0NS41MzYgNTUuNzcwMSAzNDUuNjkyIDU1LjQwNDMgMzQ1LjkzMSA1NS4xNjgzQzM0Ni4xOTMgNTQuOTA4NyAzNDYuNTY0IDU0Ljc3OSAzNDcuMDQyIDU0Ljc3OUMzNDcuNTQzIDU0Ljc3OSAzNDcuOTI2IDU0LjkwODcgMzQ4LjE4OSA1NS4xNjgzQzM0OC40NTEgNTUuNDI3OSAzNDguNTQ3IDU1LjgwNTUgMzQ4LjQ3NSA1Ni4zMDFDMzQ4LjI4NCA1OC4yNTk3IDM0Ny41OTEgNTkuNjk5MiAzNDYuMzk3IDYwLjYxOTVDMzQ1LjIyNiA2MS41Mzk4IDM0My41MTcgNjIgMzQxLjI3MSA2MkgzMzYuOTdaTTM3MC40MiA1OS40MTZDMzcwLjY4MyA1OS43NDY0IDM3MC44MTQgNjAuMDc2NyAzNzAuODE0IDYwLjQwNzFDMzcwLjgxNCA2MC44MzE5IDM3MC42MTEgNjEuMTk3NyAzNzAuMjA1IDYxLjUwNDRDMzY5LjkzNCA2MS43NTc5IDM2OS41NzQgNjEuODk3NSAzNjkuMjAxIDYxLjg5MzhDMzY4Ljc3MSA2MS44OTM4IDM2OC40MDEgNjEuNjkzMiAzNjguMDkgNjEuMjkyMUwzNTkuMzEgNTAuNTY2N0wzNTcuNzY4IDUyLjE1OTZWNjAuNTEzM0MzNTcuNzY4IDYwLjk4NTMgMzU3LjYzNyA2MS4zNTEgMzU3LjM3NCA2MS42MTA2QzM1Ny4xMTEgNjEuODcwMiAzNTYuNzQxIDYyIDM1Ni4yNjMgNjJDMzU1Ljc4NSA2MiAzNTUuNDE1IDYxLjg3MDIgMzU1LjE1MiA2MS42MTA2QzM1NC44ODkgNjEuMzUxIDM1NC43NTggNjAuOTg1MyAzNTQuNzU4IDYwLjUxMzNWMzkuNDg3M0MzNTQuNzU4IDM5LjAxNTQgMzU0Ljg4OSAzOC42NDk2IDM1NS4xNTIgMzguMzlDMzU1LjQxNSAzOC4xMzA0IDM1NS43ODUgMzguMDAwNiAzNTYuMjYzIDM4LjAwMDZDMzU2Ljc0MSAzOC4wMDA2IDM1Ny4xMTEgMzguMTMwNCAzNTcuMzc0IDM4LjM5QzM1Ny42MzcgMzguNjQ5NiAzNTcuNzY4IDM5LjAxNTQgMzU3Ljc2OCAzOS40ODczVjQ3LjkxMTlMMzY2LjkwOCAzOC41NjdDMzY3LjI2NiAzOC4yMTMgMzY3LjYyNCAzOC4wMzYgMzY3Ljk4MyAzOC4wMzZDMzY4LjM0MSAzOC4wMzYgMzY4LjY4OCAzOC4yMDEyIDM2OS4wMjIgMzguNTMxNkMzNjkuMzgxIDM4Ljg4NTYgMzY5LjU2IDM5LjIzOTUgMzY5LjU2IDM5LjU5MzVDMzY5LjU2IDM5Ljk0NzUgMzY5LjM5MyA0MC4yODk3IDM2OS4wNTggNDAuNjJMMzYxLjQ2IDQ4LjQwNzRMMzcwLjQyIDU5LjQxNlpNMzgxLjg1IDYyQzM3OS43OTUgNjIgMzc4LjE5NCA2MS41OTg4IDM3Ny4wNDggNjAuNzk2NUMzNzUuOTI1IDU5Ljk3MDYgMzc1LjIyIDU4LjcwOCAzNzQuOTMzIDU3LjAwOUMzNzQuODg1IDU2LjUxMzQgMzc0Ljk5MyA1Ni4xMzU5IDM3NS4yNTUgNTUuODc2M0MzNzUuNTE4IDU1LjU5MzEgMzc1LjkwMSA1NS40NTE1IDM3Ni40MDIgNTUuNDUxNUMzNzYuODggNTUuNDUxNSAzNzcuMjM5IDU1LjU2OTUgMzc3LjQ3OCA1NS44MDU1QzM3Ny43MTcgNTYuMDE3OSAzNzcuODg0IDU2LjM4MzYgMzc3Ljk3OSA1Ni45MDI4QzM3OC4xNDcgNTcuNzA1MSAzNzguNTE3IDU4LjI1OTcgMzc5LjA5IDU4LjU2NjVDMzc5LjY4OCA1OC44NzMyIDM4MC42MDggNTkuMDI2NiAzODEuODUgNTkuMDI2NkgzODcuMDExQzM4OC4wNjIgNTkuMDI2NiAzODguODYzIDU4LjkwODYgMzg5LjQxMiA1OC42NzI3QzM4OS42ODQgNTguNTY3NiAzODkuOTMyIDU4LjQxMDIgMzkwLjE0MSA1OC4yMDk3QzM5MC4zNSA1OC4wMDkxIDM5MC41MTcgNTcuNzY5NCAzOTAuNjMxIDU3LjUwNDVDMzkwLjg3IDU2LjkzODIgMzkwLjk4OSA1Ni4xNDc2IDM5MC45ODkgNTUuMTMyOUMzOTAuOTg5IDUzLjYyMjYgMzkwLjcwMyA1Mi41ODQzIDM5MC4xMjkgNTIuMDE4QzM4OS41NTYgNTEuNDUxNiAzODguNTE2IDUxLjE2ODQgMzg3LjAxMSA1MS4xNjg0SDM4Mi41NjdDMzgwLjMyMSA1MS4xNjg0IDM3OC42NDggNTAuNjI1NyAzNzcuNTQ5IDQ5LjU0MDJDMzc2LjQ1IDQ4LjQ1NDYgMzc1LjkwMSA0Ni43OTEgMzc1LjkwMSA0NC41NDkxQzM3NS45MDEgNDIuMzMwOSAzNzYuNDM4IDQwLjY5MDggMzc3LjUxMyAzOS42Mjg5QzM3OC42MTMgMzguNTQzNCAzODAuMjg1IDM4LjAwMDYgMzgyLjUzMSAzOC4wMDA2SDM4Ni43OTZDMzkwLjU3MSAzOC4wMDA2IDM5Mi43NDYgMzkuNTU4MSAzOTMuMzE5IDQyLjY3MzFDMzkzLjM5MSA0My4xNjg2IDM5My4yOTUgNDMuNTU4IDM5My4wMzIgNDMuODQxMkMzOTIuNzcgNDQuMTAwOCAzOTIuMzc1IDQ0LjIzMDYgMzkxLjg1IDQ0LjIzMDZDMzkxLjM3MiA0NC4yMzA2IDM5MS4wMTMgNDQuMTEyNiAzOTAuNzc0IDQzLjg3NjZDMzkwLjUzNSA0My42NDA2IDM5MC4zOCA0My4yNzQ4IDM5MC4zMDggNDIuNzc5M0MzOTAuMTE3IDQyLjA5NDkgMzg5Ljc1OSA0MS42MjMgMzg5LjIzMyA0MS4zNjM0QzM4OC43MDggNDEuMTAzOCAzODcuODk1IDQwLjk3NCAzODYuNzk2IDQwLjk3NEgzODIuNTMxQzM4MS41NTEgNDAuOTc0IDM4MC43OTkgNDEuMDgwMiAzODAuMjczIDQxLjI5MjZDMzgwLjAyOCA0MS4zOTQzIDM3OS44MDcgNDEuNTQzOSAzNzkuNjIyIDQxLjczMjVDMzc5LjQzNyA0MS45MjExIDM3OS4yOTMgNDIuMTQ0NyAzNzkuMTk4IDQyLjM4OTlDMzc5LjAwNyA0Mi44ODU1IDM3OC45MTEgNDMuNjA1MiAzNzguOTExIDQ0LjU0OTFDMzc4LjkxMSA0NS41MTY3IDM3OS4wMTkgNDYuMjYgMzc5LjIzNCA0Ni43NzkyQzM3OS40NDkgNDcuMjc0NyAzNzkuODA3IDQ3LjY0MDUgMzgwLjMwOSA0Ny44NzY1QzM4MC44MzUgNDguMDg4OSAzODEuNTg3IDQ4LjE5NTEgMzgyLjU2NyA0OC4xOTUxSDM4Ny4wMTFDMzg5LjM3NyA0OC4xOTUxIDM5MS4xMzMgNDguNzYxNCAzOTIuMjggNDkuODk0MUMzOTMuNDI3IDUxLjAyNjggMzk0IDUyLjc3MzEgMzk0IDU1LjEzMjlDMzk0IDU3LjQ2OTEgMzkzLjQyNyA1OS4yMDM2IDM5Mi4yOCA2MC4zMzYzQzM5MS4xMzMgNjEuNDQ1NCAzODkuMzc3IDYyIDM4Ny4wMTEgNjJIMzgxLjg1WiIgZmlsbD0iI0UyMkYyMiIvPgo8cGF0aCBkPSJNMzYuNzM2IDBMMCAxOS4yNThMMC40NzA5OTMgNjMuNTczTDIyLjg0MSA3Ni4zMzRMMzYuOTcyIDEwMEw1MC42MyA3Ni4zMzRMNzMgNjMuNjlWMTkuNDlMMzYuNzM2IDBaTTI5LjY3IDY0LjI3TDE0LjM2NCA1NS42ODVWMzUuNDk4TDI5LjY3IDQ0LjU0N1Y2NC4yNjhWNjQuMjdaTTIxLjkgMjMuNDMzTDM2LjczNSAxNS43NzZMNTEuMzM1IDIzLjQzM0wzNi43MzUgMzIuMDE4TDIxLjkgMjMuNDMzWk01OC44NzEgNTUuNjgzTDQzLjggNjQuMjdWNDQuNTQ4TDU4Ljg3MSAzNS43MzFWNTUuNjgzWiIgZmlsbD0iI0UyMkYyMiIvPgo8L3N2Zz4K"},9:(M,e,N)=>{N.d(e,{A:()=>t});const t={navigation:"kiMVxg7uvmObzH9y5Nf7",subtitle:"lh6Gp5uMZoFjdsD0piCQ",active:"IHgUS1orY8DkWO_fbRhQ"}},299:(M,e,N)=>{N.d(e,{A:()=>t});const t={wrapper:"Ub1Qwzm7eiO9i1pfS4JA",header:"MHfJiF9ZtWnpmRSznlsA",container:"bDqx83XSEFfGnp0RCn6r",logo:"s2jFJ3kbxHqVjcXOAa_e",headerNavigation:"O0TgIPrk1w9xxx2FS7rI"}},613:(M,e,N)=>{N.d(e,{A:()=>t});const t={tag:"BBrTfwaRpiXTsfXQotgf",help:"eiQPya4NGNSbJXhlQrFG",default:"Qrwn2ZFHSg4CzQ5B2Hju",info:"dK0gZ8H42AMHDmiT90gt",warning:"Iq2GVHFXIvyadiMTJhPA",error:"IAqnveipCAc7HoEDOSlg",label:"g0nlWBX7OmQcFqR6UoAB",icon:"wLv8qHa44_fOcOtj0hCA"}},609:M=>{M.exports=window.React},455:M=>{M.exports=window.wp.apiFetch},427:M=>{M.exports=window.wp.components},87:M=>{M.exports=window.wp.element},723:M=>{M.exports=window.wp.i18n},129:(M,e,N)=>{N.d(e,{A:()=>n});var t=N(609),D=N(87),z=N(818),j=N(9),c=N(723);const n=({})=>{const{finder:M,preferences:e}=(0,z.h)(),{setSelectedBlock:N}=e,{foundBlocks:n,withFilters:g}=M,[l,u]=(0,D.useState)(null),o=g(n);return(0,t.createElement)("nav",{className:j.A.navigation},(0,t.createElement)("ul",null,o.map((M=>(0,t.createElement)("li",{key:M.name,className:l===M.name?j.A.active:"",onClick:()=>{return e=M.name,N(e),void u(e);var e}},M.name," ",(0,t.createElement)("span",{className:j.A.subtitle},(0,c.__)("Found in","find-my-blocks")," ",M.posts.length," ",M.posts.length>1?(0,c.__)("locations","find-my-blocks"):(0,c.__)("location","find-my-blocks")))))))}},136:(M,e,N)=>{N.d(e,{A:()=>g});var t=N(609),D=N(427),z=N(299),j=N(723),c=N(46),n=N(818);const g=({children:M})=>{const{finder:e}=(0,n.h)(),{isLoading:N,reset:g,startSearch:l,foundBlocks:u}=e;return(0,t.createElement)("div",{className:z.A.wrapper},(0,t.createElement)("div",{className:z.A.header},(0,t.createElement)("div",{className:z.A.container},(0,t.createElement)("img",{className:z.A.logo,src:c.A,alt:"Find My Blocks Logo",onClick:()=>u.length>0&&g()}),(0,t.createElement)("div",{className:z.A.headerNavigation},(0,t.createElement)(D.Button,{onClick:()=>u.length>0?g():l(),icon:u.length>0?"update-alt":null,isPrimary:!0,disabled:N},u.length>0?(0,j.__)("Re-scan","find-my-blocks"):(0,j.__)("Search","find-my-blocks")),(0,t.createElement)(D.DropdownMenu,{icon:"menu",label:"Select a direction"},(({onClose:M})=>(0,t.createElement)(t.Fragment,null,(0,t.createElement)(D.MenuGroup,{label:(0,j.__)("Quick Links","find-my-blocks")},(0,t.createElement)(D.MenuItem,{href:fmbGlobal.admin_url+"/edit.php?post_type=wp_block"},(0,j.__)("Reusable Patterns","find-my-blocks"))),(0,t.createElement)(D.MenuGroup,{label:(0,j.__)("Support","find-my-blocks")},(0,t.createElement)(D.MenuItem,{icon:"star-filled",href:"https://wordpress.org/support/plugin/find-my-blocks/reviews/",target:"_blank"},(0,j.__)("Review on wp.org","find-my-blocks")),(0,t.createElement)(D.MenuItem,{icon:"sos",href:"https://wordpress.org/support/plugin/find-my-blocks/",target:"_blank"},(0,j.__)("Support forum","find-my-blocks")),(0,t.createElement)(D.MenuItem,{icon:"external",href:"https://findmyblocks.com/?utm_source=wordpress_site&utm_medium=navigation&utm_campaign=find_my_blocks_active_install",target:"_blank"},"findmyblocks.com")))))))),M)}},774:(M,e,N)=>{N.d(e,{p:()=>n});var t=N(609),D=N(427),z=N(723),j=N(78);const c=({post:M,blockName:e})=>{const N=function(M){const N=[];return M.hasConditionalBlocks&&N.push({label:(0,z.__)("Conditional","find-my-blocks"),help:(0,t.createElement)("span",null,(0,z.__)("via","find-my-blocks")," ",(0,t.createElement)(D.ExternalLink,{target:"_blank",href:"https://conditionalblocks.com/"},"Conditional Blocks")),icon:"randomize",variation:"info"}),M.isSyncedPattern&&N.push({label:(0,z.__)("Synced Pattern","find-my-blocks"),icon:"networking",variation:"warning"}),M.count>1&&N.push({label:`${M.count}x `+e,icon:"list-view",variation:"info"}),M.isNested&&N.push({label:(0,z.__)("Nested in: ","find-my-blocks")+M.nestedBlockType,icon:"align-center",variation:"info"}),N}(M);return(0,t.createElement)(D.Card,{size:"small",className:"fmb-card"},(0,t.createElement)(D.CardHeader,{isBorderless:!0},(0,t.createElement)("div",null,(0,t.createElement)("span",{className:"fmb-card-title"},M.title),(0,t.createElement)("span",{className:"fmb-card-meta"},(0,t.createElement)("code",null,M?.postType)," ",M?.isThirdPartyTemplate&&(0,t.createElement)("code",null,M?.templateProvider)," ")),(0,t.createElement)("div",null,(0,t.createElement)(D.Button,{target:"_blank",isTertiary:!0,href:M.post_url,size:"small"},(0,z.__)("Preview","find-my-blocks")),(0,t.createElement)(D.Button,{target:"_blank",isTertiary:!0,href:M.edit_url,size:"small"},(0,z.__)("Edit","find-my-blocks")))),N.length>0&&(0,t.createElement)(t.Fragment,null,(0,t.createElement)(D.CardDivider,null),(0,t.createElement)(D.CardBody,null,N.map((M=>(0,t.createElement)(j.v,{key:M.label,...M}))))))};function n({posts:M,blockName:e=""}){return!M||M.length<1?(0,t.createElement)("div",null,(0,t.createElement)("h2",null,(0,z.__)("No locations found","find-my-blocks")),(0,z.__)("Please select a block from the menu, or check the filters.","find-my-blocks")):(0,t.createElement)("div",{className:"fmb-card-grid"},M.map(((M,N)=>(0,t.createElement)(c,{key:e+M?.id,post:M,blockName:e}))))}},78:(M,e,N)=>{N.d(e,{v:()=>j});var t=N(609),D=N(613),z=N(427);const j=({variation:M="default",icon:e,label:N,help:j})=>{const c=((...M)=>M.filter(Boolean).join(" "))(D.A.tag,D.A[M]);return(0,t.createElement)("div",{className:c},e&&(0,t.createElement)(z.Icon,{icon:e,className:D.A.Icon}),(0,t.createElement)("div",{className:D.A.label},N),j&&(0,t.createElement)("div",{className:D.A.help}," ",j))}},818:(M,e,N)=>{N.d(e,{h:()=>g,z:()=>n});var t=N(609),D=N(87),z=N(352),j=N(216);const c=(0,D.createContext)(),n=({children:M})=>{var e;const N=(0,z.g)(),D={posts_per_page:N.postsPerRun},n={preferences:N,finder:(0,j.g)({searchArgs:D,cachedFoundBlocks:null!==(e=N?.cachedFoundBlocks)&&void 0!==e?e:[],setCachedFoundBlocks:N.setCachedFoundBlocks})};return(0,t.createElement)(c.Provider,{value:n},M)},g=()=>{const M=(0,D.useContext)(c);if(!M)throw new Error("useFindMyBlocks must be used within an FindMyBlocksProvider");return M}},216:(M,e,N)=>{N.d(e,{g:()=>j});var t=N(87),D=N(723),z=N(455);const j=({searchArgs:M={},cachedFoundBlocks:e=[],setCachedFoundBlocks:N})=>{const j={name:!1,blockProvider:!1,hasConditionalBlocks:!1},[n,g]=(0,t.useState)([]),[l,u]=(0,t.useState)(j),[o,r]=(0,t.useState)(!1),[a,i]=(0,t.useState)(null),[I,s]=(0,t.useState)({currentPage:0,totalPages:0,percentage:0,totalPosts:0,totalBlocks:0,totalScannedPosts:0}),[A,y]=(0,t.useState)("asc"),T=(0,t.useRef)(null),L=()=>{T.current&&T.current.abort(),g([]),N([]),r(!1),i(null),s({currentPage:0,totalPages:0,percentage:0,totalPosts:0,totalBlocks:0,totalScannedPosts:0}),y("asc")};let E=!0;(0,t.useEffect)((()=>{E&&e&&e.length>0&&(E=!1,g(O(A,e)))}),[e]);const O=(M,e)=>{const N=[...e].sort(((e,N)=>"asc"===M?e.name.localeCompare(N.name):N.name.localeCompare(e.name)));return N.forEach((e=>{e.posts&&Array.isArray(e.posts)&&e.posts.sort(((e,N)=>"asc"===M?e.title.localeCompare(N.title):N.title.localeCompare(e.title)))})),N},k=M=>(l.name&&(M=M.filter((M=>M.name.toLowerCase().includes(l.name.toLowerCase())))),l.blockProvider&&(M=M.filter((M=>M.name.split("/")[0].toLowerCase().includes(l.blockProvider.toLowerCase())))),l.hasConditionalBlocks&&(M=M.map((M=>{const e=M.posts.filter((M=>M.hasConditionalBlocks));return e.length>0?{...M,posts:e}:null})).filter((M=>null!==M))),M);return{reset:L,foundBlocks:n,withFilters:k,setFilters:u,isLoading:o,error:a,startSearch:async()=>{L(),r(!0);const e=new AbortController;T.current=e;let t=1,D=0,n=0,l=0,o=[],a=0,I="in_process";try{for(;(t<=D||1===t)&&!T.current.signal.aborted&&"in_process"===I;){const N=setTimeout((()=>e.abort()),15e3),j=new URLSearchParams({...M,paged:t}).toString();try{const M=await z({path:`find-my-blocks/v1/search?${j}`,signal:e.signal});if(clearTimeout(N),await new Promise((M=>setTimeout(M,1e3))),!M?.data)throw new Error("No data returned from the server.");const{blocks:c,scanned_posts:g,total_posts:u,total_pages:r}=M.data;if(1===t&&(D=r,n=u),a+=c.reduce(((M,e)=>M+e.posts.length),0),l+=g,s({currentPage:t,totalPages:D,percentage:Math.round(t/D*100),totalBlocks:a,totalPosts:n,totalScannedPosts:l}),o=o.concat(c),t++,t>r){I="completed";break}}catch(M){clearTimeout(N),"AbortError"===M.name?(console.error("Search aborted or timeout reached - Please try lower the amount of posts to search per request.",M),i(new Error("Abort/timeout error. Try choosing a lower amount of posts to search per request."))):(console.error("Error fetching blocks:",M),i(M)),I="failed";break}}}finally{if(T.current=null,"completed"===I&&o.length>0){const M=c(o),e=O(A,M);u(j),g(e),N(e)}else i(new Error("Search completed with no results or an error occurred.")),L();await new Promise((M=>setTimeout(M,1e3))),r(!1)}},abortSearch:()=>{T.current&&(T.current.abort(),console.log("Search aborted by user."),i(new Error((0,D.__)("Search aborted by user","find-my-blocks"))))},progress:I,postsWithBlock:M=>{const e=k(n).find((e=>e.name===M));return e?e.posts:[]}}},c=M=>{const e=new Map;return M.forEach((M=>{if(e.has(M.name)){const N=e.get(M.name);M.posts.forEach((M=>{const e=N.posts.findIndex((e=>e.id===M.id));-1!==e?N.posts[e].count+=M.count:N.posts.push(M)}))}else e.set(M.name,{...M,posts:[...M.posts]})})),Array.from(e.values())}},864:(M,e,N)=>{N.d(e,{M:()=>z});var t=N(87);const D=new Map,z=(M,e)=>{const[N,z]=(0,t.useState)(e),[j,c]=(0,t.useState)(!0);return(0,t.useEffect)((()=>{if(j){c(!1);const N=JSON.parse(localStorage.getItem(M));z(null!=N?N:e)}}),[j,M,e]),(0,t.useEffect)((()=>{const e=M=>{z(M)};return((M,e)=>{D.has(M)||D.set(M,[]),D.get(M).push(e)})(M,e),()=>{((M,e)=>{const N=D.get(M)||[],t=N.indexOf(e);t>-1&&N.splice(t,1)})(M,e)}}),[M]),[N,(0,t.useCallback)((e=>{localStorage.setItem(M,JSON.stringify(e)),((M,e)=>{(D.get(M)||[]).forEach((M=>M(e)))})(M,e)}),[M])]}},352:(M,e,N)=>{N.d(e,{g:()=>D});var t=N(864);const D=()=>{const[M,e]=(0,t.M)("fmb_selected_block",""),[N,D]=(0,t.M)("fmb_posts_per_run",10),[z,j]=(0,t.M)("fmb_found_blocks",!1),[c,n]=(0,t.M)("fmb_selected_provider",!1),[g,l]=(0,t.M)("fmb_version_cache",!1),[u,o]=(0,t.M)("fmb_conditional_blocks",!1);return{cachedFoundBlocks:fmbGlobal.version===g&&z,setCachedFoundBlocks:M=>{l(fmbGlobal.version),n(!1),e(!1),o(!1),j(M)},selectedBlock:M,setSelectedBlock:e,selectedProvider:c,setSelectedProvider:n,postsPerRun:parseInt(N),setPostsPerRun:D,conditionalBlocks:u,setConditionalBlocks:o}}},948:(M,e,N)=>{N.d(e,{A:()=>i});var t=N(609),D=N(87),z=N(723),j=N(774),c=N(129),n=N(818),g=N(431),l=N(427);const u=({error:M})=>M?(0,t.createElement)(l.Notice,{status:"error"},M.message):null;function o({className:M}){const{finder:e,preferences:N}=(0,n.h)(),[z,j]=(0,D.useState)("");return(0,t.createElement)(l.SearchControl,{value:z,onChange:M=>{j(M),e.setFilters((e=>({...e,name:!!M.length&&M})))}})}function r(){var M;const{finder:e,preferences:N}=(0,n.h)(),[z,j]=(0,D.useState)(null!==(M=N?.selectedProvider)&&void 0!==M&&M),c=(0,g.g)(e.foundBlocks);return(0,t.createElement)(l.ComboboxControl,{allowReset:!0,label:"Block Provider",help:"Core or third-party block providers",value:z,onChange:M=>{j(M),N?.setSelectedProvider(M),e.setFilters((e=>({...e,blockProvider:null!=M&&M})))},options:c,onFilterValueChange:M=>j(c.filter((e=>e.label.toLowerCase().startsWith(M.toLowerCase()))))})}const a=()=>{const{finder:M,preferences:e}=(0,n.h)(),[N,j]=(0,D.useState)(!!e?.conditionalBlocks);return(0,t.createElement)(l.CheckboxControl,{label:"Conditional Blocks",help:(0,z.__)("Only blocks with visibility changed by the Conditional Blocks plugin","find-my-blocks"),checked:N,onChange:N=>{j(!!N),e?.setConditionalBlocks(!!N),M.setFilters((M=>({...M,hasConditionalBlocks:!!N})))}})},i=function(){const{finder:M,preferences:e}=(0,n.h)(),{foundBlocks:N,startSearch:g,abortSearch:i,progress:I,isLoading:s,error:A,postsWithBlock:y}=M,{selectedBlock:T,postsPerRun:L,setPostsPerRun:E}=e;if(s)return(0,t.createElement)("div",{className:"fmb-bento-container"},(0,t.createElement)("div",{className:"fmb-bento-grid"},(0,t.createElement)("div",{className:"fmb-box fmb-box-full"},(0,t.createElement)("h2",null,(0,z.__)("Searching for your blocks...","find-my-blocks")),(0,t.createElement)("p",null,(0,z.__)("Progress:","find-my-blocks")," ",I.percentage,"%"),(0,t.createElement)("p",null,(0,z.__)("Scanning batch","find-my-blocks")," ",I.currentPage," ",(0,z.__)("out of","find-my-blocks")," ",I.totalPages),(0,t.createElement)("p",null,(0,z.__)("Total block instances detected:","find-my-blocks")," ",I.totalBlocks," "+(0,z.__)("in","find-my-blocks")," ",I.totalScannedPosts," "+(0,z.__)("locations.","find-my-blocks")),(0,t.createElement)(l.Button,{onClick:()=>i(),isDestructive:!0,isPrimary:!0,disabled:!s},(0,z.__)("Abort Search","find-my-blocks")))));const O=y(T);var k;return!A&&N.length>0?(0,t.createElement)(D.Fragment,null,(0,t.createElement)("div",{className:"fmb-container"},(0,t.createElement)("div",{className:"fmb-grid-results-page"},(0,t.createElement)("div",{className:"fmb-box"},(0,t.createElement)("h2",null,(0,z.__)("Filters","find-my-blocks")),(0,t.createElement)("div",{className:"fmb-search-filters"},(0,t.createElement)(o,null),(0,t.createElement)(r,null),fmbGlobal?.conditional_blocks_installed&&(0,t.createElement)(a,null)),(0,t.createElement)("h2",null,(0,z.__)("Found Blocks","find-my-blocks")),(0,t.createElement)("p",null,(0,z.__)("The below blocks have been detected during the scan.","find-my-blocks")),(0,t.createElement)("nav",{className:"fmb-side-navigation"},(0,t.createElement)(c.A,null))),(0,t.createElement)("div",null,T&&(0,t.createElement)(D.Fragment,null,(0,t.createElement)("h2",null,(0,t.createElement)("span",{className:"fmb-badge"},T)),O?.length>0&&(0,t.createElement)("p",null,(0,z.__)("Instances of the","find-my-blocks")," ",(0,t.createElement)("b",null,T)," ",(0,z.__)("block has been found in these","find-my-blocks")," ",null!==(k=O.length)&&void 0!==k?k:0," ",(0,z.__)("locations.","find-my-blocks"))),(0,t.createElement)(j.p,{blockName:T,posts:O}))))):(0,t.createElement)(D.Fragment,null,(0,t.createElement)(u,{error:A}),(0,t.createElement)("div",{className:"fmb-bento-container"},(0,t.createElement)("div",{className:"fmb-bento-grid"},(0,t.createElement)("div",{className:"fmb-box fmb-box-full"},(0,t.createElement)("h2",null,(0,z.__)("Get Started","find-my-blocks")),(0,t.createElement)("p",null,(0,z.__)("Find My Blocks will search through all your templates, posts and pages to find the WordPress blocks.","find-my-blocks")),(0,t.createElement)(l.RadioControl,{className:"fmb-performance-control",label:"Performance",help:(0,z.__)("Warning! Choose the performance level that matches your server. Fetching too may posts at once may temporarily crash your site.","find-my-blocks"),onChange:M=>{E(M)},options:[{label:(0,z.__)("Low (Recommended for most sites, 10 post per run)","find-my-blocks"),value:10},{label:(0,z.__)("Standard (100 posts per run)","find-my-blocks"),value:100},{label:(0,z.__)("Ultra (500 posts per run)","find-my-blocks"),value:500}],selected:null!=L?L:10}),(0,t.createElement)(l.Button,{onClick:()=>g(),isPrimary:!0,disabled:s},(0,z.__)("Start Search","find-my-blocks"))),(0,t.createElement)("div",{className:"fmb-box"},(0,t.createElement)("h2",null,(0,z.__)("Block Tools & Resources","find-my-blocks")),(0,t.createElement)("p",null,(0,z.__)("Create faster & better WordPress sites with block tutorials from experts.","find-my-blocks")),(0,t.createElement)("ul",null,(0,t.createElement)("li",null,(0,t.createElement)(l.ExternalLink,{href:"https://findmyblocks.com?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install",target:"_blank"},"findmyblocks.com")),(0,t.createElement)("li",null,(0,t.createElement)(l.ExternalLink,{href:"https://conditionalblocks.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install",target:"_blank"},"Conditional Blocks plugin")),(0,t.createElement)("li",null,(0,t.createElement)(l.ExternalLink,{href:"https://morganhvidt.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install",target:"_blank"},"@MorganHvidt"),(0,z.__)("(Developer) ","find-my-blocks")))),(0,t.createElement)("div",{className:"fmb-box"},(0,t.createElement)("h2",null,(0,z.__)("Support Development","find-my-blocks")),(0,t.createElement)("p",null,(0,z.__)("I'm building Find My Blocks in my free time. If you find it useful, please consider donating, or contributing to the project.","find-my-blocks")," ",(0,t.createElement)("em",null,"- Morgan Hvidt")),(0,t.createElement)("div",{style:{marginTop:"30px"}},(0,t.createElement)(l.Button,{isSecondary:!0,target:"_blank",href:"https://github.com/morganhvidt/find-my-blocks/"},(0,z.__)("Contribute on Github","find-my-blocks"))," ",(0,t.createElement)(l.Button,{style:{marginLeft:"10px"},isSecondary:!0,target:"_blank",href:"https://morganhvidt.com/donate/"},(0,z.__)("Donate to development","find-my-blocks")))))))}},431:(M,e,N)=>{function t(M){return M.reduce(((M,e)=>{var N;const t=null!==(N=e.name.split("/")[0])&&void 0!==N&&N;return M.some((M=>M.value===t))||M.push({value:t,label:t}),M}),[])}N.d(e,{g:()=>t})}},e={};function N(t){var D=e[t];if(void 0!==D)return D.exports;var z=e[t]={exports:{}};return M[t](z,z.exports,N),z.exports}N.n=M=>{var e=M&&M.__esModule?()=>M.default:()=>M;return N.d(e,{a:e}),e},N.d=(M,e)=>{for(var t in e)N.o(e,t)&&!N.o(M,t)&&Object.defineProperty(M,t,{enumerable:!0,get:e[t]})},N.o=(M,e)=>Object.prototype.hasOwnProperty.call(M,e),(()=>{var M=N(609),e=N(87),t=(N(723),N(948)),D=N(818),z=N(136);function j(){return(0,M.createElement)(e.Fragment,null,(0,M.createElement)(D.z,null,(0,M.createElement)(z.A,null),(0,M.createElement)(t.A,null)))}document.addEventListener("DOMContentLoaded",(()=>{const N=document.getElementById("find-my-blocks-app");N&&(e.createRoot?(0,e.createRoot)(N).render((0,M.createElement)(j,null)):(0,e.render)((0,M.createElement)(j,null),N))}))})()})();
    22//# sourceMappingURL=find-my-blocks.js.map
  • find-my-blocks/trunk/assets/js/find-my-blocks.js.map

    r3078392 r3078539  
    1 {"version":3,"file":"find-my-blocks.js","mappings":"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","sources":["webpack://find-my-blocks/./src/assets/images/find-my-blocks-logo-full.svg","webpack://find-my-blocks/./src/assets/js/components/BlockNavigation/BlockNavigation.module.css?5aa6","webpack://find-my-blocks/./src/assets/js/components/PageHeader/PageHeader.module.css?b4c4","webpack://find-my-blocks/./src/assets/js/components/Tag/Tag.module.css?f54f","webpack://find-my-blocks/external window \"React\"","webpack://find-my-blocks/external window [\"wp\",\"apiFetch\"]","webpack://find-my-blocks/external window [\"wp\",\"components\"]","webpack://find-my-blocks/external window [\"wp\",\"element\"]","webpack://find-my-blocks/external window [\"wp\",\"i18n\"]","webpack://find-my-blocks/./src/assets/js/components/BlockNavigation/index.js","webpack://find-my-blocks/./src/assets/js/components/PageHeader/PageHeader.js","webpack://find-my-blocks/./src/assets/js/components/PostCards/PostCards.js","webpack://find-my-blocks/./src/assets/js/components/Tag/Tag.js","webpack://find-my-blocks/./src/assets/js/context/FindMyBlocksContext.js","webpack://find-my-blocks/./src/assets/js/hooks/useFinder.js","webpack://find-my-blocks/./src/assets/js/hooks/useLocalStorage.js","webpack://find-my-blocks/./src/assets/js/hooks/usePreferences.js","webpack://find-my-blocks/./src/assets/js/pages/SearchPage.js","webpack://find-my-blocks/./src/assets/js/utils/functions.js","webpack://find-my-blocks/webpack/bootstrap","webpack://find-my-blocks/webpack/runtime/compat get default export","webpack://find-my-blocks/webpack/runtime/define property getters","webpack://find-my-blocks/webpack/runtime/hasOwnProperty shorthand","webpack://find-my-blocks/./src/assets/js/find-my-blocks.js"],"sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgFindMyBlocksLogoFull = function SvgFindMyBlocksLogoFull(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 394,\n    height: 100,\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#E22F22\",\n    d: \"M104.507 62q-.718 0-1.113-.39-.394-.389-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39h13.19q.716 0 1.111.39.394.39.394 1.097 0 .708-.394 1.098-.395.39-1.111.389h-11.684v7.433h7.204q.716 0 1.111.39.394.39.394 1.097 0 .708-.394 1.097-.395.39-1.111.39h-7.204v9.132q0 .708-.395 1.098-.393.39-1.111.389zm19.914 0q-.789 0-1.147-.354-.359-.354-.359-1.133v-20.99q0-.78.359-1.133.358-.354 1.147-.354.788 0 1.146.354.359.354.359 1.133v20.99q0 .78-.359 1.133-.358.354-1.146.354m27.131-24q.717 0 1.111.39t.394 1.097v21.026q0 .708-.394 1.098t-1.111.389q-.43 0-.789-.212a2.7 2.7 0 0 1-.717-.673l-13.655-17.38v16.778q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39.43 0 .753.213.358.213.752.673l13.655 17.38V39.487q0-.708.395-1.097.394-.39 1.111-.39m10.459 24q-.717 0-1.111-.39-.394-.389-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39h8.638q4.695 0 6.881 2.195 2.222 2.16 2.222 6.797v6.017q0 4.637-2.222 6.832Q175.344 62 170.649 62zm8.638-2.973q2.329 0 3.62-.567a3.52 3.52 0 0 0 1.899-1.84q.574-1.31.574-3.61v-6.018q0-2.301-.574-3.576a3.5 3.5 0 0 0-1.899-1.876q-1.291-.566-3.62-.566h-7.133v18.053zM218.932 38q1.218 0 1.218 1.486v21.026q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V44.124l-6.595 9.593q-.359.495-.788.743a2.3 2.3 0 0 1-1.04.213q-.43 0-.788-.213a3.6 3.6 0 0 1-.681-.743l-6.631-9.628v16.424q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39 1.004.001 1.649.956l8.171 12.142 8.172-12.142q.609-.955 1.828-.955m25.372.354q.788.495.788 1.168 0 .424-.322.85l-8.53 12.92v7.22q0 .708-.395 1.098-.394.39-1.111.389-.717 0-1.111-.39-.394-.389-.394-1.097v-7.22l-8.207-12.92q-.288-.496-.287-.886 0-.742.753-1.203.501-.283.896-.283.68 0 1.182.743l7.168 11.362 7.527-11.362q.43-.708 1.147-.708.43 0 .896.319m31.886 10.017q2.83 1.629 2.831 5.77v1.203q0 3.257-1.756 4.956-1.72 1.7-5.018 1.699h-9.82q-.717 0-1.111-.39-.394-.389-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39h9.354q2.832 0 4.373 1.487 1.54 1.486 1.541 4.248v.956q0 1.133-.394 2.088a4.3 4.3 0 0 1-1.111 1.593m-12.258-.85h8.96q.933-.105 1.362-.849.43-.78.43-1.982v-.956q0-1.522-.645-2.124-.644-.637-2.258-.637h-7.849zm12.078 6.62q0-1.983-.86-2.797-.86-.85-2.903-.85h-8.315v8.532h8.315q2.007 0 2.867-.85.897-.849.896-2.832zM286.543 62q-1.505 0-1.505-1.487V39.487q0-1.486 1.505-1.486t1.505 1.486v19.54h9.928q1.505 0 1.505 1.486 0 1.487-1.505 1.487zm24.354 0q-4.122 0-6.093-1.911-1.937-1.947-1.937-6.018v-8.177q0-4.071 1.973-5.982 1.971-1.947 6.057-1.911h4.299q4.122 0 6.057 1.947 1.974 1.911 1.973 5.982v8.141q0 4.071-1.973 6.018Q319.318 62 315.196 62zm4.299-2.973q1.972 0 3.012-.46a2.86 2.86 0 0 0 1.54-1.487q.467-1.062.466-3.009V45.93q.001-1.912-.466-2.974a2.85 2.85 0 0 0-1.54-1.522q-1.076-.46-3.012-.46h-4.299q-1.937-.036-3.012.425a2.84 2.84 0 0 0-1.54 1.522q-.466 1.062-.466 2.973v8.177q0 1.946.466 3.009a2.87 2.87 0 0 0 1.504 1.486q1.075.46 3.048.46zM336.97 62q-4.12 0-6.092-1.911-1.936-1.947-1.936-6.018V45.93q0-4.071 1.936-6.018 1.971-1.947 6.057-1.911h4.336q3.37 0 5.126 1.38 1.791 1.38 2.078 4.319.107.743-.286 1.132-.395.39-1.147.39-.717 0-1.111-.354-.359-.39-.466-1.133-.18-1.593-1.111-2.16-.933-.6-3.083-.601h-4.336q-1.936-.036-3.011.425a2.85 2.85 0 0 0-1.541 1.522q-.43 1.061-.43 3.009v8.141q0 1.946.466 3.009.465 1.026 1.505 1.486 1.075.46 3.046.46h4.301q2.15 0 3.083-.566.931-.6 1.111-2.194.107-.744.466-1.098.394-.39 1.111-.389.752 0 1.147.39.393.389.286 1.132-.287 2.938-2.078 4.319Q344.64 62 341.271 62zm33.45-2.584q.394.495.394.991 0 .637-.609 1.097a1.45 1.45 0 0 1-1.004.39q-.645 0-1.111-.602l-8.78-10.725-1.542 1.593v8.353q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39t1.111.39q.394.39.394 1.097v8.425l9.14-9.345q.537-.531 1.075-.531t1.039.496q.538.531.538 1.062 0 .53-.502 1.026l-7.598 7.787zM381.85 62q-3.083 0-4.802-1.203-1.684-1.24-2.115-3.788-.072-.743.322-1.133.395-.424 1.147-.424.717 0 1.076.354.358.318.501 1.097.252 1.204 1.111 1.663.897.46 2.76.46h5.161q1.577 0 2.401-.353a2.164 2.164 0 0 0 1.219-1.168q.358-.85.358-2.372 0-2.266-.86-3.115t-3.118-.85h-4.444q-3.37 0-5.018-1.628t-1.648-4.99q0-3.33 1.612-4.921Q379.163 38 382.531 38h4.265q5.663 0 6.523 4.672.108.744-.287 1.168-.394.39-1.182.39-.717 0-1.076-.354-.358-.354-.466-1.098-.286-1.026-1.075-1.416t-2.437-.389h-4.265q-1.47 0-2.258.319a1.97 1.97 0 0 0-1.075 1.097q-.287.743-.287 2.16 0 1.45.323 2.23.322.742 1.075 1.096.789.32 2.258.32h4.444q3.549 0 5.269 1.698 1.72 1.7 1.72 5.239 0 3.504-1.72 5.203Q390.56 62 387.011 62zM36.736 0 0 19.258l.471 44.315 22.37 12.761L36.972 100 50.63 76.334 73 63.69v-44.2zM29.67 64.27l-15.306-8.585V35.498l15.306 9.049V64.27M21.9 23.433l14.835-7.657 14.6 7.657-14.6 8.585zm36.971 32.25L43.8 64.27V44.548l15.071-8.817z\"\n  })));\n};\nexport { SvgFindMyBlocksLogoFull as ReactComponent };\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzk0IiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDM5NCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMDQuNTA3IDYyQzEwNC4wMjkgNjIgMTAzLjY1NyA2MS44NzAyIDEwMy4zOTQgNjEuNjEwNkMxMDMuMTMxIDYxLjM1MSAxMDMgNjAuOTg1MyAxMDMgNjAuNTEzM1YzOS40ODczQzEwMyAzOS4wMTU0IDEwMy4xMzEgMzguNjQ5NiAxMDMuMzk0IDM4LjM5QzEwMy42NTcgMzguMTMwNCAxMDQuMDI3IDM4LjAwMDYgMTA0LjUwNSAzOC4wMDA2SDExNy42OTVDMTE4LjE3MiAzOC4wMDA2IDExOC41NDMgMzguMTMwNCAxMTguODA2IDM4LjM5QzExOS4wNjggMzguNjQ5NiAxMTkuMiAzOS4wMTU0IDExOS4yIDM5LjQ4NzNDMTE5LjIgMzkuOTU5MyAxMTkuMDY4IDQwLjMyNTEgMTE4LjgwNiA0MC41ODQ2QzExOC41NDMgNDAuODQ0MiAxMTguMTcyIDQwLjk3NCAxMTcuNjk1IDQwLjk3NEgxMDYuMDExVjQ4LjQwNzRIMTEzLjIxNUMxMTMuNjkyIDQ4LjQwNzQgMTE0LjA2MyA0OC41MzcyIDExNC4zMjYgNDguNzk2OEMxMTQuNTg4IDQ5LjA1NjQgMTE0LjcyIDQ5LjQyMjIgMTE0LjcyIDQ5Ljg5NDFDMTE0LjcyIDUwLjM2NjEgMTE0LjU4OCA1MC43MzE5IDExNC4zMjYgNTAuOTkxNEMxMTQuMDYzIDUxLjI1MSAxMTMuNjkyIDUxLjM4MDggMTEzLjIxNSA1MS4zODA4SDEwNi4wMTFWNjAuNTEzM0MxMDYuMDExIDYwLjk4NTMgMTA1Ljg3OSA2MS4zNTEgMTA1LjYxNiA2MS42MTA2QzEwNS4zNTQgNjEuODcwMiAxMDQuOTgzIDYyIDEwNC41MDUgNjJIMTA0LjUwN1pNMTI0LjQyMSA2MkMxMjMuODk1IDYyIDEyMy41MTMgNjEuODgyIDEyMy4yNzQgNjEuNjQ2QzEyMy4wMzUgNjEuNDEgMTIyLjkxNSA2MS4wMzI1IDEyMi45MTUgNjAuNTEzM1YzOS41MjI3QzEyMi45MTUgMzkuMDAzNiAxMjMuMDM1IDM4LjYyNiAxMjMuMjc0IDM4LjM5QzEyMy41MTMgMzguMTU0IDEyMy44OTUgMzguMDM2IDEyNC40MjEgMzguMDM2QzEyNC45NDYgMzguMDM2IDEyNS4zMjkgMzguMTU0IDEyNS41NjcgMzguMzlDMTI1LjgwNiAzOC42MjYgMTI1LjkyNiAzOS4wMDM2IDEyNS45MjYgMzkuNTIyN1Y2MC41MTMzQzEyNS45MjYgNjEuMDMyNSAxMjUuODA2IDYxLjQxIDEyNS41NjcgNjEuNjQ2QzEyNS4zMjkgNjEuODgyIDEyNC45NDYgNjIgMTI0LjQyMSA2MlpNMTUxLjU1MiAzOC4wMDA2QzE1Mi4wMyAzOC4wMDA2IDE1Mi40IDM4LjEzMDQgMTUyLjY2MyAzOC4zOUMxNTIuOTI2IDM4LjY0OTYgMTUzLjA1NyAzOS4wMTU0IDE1My4wNTcgMzkuNDg3M1Y2MC41MTMzQzE1My4wNTcgNjAuOTg1MyAxNTIuOTI2IDYxLjM1MSAxNTIuNjYzIDYxLjYxMDZDMTUyLjQgNjEuODcwMiAxNTIuMDMgNjIgMTUxLjU1MiA2MkMxNTEuMjY1IDYyIDE1MS4wMDIgNjEuOTI5MiAxNTAuNzYzIDYxLjc4NzZDMTUwLjQ4NCA2MS42MDkxIDE1MC4yNDEgNjEuMzgxMSAxNTAuMDQ2IDYxLjExNTFMMTM2LjM5MSA0My43MzVWNjAuNTEzM0MxMzYuMzkxIDYwLjk4NTMgMTM2LjI2IDYxLjM1MSAxMzUuOTk3IDYxLjYxMDZDMTM1LjczNCA2MS44NzAyIDEzNS4zNjQgNjIgMTM0Ljg4NiA2MkMxMzQuNDA4IDYyIDEzNC4wMzggNjEuODcwMiAxMzMuNzc1IDYxLjYxMDZDMTMzLjUxMiA2MS4zNTEgMTMzLjM4MSA2MC45ODUzIDEzMy4zODEgNjAuNTEzM1YzOS40ODczQzEzMy4zODEgMzkuMDE1NCAxMzMuNTEyIDM4LjY0OTYgMTMzLjc3NSAzOC4zOUMxMzQuMDM4IDM4LjEzMDQgMTM0LjQwOCAzOC4wMDA2IDEzNC44ODYgMzguMDAwNkMxMzUuMTczIDM4LjAwMDYgMTM1LjQyNCAzOC4wNzE0IDEzNS42MzkgMzguMjEzQzEzNS44NzggMzguMzU0NiAxMzYuMTI4IDM4LjU3ODggMTM2LjM5MSAzOC44ODU2TDE1MC4wNDYgNTYuMjY1NlYzOS40ODczQzE1MC4wNDYgMzkuMDE1NCAxNTAuMTc4IDM4LjY0OTYgMTUwLjQ0MSAzOC4zOUMxNTAuNzA0IDM4LjEzMDQgMTUxLjA3NCAzOC4wMDA2IDE1MS41NTIgMzguMDAwNlpNMTYyLjAxMSA2MkMxNjEuNTMzIDYyIDE2MS4xNjMgNjEuODcwMiAxNjAuOSA2MS42MTA2QzE2MC42MzcgNjEuMzUxIDE2MC41MDYgNjAuOTg1MyAxNjAuNTA2IDYwLjUxMzNWMzkuNDg3M0MxNjAuNTA2IDM5LjAxNTQgMTYwLjYzNyAzOC42NDk2IDE2MC45IDM4LjM5QzE2MS4xNjMgMzguMTMwNCAxNjEuNTMzIDM4LjAwMDYgMTYyLjAxMSAzOC4wMDA2SDE3MC42NDlDMTczLjc3OSAzOC4wMDA2IDE3Ni4wNzMgMzguNzMyMiAxNzcuNTMgNDAuMTk1M0MxNzkuMDExIDQxLjYzNDggMTc5Ljc1MiA0My45MDAyIDE3OS43NTIgNDYuOTkxNVY1My4wMDkxQzE3OS43NTIgNTYuMTAwNCAxNzkuMDExIDU4LjM3NzcgMTc3LjUzIDU5Ljg0MDhDMTc2LjA3MyA2MS4yODAyIDE3My43NzkgNjIgMTcwLjY0OSA2MkgxNjIuMDExWk0xNzAuNjQ5IDU5LjAyNjZDMTcyLjIwMiA1OS4wMjY2IDE3My40MDggNTguODM3OCAxNzQuMjY5IDU4LjQ2MDNDMTc1LjEyIDU4LjExNDEgMTc1LjgwMiA1Ny40NTM5IDE3Ni4xNjggNTYuNjE5NkMxNzYuNTUgNTUuNzQ2NSAxNzYuNzQyIDU0LjU0MyAxNzYuNzQyIDUzLjAwOTFWNDYuOTkxNUMxNzYuNzQyIDQ1LjQ1NzcgMTc2LjU1IDQ0LjI2NiAxNzYuMTY4IDQzLjQxNjRDMTc1LjgxMSA0Mi41Njc5IDE3NS4xMjggNDEuODkzNSAxNzQuMjY5IDQxLjU0MDRDMTczLjQwOCA0MS4xNjI4IDE3Mi4yMDIgNDAuOTc0IDE3MC42NDkgNDAuOTc0SDE2My41MTZWNTkuMDI2NkgxNzAuNjQ5Wk0yMTguOTMyIDM4LjAwMDZDMjE5Ljc0NCAzOC4wMDA2IDIyMC4xNSAzOC40OTYyIDIyMC4xNSAzOS40ODczVjYwLjUxMzNDMjIwLjE1IDYwLjk4NTMgMjIwLjAxOSA2MS4zNTEgMjE5Ljc1NiA2MS42MTA2QzIxOS40OTMgNjEuODcwMiAyMTkuMTIzIDYyIDIxOC42NDUgNjJDMjE4LjE2NyA2MiAyMTcuNzk3IDYxLjg3MDIgMjE3LjUzNCA2MS42MTA2QzIxNy4yNzEgNjEuMzUxIDIxNy4xNCA2MC45ODUzIDIxNy4xNCA2MC41MTMzVjQ0LjEyNDRMMjEwLjU0NSA1My43MTdDMjEwLjMwNiA1NC4wNDc0IDIxMC4wNDMgNTQuMjk1MiAyMDkuNzU3IDU0LjQ2MDRDMjA5LjQzMiA1NC42MTAxIDIwOS4wNzYgNTQuNjgyOCAyMDguNzE3IDU0LjY3MjhDMjA4LjQzIDU0LjY3MjggMjA4LjE2OCA1NC42MDIgMjA3LjkyOSA1NC40NjA0QzIwNy42NjcgNTQuMjQ1NSAyMDcuNDM4IDUzLjk5NTIgMjA3LjI0OCA1My43MTdMMjAwLjYxNyA0NC4wODlWNjAuNTEzM0MyMDAuNjE3IDYwLjk4NTMgMjAwLjQ4NiA2MS4zNTEgMjAwLjIyMyA2MS42MTA2QzE5OS45NiA2MS44NzAyIDE5OS41OSA2MiAxOTkuMTEyIDYyQzE5OC42MzQgNjIgMTk4LjI2NCA2MS44NzAyIDE5OC4wMDEgNjEuNjEwNkMxOTcuNzM4IDYxLjM1MSAxOTcuNjA3IDYwLjk4NTMgMTk3LjYwNyA2MC41MTMzVjM5LjQ4NzNDMTk3LjYwNyAzOS4wMTU0IDE5Ny43MzggMzguNjQ5NiAxOTguMDAxIDM4LjM5QzE5OC4yNjQgMzguMTMwNCAxOTguNjM0IDM4LjAwMDYgMTk5LjExMiAzOC4wMDA2QzE5OS43ODEgMzguMDAwNiAyMDAuMzMxIDM4LjMxOTIgMjAwLjc2MSAzOC45NTY0TDIwOC45MzIgNTEuMDk3NkwyMTcuMTA0IDM4Ljk1NjRDMjE3LjUxIDM4LjMxOTIgMjE4LjExOSAzOC4wMDA2IDIxOC45MzIgMzguMDAwNlpNMjQ0LjMwNCAzOC4zNTQ2QzI0NC44MjkgMzguNjg1IDI0NS4wOTIgMzkuMDc0NCAyNDUuMDkyIDM5LjUyMjdDMjQ1LjA5MiAzOS44MDU5IDI0NC45ODUgNDAuMDg5MSAyNDQuNzcgNDAuMzcyM0wyMzYuMjQgNTMuMjkyM1Y2MC41MTMzQzIzNi4yNCA2MC45ODUzIDIzNi4xMDggNjEuMzUxIDIzNS44NDUgNjEuNjEwNkMyMzUuNTgzIDYxLjg3MDIgMjM1LjIxMiA2MiAyMzQuNzM0IDYyQzIzNC4yNTYgNjIgMjMzLjg4NiA2MS44NzAyIDIzMy42MjMgNjEuNjEwNkMyMzMuMzYgNjEuMzUxIDIzMy4yMjkgNjAuOTg1MyAyMzMuMjI5IDYwLjUxMzNWNTMuMjkyM0wyMjUuMDIyIDQwLjM3MjNDMjI0LjgzIDQwLjA0MTkgMjI0LjczNSAzOS43NDY5IDIyNC43MzUgMzkuNDg3M0MyMjQuNzM1IDM4Ljk5MTggMjI0Ljk4NiAzOC41OTA2IDIyNS40ODggMzguMjgzOEMyMjUuODIyIDM4LjA5NSAyMjYuMTIxIDM4LjAwMDYgMjI2LjM4NCAzOC4wMDA2QzIyNi44MzcgMzguMDAwNiAyMjcuMjMyIDM4LjI0ODQgMjI3LjU2NiAzOC43NDRMMjM0LjczNCA1MC4xMDY1TDI0Mi4yNjEgMzguNzQ0QzI0Mi41NDggMzguMjcyIDI0Mi45MyAzOC4wMzYgMjQzLjQwOCAzOC4wMzZDMjQzLjY5NCAzOC4wMzYgMjQzLjk5MyAzOC4xNDIyIDI0NC4zMDQgMzguMzU0NlpNMjc2LjE5IDQ4LjM3MkMyNzguMDc3IDQ5LjQ1NzYgMjc5LjAyMSA1MS4zODA4IDI3OS4wMjEgNTQuMTQxOFY1NS4zNDUzQzI3OS4wMjEgNTcuNTE2NCAyNzguNDM2IDU5LjE2ODIgMjc3LjI2NSA2MC4zMDA5QzI3Ni4xMTggNjEuNDMzNyAyNzQuNDQ1IDYyIDI3Mi4yNDcgNjJIMjYyLjQyN0MyNjEuOTQ5IDYyIDI2MS41NzkgNjEuODcwMiAyNjEuMzE2IDYxLjYxMDZDMjYxLjA1MyA2MS4zNTEgMjYwLjkyMiA2MC45ODUzIDI2MC45MjIgNjAuNTEzM1YzOS40ODczQzI2MC45MjIgMzkuMDE1NCAyNjEuMDUzIDM4LjY0OTYgMjYxLjMxNiAzOC4zOUMyNjEuNTc5IDM4LjEzMDQgMjYxLjk0OSAzOC4wMDA2IDI2Mi40MjcgMzguMDAwNkgyNzEuNzgxQzI3My42NjkgMzguMDAwNiAyNzUuMTI2IDM4LjQ5NjIgMjc2LjE1NCAzOS40ODczQzI3Ny4xODEgNDAuNDc4NCAyNzcuNjk1IDQxLjg5NDMgMjc3LjY5NSA0My43MzVWNDQuNjkwN0MyNzcuNjk1IDQ1LjQ0NTkgMjc3LjU2NCA0Ni4xNDIgMjc3LjMwMSA0Ni43NzkyQzI3Ny4wNTggNDcuMzg3IDI3Ni42NzggNDcuOTMxOSAyNzYuMTkgNDguMzcyWk0yNjMuOTMyIDQ3LjUyMjVIMjcyLjg5MkMyNzMuNTE0IDQ3LjQ1MTcgMjczLjk2OCA0Ny4xNjg1IDI3NC4yNTQgNDYuNjczQzI3NC41NDEgNDYuMTUzOCAyNzQuNjg0IDQ1LjQ5MzEgMjc0LjY4NCA0NC42OTA3VjQzLjczNUMyNzQuNjg0IDQyLjcyMDMgMjc0LjQ2OSA0Mi4wMTIzIDI3NC4wMzkgNDEuNjExMkMyNzMuNjA5IDQxLjE4NjQgMjcyLjg1NyA0MC45NzQgMjcxLjc4MSA0MC45NzRIMjYzLjkzMlY0Ny41MjI1Wk0yNzYuMDEgNTQuMTQxOEMyNzYuMDEgNTIuODIwMyAyNzUuNzI0IDUxLjg4ODIgMjc1LjE1IDUxLjM0NTRDMjc0LjU3NyA1MC43NzkxIDI3My42MDkgNTAuNDk1OSAyNzIuMjQ3IDUwLjQ5NTlIMjYzLjkzMlY1OS4wMjY2SDI3Mi4yNDdDMjczLjU4NSA1OS4wMjY2IDI3NC41NDEgNTguNzQzNSAyNzUuMTE0IDU4LjE3NzFDMjc1LjcxMiA1Ny42MTA3IDI3Ni4wMSA1Ni42NjY4IDI3Ni4wMSA1NS4zNDUzVjU0LjE0MThaTTI4Ni41NDMgNjJDMjg1LjU0IDYyIDI4NS4wMzggNjEuNTA0NCAyODUuMDM4IDYwLjUxMzNWMzkuNDg3M0MyODUuMDM4IDM4LjQ5NjIgMjg1LjU0IDM4LjAwMDYgMjg2LjU0MyAzOC4wMDA2QzI4Ny41NDcgMzguMDAwNiAyODguMDQ4IDM4LjQ5NjIgMjg4LjA0OCAzOS40ODczVjU5LjAyNjZIMjk3Ljk3NkMyOTguOTggNTkuMDI2NiAyOTkuNDgxIDU5LjUyMjIgMjk5LjQ4MSA2MC41MTMzQzI5OS40ODEgNjEuNTA0NCAyOTguOTggNjIgMjk3Ljk3NiA2MkgyODYuNTQzWk0zMTAuODk3IDYyQzMwOC4xNDkgNjIgMzA2LjExOCA2MS4zNjI4IDMwNC44MDQgNjAuMDg4NUMzMDMuNTEzIDU4Ljc5MDYgMzAyLjg2NyA1Ni43ODQ4IDMwMi44NjcgNTQuMDcxVjQ1Ljg5NDJDMzAyLjg2NyA0My4xODA0IDMwMy41MjUgNDEuMTg2NCAzMDQuODQgMzkuOTEyMUMzMDYuMTU0IDM4LjYxNDIgMzA4LjE3MyAzNy45NzcgMzEwLjg5NyAzOC4wMDA2SDMxNS4xOTZDMzE3Ljk0NCAzOC4wMDA2IDMxOS45NjMgMzguNjQ5NiAzMjEuMjUzIDM5Ljk0NzVDMzIyLjU2OSA0MS4yMjE4IDMyMy4yMjYgNDMuMjE1OCAzMjMuMjI2IDQ1LjkyOTZWNTQuMDcxQzMyMy4yMjYgNTYuNzg0OCAzMjIuNTY5IDU4Ljc5MDYgMzIxLjI1MyA2MC4wODg1QzMxOS45NjMgNjEuMzYyOCAzMTcuOTQ0IDYyIDMxNS4xOTYgNjJIMzEwLjg5N1pNMzE1LjE5NiA1OS4wMjY2QzMxNi41MTIgNTkuMDI2NiAzMTcuNTE0IDU4Ljg3MzIgMzE4LjIwOCA1OC41NjY1QzMxOC44OTcgNTguMjg2MyAzMTkuNDQ5IDU3Ljc1MzQgMzE5Ljc0OCA1Ny4wNzk4QzMyMC4wNiA1Ni4zNzE4IDMyMC4yMTQgNTUuMzY4OSAzMjAuMjE0IDU0LjA3MVY0NS45Mjk2QzMyMC4yMTQgNDQuNjU1MyAzMjAuMDYgNDMuNjY0MiAzMTkuNzQ4IDQyLjk1NjNDMzE5LjQ1OCA0Mi4yNjgyIDMxOC45MDQgNDEuNzIxMiAzMTguMjA4IDQxLjQzNDJDMzE3LjQ5MSA0MS4xMjc0IDMxNi40ODYgNDAuOTc0IDMxNS4xOTYgNDAuOTc0SDMxMC44OTdDMzA5LjYwNiA0MC45NTA0IDMwOC42MDEgNDEuMDkyIDMwNy44ODUgNDEuMzk4OEMzMDcuMTg4IDQxLjY4NTggMzA2LjYzNSA0Mi4yMzI4IDMwNi4zNDUgNDIuOTIwOUMzMDYuMDM0IDQzLjYyODggMzA1Ljg3OSA0NC42MTk5IDMwNS44NzkgNDUuODk0MlY1NC4wNzFDMzA1Ljg3OSA1NS4zNjg5IDMwNi4wMzQgNTYuMzcxOCAzMDYuMzQ1IDU3LjA3OThDMzA2LjY1NCA1Ny43NjQxIDMwNy4xNTYgNTguMjU5NyAzMDcuODQ5IDU4LjU2NjVDMzA4LjU2NSA1OC44NzMyIDMwOS41ODIgNTkuMDI2NiAzMTAuODk3IDU5LjAyNjZIMzE1LjE5NlpNMzM2Ljk3IDYyQzMzNC4yMjMgNjIgMzMyLjE5MiA2MS4zNjI4IDMzMC44NzggNjAuMDg4NUMzMjkuNTg3IDU4Ljc5MDYgMzI4Ljk0MiA1Ni43ODQ4IDMyOC45NDIgNTQuMDcxVjQ1LjkyOTZDMzI4Ljk0MiA0My4yMTU4IDMyOS41ODcgNDEuMjEgMzMwLjg3OCAzOS45MTIxQzMzMi4xOTIgMzguNjE0MiAzMzQuMjExIDM3Ljk3NyAzMzYuOTM1IDM4LjAwMDZIMzQxLjI3MUMzNDMuNTE3IDM4LjAwMDYgMzQ1LjIyNiAzOC40NjA4IDM0Ni4zOTcgMzkuMzgxMUMzNDcuNTkxIDQwLjMwMTUgMzQ4LjI4NCA0MS43NDEgMzQ4LjQ3NSA0My42OTk2QzM0OC41NDcgNDQuMTk1MiAzNDguNDUxIDQ0LjU3MjcgMzQ4LjE4OSA0NC44MzIzQzM0Ny45MjYgNDUuMDkxOSAzNDcuNTQzIDQ1LjIyMTcgMzQ3LjA0MiA0NS4yMjE3QzM0Ni41NjQgNDUuMjIxNyAzNDYuMTkzIDQ1LjEwMzcgMzQ1LjkzMSA0NC44Njc3QzM0NS42OTIgNDQuNjA4MSAzNDUuNTM2IDQ0LjIzMDYgMzQ1LjQ2NSA0My43MzVDMzQ1LjM0NSA0Mi42NzMxIDM0NC45NzUgNDEuOTUzMyAzNDQuMzU0IDQxLjU3NThDMzQzLjczMiA0MS4xNzQ2IDM0Mi43MDUgNDAuOTc0IDM0MS4yNzEgNDAuOTc0SDMzNi45MzVDMzM1LjY0NCA0MC45NTA0IDMzNC42NDEgNDEuMDkyIDMzMy45MjQgNDEuMzk4OEMzMzMuMjA3IDQxLjcwNTUgMzMyLjY5NCA0Mi4yMTI5IDMzMi4zODMgNDIuOTIwOUMzMzIuMDk2IDQzLjYyODggMzMxLjk1MyA0NC42MzE3IDMzMS45NTMgNDUuOTI5NlY1NC4wNzFDMzMxLjk1MyA1NS4zNjg5IDMzMi4xMDggNTYuMzcxOCAzMzIuNDE5IDU3LjA3OThDMzMyLjcyOSA1Ny43NjQxIDMzMy4yMzEgNTguMjU5NyAzMzMuOTI0IDU4LjU2NjVDMzM0LjY0MSA1OC44NzMyIDMzNS42NTYgNTkuMDI2NiAzMzYuOTcgNTkuMDI2NkgzNDEuMjcxQzM0Mi43MDUgNTkuMDI2NiAzNDMuNzMyIDU4LjgzNzggMzQ0LjM1NCA1OC40NjAzQzM0NC45NzUgNTguMDU5MSAzNDUuMzQ1IDU3LjMyNzYgMzQ1LjQ2NSA1Ni4yNjU2QzM0NS41MzYgNTUuNzcwMSAzNDUuNjkyIDU1LjQwNDMgMzQ1LjkzMSA1NS4xNjgzQzM0Ni4xOTMgNTQuOTA4NyAzNDYuNTY0IDU0Ljc3OSAzNDcuMDQyIDU0Ljc3OUMzNDcuNTQzIDU0Ljc3OSAzNDcuOTI2IDU0LjkwODcgMzQ4LjE4OSA1NS4xNjgzQzM0OC40NTEgNTUuNDI3OSAzNDguNTQ3IDU1LjgwNTUgMzQ4LjQ3NSA1Ni4zMDFDMzQ4LjI4NCA1OC4yNTk3IDM0Ny41OTEgNTkuNjk5MiAzNDYuMzk3IDYwLjYxOTVDMzQ1LjIyNiA2MS41Mzk4IDM0My41MTcgNjIgMzQxLjI3MSA2MkgzMzYuOTdaTTM3MC40MiA1OS40MTZDMzcwLjY4MyA1OS43NDY0IDM3MC44MTQgNjAuMDc2NyAzNzAuODE0IDYwLjQwNzFDMzcwLjgxNCA2MC44MzE5IDM3MC42MTEgNjEuMTk3NyAzNzAuMjA1IDYxLjUwNDRDMzY5LjkzNCA2MS43NTc5IDM2OS41NzQgNjEuODk3NSAzNjkuMjAxIDYxLjg5MzhDMzY4Ljc3MSA2MS44OTM4IDM2OC40MDEgNjEuNjkzMiAzNjguMDkgNjEuMjkyMUwzNTkuMzEgNTAuNTY2N0wzNTcuNzY4IDUyLjE1OTZWNjAuNTEzM0MzNTcuNzY4IDYwLjk4NTMgMzU3LjYzNyA2MS4zNTEgMzU3LjM3NCA2MS42MTA2QzM1Ny4xMTEgNjEuODcwMiAzNTYuNzQxIDYyIDM1Ni4yNjMgNjJDMzU1Ljc4NSA2MiAzNTUuNDE1IDYxLjg3MDIgMzU1LjE1MiA2MS42MTA2QzM1NC44ODkgNjEuMzUxIDM1NC43NTggNjAuOTg1MyAzNTQuNzU4IDYwLjUxMzNWMzkuNDg3M0MzNTQuNzU4IDM5LjAxNTQgMzU0Ljg4OSAzOC42NDk2IDM1NS4xNTIgMzguMzlDMzU1LjQxNSAzOC4xMzA0IDM1NS43ODUgMzguMDAwNiAzNTYuMjYzIDM4LjAwMDZDMzU2Ljc0MSAzOC4wMDA2IDM1Ny4xMTEgMzguMTMwNCAzNTcuMzc0IDM4LjM5QzM1Ny42MzcgMzguNjQ5NiAzNTcuNzY4IDM5LjAxNTQgMzU3Ljc2OCAzOS40ODczVjQ3LjkxMTlMMzY2LjkwOCAzOC41NjdDMzY3LjI2NiAzOC4yMTMgMzY3LjYyNCAzOC4wMzYgMzY3Ljk4MyAzOC4wMzZDMzY4LjM0MSAzOC4wMzYgMzY4LjY4OCAzOC4yMDEyIDM2OS4wMjIgMzguNTMxNkMzNjkuMzgxIDM4Ljg4NTYgMzY5LjU2IDM5LjIzOTUgMzY5LjU2IDM5LjU5MzVDMzY5LjU2IDM5Ljk0NzUgMzY5LjM5MyA0MC4yODk3IDM2OS4wNTggNDAuNjJMMzYxLjQ2IDQ4LjQwNzRMMzcwLjQyIDU5LjQxNlpNMzgxLjg1IDYyQzM3OS43OTUgNjIgMzc4LjE5NCA2MS41OTg4IDM3Ny4wNDggNjAuNzk2NUMzNzUuOTI1IDU5Ljk3MDYgMzc1LjIyIDU4LjcwOCAzNzQuOTMzIDU3LjAwOUMzNzQuODg1IDU2LjUxMzQgMzc0Ljk5MyA1Ni4xMzU5IDM3NS4yNTUgNTUuODc2M0MzNzUuNTE4IDU1LjU5MzEgMzc1LjkwMSA1NS40NTE1IDM3Ni40MDIgNTUuNDUxNUMzNzYuODggNTUuNDUxNSAzNzcuMjM5IDU1LjU2OTUgMzc3LjQ3OCA1NS44MDU1QzM3Ny43MTcgNTYuMDE3OSAzNzcuODg0IDU2LjM4MzYgMzc3Ljk3OSA1Ni45MDI4QzM3OC4xNDcgNTcuNzA1MSAzNzguNTE3IDU4LjI1OTcgMzc5LjA5IDU4LjU2NjVDMzc5LjY4OCA1OC44NzMyIDM4MC42MDggNTkuMDI2NiAzODEuODUgNTkuMDI2NkgzODcuMDExQzM4OC4wNjIgNTkuMDI2NiAzODguODYzIDU4LjkwODYgMzg5LjQxMiA1OC42NzI3QzM4OS42ODQgNTguNTY3NiAzODkuOTMyIDU4LjQxMDIgMzkwLjE0MSA1OC4yMDk3QzM5MC4zNSA1OC4wMDkxIDM5MC41MTcgNTcuNzY5NCAzOTAuNjMxIDU3LjUwNDVDMzkwLjg3IDU2LjkzODIgMzkwLjk4OSA1Ni4xNDc2IDM5MC45ODkgNTUuMTMyOUMzOTAuOTg5IDUzLjYyMjYgMzkwLjcwMyA1Mi41ODQzIDM5MC4xMjkgNTIuMDE4QzM4OS41NTYgNTEuNDUxNiAzODguNTE2IDUxLjE2ODQgMzg3LjAxMSA1MS4xNjg0SDM4Mi41NjdDMzgwLjMyMSA1MS4xNjg0IDM3OC42NDggNTAuNjI1NyAzNzcuNTQ5IDQ5LjU0MDJDMzc2LjQ1IDQ4LjQ1NDYgMzc1LjkwMSA0Ni43OTEgMzc1LjkwMSA0NC41NDkxQzM3NS45MDEgNDIuMzMwOSAzNzYuNDM4IDQwLjY5MDggMzc3LjUxMyAzOS42Mjg5QzM3OC42MTMgMzguNTQzNCAzODAuMjg1IDM4LjAwMDYgMzgyLjUzMSAzOC4wMDA2SDM4Ni43OTZDMzkwLjU3MSAzOC4wMDA2IDM5Mi43NDYgMzkuNTU4MSAzOTMuMzE5IDQyLjY3MzFDMzkzLjM5MSA0My4xNjg2IDM5My4yOTUgNDMuNTU4IDM5My4wMzIgNDMuODQxMkMzOTIuNzcgNDQuMTAwOCAzOTIuMzc1IDQ0LjIzMDYgMzkxLjg1IDQ0LjIzMDZDMzkxLjM3MiA0NC4yMzA2IDM5MS4wMTMgNDQuMTEyNiAzOTAuNzc0IDQzLjg3NjZDMzkwLjUzNSA0My42NDA2IDM5MC4zOCA0My4yNzQ4IDM5MC4zMDggNDIuNzc5M0MzOTAuMTE3IDQyLjA5NDkgMzg5Ljc1OSA0MS42MjMgMzg5LjIzMyA0MS4zNjM0QzM4OC43MDggNDEuMTAzOCAzODcuODk1IDQwLjk3NCAzODYuNzk2IDQwLjk3NEgzODIuNTMxQzM4MS41NTEgNDAuOTc0IDM4MC43OTkgNDEuMDgwMiAzODAuMjczIDQxLjI5MjZDMzgwLjAyOCA0MS4zOTQzIDM3OS44MDcgNDEuNTQzOSAzNzkuNjIyIDQxLjczMjVDMzc5LjQzNyA0MS45MjExIDM3OS4yOTMgNDIuMTQ0NyAzNzkuMTk4IDQyLjM4OTlDMzc5LjAwNyA0Mi44ODU1IDM3OC45MTEgNDMuNjA1MiAzNzguOTExIDQ0LjU0OTFDMzc4LjkxMSA0NS41MTY3IDM3OS4wMTkgNDYuMjYgMzc5LjIzNCA0Ni43NzkyQzM3OS40NDkgNDcuMjc0NyAzNzkuODA3IDQ3LjY0MDUgMzgwLjMwOSA0Ny44NzY1QzM4MC44MzUgNDguMDg4OSAzODEuNTg3IDQ4LjE5NTEgMzgyLjU2NyA0OC4xOTUxSDM4Ny4wMTFDMzg5LjM3NyA0OC4xOTUxIDM5MS4xMzMgNDguNzYxNCAzOTIuMjggNDkuODk0MUMzOTMuNDI3IDUxLjAyNjggMzk0IDUyLjc3MzEgMzk0IDU1LjEzMjlDMzk0IDU3LjQ2OTEgMzkzLjQyNyA1OS4yMDM2IDM5Mi4yOCA2MC4zMzYzQzM5MS4xMzMgNjEuNDQ1NCAzODkuMzc3IDYyIDM4Ny4wMTEgNjJIMzgxLjg1WiIgZmlsbD0iI0UyMkYyMiIvPgo8cGF0aCBkPSJNMzYuNzM2IDBMMCAxOS4yNThMMC40NzA5OTMgNjMuNTczTDIyLjg0MSA3Ni4zMzRMMzYuOTcyIDEwMEw1MC42MyA3Ni4zMzRMNzMgNjMuNjlWMTkuNDlMMzYuNzM2IDBaTTI5LjY3IDY0LjI3TDE0LjM2NCA1NS42ODVWMzUuNDk4TDI5LjY3IDQ0LjU0N1Y2NC4yNjhWNjQuMjdaTTIxLjkgMjMuNDMzTDM2LjczNSAxNS43NzZMNTEuMzM1IDIzLjQzM0wzNi43MzUgMzIuMDE4TDIxLjkgMjMuNDMzWk01OC44NzEgNTUuNjgzTDQzLjggNjQuMjdWNDQuNTQ4TDU4Ljg3MSAzNS43MzFWNTUuNjgzWiIgZmlsbD0iI0UyMkYyMiIvPgo8L3N2Zz4K\";","// extracted by mini-css-extract-plugin\nexport default {\"navigation\":\"kiMVxg7uvmObzH9y5Nf7\",\"subtitle\":\"lh6Gp5uMZoFjdsD0piCQ\",\"active\":\"IHgUS1orY8DkWO_fbRhQ\"};","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"Ub1Qwzm7eiO9i1pfS4JA\",\"header\":\"MHfJiF9ZtWnpmRSznlsA\",\"container\":\"bDqx83XSEFfGnp0RCn6r\",\"logo\":\"s2jFJ3kbxHqVjcXOAa_e\",\"headerNavigation\":\"O0TgIPrk1w9xxx2FS7rI\"};","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"BBrTfwaRpiXTsfXQotgf\",\"help\":\"eiQPya4NGNSbJXhlQrFG\",\"default\":\"Qrwn2ZFHSg4CzQ5B2Hju\",\"info\":\"dK0gZ8H42AMHDmiT90gt\",\"warning\":\"Iq2GVHFXIvyadiMTJhPA\",\"error\":\"IAqnveipCAc7HoEDOSlg\",\"label\":\"g0nlWBX7OmQcFqR6UoAB\",\"icon\":\"wLv8qHa44_fOcOtj0hCA\"};","module.exports = window[\"React\"];","module.exports = window[\"wp\"][\"apiFetch\"];","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"i18n\"];","import { useState } from \"@wordpress/element\";\nimport { useFindMyBlocks } from \"../../context/FindMyBlocksContext.js\";\nimport style from \"./BlockNavigation.module.css\";\nimport { __ } from \"@wordpress/i18n\";\n\nconst BlockNavigation = ({}) => {\n  const { finder, preferences } = useFindMyBlocks();\n  const { setSelectedBlock } = preferences;\n  const { foundBlocks, withFilters } = finder;\n  const [currentActive, setCurrentActive] = useState(null);\n\n  const filteredBlocks = withFilters(foundBlocks);\n\n  const handleLinkClick = (blockName) => {\n    setSelectedBlock(blockName);\n    setCurrentActive(blockName);\n  };\n\n  return (\n    <nav className={style.navigation}>\n      <ul>\n        {filteredBlocks.map((block) => (\n          <li\n            key={block.name}\n            className={currentActive === block.name ? style.active : \"\"}\n            onClick={() => handleLinkClick(block.name)}\n          >\n            {block.name}{\" \"}\n            <span className={style.subtitle}>\n              {__(\"Found in\", \"find-my-blocks\")} {block.posts.length}{\" \"}\n              {block.posts.length > 1\n                ? __(\"locations\", \"find-my-blocks\")\n                : __(\"location\", \"find-my-blocks\")}\n            </span>\n          </li>\n        ))}\n      </ul>\n    </nav>\n  );\n};\n\nexport default BlockNavigation;\n","import {\n  Button,\n  DropdownMenu,\n  MenuGroup,\n  MenuItem,\n} from \"@wordpress/components\";\nimport style from \"./PageHeader.module.css\";\nimport { __ } from \"@wordpress/i18n\";\nimport Logo from \"../../../images/find-my-blocks-logo-full.svg\";\nimport { useFindMyBlocks } from \"../../context/FindMyBlocksContext.js\";\n\nconst PageHeader = ({ children }) => {\n  const { finder } = useFindMyBlocks();\n  const { isLoading, reset, startSearch, foundBlocks } = finder;\n\n  return (\n    <div className={style.wrapper}>\n      <div className={style.header}>\n        <div className={style.container}>\n          <img\n            className={style.logo}\n            src={Logo}\n            alt=\"Find My Blocks Logo\"\n            onClick={() => (foundBlocks.length > 0 ? reset() : false)}\n          />\n          <div className={style.headerNavigation}>\n            <Button\n              onClick={() => (foundBlocks.length > 0 ? reset() : startSearch())}\n              icon={foundBlocks.length > 0 ? \"update-alt\" : null}\n              isPrimary\n              disabled={isLoading}\n            >\n              {foundBlocks.length > 0 // If there are found blocks, show \"Search Again\"\n                ? __(\"Re-scan\", \"find-my-blocks\")\n                : __(\"Search\", \"find-my-blocks\")}\n            </Button>\n            <DropdownMenu icon=\"menu\" label=\"Select a direction\">\n              {({ onClose }) => (\n                <>\n                  <MenuGroup label={__(\"Quick Links\", \"find-my-blocks\")}>\n                    <MenuItem\n                      href={\n                        fmbGlobal.admin_url + \"/edit.php?post_type=wp_block\"\n                      }\n                    >\n                      {__(\"Reusable Patterns\", \"find-my-blocks\")}\n                    </MenuItem>\n                  </MenuGroup>\n                  <MenuGroup label={__(\"Support\", \"find-my-blocks\")}>\n                    <MenuItem\n                      icon=\"star-filled\"\n                      href=\"https://wordpress.org/support/plugin/find-my-blocks/reviews/\"\n                      target=\"_blank\"\n                    >\n                      {__(\"Review on wp.org\", \"find-my-blocks\")}\n                    </MenuItem>\n                    <MenuItem\n                      icon=\"sos\"\n                      href=\"https://wordpress.org/support/plugin/find-my-blocks/\"\n                      target=\"_blank\"\n                    >\n                      {__(\"Support forum\", \"find-my-blocks\")}\n                    </MenuItem>\n                    <MenuItem\n                      icon=\"external\"\n                      href=\"https://findmyblocks.com/?utm_source=wordpress_site&utm_medium=navigation&utm_campaign=find_my_blocks_active_install\"\n                      target=\"_blank\"\n                    >\n                      findmyblocks.com\n                    </MenuItem>\n                  </MenuGroup>\n                </>\n              )}\n            </DropdownMenu>\n          </div>\n        </div>\n      </div>\n      {children}\n    </div>\n  );\n};\n\nexport default PageHeader;\n","import {\n  Card as WPCard,\n  CardBody,\n  CardDivider,\n  CardHeader,\n  Button,\n  ExternalLink,\n} from \"@wordpress/components\";\nimport { __ } from \"@wordpress/i18n\";\n\nimport { Tag } from \"../Tag/Tag.js\";\n\nexport const Card = ({ post, blockName }) => {\n  const tags = getTags(post);\n\n  return (\n    <WPCard size=\"small\" className=\"fmb-card\">\n      <CardHeader isBorderless>\n        <div>\n          <span className=\"fmb-card-title\">{post.title}</span>\n          <span className=\"fmb-card-meta\">\n            <code>{post?.postType}</code>{\" \"}\n            {post?.isThirdPartyTemplate && (\n              <code>{post?.templateProvider}</code>\n            )}{\" \"}\n          </span>\n        </div>\n        <div>\n          <Button\n            target=\"_blank\"\n            isTertiary\n            href={post.post_url}\n            size={\"small\"}\n          >\n            {__(\"Preview\", \"find-my-blocks\")}\n          </Button>\n          <Button\n            target=\"_blank\"\n            isTertiary\n            href={post.edit_url}\n            size={\"small\"}\n          >\n            {__(\"Edit\", \"find-my-blocks\")}\n          </Button>\n        </div>\n      </CardHeader>\n      {tags.length > 0 && (\n        <>\n          <CardDivider />\n          <CardBody>\n            {tags.map((tag) => {\n              return <Tag key={tag.label} {...tag} />;\n            })}\n          </CardBody>\n        </>\n      )}\n    </WPCard>\n  );\n\n  function getTags(post) {\n    const tags = [];\n\n    if (post.hasConditionalBlocks) {\n      tags.push({\n        label: __(\"Conditional\", \"find-my-blocks\"),\n        help: (\n          <span>\n            {__(\"via\", \"find-my-blocks\")}{\" \"}\n            <ExternalLink target=\"_blank\" href=\"https://conditionalblocks.com/\">\n              Conditional Blocks\n            </ExternalLink>\n          </span>\n        ),\n        icon: \"randomize\",\n        variation: \"info\",\n      });\n    }\n\n    if (post.isSyncedPattern) {\n      tags.push({\n        label: __(\"Synced Pattern\", \"find-my-blocks\"),\n        icon: \"networking\",\n        variation: \"warning\",\n      });\n    }\n\n    if (post.count > 1) {\n      tags.push({\n        label: `${post.count}x ` + blockName,\n        icon: \"list-view\",\n        variation: \"info\",\n      });\n    }\n\n    if (post.isNested) {\n      tags.push({\n        label: __(\"Nested in: \", \"find-my-blocks\") + post.nestedBlockType,\n        icon: \"align-center\",\n        variation: \"info\",\n      });\n    }\n\n    return tags;\n  }\n};\n\nexport function CardGrid({ posts, blockName = \"\" }) {\n  if (!posts || posts.length < 1) {\n    return (\n      <div>\n        <h2>{__(\"No locations found\", \"find-my-blocks\")}</h2>\n        {__(\n          \"Please select a block from the menu, or check the filters.\",\n          \"find-my-blocks\"\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"fmb-card-grid\">\n      {posts.map((post, index) => {\n        return (\n          <Card key={blockName + post?.id} post={post} blockName={blockName} />\n        );\n      })}\n    </div>\n  );\n}\n","import classes from \"./Tag.module.css\";\nimport { Icon } from \"@wordpress/components\";\n\nconst classNames = (...classes) => classes.filter(Boolean).join(\" \");\n\n/**\n * Tag\n * @param {string} variations  - \"info\" | \"warning\" | \"error\" | \"default\";\n * @returns\n */\nexport const Tag = ({ variation = \"default\", icon, label, help }) => {\n  const tagClass = classNames(classes.tag, classes[variation]);\n\n  return (\n    <div className={tagClass}>\n      {icon && <Icon icon={icon} className={classes.Icon} />}\n      <div className={classes.label}>{label}</div>\n      {help && <div className={classes.help}> {help}</div>}\n    </div>\n  );\n};\n","import React, { createContext, useContext } from \"@wordpress/element\";\n\nimport { usePreferences } from \"../hooks/usePreferences.js\";\nimport { useFinder } from \"../hooks/useFinder.js\";\n\n// Create a context for the app state.\nconst FindMyBlocksContext = createContext();\n\n// Create a provider component.\nexport const FindMyBlocksProvider = ({ children }) => {\n  const preferences = usePreferences();\n\n  const searchArgs = {\n    posts_per_page: preferences.postsPerRun,\n  };\n\n  const finder = useFinder({\n    searchArgs,\n    cachedFoundBlocks: preferences?.cachedFoundBlocks ?? [],\n    setCachedFoundBlocks: preferences.setCachedFoundBlocks,\n  });\n\n  const contextValue = {\n    preferences: preferences,\n    finder: finder,\n  };\n\n  return (\n    <FindMyBlocksContext.Provider value={contextValue}>\n      {children}\n    </FindMyBlocksContext.Provider>\n  );\n};\n\n// Create a custom hook to use the app state context.\nexport const useFindMyBlocks = () => {\n  const context = useContext(FindMyBlocksContext);\n  if (!context) {\n    throw new Error(\n      \"useFindMyBlocks must be used within an FindMyBlocksProvider\"\n    );\n  }\n  return context;\n};\n","/**\n * Global fmbGlobal\n */\nimport { useState, useEffect, useRef } from \"@wordpress/element\";\nimport { __ } from \"@wordpress/i18n\";\nimport apiFetch from \"@wordpress/api-fetch\";\n/**\n * Fetch the blocks from the server.\n * the blocks contain the following fields.\n *\n * count, edit_url, id, isNested, isReusable, nestedBlockType, postType, post_url, status, title\n */\nexport const useFinder = ({\n  searchArgs = {},\n  cachedFoundBlocks = [],\n  setCachedFoundBlocks,\n}) => {\n  const filtersDefault = {\n    name: false,\n    blockProvider: false,\n    hasConditionalBlocks: false,\n  };\n\n  const [foundBlocks, setFoundBlocks] = useState([]);\n  const [filters, setFilters] = useState(filtersDefault);\n  const [isLoading, setIsLoading] = useState(false);\n  const [error, setError] = useState(null);\n  const [progress, setProgress] = useState({\n    currentPage: 0,\n    totalPages: 0,\n    percentage: 0,\n    totalPosts: 0,\n    totalBlocks: 0,\n    totalScannedPosts: 0,\n  });\n\n  const [sortOrder, setSortOrder] = useState(\"asc\"); // 'asc' for ascending, 'desc' for descending.\n\n  const abortControllerRef = useRef(null);\n\n  /**\n   * Abort the search.\n   */\n  const abortSearch = () => {\n    if (abortControllerRef.current) {\n      abortControllerRef.current.abort();\n      console.log(\"Search aborted by user.\");\n      setError(new Error(__(\"Search aborted by user\", \"find-my-blocks\"))); // Set an error state indicating the search was aborted\n    }\n  };\n\n  /**\n   * Get the posts with a specific block.\n   * @param {string} blockName - The name of the block.\n   * @returns {Array} The posts with the block.\n   */\n  const postsWithBlock = (blockName) => {\n    const block = withFilters(foundBlocks).find(\n      (block) => block.name === blockName\n    );\n\n    return block ? block.posts : [];\n  };\n\n  /**\n   * Start the search.\n   */\n  const startSearch = async () => {\n    reset();\n    setIsLoading(true);\n    // Create a new instance of AbortController for the entire batch search\n    const controller = new AbortController();\n    abortControllerRef.current = controller; // Keep a reference to the controller\n\n    let currentPage = 1;\n    let totalPosts = 0;\n    let totalScannedPosts = 0;\n    let localBatchResults = []; // Local variable to keep track of batch results.\n    let totalBlockInstances = 0; // Keep track of total block instances detected.\n    let hadError = false;\n\n    try {\n      while (\n        (totalScannedPosts < totalPosts || currentPage === 1) &&\n        !abortControllerRef.current.signal.aborted\n      ) {\n        const timeoutId = setTimeout(() => controller.abort(), 15000); // Set a 10-second timeout\n\n        const queryString = new URLSearchParams({\n          ...searchArgs,\n          paged: currentPage,\n        }).toString();\n\n        try {\n          const searchResponse = await apiFetch({\n            path: `find-my-blocks/v1/search?${queryString}`,\n            signal: controller.signal,\n          });\n\n          clearTimeout(timeoutId); // Clear the timeout if the request completes\n\n          // Add a 1 second delay between requests to avoid server overload.\n          await new Promise((resolve) => setTimeout(resolve, 1000));\n\n          if (searchResponse?.data) {\n            const { blocks, scanned_posts, total_posts, total_pages } =\n              searchResponse.data;\n\n            // Total Posts shouldn't change after the first request.\n            if (currentPage === 1) {\n              totalPosts = total_posts;\n            }\n\n            totalBlockInstances += blocks.reduce(\n              (sum, block) => sum + block.posts.length,\n              0\n            );\n\n            totalScannedPosts += scanned_posts;\n\n            // Update progress state.\n            setProgress({\n              currentPage,\n              totalPages: total_pages,\n              percentage: Math.round((currentPage / total_pages) * 100),\n              totalBlocks: totalBlockInstances,\n              totalPosts: totalPosts,\n              totalScannedPosts: totalScannedPosts,\n            });\n\n            // Add the new blocks to the local variable\n            localBatchResults = localBatchResults.concat(blocks);\n\n            currentPage++;\n\n            if (currentPage > total_pages) {\n              break;\n            }\n          } else {\n            break; // Exit loop if no data is returned\n          }\n        } catch (error) {\n          clearTimeout(timeoutId); // Ensure the timeout is cleared on error as well\n\n          if (error.name === \"AbortError\") {\n            console.error(\n              __(\n                \"Search aborted or timeout reached - Please try lower the amount of posts to search per request.\",\n                \"find-my-blocks\"\n              ),\n              error\n            );\n            setError(\n              new Error(\n                __(\n                  \"Abort/timeout error. Try choosing a lower amount of posts to search per request.\",\n                  \"find-my-blocks\"\n                )\n              )\n            );\n          } else {\n            console.error(\"Error fetching blocks:\", error);\n            setError(error);\n          }\n\n          break; // Exit loop on any error\n        }\n      }\n    } finally {\n      abortControllerRef.current = null;\n\n      // Check if the error indicates an aborted search before resetting\n      if (!error) {\n        if (localBatchResults.length > 0) {\n          const mergedBlocks = mergeBlocks(localBatchResults);\n\n          // Re-sort the blocks if the search was successful\n          const sortedBlocks = changeBlockSorting(sortOrder, mergedBlocks);\n\n          setFilters(filtersDefault);\n          setFoundBlocks(sortedBlocks);\n          setCachedFoundBlocks(sortedBlocks);\n        } else {\n          console.log(error);\n          reset(); // Call the reset function if no results were found or if there was an error other than an aborted search\n        }\n      }\n\n      setIsLoading(false);\n    }\n  };\n\n  /**\n   * Reset the search state to its initial values.\n   */\n  const reset = () => {\n    if (abortControllerRef.current) {\n      abortControllerRef.current.abort();\n    }\n    setFoundBlocks([]);\n    setCachedFoundBlocks([]);\n    setIsLoading(false);\n    setError(null);\n    setProgress({\n      currentPage: 0,\n      totalPages: 0,\n      percentage: 0,\n      totalPosts: 0,\n      totalBlocks: 0,\n      totalScannedPosts: 0,\n    });\n    setSortOrder(\"asc\");\n  };\n\n  let firstLoad = true;\n\n  useEffect(() => {\n    if (firstLoad && cachedFoundBlocks && cachedFoundBlocks.length > 0) {\n      firstLoad = false;\n      setFoundBlocks(changeBlockSorting(sortOrder, cachedFoundBlocks));\n    }\n  }, [cachedFoundBlocks]);\n\n  const changeBlockSorting = (order, foundBlocks) => {\n    // First, sort the blocks\n    const sortedBlocks = [...foundBlocks].sort((a, b) => {\n      if (order === \"asc\") {\n        return a.name.localeCompare(b.name);\n      } else {\n        return b.name.localeCompare(a.name);\n      }\n    });\n\n    // Then, sort the posts within each block\n    sortedBlocks.forEach((block) => {\n      if (block.posts && Array.isArray(block.posts)) {\n        block.posts.sort((a, b) => {\n          if (order === \"asc\") {\n            return a.title.localeCompare(b.title);\n          } else {\n            return b.title.localeCompare(a.title);\n          }\n        });\n      }\n    });\n\n    return sortedBlocks;\n  };\n\n  const withFilters = (blocks) => {\n    if (filters.name) {\n      blocks = blocks.filter((block) =>\n        block.name.toLowerCase().includes(filters.name.toLowerCase())\n      );\n    }\n\n    if (filters.blockProvider) {\n      blocks = blocks.filter((block) =>\n        block.name\n          .split(\"/\")[0]\n          .toLowerCase()\n          .includes(filters.blockProvider.toLowerCase())\n      );\n    }\n\n    /**\n     * Conditional Blocks Integration.\n     */\n    if (filters.hasConditionalBlocks) {\n      blocks = blocks\n        .map((block) => {\n          // Filter out posts that do not have hasConditionalBlocks\n          const filteredPosts = block.posts.filter(\n            (post) => post.hasConditionalBlocks\n          );\n          // Return the block with the filtered posts, or null if no posts left\n          return filteredPosts.length > 0\n            ? { ...block, posts: filteredPosts }\n            : null;\n        })\n        .filter((block) => block !== null); // Remove blocks that have no posts left\n    }\n\n    return blocks;\n  };\n\n  return {\n    reset,\n    foundBlocks,\n    withFilters,\n    setFilters,\n    isLoading,\n    error,\n    startSearch,\n    abortSearch,\n    progress,\n    postsWithBlock,\n  };\n};\n\n/**\n * Merge blocks from different requests.\n * @param {Array} blocks - The blocks to merge.\n * @returns {Array} The merged blocks.\n */\nconst mergeBlocks = (blocks) => {\n  const blockMap = new Map();\n\n  blocks.forEach((newBlock) => {\n    if (blockMap.has(newBlock.name)) {\n      // Merge posts if the block already exists\n      const existingBlock = blockMap.get(newBlock.name);\n      newBlock.posts.forEach((newPost) => {\n        const existingPostIndex = existingBlock.posts.findIndex(\n          (post) => post.id === newPost.id\n        );\n        if (existingPostIndex !== -1) {\n          // Combine the count if the post already exists\n          existingBlock.posts[existingPostIndex].count += newPost.count;\n        } else {\n          // Add the new post if it doesn't exist\n          existingBlock.posts.push(newPost);\n        }\n      });\n    } else {\n      // Add the new block if it doesn't exist\n      blockMap.set(newBlock.name, {\n        ...newBlock,\n        posts: [...newBlock.posts],\n      });\n    }\n  });\n\n  // Convert the map back to an array\n  return Array.from(blockMap.values());\n};\n","import { useState, useEffect, useCallback } from \"@wordpress/element\";\n/**\n * Helper for setting local storage. useEffect to prevent hydration errors.\n * @param {*} key\n * @returns\n */\n// A simple pub-sub mechanism for preferences\nconst preferenceSubscribers = new Map();\n\nconst notifyPreferenceSubscribers = (key, value) => {\n  const callbacks = preferenceSubscribers.get(key) || [];\n  callbacks.forEach((callback) => callback(value));\n};\n\nconst subscribeToPreference = (key, callback) => {\n  if (!preferenceSubscribers.has(key)) {\n    preferenceSubscribers.set(key, []);\n  }\n  preferenceSubscribers.get(key).push(callback);\n};\n\nconst unsubscribeFromPreference = (key, callback) => {\n  const callbacks = preferenceSubscribers.get(key) || [];\n  const index = callbacks.indexOf(callback);\n  if (index > -1) {\n    callbacks.splice(index, 1);\n  }\n};\n\n/**\n * Helper for setting local storage. useEffect to prevent hydration errors.\n * @param {*} key\n * @returns\n */\nexport const useLocalStorage = (key, defaultValue) => {\n  const [data, setData] = useState(defaultValue);\n  const [initialLoad, setInitialLoad] = useState(true);\n\n  useEffect(() => {\n    if (initialLoad) {\n      setInitialLoad(false);\n      const existingData = JSON.parse(localStorage.getItem(key));\n      setData(existingData ?? defaultValue);\n    }\n  }, [initialLoad, key, defaultValue]);\n\n  useEffect(() => {\n    const handleDataChange = (newData) => {\n      setData(newData);\n    };\n\n    subscribeToPreference(key, handleDataChange);\n\n    return () => {\n      unsubscribeFromPreference(key, handleDataChange);\n    };\n  }, [key]);\n\n  const saveDataToLocalStorage = useCallback(\n    (newData) => {\n      localStorage.setItem(key, JSON.stringify(newData));\n      notifyPreferenceSubscribers(key, newData);\n    },\n    [key]\n  );\n\n  return [data, saveDataToLocalStorage];\n};\n","/**\n * Global fmbGlobal\n */\nimport { useLocalStorage } from \"./useLocalStorage.js\";\n/**\n * Store preferences & settings in local storage.\n */\nexport const usePreferences = () => {\n  const [selectedBlock, setSelectedBlock] = useLocalStorage(\n    \"fmb_selected_block\",\n    \"\"\n  );\n  const [postsPerRun, setPostsPerRun] = useLocalStorage(\n    \"fmb_posts_per_run\",\n    10\n  );\n  const [cachedFoundBlocks, setCachedFoundBlocks] = useLocalStorage(\n    \"fmb_found_blocks\",\n    false\n  );\n  const [selectedProvider, setSelectedProvider] = useLocalStorage(\n    \"fmb_selected_provider\",\n    false\n  );\n  const [versionCache, setVersionCache] = useLocalStorage(\n    \"fmb_version_cache\",\n    false\n  );\n  const [conditionalBlocks, setConditionalBlocks] = useLocalStorage(\n    \"fmb_conditional_blocks\",\n    false\n  );\n\n  return {\n    cachedFoundBlocks:\n      fmbGlobal.version === versionCache ? cachedFoundBlocks : false,\n    setCachedFoundBlocks: (value) => {\n      setVersionCache(fmbGlobal.version);\n      setSelectedProvider(false);\n      setSelectedBlock(false);\n      setConditionalBlocks(false);\n      setCachedFoundBlocks(value);\n    },\n    selectedBlock,\n    setSelectedBlock,\n    selectedProvider,\n    setSelectedProvider,\n    postsPerRun: parseInt(postsPerRun),\n    setPostsPerRun,\n    conditionalBlocks,\n    setConditionalBlocks,\n  };\n};\n","/**\n * global fmbGlobal\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { __ } from \"@wordpress/i18n\";\nimport { CardGrid } from \"../components/PostCards/PostCards.js\";\nimport BlockNavigation from \"../components/BlockNavigation/index.js\";\nimport { useFindMyBlocks } from \"../context/FindMyBlocksContext.js\";\nimport { getUniqueProviders } from \"../utils/functions.js\";\nimport {\n  Button,\n  ExternalLink,\n  RadioControl,\n  Notice,\n  ComboboxControl,\n  SearchControl,\n  CheckboxControl,\n} from \"@wordpress/components\";\n\n/**\n * Overview Page.\n */\nfunction SearchPage() {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const {\n    foundBlocks,\n    startSearch,\n    abortSearch,\n    progress,\n    isLoading,\n    error,\n    postsWithBlock,\n  } = finder;\n\n  const { selectedBlock, postsPerRun, setPostsPerRun } = preferences;\n\n  if (isLoading)\n    return (\n      <div className=\"fmb-bento-container\">\n        <div className=\"fmb-bento-grid\">\n          <div className=\"fmb-box fmb-box-full\">\n            <h2>{__(\"Searching for your blocks...\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\"Progress:\", \"find-my-blocks\")} {progress.percentage}%\n            </p>\n            <p>\n              {__(\"Scanning batch\", \"find-my-blocks\")} {progress.currentPage}{\" \"}\n              {__(\"out of\", \"find-my-blocks\")} {progress.totalPages}\n            </p>\n            <p>\n              {__(\"Total block instances detected:\", \"find-my-blocks\")}{\" \"}\n              {progress.totalBlocks}\n              {\" \" + __(\"in\", \"find-my-blocks\")} {progress.totalScannedPosts}\n              {\" \" + __(\"locations.\", \"find-my-blocks\")}\n            </p>\n            <Button\n              onClick={() => abortSearch()}\n              isDestructive\n              isPrimary\n              disabled={!isLoading}\n            >\n              {__(\"Abort Search\", \"find-my-blocks\")}\n            </Button>\n          </div>\n        </div>\n      </div>\n    );\n\n  const posts = postsWithBlock(selectedBlock);\n\n  if (!error && foundBlocks.length > 0) {\n    return (\n      <Fragment>\n        <div className=\"fmb-container\">\n          <div className=\"fmb-grid-results-page\">\n            <div className=\"fmb-box\">\n              <h2>{__(\"Filters\", \"find-my-blocks\")}</h2>\n              <div className=\"fmb-search-filters\">\n                <SearchFilter />\n                <BlockProviderFilter />\n                {fmbGlobal?.conditional_blocks_installed && (\n                  <ConditionalBlocksFilter />\n                )}\n              </div>\n              <h2>{__(\"Found Blocks\", \"find-my-blocks\")}</h2>\n              <p>\n                {__(\n                  \"The below blocks have been detected during the scan.\",\n                  \"find-my-blocks\"\n                )}\n              </p>\n              <nav className=\"fmb-side-navigation\">\n                <BlockNavigation />\n              </nav>\n            </div>\n\n            <div>\n              {selectedBlock && (\n                <Fragment>\n                  <h2>\n                    <span className=\"fmb-badge\">{selectedBlock}</span>\n                  </h2>\n                  {posts?.length > 0 && (\n                    <p>\n                      {__(\"Instances of the\", \"find-my-blocks\")}{\" \"}\n                      <b>{selectedBlock}</b>{\" \"}\n                      {__(\"block has been found in these\", \"find-my-blocks\")}{\" \"}\n                      {posts.length ?? 0} {__(\"locations.\", \"find-my-blocks\")}\n                    </p>\n                  )}\n                </Fragment>\n              )}\n              <CardGrid blockName={selectedBlock} posts={posts}></CardGrid>\n            </div>\n          </div>\n        </div>\n      </Fragment>\n    );\n  }\n\n  return (\n    <Fragment>\n      <ErrorNotice error={error} />\n      <div className=\"fmb-bento-container\">\n        <div className=\"fmb-bento-grid\">\n          <div className=\"fmb-box fmb-box-full\">\n            <h2>{__(\"Get Started\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\n                \"Find My Blocks will search through all your templates, posts and pages to find the WordPress blocks.\",\n                \"find-my-blocks\"\n              )}\n            </p>\n\n            <RadioControl\n              className=\"fmb-performance-control\"\n              label=\"Performance\"\n              help={__(\n                \"Warning! Choose the performance level that matches your server. Fetching too may posts at once may temporarily crash your site.\",\n                \"find-my-blocks\"\n              )}\n              onChange={(val) => {\n                setPostsPerRun(val);\n              }}\n              options={[\n                {\n                  label: __(\n                    \"Low (Recommended for most sites, 10 post per run)\",\n                    \"find-my-blocks\"\n                  ),\n                  value: 10,\n                },\n                {\n                  label: __(\"Standard (100 posts per run)\", \"find-my-blocks\"),\n                  value: 100,\n                },\n                {\n                  label: __(\"Ultra (500 posts per run)\", \"find-my-blocks\"),\n                  value: 500,\n                },\n              ]}\n              selected={postsPerRun ?? 10}\n            />\n\n            <Button\n              onClick={() => startSearch()}\n              isPrimary\n              disabled={isLoading}\n            >\n              {__(\"Start Search\", \"find-my-blocks\")}\n            </Button>\n          </div>\n          <div className=\"fmb-box\">\n            <h2>{__(\"Block Tools & Resources\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\n                \"Create faster & better WordPress sites with block tutorials from experts.\",\n                \"find-my-blocks\"\n              )}\n            </p>\n            <ul>\n              <li>\n                <ExternalLink\n                  href=\"https://findmyblocks.com?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install\"\n                  target=\"_blank\"\n                >\n                  findmyblocks.com\n                </ExternalLink>\n              </li>\n              <li>\n                <ExternalLink\n                  href=\"https://conditionalblocks.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install\"\n                  target=\"_blank\"\n                >\n                  Conditional Blocks plugin\n                </ExternalLink>\n              </li>\n              <li>\n                <ExternalLink\n                  href=\"https://morganhvidt.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install\"\n                  target=\"_blank\"\n                >\n                  @MorganHvidt\n                </ExternalLink>\n                {__(\"(Developer) \", \"find-my-blocks\")}\n              </li>\n            </ul>\n          </div>\n          <div className=\"fmb-box\">\n            <h2>{__(\"Support Development\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\n                \"I'm building Find My Blocks in my free time. If you find it useful, please consider donating, or contributing to the project.\",\n                \"find-my-blocks\"\n              )}{\" \"}\n              <em>- Morgan Hvidt</em>\n            </p>\n            <div style={{ marginTop: \"30px\" }}>\n              <Button\n                isSecondary\n                target=\"_blank\"\n                href=\"https://github.com/morganhvidt/find-my-blocks/\"\n              >\n                {__(\"Contribute on Github\", \"find-my-blocks\")}\n              </Button>{\" \"}\n              <Button\n                style={{ marginLeft: \"10px\" }}\n                isSecondary\n                target=\"_blank\"\n                href=\"https://morganhvidt.com/donate/\"\n              >\n                {__(\"Donate to development\", \"find-my-blocks\")}\n              </Button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </Fragment>\n  );\n}\n\nconst ErrorNotice = ({ error }) => {\n  if (error) {\n    return <Notice status=\"error\">{error.message}</Notice>;\n  }\n\n  return null;\n};\n\nfunction SearchFilter({ className }) {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const [searchInput, setSearchInput] = useState(\"\");\n\n  const handleSearch = (value) => {\n    setSearchInput(value);\n    finder.setFilters((prev) => ({\n      ...prev,\n      name: value.length ? value : false,\n    }));\n  };\n\n  return <SearchControl value={searchInput} onChange={handleSearch} />;\n}\n\n/**\n * Component for filtering block providers.\n */\nfunction BlockProviderFilter() {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const [blockProvider, setBlockProvider] = useState(\n    preferences?.selectedProvider ?? false\n  );\n\n  const handleChange = (value) => {\n    setBlockProvider(value);\n    preferences?.setSelectedProvider(value);\n    finder.setFilters((prev) => ({\n      ...prev,\n      blockProvider: value ?? false,\n    }));\n  };\n\n  const providers = getUniqueProviders(finder.foundBlocks);\n\n  return (\n    <ComboboxControl\n      allowReset\n      label=\"Block Provider\"\n      help=\"Core or third-party block providers\"\n      value={blockProvider}\n      onChange={handleChange}\n      options={providers}\n      onFilterValueChange={(inputValue) =>\n        setBlockProvider(\n          providers.filter((option) =>\n            option.label.toLowerCase().startsWith(inputValue.toLowerCase())\n          )\n        )\n      }\n    />\n  );\n}\n/**\n * Conditional Blocks Integration.\n */\nconst ConditionalBlocksFilter = () => {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const [isChecked, setChecked] = useState(\n    preferences?.conditionalBlocks ? true : false\n  );\n\n  const handleChange = (value) => {\n    setChecked(value ? true : false);\n    preferences?.setConditionalBlocks(value ? true : false);\n    finder.setFilters((prev) => ({\n      ...prev,\n      hasConditionalBlocks: value ? true : false,\n    }));\n  };\n\n  return (\n    <CheckboxControl\n      label=\"Conditional Blocks\"\n      help={__(\n        \"Only blocks with visibility changed by the Conditional Blocks plugin\",\n        \"find-my-blocks\"\n      )}\n      checked={isChecked}\n      onChange={handleChange}\n    />\n  );\n};\n\nexport default SearchPage;\n","/**\n * Get unique providers from a list of blocks.\n * @param {Array} blocks - The list of blocks.\n * @returns {Array} The unique providers.\n */\nexport function getUniqueProviders(blocks) {\n  return blocks.reduce((uniqueProviders, block) => {\n    const provider = block.name.split(\"/\")[0] ?? false;\n    if (!uniqueProviders.some((prov) => prov.value === provider)) {\n      uniqueProviders.push({ value: provider, label: provider });\n    }\n    return uniqueProviders;\n  }, []);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * global fmbGlobal\n */\nimport { Fragment, render, createRoot } from \"@wordpress/element\";\nimport { __ } from \"@wordpress/i18n\";\nimport SearchPage from \"./pages/SearchPage.js\";\nimport { FindMyBlocksProvider } from \"./context/FindMyBlocksContext.js\";\nimport PageHeader from \"./components/PageHeader/PageHeader.js\";\n\n/**\n * Embed our App to the HTML.\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const target = document.getElementById(\"find-my-blocks-app\");\n\n  if (target) {\n    if (createRoot) {\n      createRoot(target).render(<App />);\n    } else {\n      render(<App />, target);\n    }\n  }\n});\n\n/**\n * Render Our App.\n */\nexport function App() {\n  return (\n    <Fragment>\n      <FindMyBlocksProvider>\n        <PageHeader />\n        <SearchPage />\n      </FindMyBlocksProvider>\n    </Fragment>\n  );\n}\n"],"names":["module","exports","window","BlockNavigation","finder","preferences","useFindMyBlocks","setSelectedBlock","foundBlocks","withFilters","currentActive","setCurrentActive","useState","filteredBlocks","createElement","className","style","navigation","map","block","key","name","active","onClick","handleLinkClick","blockName","subtitle","__","posts","length","PageHeader","children","isLoading","reset","startSearch","wrapper","header","container","logo","src","Logo","alt","headerNavigation","Button","icon","isPrimary","disabled","DropdownMenu","label","onClose","Fragment","MenuGroup","MenuItem","href","fmbGlobal","admin_url","target","Card","post","tags","hasConditionalBlocks","push","help","ExternalLink","variation","isSyncedPattern","count","isNested","nestedBlockType","getTags","WPCard","size","CardHeader","isBorderless","title","postType","isThirdPartyTemplate","templateProvider","isTertiary","post_url","edit_url","CardDivider","CardBody","tag","Tag","CardGrid","index","id","tagClass","classNames","classes","filter","Boolean","join","Icon","FindMyBlocksContext","createContext","FindMyBlocksProvider","_preferences$cachedFo","usePreferences","searchArgs","posts_per_page","postsPerRun","contextValue","useFinder","cachedFoundBlocks","setCachedFoundBlocks","Provider","value","context","useContext","Error","filtersDefault","blockProvider","setFoundBlocks","filters","setFilters","setIsLoading","error","setError","progress","setProgress","currentPage","totalPages","percentage","totalPosts","totalBlocks","totalScannedPosts","sortOrder","setSortOrder","abortControllerRef","useRef","current","abort","firstLoad","useEffect","changeBlockSorting","order","sortedBlocks","sort","a","b","localeCompare","forEach","Array","isArray","blocks","toLowerCase","includes","split","filteredPosts","async","controller","AbortController","localBatchResults","totalBlockInstances","signal","aborted","timeoutId","setTimeout","queryString","URLSearchParams","paged","toString","searchResponse","apiFetch","path","clearTimeout","Promise","resolve","data","scanned_posts","total_posts","total_pages","reduce","sum","Math","round","concat","console","mergedBlocks","mergeBlocks","log","abortSearch","postsWithBlock","find","blockMap","Map","newBlock","has","existingBlock","get","newPost","existingPostIndex","findIndex","set","from","values","preferenceSubscribers","useLocalStorage","defaultValue","setData","initialLoad","setInitialLoad","existingData","JSON","parse","localStorage","getItem","handleDataChange","newData","subscribeToPreference","callback","unsubscribeFromPreference","callbacks","indexOf","splice","useCallback","setItem","stringify","notifyPreferenceSubscribers","selectedBlock","setPostsPerRun","selectedProvider","setSelectedProvider","versionCache","setVersionCache","conditionalBlocks","setConditionalBlocks","version","parseInt","ErrorNotice","Notice","status","message","SearchFilter","searchInput","setSearchInput","SearchControl","onChange","prev","BlockProviderFilter","_preferences$selected","setBlockProvider","providers","getUniqueProviders","ComboboxControl","allowReset","options","onFilterValueChange","inputValue","option","startsWith","ConditionalBlocksFilter","isChecked","setChecked","CheckboxControl","checked","isDestructive","_posts$length","conditional_blocks_installed","RadioControl","val","selected","marginTop","isSecondary","marginLeft","uniqueProviders","_block$name$split$","provider","some","prov","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","definition","o","Object","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","call","App","SearchPage","document","addEventListener","getElementById","createRoot","render"],"sourceRoot":""}
     1{"version":3,"file":"find-my-blocks.js","mappings":"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","sources":["webpack://find-my-blocks/./src/assets/images/find-my-blocks-logo-full.svg","webpack://find-my-blocks/./src/assets/js/components/BlockNavigation/BlockNavigation.module.css?5aa6","webpack://find-my-blocks/./src/assets/js/components/PageHeader/PageHeader.module.css?b4c4","webpack://find-my-blocks/./src/assets/js/components/Tag/Tag.module.css?f54f","webpack://find-my-blocks/external window \"React\"","webpack://find-my-blocks/external window [\"wp\",\"apiFetch\"]","webpack://find-my-blocks/external window [\"wp\",\"components\"]","webpack://find-my-blocks/external window [\"wp\",\"element\"]","webpack://find-my-blocks/external window [\"wp\",\"i18n\"]","webpack://find-my-blocks/./src/assets/js/components/BlockNavigation/index.js","webpack://find-my-blocks/./src/assets/js/components/PageHeader/PageHeader.js","webpack://find-my-blocks/./src/assets/js/components/PostCards/PostCards.js","webpack://find-my-blocks/./src/assets/js/components/Tag/Tag.js","webpack://find-my-blocks/./src/assets/js/context/FindMyBlocksContext.js","webpack://find-my-blocks/./src/assets/js/hooks/useFinder.js","webpack://find-my-blocks/./src/assets/js/hooks/useLocalStorage.js","webpack://find-my-blocks/./src/assets/js/hooks/usePreferences.js","webpack://find-my-blocks/./src/assets/js/pages/SearchPage.js","webpack://find-my-blocks/./src/assets/js/utils/functions.js","webpack://find-my-blocks/webpack/bootstrap","webpack://find-my-blocks/webpack/runtime/compat get default export","webpack://find-my-blocks/webpack/runtime/define property getters","webpack://find-my-blocks/webpack/runtime/hasOwnProperty shorthand","webpack://find-my-blocks/./src/assets/js/find-my-blocks.js"],"sourcesContent":["var _path;\nfunction _extends() { _extends = Object.assign ? Object.assign.bind() : function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\nimport * as React from \"react\";\nvar SvgFindMyBlocksLogoFull = function SvgFindMyBlocksLogoFull(props) {\n  return /*#__PURE__*/React.createElement(\"svg\", _extends({\n    xmlns: \"http://www.w3.org/2000/svg\",\n    width: 394,\n    height: 100,\n    fill: \"none\"\n  }, props), _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n    fill: \"#E22F22\",\n    d: \"M104.507 62q-.718 0-1.113-.39-.394-.389-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39h13.19q.716 0 1.111.39.394.39.394 1.097 0 .708-.394 1.098-.395.39-1.111.389h-11.684v7.433h7.204q.716 0 1.111.39.394.39.394 1.097 0 .708-.394 1.097-.395.39-1.111.39h-7.204v9.132q0 .708-.395 1.098-.393.39-1.111.389zm19.914 0q-.789 0-1.147-.354-.359-.354-.359-1.133v-20.99q0-.78.359-1.133.358-.354 1.147-.354.788 0 1.146.354.359.354.359 1.133v20.99q0 .78-.359 1.133-.358.354-1.146.354m27.131-24q.717 0 1.111.39t.394 1.097v21.026q0 .708-.394 1.098t-1.111.389q-.43 0-.789-.212a2.7 2.7 0 0 1-.717-.673l-13.655-17.38v16.778q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39.43 0 .753.213.358.213.752.673l13.655 17.38V39.487q0-.708.395-1.097.394-.39 1.111-.39m10.459 24q-.717 0-1.111-.39-.394-.389-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39h8.638q4.695 0 6.881 2.195 2.222 2.16 2.222 6.797v6.017q0 4.637-2.222 6.832Q175.344 62 170.649 62zm8.638-2.973q2.329 0 3.62-.567a3.52 3.52 0 0 0 1.899-1.84q.574-1.31.574-3.61v-6.018q0-2.301-.574-3.576a3.5 3.5 0 0 0-1.899-1.876q-1.291-.566-3.62-.566h-7.133v18.053zM218.932 38q1.218 0 1.218 1.486v21.026q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V44.124l-6.595 9.593q-.359.495-.788.743a2.3 2.3 0 0 1-1.04.213q-.43 0-.788-.213a3.6 3.6 0 0 1-.681-.743l-6.631-9.628v16.424q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39 1.004.001 1.649.956l8.171 12.142 8.172-12.142q.609-.955 1.828-.955m25.372.354q.788.495.788 1.168 0 .424-.322.85l-8.53 12.92v7.22q0 .708-.395 1.098-.394.39-1.111.389-.717 0-1.111-.39-.394-.389-.394-1.097v-7.22l-8.207-12.92q-.288-.496-.287-.886 0-.742.753-1.203.501-.283.896-.283.68 0 1.182.743l7.168 11.362 7.527-11.362q.43-.708 1.147-.708.43 0 .896.319m31.886 10.017q2.83 1.629 2.831 5.77v1.203q0 3.257-1.756 4.956-1.72 1.7-5.018 1.699h-9.82q-.717 0-1.111-.39-.394-.389-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39h9.354q2.832 0 4.373 1.487 1.54 1.486 1.541 4.248v.956q0 1.133-.394 2.088a4.3 4.3 0 0 1-1.111 1.593m-12.258-.85h8.96q.933-.105 1.362-.849.43-.78.43-1.982v-.956q0-1.522-.645-2.124-.644-.637-2.258-.637h-7.849zm12.078 6.62q0-1.983-.86-2.797-.86-.85-2.903-.85h-8.315v8.532h8.315q2.007 0 2.867-.85.897-.849.896-2.832zM286.543 62q-1.505 0-1.505-1.487V39.487q0-1.486 1.505-1.486t1.505 1.486v19.54h9.928q1.505 0 1.505 1.486 0 1.487-1.505 1.487zm24.354 0q-4.122 0-6.093-1.911-1.937-1.947-1.937-6.018v-8.177q0-4.071 1.973-5.982 1.971-1.947 6.057-1.911h4.299q4.122 0 6.057 1.947 1.974 1.911 1.973 5.982v8.141q0 4.071-1.973 6.018Q319.318 62 315.196 62zm4.299-2.973q1.972 0 3.012-.46a2.86 2.86 0 0 0 1.54-1.487q.467-1.062.466-3.009V45.93q.001-1.912-.466-2.974a2.85 2.85 0 0 0-1.54-1.522q-1.076-.46-3.012-.46h-4.299q-1.937-.036-3.012.425a2.84 2.84 0 0 0-1.54 1.522q-.466 1.062-.466 2.973v8.177q0 1.946.466 3.009a2.87 2.87 0 0 0 1.504 1.486q1.075.46 3.048.46zM336.97 62q-4.12 0-6.092-1.911-1.936-1.947-1.936-6.018V45.93q0-4.071 1.936-6.018 1.971-1.947 6.057-1.911h4.336q3.37 0 5.126 1.38 1.791 1.38 2.078 4.319.107.743-.286 1.132-.395.39-1.147.39-.717 0-1.111-.354-.359-.39-.466-1.133-.18-1.593-1.111-2.16-.933-.6-3.083-.601h-4.336q-1.936-.036-3.011.425a2.85 2.85 0 0 0-1.541 1.522q-.43 1.061-.43 3.009v8.141q0 1.946.466 3.009.465 1.026 1.505 1.486 1.075.46 3.046.46h4.301q2.15 0 3.083-.566.931-.6 1.111-2.194.107-.744.466-1.098.394-.39 1.111-.389.752 0 1.147.39.393.389.286 1.132-.287 2.938-2.078 4.319Q344.64 62 341.271 62zm33.45-2.584q.394.495.394.991 0 .637-.609 1.097a1.45 1.45 0 0 1-1.004.39q-.645 0-1.111-.602l-8.78-10.725-1.542 1.593v8.353q0 .708-.394 1.098t-1.111.389-1.111-.39-.394-1.097V39.487q0-.708.394-1.097.394-.39 1.111-.39t1.111.39q.394.39.394 1.097v8.425l9.14-9.345q.537-.531 1.075-.531t1.039.496q.538.531.538 1.062 0 .53-.502 1.026l-7.598 7.787zM381.85 62q-3.083 0-4.802-1.203-1.684-1.24-2.115-3.788-.072-.743.322-1.133.395-.424 1.147-.424.717 0 1.076.354.358.318.501 1.097.252 1.204 1.111 1.663.897.46 2.76.46h5.161q1.577 0 2.401-.353a2.164 2.164 0 0 0 1.219-1.168q.358-.85.358-2.372 0-2.266-.86-3.115t-3.118-.85h-4.444q-3.37 0-5.018-1.628t-1.648-4.99q0-3.33 1.612-4.921Q379.163 38 382.531 38h4.265q5.663 0 6.523 4.672.108.744-.287 1.168-.394.39-1.182.39-.717 0-1.076-.354-.358-.354-.466-1.098-.286-1.026-1.075-1.416t-2.437-.389h-4.265q-1.47 0-2.258.319a1.97 1.97 0 0 0-1.075 1.097q-.287.743-.287 2.16 0 1.45.323 2.23.322.742 1.075 1.096.789.32 2.258.32h4.444q3.549 0 5.269 1.698 1.72 1.7 1.72 5.239 0 3.504-1.72 5.203Q390.56 62 387.011 62zM36.736 0 0 19.258l.471 44.315 22.37 12.761L36.972 100 50.63 76.334 73 63.69v-44.2zM29.67 64.27l-15.306-8.585V35.498l15.306 9.049V64.27M21.9 23.433l14.835-7.657 14.6 7.657-14.6 8.585zm36.971 32.25L43.8 64.27V44.548l15.071-8.817z\"\n  })));\n};\nexport { SvgFindMyBlocksLogoFull as ReactComponent };\nexport default \"data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzk0IiBoZWlnaHQ9IjEwMCIgdmlld0JveD0iMCAwIDM5NCAxMDAiIGZpbGw9Im5vbmUiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CjxwYXRoIGQ9Ik0xMDQuNTA3IDYyQzEwNC4wMjkgNjIgMTAzLjY1NyA2MS44NzAyIDEwMy4zOTQgNjEuNjEwNkMxMDMuMTMxIDYxLjM1MSAxMDMgNjAuOTg1MyAxMDMgNjAuNTEzM1YzOS40ODczQzEwMyAzOS4wMTU0IDEwMy4xMzEgMzguNjQ5NiAxMDMuMzk0IDM4LjM5QzEwMy42NTcgMzguMTMwNCAxMDQuMDI3IDM4LjAwMDYgMTA0LjUwNSAzOC4wMDA2SDExNy42OTVDMTE4LjE3MiAzOC4wMDA2IDExOC41NDMgMzguMTMwNCAxMTguODA2IDM4LjM5QzExOS4wNjggMzguNjQ5NiAxMTkuMiAzOS4wMTU0IDExOS4yIDM5LjQ4NzNDMTE5LjIgMzkuOTU5MyAxMTkuMDY4IDQwLjMyNTEgMTE4LjgwNiA0MC41ODQ2QzExOC41NDMgNDAuODQ0MiAxMTguMTcyIDQwLjk3NCAxMTcuNjk1IDQwLjk3NEgxMDYuMDExVjQ4LjQwNzRIMTEzLjIxNUMxMTMuNjkyIDQ4LjQwNzQgMTE0LjA2MyA0OC41MzcyIDExNC4zMjYgNDguNzk2OEMxMTQuNTg4IDQ5LjA1NjQgMTE0LjcyIDQ5LjQyMjIgMTE0LjcyIDQ5Ljg5NDFDMTE0LjcyIDUwLjM2NjEgMTE0LjU4OCA1MC43MzE5IDExNC4zMjYgNTAuOTkxNEMxMTQuMDYzIDUxLjI1MSAxMTMuNjkyIDUxLjM4MDggMTEzLjIxNSA1MS4zODA4SDEwNi4wMTFWNjAuNTEzM0MxMDYuMDExIDYwLjk4NTMgMTA1Ljg3OSA2MS4zNTEgMTA1LjYxNiA2MS42MTA2QzEwNS4zNTQgNjEuODcwMiAxMDQuOTgzIDYyIDEwNC41MDUgNjJIMTA0LjUwN1pNMTI0LjQyMSA2MkMxMjMuODk1IDYyIDEyMy41MTMgNjEuODgyIDEyMy4yNzQgNjEuNjQ2QzEyMy4wMzUgNjEuNDEgMTIyLjkxNSA2MS4wMzI1IDEyMi45MTUgNjAuNTEzM1YzOS41MjI3QzEyMi45MTUgMzkuMDAzNiAxMjMuMDM1IDM4LjYyNiAxMjMuMjc0IDM4LjM5QzEyMy41MTMgMzguMTU0IDEyMy44OTUgMzguMDM2IDEyNC40MjEgMzguMDM2QzEyNC45NDYgMzguMDM2IDEyNS4zMjkgMzguMTU0IDEyNS41NjcgMzguMzlDMTI1LjgwNiAzOC42MjYgMTI1LjkyNiAzOS4wMDM2IDEyNS45MjYgMzkuNTIyN1Y2MC41MTMzQzEyNS45MjYgNjEuMDMyNSAxMjUuODA2IDYxLjQxIDEyNS41NjcgNjEuNjQ2QzEyNS4zMjkgNjEuODgyIDEyNC45NDYgNjIgMTI0LjQyMSA2MlpNMTUxLjU1MiAzOC4wMDA2QzE1Mi4wMyAzOC4wMDA2IDE1Mi40IDM4LjEzMDQgMTUyLjY2MyAzOC4zOUMxNTIuOTI2IDM4LjY0OTYgMTUzLjA1NyAzOS4wMTU0IDE1My4wNTcgMzkuNDg3M1Y2MC41MTMzQzE1My4wNTcgNjAuOTg1MyAxNTIuOTI2IDYxLjM1MSAxNTIuNjYzIDYxLjYxMDZDMTUyLjQgNjEuODcwMiAxNTIuMDMgNjIgMTUxLjU1MiA2MkMxNTEuMjY1IDYyIDE1MS4wMDIgNjEuOTI5MiAxNTAuNzYzIDYxLjc4NzZDMTUwLjQ4NCA2MS42MDkxIDE1MC4yNDEgNjEuMzgxMSAxNTAuMDQ2IDYxLjExNTFMMTM2LjM5MSA0My43MzVWNjAuNTEzM0MxMzYuMzkxIDYwLjk4NTMgMTM2LjI2IDYxLjM1MSAxMzUuOTk3IDYxLjYxMDZDMTM1LjczNCA2MS44NzAyIDEzNS4zNjQgNjIgMTM0Ljg4NiA2MkMxMzQuNDA4IDYyIDEzNC4wMzggNjEuODcwMiAxMzMuNzc1IDYxLjYxMDZDMTMzLjUxMiA2MS4zNTEgMTMzLjM4MSA2MC45ODUzIDEzMy4zODEgNjAuNTEzM1YzOS40ODczQzEzMy4zODEgMzkuMDE1NCAxMzMuNTEyIDM4LjY0OTYgMTMzLjc3NSAzOC4zOUMxMzQuMDM4IDM4LjEzMDQgMTM0LjQwOCAzOC4wMDA2IDEzNC44ODYgMzguMDAwNkMxMzUuMTczIDM4LjAwMDYgMTM1LjQyNCAzOC4wNzE0IDEzNS42MzkgMzguMjEzQzEzNS44NzggMzguMzU0NiAxMzYuMTI4IDM4LjU3ODggMTM2LjM5MSAzOC44ODU2TDE1MC4wNDYgNTYuMjY1NlYzOS40ODczQzE1MC4wNDYgMzkuMDE1NCAxNTAuMTc4IDM4LjY0OTYgMTUwLjQ0MSAzOC4zOUMxNTAuNzA0IDM4LjEzMDQgMTUxLjA3NCAzOC4wMDA2IDE1MS41NTIgMzguMDAwNlpNMTYyLjAxMSA2MkMxNjEuNTMzIDYyIDE2MS4xNjMgNjEuODcwMiAxNjAuOSA2MS42MTA2QzE2MC42MzcgNjEuMzUxIDE2MC41MDYgNjAuOTg1MyAxNjAuNTA2IDYwLjUxMzNWMzkuNDg3M0MxNjAuNTA2IDM5LjAxNTQgMTYwLjYzNyAzOC42NDk2IDE2MC45IDM4LjM5QzE2MS4xNjMgMzguMTMwNCAxNjEuNTMzIDM4LjAwMDYgMTYyLjAxMSAzOC4wMDA2SDE3MC42NDlDMTczLjc3OSAzOC4wMDA2IDE3Ni4wNzMgMzguNzMyMiAxNzcuNTMgNDAuMTk1M0MxNzkuMDExIDQxLjYzNDggMTc5Ljc1MiA0My45MDAyIDE3OS43NTIgNDYuOTkxNVY1My4wMDkxQzE3OS43NTIgNTYuMTAwNCAxNzkuMDExIDU4LjM3NzcgMTc3LjUzIDU5Ljg0MDhDMTc2LjA3MyA2MS4yODAyIDE3My43NzkgNjIgMTcwLjY0OSA2MkgxNjIuMDExWk0xNzAuNjQ5IDU5LjAyNjZDMTcyLjIwMiA1OS4wMjY2IDE3My40MDggNTguODM3OCAxNzQuMjY5IDU4LjQ2MDNDMTc1LjEyIDU4LjExNDEgMTc1LjgwMiA1Ny40NTM5IDE3Ni4xNjggNTYuNjE5NkMxNzYuNTUgNTUuNzQ2NSAxNzYuNzQyIDU0LjU0MyAxNzYuNzQyIDUzLjAwOTFWNDYuOTkxNUMxNzYuNzQyIDQ1LjQ1NzcgMTc2LjU1IDQ0LjI2NiAxNzYuMTY4IDQzLjQxNjRDMTc1LjgxMSA0Mi41Njc5IDE3NS4xMjggNDEuODkzNSAxNzQuMjY5IDQxLjU0MDRDMTczLjQwOCA0MS4xNjI4IDE3Mi4yMDIgNDAuOTc0IDE3MC42NDkgNDAuOTc0SDE2My41MTZWNTkuMDI2NkgxNzAuNjQ5Wk0yMTguOTMyIDM4LjAwMDZDMjE5Ljc0NCAzOC4wMDA2IDIyMC4xNSAzOC40OTYyIDIyMC4xNSAzOS40ODczVjYwLjUxMzNDMjIwLjE1IDYwLjk4NTMgMjIwLjAxOSA2MS4zNTEgMjE5Ljc1NiA2MS42MTA2QzIxOS40OTMgNjEuODcwMiAyMTkuMTIzIDYyIDIxOC42NDUgNjJDMjE4LjE2NyA2MiAyMTcuNzk3IDYxLjg3MDIgMjE3LjUzNCA2MS42MTA2QzIxNy4yNzEgNjEuMzUxIDIxNy4xNCA2MC45ODUzIDIxNy4xNCA2MC41MTMzVjQ0LjEyNDRMMjEwLjU0NSA1My43MTdDMjEwLjMwNiA1NC4wNDc0IDIxMC4wNDMgNTQuMjk1MiAyMDkuNzU3IDU0LjQ2MDRDMjA5LjQzMiA1NC42MTAxIDIwOS4wNzYgNTQuNjgyOCAyMDguNzE3IDU0LjY3MjhDMjA4LjQzIDU0LjY3MjggMjA4LjE2OCA1NC42MDIgMjA3LjkyOSA1NC40NjA0QzIwNy42NjcgNTQuMjQ1NSAyMDcuNDM4IDUzLjk5NTIgMjA3LjI0OCA1My43MTdMMjAwLjYxNyA0NC4wODlWNjAuNTEzM0MyMDAuNjE3IDYwLjk4NTMgMjAwLjQ4NiA2MS4zNTEgMjAwLjIyMyA2MS42MTA2QzE5OS45NiA2MS44NzAyIDE5OS41OSA2MiAxOTkuMTEyIDYyQzE5OC42MzQgNjIgMTk4LjI2NCA2MS44NzAyIDE5OC4wMDEgNjEuNjEwNkMxOTcuNzM4IDYxLjM1MSAxOTcuNjA3IDYwLjk4NTMgMTk3LjYwNyA2MC41MTMzVjM5LjQ4NzNDMTk3LjYwNyAzOS4wMTU0IDE5Ny43MzggMzguNjQ5NiAxOTguMDAxIDM4LjM5QzE5OC4yNjQgMzguMTMwNCAxOTguNjM0IDM4LjAwMDYgMTk5LjExMiAzOC4wMDA2QzE5OS43ODEgMzguMDAwNiAyMDAuMzMxIDM4LjMxOTIgMjAwLjc2MSAzOC45NTY0TDIwOC45MzIgNTEuMDk3NkwyMTcuMTA0IDM4Ljk1NjRDMjE3LjUxIDM4LjMxOTIgMjE4LjExOSAzOC4wMDA2IDIxOC45MzIgMzguMDAwNlpNMjQ0LjMwNCAzOC4zNTQ2QzI0NC44MjkgMzguNjg1IDI0NS4wOTIgMzkuMDc0NCAyNDUuMDkyIDM5LjUyMjdDMjQ1LjA5MiAzOS44MDU5IDI0NC45ODUgNDAuMDg5MSAyNDQuNzcgNDAuMzcyM0wyMzYuMjQgNTMuMjkyM1Y2MC41MTMzQzIzNi4yNCA2MC45ODUzIDIzNi4xMDggNjEuMzUxIDIzNS44NDUgNjEuNjEwNkMyMzUuNTgzIDYxLjg3MDIgMjM1LjIxMiA2MiAyMzQuNzM0IDYyQzIzNC4yNTYgNjIgMjMzLjg4NiA2MS44NzAyIDIzMy42MjMgNjEuNjEwNkMyMzMuMzYgNjEuMzUxIDIzMy4yMjkgNjAuOTg1MyAyMzMuMjI5IDYwLjUxMzNWNTMuMjkyM0wyMjUuMDIyIDQwLjM3MjNDMjI0LjgzIDQwLjA0MTkgMjI0LjczNSAzOS43NDY5IDIyNC43MzUgMzkuNDg3M0MyMjQuNzM1IDM4Ljk5MTggMjI0Ljk4NiAzOC41OTA2IDIyNS40ODggMzguMjgzOEMyMjUuODIyIDM4LjA5NSAyMjYuMTIxIDM4LjAwMDYgMjI2LjM4NCAzOC4wMDA2QzIyNi44MzcgMzguMDAwNiAyMjcuMjMyIDM4LjI0ODQgMjI3LjU2NiAzOC43NDRMMjM0LjczNCA1MC4xMDY1TDI0Mi4yNjEgMzguNzQ0QzI0Mi41NDggMzguMjcyIDI0Mi45MyAzOC4wMzYgMjQzLjQwOCAzOC4wMzZDMjQzLjY5NCAzOC4wMzYgMjQzLjk5MyAzOC4xNDIyIDI0NC4zMDQgMzguMzU0NlpNMjc2LjE5IDQ4LjM3MkMyNzguMDc3IDQ5LjQ1NzYgMjc5LjAyMSA1MS4zODA4IDI3OS4wMjEgNTQuMTQxOFY1NS4zNDUzQzI3OS4wMjEgNTcuNTE2NCAyNzguNDM2IDU5LjE2ODIgMjc3LjI2NSA2MC4zMDA5QzI3Ni4xMTggNjEuNDMzNyAyNzQuNDQ1IDYyIDI3Mi4yNDcgNjJIMjYyLjQyN0MyNjEuOTQ5IDYyIDI2MS41NzkgNjEuODcwMiAyNjEuMzE2IDYxLjYxMDZDMjYxLjA1MyA2MS4zNTEgMjYwLjkyMiA2MC45ODUzIDI2MC45MjIgNjAuNTEzM1YzOS40ODczQzI2MC45MjIgMzkuMDE1NCAyNjEuMDUzIDM4LjY0OTYgMjYxLjMxNiAzOC4zOUMyNjEuNTc5IDM4LjEzMDQgMjYxLjk0OSAzOC4wMDA2IDI2Mi40MjcgMzguMDAwNkgyNzEuNzgxQzI3My42NjkgMzguMDAwNiAyNzUuMTI2IDM4LjQ5NjIgMjc2LjE1NCAzOS40ODczQzI3Ny4xODEgNDAuNDc4NCAyNzcuNjk1IDQxLjg5NDMgMjc3LjY5NSA0My43MzVWNDQuNjkwN0MyNzcuNjk1IDQ1LjQ0NTkgMjc3LjU2NCA0Ni4xNDIgMjc3LjMwMSA0Ni43NzkyQzI3Ny4wNTggNDcuMzg3IDI3Ni42NzggNDcuOTMxOSAyNzYuMTkgNDguMzcyWk0yNjMuOTMyIDQ3LjUyMjVIMjcyLjg5MkMyNzMuNTE0IDQ3LjQ1MTcgMjczLjk2OCA0Ny4xNjg1IDI3NC4yNTQgNDYuNjczQzI3NC41NDEgNDYuMTUzOCAyNzQuNjg0IDQ1LjQ5MzEgMjc0LjY4NCA0NC42OTA3VjQzLjczNUMyNzQuNjg0IDQyLjcyMDMgMjc0LjQ2OSA0Mi4wMTIzIDI3NC4wMzkgNDEuNjExMkMyNzMuNjA5IDQxLjE4NjQgMjcyLjg1NyA0MC45NzQgMjcxLjc4MSA0MC45NzRIMjYzLjkzMlY0Ny41MjI1Wk0yNzYuMDEgNTQuMTQxOEMyNzYuMDEgNTIuODIwMyAyNzUuNzI0IDUxLjg4ODIgMjc1LjE1IDUxLjM0NTRDMjc0LjU3NyA1MC43NzkxIDI3My42MDkgNTAuNDk1OSAyNzIuMjQ3IDUwLjQ5NTlIMjYzLjkzMlY1OS4wMjY2SDI3Mi4yNDdDMjczLjU4NSA1OS4wMjY2IDI3NC41NDEgNTguNzQzNSAyNzUuMTE0IDU4LjE3NzFDMjc1LjcxMiA1Ny42MTA3IDI3Ni4wMSA1Ni42NjY4IDI3Ni4wMSA1NS4zNDUzVjU0LjE0MThaTTI4Ni41NDMgNjJDMjg1LjU0IDYyIDI4NS4wMzggNjEuNTA0NCAyODUuMDM4IDYwLjUxMzNWMzkuNDg3M0MyODUuMDM4IDM4LjQ5NjIgMjg1LjU0IDM4LjAwMDYgMjg2LjU0MyAzOC4wMDA2QzI4Ny41NDcgMzguMDAwNiAyODguMDQ4IDM4LjQ5NjIgMjg4LjA0OCAzOS40ODczVjU5LjAyNjZIMjk3Ljk3NkMyOTguOTggNTkuMDI2NiAyOTkuNDgxIDU5LjUyMjIgMjk5LjQ4MSA2MC41MTMzQzI5OS40ODEgNjEuNTA0NCAyOTguOTggNjIgMjk3Ljk3NiA2MkgyODYuNTQzWk0zMTAuODk3IDYyQzMwOC4xNDkgNjIgMzA2LjExOCA2MS4zNjI4IDMwNC44MDQgNjAuMDg4NUMzMDMuNTEzIDU4Ljc5MDYgMzAyLjg2NyA1Ni43ODQ4IDMwMi44NjcgNTQuMDcxVjQ1Ljg5NDJDMzAyLjg2NyA0My4xODA0IDMwMy41MjUgNDEuMTg2NCAzMDQuODQgMzkuOTEyMUMzMDYuMTU0IDM4LjYxNDIgMzA4LjE3MyAzNy45NzcgMzEwLjg5NyAzOC4wMDA2SDMxNS4xOTZDMzE3Ljk0NCAzOC4wMDA2IDMxOS45NjMgMzguNjQ5NiAzMjEuMjUzIDM5Ljk0NzVDMzIyLjU2OSA0MS4yMjE4IDMyMy4yMjYgNDMuMjE1OCAzMjMuMjI2IDQ1LjkyOTZWNTQuMDcxQzMyMy4yMjYgNTYuNzg0OCAzMjIuNTY5IDU4Ljc5MDYgMzIxLjI1MyA2MC4wODg1QzMxOS45NjMgNjEuMzYyOCAzMTcuOTQ0IDYyIDMxNS4xOTYgNjJIMzEwLjg5N1pNMzE1LjE5NiA1OS4wMjY2QzMxNi41MTIgNTkuMDI2NiAzMTcuNTE0IDU4Ljg3MzIgMzE4LjIwOCA1OC41NjY1QzMxOC44OTcgNTguMjg2MyAzMTkuNDQ5IDU3Ljc1MzQgMzE5Ljc0OCA1Ny4wNzk4QzMyMC4wNiA1Ni4zNzE4IDMyMC4yMTQgNTUuMzY4OSAzMjAuMjE0IDU0LjA3MVY0NS45Mjk2QzMyMC4yMTQgNDQuNjU1MyAzMjAuMDYgNDMuNjY0MiAzMTkuNzQ4IDQyLjk1NjNDMzE5LjQ1OCA0Mi4yNjgyIDMxOC45MDQgNDEuNzIxMiAzMTguMjA4IDQxLjQzNDJDMzE3LjQ5MSA0MS4xMjc0IDMxNi40ODYgNDAuOTc0IDMxNS4xOTYgNDAuOTc0SDMxMC44OTdDMzA5LjYwNiA0MC45NTA0IDMwOC42MDEgNDEuMDkyIDMwNy44ODUgNDEuMzk4OEMzMDcuMTg4IDQxLjY4NTggMzA2LjYzNSA0Mi4yMzI4IDMwNi4zNDUgNDIuOTIwOUMzMDYuMDM0IDQzLjYyODggMzA1Ljg3OSA0NC42MTk5IDMwNS44NzkgNDUuODk0MlY1NC4wNzFDMzA1Ljg3OSA1NS4zNjg5IDMwNi4wMzQgNTYuMzcxOCAzMDYuMzQ1IDU3LjA3OThDMzA2LjY1NCA1Ny43NjQxIDMwNy4xNTYgNTguMjU5NyAzMDcuODQ5IDU4LjU2NjVDMzA4LjU2NSA1OC44NzMyIDMwOS41ODIgNTkuMDI2NiAzMTAuODk3IDU5LjAyNjZIMzE1LjE5NlpNMzM2Ljk3IDYyQzMzNC4yMjMgNjIgMzMyLjE5MiA2MS4zNjI4IDMzMC44NzggNjAuMDg4NUMzMjkuNTg3IDU4Ljc5MDYgMzI4Ljk0MiA1Ni43ODQ4IDMyOC45NDIgNTQuMDcxVjQ1LjkyOTZDMzI4Ljk0MiA0My4yMTU4IDMyOS41ODcgNDEuMjEgMzMwLjg3OCAzOS45MTIxQzMzMi4xOTIgMzguNjE0MiAzMzQuMjExIDM3Ljk3NyAzMzYuOTM1IDM4LjAwMDZIMzQxLjI3MUMzNDMuNTE3IDM4LjAwMDYgMzQ1LjIyNiAzOC40NjA4IDM0Ni4zOTcgMzkuMzgxMUMzNDcuNTkxIDQwLjMwMTUgMzQ4LjI4NCA0MS43NDEgMzQ4LjQ3NSA0My42OTk2QzM0OC41NDcgNDQuMTk1MiAzNDguNDUxIDQ0LjU3MjcgMzQ4LjE4OSA0NC44MzIzQzM0Ny45MjYgNDUuMDkxOSAzNDcuNTQzIDQ1LjIyMTcgMzQ3LjA0MiA0NS4yMjE3QzM0Ni41NjQgNDUuMjIxNyAzNDYuMTkzIDQ1LjEwMzcgMzQ1LjkzMSA0NC44Njc3QzM0NS42OTIgNDQuNjA4MSAzNDUuNTM2IDQ0LjIzMDYgMzQ1LjQ2NSA0My43MzVDMzQ1LjM0NSA0Mi42NzMxIDM0NC45NzUgNDEuOTUzMyAzNDQuMzU0IDQxLjU3NThDMzQzLjczMiA0MS4xNzQ2IDM0Mi43MDUgNDAuOTc0IDM0MS4yNzEgNDAuOTc0SDMzNi45MzVDMzM1LjY0NCA0MC45NTA0IDMzNC42NDEgNDEuMDkyIDMzMy45MjQgNDEuMzk4OEMzMzMuMjA3IDQxLjcwNTUgMzMyLjY5NCA0Mi4yMTI5IDMzMi4zODMgNDIuOTIwOUMzMzIuMDk2IDQzLjYyODggMzMxLjk1MyA0NC42MzE3IDMzMS45NTMgNDUuOTI5NlY1NC4wNzFDMzMxLjk1MyA1NS4zNjg5IDMzMi4xMDggNTYuMzcxOCAzMzIuNDE5IDU3LjA3OThDMzMyLjcyOSA1Ny43NjQxIDMzMy4yMzEgNTguMjU5NyAzMzMuOTI0IDU4LjU2NjVDMzM0LjY0MSA1OC44NzMyIDMzNS42NTYgNTkuMDI2NiAzMzYuOTcgNTkuMDI2NkgzNDEuMjcxQzM0Mi43MDUgNTkuMDI2NiAzNDMuNzMyIDU4LjgzNzggMzQ0LjM1NCA1OC40NjAzQzM0NC45NzUgNTguMDU5MSAzNDUuMzQ1IDU3LjMyNzYgMzQ1LjQ2NSA1Ni4yNjU2QzM0NS41MzYgNTUuNzcwMSAzNDUuNjkyIDU1LjQwNDMgMzQ1LjkzMSA1NS4xNjgzQzM0Ni4xOTMgNTQuOTA4NyAzNDYuNTY0IDU0Ljc3OSAzNDcuMDQyIDU0Ljc3OUMzNDcuNTQzIDU0Ljc3OSAzNDcuOTI2IDU0LjkwODcgMzQ4LjE4OSA1NS4xNjgzQzM0OC40NTEgNTUuNDI3OSAzNDguNTQ3IDU1LjgwNTUgMzQ4LjQ3NSA1Ni4zMDFDMzQ4LjI4NCA1OC4yNTk3IDM0Ny41OTEgNTkuNjk5MiAzNDYuMzk3IDYwLjYxOTVDMzQ1LjIyNiA2MS41Mzk4IDM0My41MTcgNjIgMzQxLjI3MSA2MkgzMzYuOTdaTTM3MC40MiA1OS40MTZDMzcwLjY4MyA1OS43NDY0IDM3MC44MTQgNjAuMDc2NyAzNzAuODE0IDYwLjQwNzFDMzcwLjgxNCA2MC44MzE5IDM3MC42MTEgNjEuMTk3NyAzNzAuMjA1IDYxLjUwNDRDMzY5LjkzNCA2MS43NTc5IDM2OS41NzQgNjEuODk3NSAzNjkuMjAxIDYxLjg5MzhDMzY4Ljc3MSA2MS44OTM4IDM2OC40MDEgNjEuNjkzMiAzNjguMDkgNjEuMjkyMUwzNTkuMzEgNTAuNTY2N0wzNTcuNzY4IDUyLjE1OTZWNjAuNTEzM0MzNTcuNzY4IDYwLjk4NTMgMzU3LjYzNyA2MS4zNTEgMzU3LjM3NCA2MS42MTA2QzM1Ny4xMTEgNjEuODcwMiAzNTYuNzQxIDYyIDM1Ni4yNjMgNjJDMzU1Ljc4NSA2MiAzNTUuNDE1IDYxLjg3MDIgMzU1LjE1MiA2MS42MTA2QzM1NC44ODkgNjEuMzUxIDM1NC43NTggNjAuOTg1MyAzNTQuNzU4IDYwLjUxMzNWMzkuNDg3M0MzNTQuNzU4IDM5LjAxNTQgMzU0Ljg4OSAzOC42NDk2IDM1NS4xNTIgMzguMzlDMzU1LjQxNSAzOC4xMzA0IDM1NS43ODUgMzguMDAwNiAzNTYuMjYzIDM4LjAwMDZDMzU2Ljc0MSAzOC4wMDA2IDM1Ny4xMTEgMzguMTMwNCAzNTcuMzc0IDM4LjM5QzM1Ny42MzcgMzguNjQ5NiAzNTcuNzY4IDM5LjAxNTQgMzU3Ljc2OCAzOS40ODczVjQ3LjkxMTlMMzY2LjkwOCAzOC41NjdDMzY3LjI2NiAzOC4yMTMgMzY3LjYyNCAzOC4wMzYgMzY3Ljk4MyAzOC4wMzZDMzY4LjM0MSAzOC4wMzYgMzY4LjY4OCAzOC4yMDEyIDM2OS4wMjIgMzguNTMxNkMzNjkuMzgxIDM4Ljg4NTYgMzY5LjU2IDM5LjIzOTUgMzY5LjU2IDM5LjU5MzVDMzY5LjU2IDM5Ljk0NzUgMzY5LjM5MyA0MC4yODk3IDM2OS4wNTggNDAuNjJMMzYxLjQ2IDQ4LjQwNzRMMzcwLjQyIDU5LjQxNlpNMzgxLjg1IDYyQzM3OS43OTUgNjIgMzc4LjE5NCA2MS41OTg4IDM3Ny4wNDggNjAuNzk2NUMzNzUuOTI1IDU5Ljk3MDYgMzc1LjIyIDU4LjcwOCAzNzQuOTMzIDU3LjAwOUMzNzQuODg1IDU2LjUxMzQgMzc0Ljk5MyA1Ni4xMzU5IDM3NS4yNTUgNTUuODc2M0MzNzUuNTE4IDU1LjU5MzEgMzc1LjkwMSA1NS40NTE1IDM3Ni40MDIgNTUuNDUxNUMzNzYuODggNTUuNDUxNSAzNzcuMjM5IDU1LjU2OTUgMzc3LjQ3OCA1NS44MDU1QzM3Ny43MTcgNTYuMDE3OSAzNzcuODg0IDU2LjM4MzYgMzc3Ljk3OSA1Ni45MDI4QzM3OC4xNDcgNTcuNzA1MSAzNzguNTE3IDU4LjI1OTcgMzc5LjA5IDU4LjU2NjVDMzc5LjY4OCA1OC44NzMyIDM4MC42MDggNTkuMDI2NiAzODEuODUgNTkuMDI2NkgzODcuMDExQzM4OC4wNjIgNTkuMDI2NiAzODguODYzIDU4LjkwODYgMzg5LjQxMiA1OC42NzI3QzM4OS42ODQgNTguNTY3NiAzODkuOTMyIDU4LjQxMDIgMzkwLjE0MSA1OC4yMDk3QzM5MC4zNSA1OC4wMDkxIDM5MC41MTcgNTcuNzY5NCAzOTAuNjMxIDU3LjUwNDVDMzkwLjg3IDU2LjkzODIgMzkwLjk4OSA1Ni4xNDc2IDM5MC45ODkgNTUuMTMyOUMzOTAuOTg5IDUzLjYyMjYgMzkwLjcwMyA1Mi41ODQzIDM5MC4xMjkgNTIuMDE4QzM4OS41NTYgNTEuNDUxNiAzODguNTE2IDUxLjE2ODQgMzg3LjAxMSA1MS4xNjg0SDM4Mi41NjdDMzgwLjMyMSA1MS4xNjg0IDM3OC42NDggNTAuNjI1NyAzNzcuNTQ5IDQ5LjU0MDJDMzc2LjQ1IDQ4LjQ1NDYgMzc1LjkwMSA0Ni43OTEgMzc1LjkwMSA0NC41NDkxQzM3NS45MDEgNDIuMzMwOSAzNzYuNDM4IDQwLjY5MDggMzc3LjUxMyAzOS42Mjg5QzM3OC42MTMgMzguNTQzNCAzODAuMjg1IDM4LjAwMDYgMzgyLjUzMSAzOC4wMDA2SDM4Ni43OTZDMzkwLjU3MSAzOC4wMDA2IDM5Mi43NDYgMzkuNTU4MSAzOTMuMzE5IDQyLjY3MzFDMzkzLjM5MSA0My4xNjg2IDM5My4yOTUgNDMuNTU4IDM5My4wMzIgNDMuODQxMkMzOTIuNzcgNDQuMTAwOCAzOTIuMzc1IDQ0LjIzMDYgMzkxLjg1IDQ0LjIzMDZDMzkxLjM3MiA0NC4yMzA2IDM5MS4wMTMgNDQuMTEyNiAzOTAuNzc0IDQzLjg3NjZDMzkwLjUzNSA0My42NDA2IDM5MC4zOCA0My4yNzQ4IDM5MC4zMDggNDIuNzc5M0MzOTAuMTE3IDQyLjA5NDkgMzg5Ljc1OSA0MS42MjMgMzg5LjIzMyA0MS4zNjM0QzM4OC43MDggNDEuMTAzOCAzODcuODk1IDQwLjk3NCAzODYuNzk2IDQwLjk3NEgzODIuNTMxQzM4MS41NTEgNDAuOTc0IDM4MC43OTkgNDEuMDgwMiAzODAuMjczIDQxLjI5MjZDMzgwLjAyOCA0MS4zOTQzIDM3OS44MDcgNDEuNTQzOSAzNzkuNjIyIDQxLjczMjVDMzc5LjQzNyA0MS45MjExIDM3OS4yOTMgNDIuMTQ0NyAzNzkuMTk4IDQyLjM4OTlDMzc5LjAwNyA0Mi44ODU1IDM3OC45MTEgNDMuNjA1MiAzNzguOTExIDQ0LjU0OTFDMzc4LjkxMSA0NS41MTY3IDM3OS4wMTkgNDYuMjYgMzc5LjIzNCA0Ni43NzkyQzM3OS40NDkgNDcuMjc0NyAzNzkuODA3IDQ3LjY0MDUgMzgwLjMwOSA0Ny44NzY1QzM4MC44MzUgNDguMDg4OSAzODEuNTg3IDQ4LjE5NTEgMzgyLjU2NyA0OC4xOTUxSDM4Ny4wMTFDMzg5LjM3NyA0OC4xOTUxIDM5MS4xMzMgNDguNzYxNCAzOTIuMjggNDkuODk0MUMzOTMuNDI3IDUxLjAyNjggMzk0IDUyLjc3MzEgMzk0IDU1LjEzMjlDMzk0IDU3LjQ2OTEgMzkzLjQyNyA1OS4yMDM2IDM5Mi4yOCA2MC4zMzYzQzM5MS4xMzMgNjEuNDQ1NCAzODkuMzc3IDYyIDM4Ny4wMTEgNjJIMzgxLjg1WiIgZmlsbD0iI0UyMkYyMiIvPgo8cGF0aCBkPSJNMzYuNzM2IDBMMCAxOS4yNThMMC40NzA5OTMgNjMuNTczTDIyLjg0MSA3Ni4zMzRMMzYuOTcyIDEwMEw1MC42MyA3Ni4zMzRMNzMgNjMuNjlWMTkuNDlMMzYuNzM2IDBaTTI5LjY3IDY0LjI3TDE0LjM2NCA1NS42ODVWMzUuNDk4TDI5LjY3IDQ0LjU0N1Y2NC4yNjhWNjQuMjdaTTIxLjkgMjMuNDMzTDM2LjczNSAxNS43NzZMNTEuMzM1IDIzLjQzM0wzNi43MzUgMzIuMDE4TDIxLjkgMjMuNDMzWk01OC44NzEgNTUuNjgzTDQzLjggNjQuMjdWNDQuNTQ4TDU4Ljg3MSAzNS43MzFWNTUuNjgzWiIgZmlsbD0iI0UyMkYyMiIvPgo8L3N2Zz4K\";","// extracted by mini-css-extract-plugin\nexport default {\"navigation\":\"kiMVxg7uvmObzH9y5Nf7\",\"subtitle\":\"lh6Gp5uMZoFjdsD0piCQ\",\"active\":\"IHgUS1orY8DkWO_fbRhQ\"};","// extracted by mini-css-extract-plugin\nexport default {\"wrapper\":\"Ub1Qwzm7eiO9i1pfS4JA\",\"header\":\"MHfJiF9ZtWnpmRSznlsA\",\"container\":\"bDqx83XSEFfGnp0RCn6r\",\"logo\":\"s2jFJ3kbxHqVjcXOAa_e\",\"headerNavigation\":\"O0TgIPrk1w9xxx2FS7rI\"};","// extracted by mini-css-extract-plugin\nexport default {\"tag\":\"BBrTfwaRpiXTsfXQotgf\",\"help\":\"eiQPya4NGNSbJXhlQrFG\",\"default\":\"Qrwn2ZFHSg4CzQ5B2Hju\",\"info\":\"dK0gZ8H42AMHDmiT90gt\",\"warning\":\"Iq2GVHFXIvyadiMTJhPA\",\"error\":\"IAqnveipCAc7HoEDOSlg\",\"label\":\"g0nlWBX7OmQcFqR6UoAB\",\"icon\":\"wLv8qHa44_fOcOtj0hCA\"};","module.exports = window[\"React\"];","module.exports = window[\"wp\"][\"apiFetch\"];","module.exports = window[\"wp\"][\"components\"];","module.exports = window[\"wp\"][\"element\"];","module.exports = window[\"wp\"][\"i18n\"];","import { useState } from \"@wordpress/element\";\nimport { useFindMyBlocks } from \"../../context/FindMyBlocksContext.js\";\nimport style from \"./BlockNavigation.module.css\";\nimport { __ } from \"@wordpress/i18n\";\n\nconst BlockNavigation = ({}) => {\n  const { finder, preferences } = useFindMyBlocks();\n  const { setSelectedBlock } = preferences;\n  const { foundBlocks, withFilters } = finder;\n  const [currentActive, setCurrentActive] = useState(null);\n\n  const filteredBlocks = withFilters(foundBlocks);\n\n  const handleLinkClick = (blockName) => {\n    setSelectedBlock(blockName);\n    setCurrentActive(blockName);\n  };\n\n  return (\n    <nav className={style.navigation}>\n      <ul>\n        {filteredBlocks.map((block) => (\n          <li\n            key={block.name}\n            className={currentActive === block.name ? style.active : \"\"}\n            onClick={() => handleLinkClick(block.name)}\n          >\n            {block.name}{\" \"}\n            <span className={style.subtitle}>\n              {__(\"Found in\", \"find-my-blocks\")} {block.posts.length}{\" \"}\n              {block.posts.length > 1\n                ? __(\"locations\", \"find-my-blocks\")\n                : __(\"location\", \"find-my-blocks\")}\n            </span>\n          </li>\n        ))}\n      </ul>\n    </nav>\n  );\n};\n\nexport default BlockNavigation;\n","import {\n  Button,\n  DropdownMenu,\n  MenuGroup,\n  MenuItem,\n} from \"@wordpress/components\";\nimport style from \"./PageHeader.module.css\";\nimport { __ } from \"@wordpress/i18n\";\nimport Logo from \"../../../images/find-my-blocks-logo-full.svg\";\nimport { useFindMyBlocks } from \"../../context/FindMyBlocksContext.js\";\n\nconst PageHeader = ({ children }) => {\n  const { finder } = useFindMyBlocks();\n  const { isLoading, reset, startSearch, foundBlocks } = finder;\n\n  return (\n    <div className={style.wrapper}>\n      <div className={style.header}>\n        <div className={style.container}>\n          <img\n            className={style.logo}\n            src={Logo}\n            alt=\"Find My Blocks Logo\"\n            onClick={() => (foundBlocks.length > 0 ? reset() : false)}\n          />\n          <div className={style.headerNavigation}>\n            <Button\n              onClick={() => (foundBlocks.length > 0 ? reset() : startSearch())}\n              icon={foundBlocks.length > 0 ? \"update-alt\" : null}\n              isPrimary\n              disabled={isLoading}\n            >\n              {foundBlocks.length > 0 // If there are found blocks, show \"Search Again\"\n                ? __(\"Re-scan\", \"find-my-blocks\")\n                : __(\"Search\", \"find-my-blocks\")}\n            </Button>\n            <DropdownMenu icon=\"menu\" label=\"Select a direction\">\n              {({ onClose }) => (\n                <>\n                  <MenuGroup label={__(\"Quick Links\", \"find-my-blocks\")}>\n                    <MenuItem\n                      href={\n                        fmbGlobal.admin_url + \"/edit.php?post_type=wp_block\"\n                      }\n                    >\n                      {__(\"Reusable Patterns\", \"find-my-blocks\")}\n                    </MenuItem>\n                  </MenuGroup>\n                  <MenuGroup label={__(\"Support\", \"find-my-blocks\")}>\n                    <MenuItem\n                      icon=\"star-filled\"\n                      href=\"https://wordpress.org/support/plugin/find-my-blocks/reviews/\"\n                      target=\"_blank\"\n                    >\n                      {__(\"Review on wp.org\", \"find-my-blocks\")}\n                    </MenuItem>\n                    <MenuItem\n                      icon=\"sos\"\n                      href=\"https://wordpress.org/support/plugin/find-my-blocks/\"\n                      target=\"_blank\"\n                    >\n                      {__(\"Support forum\", \"find-my-blocks\")}\n                    </MenuItem>\n                    <MenuItem\n                      icon=\"external\"\n                      href=\"https://findmyblocks.com/?utm_source=wordpress_site&utm_medium=navigation&utm_campaign=find_my_blocks_active_install\"\n                      target=\"_blank\"\n                    >\n                      findmyblocks.com\n                    </MenuItem>\n                  </MenuGroup>\n                </>\n              )}\n            </DropdownMenu>\n          </div>\n        </div>\n      </div>\n      {children}\n    </div>\n  );\n};\n\nexport default PageHeader;\n","import {\n  Card as WPCard,\n  CardBody,\n  CardDivider,\n  CardHeader,\n  Button,\n  ExternalLink,\n} from \"@wordpress/components\";\nimport { __ } from \"@wordpress/i18n\";\n\nimport { Tag } from \"../Tag/Tag.js\";\n\nexport const Card = ({ post, blockName }) => {\n  const tags = getTags(post);\n\n  return (\n    <WPCard size=\"small\" className=\"fmb-card\">\n      <CardHeader isBorderless>\n        <div>\n          <span className=\"fmb-card-title\">{post.title}</span>\n          <span className=\"fmb-card-meta\">\n            <code>{post?.postType}</code>{\" \"}\n            {post?.isThirdPartyTemplate && (\n              <code>{post?.templateProvider}</code>\n            )}{\" \"}\n          </span>\n        </div>\n        <div>\n          <Button\n            target=\"_blank\"\n            isTertiary\n            href={post.post_url}\n            size={\"small\"}\n          >\n            {__(\"Preview\", \"find-my-blocks\")}\n          </Button>\n          <Button\n            target=\"_blank\"\n            isTertiary\n            href={post.edit_url}\n            size={\"small\"}\n          >\n            {__(\"Edit\", \"find-my-blocks\")}\n          </Button>\n        </div>\n      </CardHeader>\n      {tags.length > 0 && (\n        <>\n          <CardDivider />\n          <CardBody>\n            {tags.map((tag) => {\n              return <Tag key={tag.label} {...tag} />;\n            })}\n          </CardBody>\n        </>\n      )}\n    </WPCard>\n  );\n\n  function getTags(post) {\n    const tags = [];\n\n    if (post.hasConditionalBlocks) {\n      tags.push({\n        label: __(\"Conditional\", \"find-my-blocks\"),\n        help: (\n          <span>\n            {__(\"via\", \"find-my-blocks\")}{\" \"}\n            <ExternalLink target=\"_blank\" href=\"https://conditionalblocks.com/\">\n              Conditional Blocks\n            </ExternalLink>\n          </span>\n        ),\n        icon: \"randomize\",\n        variation: \"info\",\n      });\n    }\n\n    if (post.isSyncedPattern) {\n      tags.push({\n        label: __(\"Synced Pattern\", \"find-my-blocks\"),\n        icon: \"networking\",\n        variation: \"warning\",\n      });\n    }\n\n    if (post.count > 1) {\n      tags.push({\n        label: `${post.count}x ` + blockName,\n        icon: \"list-view\",\n        variation: \"info\",\n      });\n    }\n\n    if (post.isNested) {\n      tags.push({\n        label: __(\"Nested in: \", \"find-my-blocks\") + post.nestedBlockType,\n        icon: \"align-center\",\n        variation: \"info\",\n      });\n    }\n\n    return tags;\n  }\n};\n\nexport function CardGrid({ posts, blockName = \"\" }) {\n  if (!posts || posts.length < 1) {\n    return (\n      <div>\n        <h2>{__(\"No locations found\", \"find-my-blocks\")}</h2>\n        {__(\n          \"Please select a block from the menu, or check the filters.\",\n          \"find-my-blocks\"\n        )}\n      </div>\n    );\n  }\n\n  return (\n    <div className=\"fmb-card-grid\">\n      {posts.map((post, index) => {\n        return (\n          <Card key={blockName + post?.id} post={post} blockName={blockName} />\n        );\n      })}\n    </div>\n  );\n}\n","import classes from \"./Tag.module.css\";\nimport { Icon } from \"@wordpress/components\";\n\nconst classNames = (...classes) => classes.filter(Boolean).join(\" \");\n\n/**\n * Tag\n * @param {string} variations  - \"info\" | \"warning\" | \"error\" | \"default\";\n * @returns\n */\nexport const Tag = ({ variation = \"default\", icon, label, help }) => {\n  const tagClass = classNames(classes.tag, classes[variation]);\n\n  return (\n    <div className={tagClass}>\n      {icon && <Icon icon={icon} className={classes.Icon} />}\n      <div className={classes.label}>{label}</div>\n      {help && <div className={classes.help}> {help}</div>}\n    </div>\n  );\n};\n","import React, { createContext, useContext } from \"@wordpress/element\";\n\nimport { usePreferences } from \"../hooks/usePreferences.js\";\nimport { useFinder } from \"../hooks/useFinder.js\";\n\n// Create a context for the app state.\nconst FindMyBlocksContext = createContext();\n\n// Create a provider component.\nexport const FindMyBlocksProvider = ({ children }) => {\n  const preferences = usePreferences();\n\n  const searchArgs = {\n    posts_per_page: preferences.postsPerRun,\n  };\n\n  const finder = useFinder({\n    searchArgs,\n    cachedFoundBlocks: preferences?.cachedFoundBlocks ?? [],\n    setCachedFoundBlocks: preferences.setCachedFoundBlocks,\n  });\n\n  const contextValue = {\n    preferences: preferences,\n    finder: finder,\n  };\n\n  return (\n    <FindMyBlocksContext.Provider value={contextValue}>\n      {children}\n    </FindMyBlocksContext.Provider>\n  );\n};\n\n// Create a custom hook to use the app state context.\nexport const useFindMyBlocks = () => {\n  const context = useContext(FindMyBlocksContext);\n  if (!context) {\n    throw new Error(\n      \"useFindMyBlocks must be used within an FindMyBlocksProvider\"\n    );\n  }\n  return context;\n};\n","/**\n * Global fmbGlobal\n */\nimport { useState, useEffect, useRef } from \"@wordpress/element\";\nimport { __ } from \"@wordpress/i18n\";\nimport apiFetch from \"@wordpress/api-fetch\";\n/**\n * Fetch the blocks from the server.\n * the blocks contain the following fields.\n *\n * count, edit_url, id, isNested, isReusable, nestedBlockType, postType, post_url, status, title\n */\nexport const useFinder = ({\n  searchArgs = {},\n  cachedFoundBlocks = [],\n  setCachedFoundBlocks,\n}) => {\n  const filtersDefault = {\n    name: false,\n    blockProvider: false,\n    hasConditionalBlocks: false,\n  };\n\n  const [foundBlocks, setFoundBlocks] = useState([]);\n  const [filters, setFilters] = useState(filtersDefault);\n  const [isLoading, setIsLoading] = useState(false);\n  const [error, setError] = useState(null);\n  const [progress, setProgress] = useState({\n    currentPage: 0,\n    totalPages: 0,\n    percentage: 0,\n    totalPosts: 0,\n    totalBlocks: 0,\n    totalScannedPosts: 0,\n  });\n\n  const [sortOrder, setSortOrder] = useState(\"asc\"); // 'asc' for ascending, 'desc' for descending.\n\n  const abortControllerRef = useRef(null);\n\n  /**\n   * Abort the search.\n   */\n  const abortSearch = () => {\n    if (abortControllerRef.current) {\n      abortControllerRef.current.abort();\n      console.log(\"Search aborted by user.\");\n      setError(new Error(__(\"Search aborted by user\", \"find-my-blocks\"))); // Set an error state indicating the search was aborted\n    }\n  };\n\n  /**\n   * Get the posts with a specific block.\n   * @param {string} blockName - The name of the block.\n   * @returns {Array} The posts with the block.\n   */\n  const postsWithBlock = (blockName) => {\n    const block = withFilters(foundBlocks).find(\n      (block) => block.name === blockName\n    );\n\n    return block ? block.posts : [];\n  };\n\n  /**\n   * Start the search.\n   */\n  const startSearch = async () => {\n    reset();\n    setIsLoading(true);\n    // Create a new instance of AbortController for the entire batch search\n    const controller = new AbortController();\n    abortControllerRef.current = controller; // Keep a reference to the controller\n\n    let currentPage = 1;\n    let totalPages = 0;\n    let totalPosts = 0;\n    let totalScannedPosts = 0;\n    let localBatchResults = []; // Local variable to keep track of batch results.\n    let totalBlockInstances = 0; // Keep track of total block instances detected.\n    let searchStatus = \"in_process\"; // Track the search status\n\n    try {\n      while (\n        (currentPage <= totalPages || currentPage === 1) &&\n        !abortControllerRef.current.signal.aborted &&\n        searchStatus === \"in_process\" // Check if the search is still in process\n      ) {\n        const timeoutId = setTimeout(() => controller.abort(), 15000); // Abort the search after 15 seconds of inactivity.\n\n        const queryString = new URLSearchParams({\n          ...searchArgs,\n          paged: currentPage,\n        }).toString();\n\n        try {\n          const searchResponse = await apiFetch({\n            path: `find-my-blocks/v1/search?${queryString}`,\n            signal: controller.signal,\n          });\n\n          clearTimeout(timeoutId);\n\n          // Add a 1 second delay between requests to avoid server overload.\n          await new Promise((resolve) => setTimeout(resolve, 1000));\n\n          // Exit early if no data is returned.\n          if (!searchResponse?.data) {\n            throw new Error(\"No data returned from the server.\");\n          }\n\n          const { blocks, scanned_posts, total_posts, total_pages } =\n            searchResponse.data;\n\n          if (currentPage === 1) {\n            totalPages = total_pages;\n            totalPosts = total_posts;\n          }\n\n          totalBlockInstances += blocks.reduce(\n            (sum, block) => sum + block.posts.length,\n            0\n          );\n\n          totalScannedPosts += scanned_posts;\n\n          setProgress({\n            currentPage,\n            totalPages: totalPages,\n            percentage: Math.round((currentPage / totalPages) * 100),\n            totalBlocks: totalBlockInstances,\n            totalPosts: totalPosts,\n            totalScannedPosts: totalScannedPosts, // Some might have been skipped server side.\n          });\n\n          localBatchResults = localBatchResults.concat(blocks);\n\n          currentPage++;\n\n          if (currentPage > total_pages) {\n            searchStatus = \"completed\"; // All pages of the WP_Query has been scanned.\n            break;\n          }\n        } catch (error) {\n          clearTimeout(timeoutId);\n\n          if (error.name === \"AbortError\") {\n            console.error(\n              \"Search aborted or timeout reached - Please try lower the amount of posts to search per request.\",\n              error\n            );\n            setError(\n              new Error(\n                \"Abort/timeout error. Try choosing a lower amount of posts to search per request.\"\n              )\n            );\n          } else {\n            console.error(\"Error fetching blocks:\", error);\n            setError(error);\n          }\n\n          searchStatus = \"failed\"; // Update the search status to failed\n          break;\n        }\n      }\n    } finally {\n      abortControllerRef.current = null;\n\n      if (searchStatus === \"completed\" && localBatchResults.length > 0) {\n        const mergedBlocks = mergeBlocks(localBatchResults);\n        const sortedBlocks = changeBlockSorting(sortOrder, mergedBlocks);\n\n        setFilters(filtersDefault);\n        setFoundBlocks(sortedBlocks);\n        setCachedFoundBlocks(sortedBlocks);\n      } else {\n        setError(\n          new Error(\"Search completed with no results or an error occurred.\")\n        );\n\n        reset();\n      }\n\n      // Add a 1 second delay to view the finished search stats.\n      await new Promise((resolve) => setTimeout(resolve, 1000));\n\n      setIsLoading(false);\n    }\n  };\n\n  /**\n   * Reset the search state to its initial values.\n   */\n  const reset = () => {\n    if (abortControllerRef.current) {\n      abortControllerRef.current.abort();\n    }\n    setFoundBlocks([]);\n    setCachedFoundBlocks([]);\n    setIsLoading(false);\n    setError(null);\n    setProgress({\n      currentPage: 0,\n      totalPages: 0,\n      percentage: 0,\n      totalPosts: 0,\n      totalBlocks: 0,\n      totalScannedPosts: 0,\n    });\n    setSortOrder(\"asc\");\n  };\n\n  let firstLoad = true;\n\n  useEffect(() => {\n    if (firstLoad && cachedFoundBlocks && cachedFoundBlocks.length > 0) {\n      firstLoad = false;\n      setFoundBlocks(changeBlockSorting(sortOrder, cachedFoundBlocks));\n    }\n  }, [cachedFoundBlocks]);\n\n  const changeBlockSorting = (order, foundBlocks) => {\n    // First, sort the blocks\n    const sortedBlocks = [...foundBlocks].sort((a, b) => {\n      if (order === \"asc\") {\n        return a.name.localeCompare(b.name);\n      } else {\n        return b.name.localeCompare(a.name);\n      }\n    });\n\n    // Then, sort the posts within each block\n    sortedBlocks.forEach((block) => {\n      if (block.posts && Array.isArray(block.posts)) {\n        block.posts.sort((a, b) => {\n          if (order === \"asc\") {\n            return a.title.localeCompare(b.title);\n          } else {\n            return b.title.localeCompare(a.title);\n          }\n        });\n      }\n    });\n\n    return sortedBlocks;\n  };\n\n  const withFilters = (blocks) => {\n    if (filters.name) {\n      blocks = blocks.filter((block) =>\n        block.name.toLowerCase().includes(filters.name.toLowerCase())\n      );\n    }\n\n    if (filters.blockProvider) {\n      blocks = blocks.filter((block) =>\n        block.name\n          .split(\"/\")[0]\n          .toLowerCase()\n          .includes(filters.blockProvider.toLowerCase())\n      );\n    }\n\n    /**\n     * Conditional Blocks Integration.\n     */\n    if (filters.hasConditionalBlocks) {\n      blocks = blocks\n        .map((block) => {\n          // Filter out posts that do not have hasConditionalBlocks\n          const filteredPosts = block.posts.filter(\n            (post) => post.hasConditionalBlocks\n          );\n          // Return the block with the filtered posts, or null if no posts left\n          return filteredPosts.length > 0\n            ? { ...block, posts: filteredPosts }\n            : null;\n        })\n        .filter((block) => block !== null); // Remove blocks that have no posts left\n    }\n\n    return blocks;\n  };\n\n  return {\n    reset,\n    foundBlocks,\n    withFilters,\n    setFilters,\n    isLoading,\n    error,\n    startSearch,\n    abortSearch,\n    progress,\n    postsWithBlock,\n  };\n};\n\n/**\n * Merge blocks from different requests.\n * @param {Array} blocks - The blocks to merge.\n * @returns {Array} The merged blocks.\n */\nconst mergeBlocks = (blocks) => {\n  const blockMap = new Map();\n\n  blocks.forEach((newBlock) => {\n    if (blockMap.has(newBlock.name)) {\n      // Merge posts if the block already exists\n      const existingBlock = blockMap.get(newBlock.name);\n      newBlock.posts.forEach((newPost) => {\n        const existingPostIndex = existingBlock.posts.findIndex(\n          (post) => post.id === newPost.id\n        );\n        if (existingPostIndex !== -1) {\n          // Combine the count if the post already exists\n          existingBlock.posts[existingPostIndex].count += newPost.count;\n        } else {\n          // Add the new post if it doesn't exist\n          existingBlock.posts.push(newPost);\n        }\n      });\n    } else {\n      // Add the new block if it doesn't exist\n      blockMap.set(newBlock.name, {\n        ...newBlock,\n        posts: [...newBlock.posts],\n      });\n    }\n  });\n\n  // Convert the map back to an array\n  return Array.from(blockMap.values());\n};\n","import { useState, useEffect, useCallback } from \"@wordpress/element\";\n/**\n * Helper for setting local storage. useEffect to prevent hydration errors.\n * @param {*} key\n * @returns\n */\n// A simple pub-sub mechanism for preferences\nconst preferenceSubscribers = new Map();\n\nconst notifyPreferenceSubscribers = (key, value) => {\n  const callbacks = preferenceSubscribers.get(key) || [];\n  callbacks.forEach((callback) => callback(value));\n};\n\nconst subscribeToPreference = (key, callback) => {\n  if (!preferenceSubscribers.has(key)) {\n    preferenceSubscribers.set(key, []);\n  }\n  preferenceSubscribers.get(key).push(callback);\n};\n\nconst unsubscribeFromPreference = (key, callback) => {\n  const callbacks = preferenceSubscribers.get(key) || [];\n  const index = callbacks.indexOf(callback);\n  if (index > -1) {\n    callbacks.splice(index, 1);\n  }\n};\n\n/**\n * Helper for setting local storage. useEffect to prevent hydration errors.\n * @param {*} key\n * @returns\n */\nexport const useLocalStorage = (key, defaultValue) => {\n  const [data, setData] = useState(defaultValue);\n  const [initialLoad, setInitialLoad] = useState(true);\n\n  useEffect(() => {\n    if (initialLoad) {\n      setInitialLoad(false);\n      const existingData = JSON.parse(localStorage.getItem(key));\n      setData(existingData ?? defaultValue);\n    }\n  }, [initialLoad, key, defaultValue]);\n\n  useEffect(() => {\n    const handleDataChange = (newData) => {\n      setData(newData);\n    };\n\n    subscribeToPreference(key, handleDataChange);\n\n    return () => {\n      unsubscribeFromPreference(key, handleDataChange);\n    };\n  }, [key]);\n\n  const saveDataToLocalStorage = useCallback(\n    (newData) => {\n      localStorage.setItem(key, JSON.stringify(newData));\n      notifyPreferenceSubscribers(key, newData);\n    },\n    [key]\n  );\n\n  return [data, saveDataToLocalStorage];\n};\n","/**\n * Global fmbGlobal\n */\nimport { useLocalStorage } from \"./useLocalStorage.js\";\n/**\n * Store preferences & settings in local storage.\n */\nexport const usePreferences = () => {\n  const [selectedBlock, setSelectedBlock] = useLocalStorage(\n    \"fmb_selected_block\",\n    \"\"\n  );\n  const [postsPerRun, setPostsPerRun] = useLocalStorage(\n    \"fmb_posts_per_run\",\n    10\n  );\n  const [cachedFoundBlocks, setCachedFoundBlocks] = useLocalStorage(\n    \"fmb_found_blocks\",\n    false\n  );\n  const [selectedProvider, setSelectedProvider] = useLocalStorage(\n    \"fmb_selected_provider\",\n    false\n  );\n  const [versionCache, setVersionCache] = useLocalStorage(\n    \"fmb_version_cache\",\n    false\n  );\n  const [conditionalBlocks, setConditionalBlocks] = useLocalStorage(\n    \"fmb_conditional_blocks\",\n    false\n  );\n\n  return {\n    cachedFoundBlocks:\n      fmbGlobal.version === versionCache ? cachedFoundBlocks : false,\n    setCachedFoundBlocks: (value) => {\n      setVersionCache(fmbGlobal.version);\n      setSelectedProvider(false);\n      setSelectedBlock(false);\n      setConditionalBlocks(false);\n      setCachedFoundBlocks(value);\n    },\n    selectedBlock,\n    setSelectedBlock,\n    selectedProvider,\n    setSelectedProvider,\n    postsPerRun: parseInt(postsPerRun),\n    setPostsPerRun,\n    conditionalBlocks,\n    setConditionalBlocks,\n  };\n};\n","/**\n * global fmbGlobal\n */\nimport { Fragment, useState } from \"@wordpress/element\";\nimport { __ } from \"@wordpress/i18n\";\nimport { CardGrid } from \"../components/PostCards/PostCards.js\";\nimport BlockNavigation from \"../components/BlockNavigation/index.js\";\nimport { useFindMyBlocks } from \"../context/FindMyBlocksContext.js\";\nimport { getUniqueProviders } from \"../utils/functions.js\";\nimport {\n  Button,\n  ExternalLink,\n  RadioControl,\n  Notice,\n  ComboboxControl,\n  SearchControl,\n  CheckboxControl,\n} from \"@wordpress/components\";\n\n/**\n * Overview Page.\n */\nfunction SearchPage() {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const {\n    foundBlocks,\n    startSearch,\n    abortSearch,\n    progress,\n    isLoading,\n    error,\n    postsWithBlock,\n  } = finder;\n\n  const { selectedBlock, postsPerRun, setPostsPerRun } = preferences;\n\n  if (isLoading)\n    return (\n      <div className=\"fmb-bento-container\">\n        <div className=\"fmb-bento-grid\">\n          <div className=\"fmb-box fmb-box-full\">\n            <h2>{__(\"Searching for your blocks...\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\"Progress:\", \"find-my-blocks\")} {progress.percentage}%\n            </p>\n            <p>\n              {__(\"Scanning batch\", \"find-my-blocks\")} {progress.currentPage}{\" \"}\n              {__(\"out of\", \"find-my-blocks\")} {progress.totalPages}\n            </p>\n            <p>\n              {__(\"Total block instances detected:\", \"find-my-blocks\")}{\" \"}\n              {progress.totalBlocks}\n              {\" \" + __(\"in\", \"find-my-blocks\")} {progress.totalScannedPosts}\n              {\" \" + __(\"locations.\", \"find-my-blocks\")}\n            </p>\n            <Button\n              onClick={() => abortSearch()}\n              isDestructive\n              isPrimary\n              disabled={!isLoading}\n            >\n              {__(\"Abort Search\", \"find-my-blocks\")}\n            </Button>\n          </div>\n        </div>\n      </div>\n    );\n\n  const posts = postsWithBlock(selectedBlock);\n\n  if (!error && foundBlocks.length > 0) {\n    return (\n      <Fragment>\n        <div className=\"fmb-container\">\n          <div className=\"fmb-grid-results-page\">\n            <div className=\"fmb-box\">\n              <h2>{__(\"Filters\", \"find-my-blocks\")}</h2>\n              <div className=\"fmb-search-filters\">\n                <SearchFilter />\n                <BlockProviderFilter />\n                {fmbGlobal?.conditional_blocks_installed && (\n                  <ConditionalBlocksFilter />\n                )}\n              </div>\n              <h2>{__(\"Found Blocks\", \"find-my-blocks\")}</h2>\n              <p>\n                {__(\n                  \"The below blocks have been detected during the scan.\",\n                  \"find-my-blocks\"\n                )}\n              </p>\n              <nav className=\"fmb-side-navigation\">\n                <BlockNavigation />\n              </nav>\n            </div>\n\n            <div>\n              {selectedBlock && (\n                <Fragment>\n                  <h2>\n                    <span className=\"fmb-badge\">{selectedBlock}</span>\n                  </h2>\n                  {posts?.length > 0 && (\n                    <p>\n                      {__(\"Instances of the\", \"find-my-blocks\")}{\" \"}\n                      <b>{selectedBlock}</b>{\" \"}\n                      {__(\"block has been found in these\", \"find-my-blocks\")}{\" \"}\n                      {posts.length ?? 0} {__(\"locations.\", \"find-my-blocks\")}\n                    </p>\n                  )}\n                </Fragment>\n              )}\n              <CardGrid blockName={selectedBlock} posts={posts}></CardGrid>\n            </div>\n          </div>\n        </div>\n      </Fragment>\n    );\n  }\n\n  return (\n    <Fragment>\n      <ErrorNotice error={error} />\n      <div className=\"fmb-bento-container\">\n        <div className=\"fmb-bento-grid\">\n          <div className=\"fmb-box fmb-box-full\">\n            <h2>{__(\"Get Started\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\n                \"Find My Blocks will search through all your templates, posts and pages to find the WordPress blocks.\",\n                \"find-my-blocks\"\n              )}\n            </p>\n\n            <RadioControl\n              className=\"fmb-performance-control\"\n              label=\"Performance\"\n              help={__(\n                \"Warning! Choose the performance level that matches your server. Fetching too may posts at once may temporarily crash your site.\",\n                \"find-my-blocks\"\n              )}\n              onChange={(val) => {\n                setPostsPerRun(val);\n              }}\n              options={[\n                {\n                  label: __(\n                    \"Low (Recommended for most sites, 10 post per run)\",\n                    \"find-my-blocks\"\n                  ),\n                  value: 10,\n                },\n                {\n                  label: __(\"Standard (100 posts per run)\", \"find-my-blocks\"),\n                  value: 100,\n                },\n                {\n                  label: __(\"Ultra (500 posts per run)\", \"find-my-blocks\"),\n                  value: 500,\n                },\n              ]}\n              selected={postsPerRun ?? 10}\n            />\n\n            <Button\n              onClick={() => startSearch()}\n              isPrimary\n              disabled={isLoading}\n            >\n              {__(\"Start Search\", \"find-my-blocks\")}\n            </Button>\n          </div>\n          <div className=\"fmb-box\">\n            <h2>{__(\"Block Tools & Resources\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\n                \"Create faster & better WordPress sites with block tutorials from experts.\",\n                \"find-my-blocks\"\n              )}\n            </p>\n            <ul>\n              <li>\n                <ExternalLink\n                  href=\"https://findmyblocks.com?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install\"\n                  target=\"_blank\"\n                >\n                  findmyblocks.com\n                </ExternalLink>\n              </li>\n              <li>\n                <ExternalLink\n                  href=\"https://conditionalblocks.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install\"\n                  target=\"_blank\"\n                >\n                  Conditional Blocks plugin\n                </ExternalLink>\n              </li>\n              <li>\n                <ExternalLink\n                  href=\"https://morganhvidt.com/?utm_source=wordpress_site&utm_medium=start&utm_campaign=find_my_blocks_active_install\"\n                  target=\"_blank\"\n                >\n                  @MorganHvidt\n                </ExternalLink>\n                {__(\"(Developer) \", \"find-my-blocks\")}\n              </li>\n            </ul>\n          </div>\n          <div className=\"fmb-box\">\n            <h2>{__(\"Support Development\", \"find-my-blocks\")}</h2>\n            <p>\n              {__(\n                \"I'm building Find My Blocks in my free time. If you find it useful, please consider donating, or contributing to the project.\",\n                \"find-my-blocks\"\n              )}{\" \"}\n              <em>- Morgan Hvidt</em>\n            </p>\n            <div style={{ marginTop: \"30px\" }}>\n              <Button\n                isSecondary\n                target=\"_blank\"\n                href=\"https://github.com/morganhvidt/find-my-blocks/\"\n              >\n                {__(\"Contribute on Github\", \"find-my-blocks\")}\n              </Button>{\" \"}\n              <Button\n                style={{ marginLeft: \"10px\" }}\n                isSecondary\n                target=\"_blank\"\n                href=\"https://morganhvidt.com/donate/\"\n              >\n                {__(\"Donate to development\", \"find-my-blocks\")}\n              </Button>\n            </div>\n          </div>\n        </div>\n      </div>\n    </Fragment>\n  );\n}\n\nconst ErrorNotice = ({ error }) => {\n  if (error) {\n    return <Notice status=\"error\">{error.message}</Notice>;\n  }\n\n  return null;\n};\n\nfunction SearchFilter({ className }) {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const [searchInput, setSearchInput] = useState(\"\");\n\n  const handleSearch = (value) => {\n    setSearchInput(value);\n    finder.setFilters((prev) => ({\n      ...prev,\n      name: value.length ? value : false,\n    }));\n  };\n\n  return <SearchControl value={searchInput} onChange={handleSearch} />;\n}\n\n/**\n * Component for filtering block providers.\n */\nfunction BlockProviderFilter() {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const [blockProvider, setBlockProvider] = useState(\n    preferences?.selectedProvider ?? false\n  );\n\n  const handleChange = (value) => {\n    setBlockProvider(value);\n    preferences?.setSelectedProvider(value);\n    finder.setFilters((prev) => ({\n      ...prev,\n      blockProvider: value ?? false,\n    }));\n  };\n\n  const providers = getUniqueProviders(finder.foundBlocks);\n\n  return (\n    <ComboboxControl\n      allowReset\n      label=\"Block Provider\"\n      help=\"Core or third-party block providers\"\n      value={blockProvider}\n      onChange={handleChange}\n      options={providers}\n      onFilterValueChange={(inputValue) =>\n        setBlockProvider(\n          providers.filter((option) =>\n            option.label.toLowerCase().startsWith(inputValue.toLowerCase())\n          )\n        )\n      }\n    />\n  );\n}\n/**\n * Conditional Blocks Integration.\n */\nconst ConditionalBlocksFilter = () => {\n  const { finder, preferences } = useFindMyBlocks();\n\n  const [isChecked, setChecked] = useState(\n    preferences?.conditionalBlocks ? true : false\n  );\n\n  const handleChange = (value) => {\n    setChecked(value ? true : false);\n    preferences?.setConditionalBlocks(value ? true : false);\n    finder.setFilters((prev) => ({\n      ...prev,\n      hasConditionalBlocks: value ? true : false,\n    }));\n  };\n\n  return (\n    <CheckboxControl\n      label=\"Conditional Blocks\"\n      help={__(\n        \"Only blocks with visibility changed by the Conditional Blocks plugin\",\n        \"find-my-blocks\"\n      )}\n      checked={isChecked}\n      onChange={handleChange}\n    />\n  );\n};\n\nexport default SearchPage;\n","/**\n * Get unique providers from a list of blocks.\n * @param {Array} blocks - The list of blocks.\n * @returns {Array} The unique providers.\n */\nexport function getUniqueProviders(blocks) {\n  return blocks.reduce((uniqueProviders, block) => {\n    const provider = block.name.split(\"/\")[0] ?? false;\n    if (!uniqueProviders.some((prov) => prov.value === provider)) {\n      uniqueProviders.push({ value: provider, label: provider });\n    }\n    return uniqueProviders;\n  }, []);\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","/**\n * global fmbGlobal\n */\nimport { Fragment, render, createRoot } from \"@wordpress/element\";\nimport { __ } from \"@wordpress/i18n\";\nimport SearchPage from \"./pages/SearchPage.js\";\nimport { FindMyBlocksProvider } from \"./context/FindMyBlocksContext.js\";\nimport PageHeader from \"./components/PageHeader/PageHeader.js\";\n\n/**\n * Embed our App to the HTML.\n */\ndocument.addEventListener(\"DOMContentLoaded\", () => {\n  const target = document.getElementById(\"find-my-blocks-app\");\n\n  if (target) {\n    if (createRoot) {\n      createRoot(target).render(<App />);\n    } else {\n      render(<App />, target);\n    }\n  }\n});\n\n/**\n * Render Our App.\n */\nexport function App() {\n  return (\n    <Fragment>\n      <FindMyBlocksProvider>\n        <PageHeader />\n        <SearchPage />\n      </FindMyBlocksProvider>\n    </Fragment>\n  );\n}\n"],"names":["module","exports","window","BlockNavigation","finder","preferences","useFindMyBlocks","setSelectedBlock","foundBlocks","withFilters","currentActive","setCurrentActive","useState","filteredBlocks","createElement","className","style","navigation","map","block","key","name","active","onClick","handleLinkClick","blockName","subtitle","__","posts","length","PageHeader","children","isLoading","reset","startSearch","wrapper","header","container","logo","src","Logo","alt","headerNavigation","Button","icon","isPrimary","disabled","DropdownMenu","label","onClose","Fragment","MenuGroup","MenuItem","href","fmbGlobal","admin_url","target","Card","post","tags","hasConditionalBlocks","push","help","ExternalLink","variation","isSyncedPattern","count","isNested","nestedBlockType","getTags","WPCard","size","CardHeader","isBorderless","title","postType","isThirdPartyTemplate","templateProvider","isTertiary","post_url","edit_url","CardDivider","CardBody","tag","Tag","CardGrid","index","id","tagClass","classNames","classes","filter","Boolean","join","Icon","FindMyBlocksContext","createContext","FindMyBlocksProvider","_preferences$cachedFo","usePreferences","searchArgs","posts_per_page","postsPerRun","contextValue","useFinder","cachedFoundBlocks","setCachedFoundBlocks","Provider","value","context","useContext","Error","filtersDefault","blockProvider","setFoundBlocks","filters","setFilters","setIsLoading","error","setError","progress","setProgress","currentPage","totalPages","percentage","totalPosts","totalBlocks","totalScannedPosts","sortOrder","setSortOrder","abortControllerRef","useRef","current","abort","firstLoad","useEffect","changeBlockSorting","order","sortedBlocks","sort","a","b","localeCompare","forEach","Array","isArray","blocks","toLowerCase","includes","split","filteredPosts","async","controller","AbortController","localBatchResults","totalBlockInstances","searchStatus","signal","aborted","timeoutId","setTimeout","queryString","URLSearchParams","paged","toString","searchResponse","apiFetch","path","clearTimeout","Promise","resolve","data","scanned_posts","total_posts","total_pages","reduce","sum","Math","round","concat","console","mergedBlocks","mergeBlocks","abortSearch","log","postsWithBlock","find","blockMap","Map","newBlock","has","existingBlock","get","newPost","existingPostIndex","findIndex","set","from","values","preferenceSubscribers","useLocalStorage","defaultValue","setData","initialLoad","setInitialLoad","existingData","JSON","parse","localStorage","getItem","handleDataChange","newData","subscribeToPreference","callback","unsubscribeFromPreference","callbacks","indexOf","splice","useCallback","setItem","stringify","notifyPreferenceSubscribers","selectedBlock","setPostsPerRun","selectedProvider","setSelectedProvider","versionCache","setVersionCache","conditionalBlocks","setConditionalBlocks","version","parseInt","ErrorNotice","Notice","status","message","SearchFilter","searchInput","setSearchInput","SearchControl","onChange","prev","BlockProviderFilter","_preferences$selected","setBlockProvider","providers","getUniqueProviders","ComboboxControl","allowReset","options","onFilterValueChange","inputValue","option","startsWith","ConditionalBlocksFilter","isChecked","setChecked","CheckboxControl","checked","isDestructive","_posts$length","conditional_blocks_installed","RadioControl","val","selected","marginTop","isSecondary","marginLeft","uniqueProviders","_block$name$split$","provider","some","prov","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","__webpack_modules__","n","getter","__esModule","d","definition","o","Object","defineProperty","enumerable","obj","prop","prototype","hasOwnProperty","call","App","SearchPage","document","addEventListener","getElementById","createRoot","render"],"sourceRoot":""}
  • find-my-blocks/trunk/find-my-blocks.php

    r3078392 r3078539  
    44 * Plugin URI: https://findmyblocks.com/
    55 * Description: Locate instances of WordPress blocks across your entire site.
    6  * Version: 4.0.0
     6 * Version: 4.0.1
    77 * Requires at least: 5.0
    88 * Requires PHP: 7.4
     
    2222
    2323if ( ! defined( 'FMB_VERSION' ) ) {
    24     define( 'FMB_VERSION', '4.0.0' );
     24    define( 'FMB_VERSION', '4.0.1' );
    2525}
    2626
  • find-my-blocks/trunk/readme.txt

    r3078392 r3078539  
    33Donate link: https://morganhvidt.com/donate
    44Tags: gutenberg, find, blocks, search blocks, locator
    5 Stable tag: 4.0.0
     5Stable tag: 4.0.1
    66Requires at least: 5.0
    77Tested up to: 6.5
     
    9696== Changelog ==
    9797
     98
     99= 4.0.1 =
     100
     101- Improvement: Reliability during scan - use WP_Query pages instead total scanned posts because some posts might be skipped.
     102
    98103= 4.0.0 =
    99104
Note: See TracChangeset for help on using the changeset viewer.