ru-se.com

Unnamed repository; edit this file 'description' to name the repository.
Log | Files | Refs

block-directory.js (62383B)


      1 this["wp"] = this["wp"] || {}; this["wp"]["blockDirectory"] =
      2 /******/ (function(modules) { // webpackBootstrap
      3 /******/ 	// The module cache
      4 /******/ 	var installedModules = {};
      5 /******/
      6 /******/ 	// The require function
      7 /******/ 	function __webpack_require__(moduleId) {
      8 /******/
      9 /******/ 		// Check if module is in cache
     10 /******/ 		if(installedModules[moduleId]) {
     11 /******/ 			return installedModules[moduleId].exports;
     12 /******/ 		}
     13 /******/ 		// Create a new module (and put it into the cache)
     14 /******/ 		var module = installedModules[moduleId] = {
     15 /******/ 			i: moduleId,
     16 /******/ 			l: false,
     17 /******/ 			exports: {}
     18 /******/ 		};
     19 /******/
     20 /******/ 		// Execute the module function
     21 /******/ 		modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
     22 /******/
     23 /******/ 		// Flag the module as loaded
     24 /******/ 		module.l = true;
     25 /******/
     26 /******/ 		// Return the exports of the module
     27 /******/ 		return module.exports;
     28 /******/ 	}
     29 /******/
     30 /******/
     31 /******/ 	// expose the modules object (__webpack_modules__)
     32 /******/ 	__webpack_require__.m = modules;
     33 /******/
     34 /******/ 	// expose the module cache
     35 /******/ 	__webpack_require__.c = installedModules;
     36 /******/
     37 /******/ 	// define getter function for harmony exports
     38 /******/ 	__webpack_require__.d = function(exports, name, getter) {
     39 /******/ 		if(!__webpack_require__.o(exports, name)) {
     40 /******/ 			Object.defineProperty(exports, name, { enumerable: true, get: getter });
     41 /******/ 		}
     42 /******/ 	};
     43 /******/
     44 /******/ 	// define __esModule on exports
     45 /******/ 	__webpack_require__.r = function(exports) {
     46 /******/ 		if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
     47 /******/ 			Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
     48 /******/ 		}
     49 /******/ 		Object.defineProperty(exports, '__esModule', { value: true });
     50 /******/ 	};
     51 /******/
     52 /******/ 	// create a fake namespace object
     53 /******/ 	// mode & 1: value is a module id, require it
     54 /******/ 	// mode & 2: merge all properties of value into the ns
     55 /******/ 	// mode & 4: return value when already ns object
     56 /******/ 	// mode & 8|1: behave like require
     57 /******/ 	__webpack_require__.t = function(value, mode) {
     58 /******/ 		if(mode & 1) value = __webpack_require__(value);
     59 /******/ 		if(mode & 8) return value;
     60 /******/ 		if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
     61 /******/ 		var ns = Object.create(null);
     62 /******/ 		__webpack_require__.r(ns);
     63 /******/ 		Object.defineProperty(ns, 'default', { enumerable: true, value: value });
     64 /******/ 		if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
     65 /******/ 		return ns;
     66 /******/ 	};
     67 /******/
     68 /******/ 	// getDefaultExport function for compatibility with non-harmony modules
     69 /******/ 	__webpack_require__.n = function(module) {
     70 /******/ 		var getter = module && module.__esModule ?
     71 /******/ 			function getDefault() { return module['default']; } :
     72 /******/ 			function getModuleExports() { return module; };
     73 /******/ 		__webpack_require__.d(getter, 'a', getter);
     74 /******/ 		return getter;
     75 /******/ 	};
     76 /******/
     77 /******/ 	// Object.prototype.hasOwnProperty.call
     78 /******/ 	__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
     79 /******/
     80 /******/ 	// __webpack_public_path__
     81 /******/ 	__webpack_require__.p = "";
     82 /******/
     83 /******/
     84 /******/ 	// Load entry module and return exports
     85 /******/ 	return __webpack_require__(__webpack_require__.s = "7f3f");
     86 /******/ })
     87 /************************************************************************/
     88 /******/ ({
     89 
     90 /***/ "//Lo":
     91 /***/ (function(module, __webpack_exports__, __webpack_require__) {
     92 
     93 "use strict";
     94 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("GRId");
     95 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
     96 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("Tqx9");
     97 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
     98 
     99 
    100 /**
    101  * WordPress dependencies
    102  */
    103 
    104 const blockDefault = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
    105   xmlns: "http://www.w3.org/2000/svg",
    106   viewBox: "0 0 24 24"
    107 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
    108   d: "M19 8h-1V6h-5v2h-2V6H6v2H5c-1.1 0-2 .9-2 2v8c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2v-8c0-1.1-.9-2-2-2zm.5 10c0 .3-.2.5-.5.5H5c-.3 0-.5-.2-.5-.5v-8c0-.3.2-.5.5-.5h14c.3 0 .5.2.5.5v8z"
    109 }));
    110 /* harmony default export */ __webpack_exports__["a"] = (blockDefault);
    111 
    112 
    113 /***/ }),
    114 
    115 /***/ "1ZqX":
    116 /***/ (function(module, exports) {
    117 
    118 (function() { module.exports = window["wp"]["data"]; }());
    119 
    120 /***/ }),
    121 
    122 /***/ "51Zz":
    123 /***/ (function(module, exports) {
    124 
    125 (function() { module.exports = window["wp"]["dataControls"]; }());
    126 
    127 /***/ }),
    128 
    129 /***/ "7f3f":
    130 /***/ (function(module, __webpack_exports__, __webpack_require__) {
    131 
    132 "use strict";
    133 // ESM COMPAT FLAG
    134 __webpack_require__.r(__webpack_exports__);
    135 
    136 // EXPORTS
    137 __webpack_require__.d(__webpack_exports__, "store", function() { return /* reexport */ store; });
    138 
    139 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-directory/build-module/store/selectors.js
    140 var selectors_namespaceObject = {};
    141 __webpack_require__.r(selectors_namespaceObject);
    142 __webpack_require__.d(selectors_namespaceObject, "isRequestingDownloadableBlocks", function() { return selectors_isRequestingDownloadableBlocks; });
    143 __webpack_require__.d(selectors_namespaceObject, "getDownloadableBlocks", function() { return selectors_getDownloadableBlocks; });
    144 __webpack_require__.d(selectors_namespaceObject, "getInstalledBlockTypes", function() { return getInstalledBlockTypes; });
    145 __webpack_require__.d(selectors_namespaceObject, "getNewBlockTypes", function() { return getNewBlockTypes; });
    146 __webpack_require__.d(selectors_namespaceObject, "getUnusedBlockTypes", function() { return getUnusedBlockTypes; });
    147 __webpack_require__.d(selectors_namespaceObject, "isInstalling", function() { return selectors_isInstalling; });
    148 __webpack_require__.d(selectors_namespaceObject, "getErrorNotices", function() { return getErrorNotices; });
    149 __webpack_require__.d(selectors_namespaceObject, "getErrorNoticeForBlock", function() { return selectors_getErrorNoticeForBlock; });
    150 
    151 // NAMESPACE OBJECT: ./node_modules/@wordpress/block-directory/build-module/store/actions.js
    152 var actions_namespaceObject = {};
    153 __webpack_require__.r(actions_namespaceObject);
    154 __webpack_require__.d(actions_namespaceObject, "fetchDownloadableBlocks", function() { return fetchDownloadableBlocks; });
    155 __webpack_require__.d(actions_namespaceObject, "receiveDownloadableBlocks", function() { return receiveDownloadableBlocks; });
    156 __webpack_require__.d(actions_namespaceObject, "installBlockType", function() { return actions_installBlockType; });
    157 __webpack_require__.d(actions_namespaceObject, "uninstallBlockType", function() { return actions_uninstallBlockType; });
    158 __webpack_require__.d(actions_namespaceObject, "addInstalledBlockType", function() { return addInstalledBlockType; });
    159 __webpack_require__.d(actions_namespaceObject, "removeInstalledBlockType", function() { return removeInstalledBlockType; });
    160 __webpack_require__.d(actions_namespaceObject, "setIsInstalling", function() { return setIsInstalling; });
    161 __webpack_require__.d(actions_namespaceObject, "setErrorNotice", function() { return setErrorNotice; });
    162 __webpack_require__.d(actions_namespaceObject, "clearErrorNotice", function() { return clearErrorNotice; });
    163 
    164 // EXTERNAL MODULE: external ["wp","element"]
    165 var external_wp_element_ = __webpack_require__("GRId");
    166 
    167 // EXTERNAL MODULE: external ["wp","plugins"]
    168 var external_wp_plugins_ = __webpack_require__("TvNi");
    169 
    170 // EXTERNAL MODULE: external ["wp","hooks"]
    171 var external_wp_hooks_ = __webpack_require__("g56x");
    172 
    173 // EXTERNAL MODULE: external ["wp","blocks"]
    174 var external_wp_blocks_ = __webpack_require__("HSyU");
    175 
    176 // EXTERNAL MODULE: external ["wp","data"]
    177 var external_wp_data_ = __webpack_require__("1ZqX");
    178 
    179 // EXTERNAL MODULE: external ["wp","editor"]
    180 var external_wp_editor_ = __webpack_require__("jSdM");
    181 
    182 // EXTERNAL MODULE: external ["wp","dataControls"]
    183 var external_wp_dataControls_ = __webpack_require__("51Zz");
    184 
    185 // EXTERNAL MODULE: external "lodash"
    186 var external_lodash_ = __webpack_require__("YLtl");
    187 
    188 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/reducer.js
    189 /**
    190  * External dependencies
    191  */
    192 
    193 /**
    194  * WordPress dependencies
    195  */
    196 
    197 
    198 /**
    199  * Reducer returning an array of downloadable blocks.
    200  *
    201  * @param {Object} state  Current state.
    202  * @param {Object} action Dispatched action.
    203  *
    204  * @return {Object} Updated state.
    205  */
    206 
    207 const downloadableBlocks = (state = {}, action) => {
    208   switch (action.type) {
    209     case 'FETCH_DOWNLOADABLE_BLOCKS':
    210       return { ...state,
    211         [action.filterValue]: {
    212           isRequesting: true
    213         }
    214       };
    215 
    216     case 'RECEIVE_DOWNLOADABLE_BLOCKS':
    217       return { ...state,
    218         [action.filterValue]: {
    219           results: action.downloadableBlocks,
    220           isRequesting: false
    221         }
    222       };
    223   }
    224 
    225   return state;
    226 };
    227 /**
    228  * Reducer managing the installation and deletion of blocks.
    229  *
    230  * @param {Object} state  Current state.
    231  * @param {Object} action Dispatched action.
    232  *
    233  * @return {Object} Updated state.
    234  */
    235 
    236 const blockManagement = (state = {
    237   installedBlockTypes: [],
    238   isInstalling: {}
    239 }, action) => {
    240   switch (action.type) {
    241     case 'ADD_INSTALLED_BLOCK_TYPE':
    242       return { ...state,
    243         installedBlockTypes: [...state.installedBlockTypes, action.item]
    244       };
    245 
    246     case 'REMOVE_INSTALLED_BLOCK_TYPE':
    247       return { ...state,
    248         installedBlockTypes: state.installedBlockTypes.filter(blockType => blockType.name !== action.item.name)
    249       };
    250 
    251     case 'SET_INSTALLING_BLOCK':
    252       return { ...state,
    253         isInstalling: { ...state.isInstalling,
    254           [action.blockId]: action.isInstalling
    255         }
    256       };
    257   }
    258 
    259   return state;
    260 };
    261 /**
    262  * Reducer returning an object of error notices.
    263  *
    264  * @param {Object} state  Current state.
    265  * @param {Object} action Dispatched action.
    266  *
    267  * @return {Object} Updated state.
    268  */
    269 
    270 const errorNotices = (state = {}, action) => {
    271   switch (action.type) {
    272     case 'SET_ERROR_NOTICE':
    273       return { ...state,
    274         [action.blockId]: {
    275           message: action.message,
    276           isFatal: action.isFatal
    277         }
    278       };
    279 
    280     case 'CLEAR_ERROR_NOTICE':
    281       return Object(external_lodash_["omit"])(state, action.blockId);
    282   }
    283 
    284   return state;
    285 };
    286 /* harmony default export */ var reducer = (Object(external_wp_data_["combineReducers"])({
    287   downloadableBlocks,
    288   blockManagement,
    289   errorNotices
    290 }));
    291 
    292 // EXTERNAL MODULE: external ["wp","blockEditor"]
    293 var external_wp_blockEditor_ = __webpack_require__("axFQ");
    294 
    295 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/utils/has-block-type.js
    296 /**
    297  * Check if a block list contains a specific block type. Recursively searches
    298  * through `innerBlocks` if they exist.
    299  *
    300  * @param {Object} blockType A block object to search for.
    301  * @param {Object[]} blocks  The list of blocks to look through.
    302  *
    303  * @return {boolean} Whether the blockType is found.
    304  */
    305 function hasBlockType(blockType, blocks = []) {
    306   if (!blocks.length) {
    307     return false;
    308   }
    309 
    310   if (blocks.some(({
    311     name
    312   }) => name === blockType.name)) {
    313     return true;
    314   }
    315 
    316   for (let i = 0; i < blocks.length; i++) {
    317     if (hasBlockType(blockType, blocks[i].innerBlocks)) {
    318       return true;
    319     }
    320   }
    321 
    322   return false;
    323 }
    324 
    325 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/selectors.js
    326 /**
    327  * WordPress dependencies
    328  */
    329 
    330 
    331 /**
    332  * Internal dependencies
    333  */
    334 
    335 
    336 /**
    337  * Returns true if application is requesting for downloadable blocks.
    338  *
    339  * @param {Object} state       Global application state.
    340  * @param {string} filterValue Search string.
    341  *
    342  * @return {boolean} Whether a request is in progress for the blocks list.
    343  */
    344 
    345 function selectors_isRequestingDownloadableBlocks(state, filterValue) {
    346   if (!state.downloadableBlocks[filterValue] || !state.downloadableBlocks[filterValue].isRequesting) {
    347     return false;
    348   }
    349 
    350   return state.downloadableBlocks[filterValue].isRequesting;
    351 }
    352 /**
    353  * Returns the available uninstalled blocks.
    354  *
    355  * @param {Object} state       Global application state.
    356  * @param {string} filterValue Search string.
    357  *
    358  * @return {Array} Downloadable blocks.
    359  */
    360 
    361 function selectors_getDownloadableBlocks(state, filterValue) {
    362   if (!state.downloadableBlocks[filterValue] || !state.downloadableBlocks[filterValue].results) {
    363     return [];
    364   }
    365 
    366   return state.downloadableBlocks[filterValue].results;
    367 }
    368 /**
    369  * Returns the block types that have been installed on the server in this
    370  * session.
    371  *
    372  * @param {Object} state Global application state.
    373  *
    374  * @return {Array} Block type items
    375  */
    376 
    377 function getInstalledBlockTypes(state) {
    378   return state.blockManagement.installedBlockTypes;
    379 }
    380 /**
    381  * Returns block types that have been installed on the server and used in the
    382  * current post.
    383  *
    384  * @param {Object} state Global application state.
    385  *
    386  * @return {Array} Block type items.
    387  */
    388 
    389 const getNewBlockTypes = Object(external_wp_data_["createRegistrySelector"])(select => state => {
    390   const usedBlockTree = select(external_wp_blockEditor_["store"]).getBlocks();
    391   const installedBlockTypes = getInstalledBlockTypes(state);
    392   return installedBlockTypes.filter(blockType => hasBlockType(blockType, usedBlockTree));
    393 });
    394 /**
    395  * Returns the block types that have been installed on the server but are not
    396  * used in the current post.
    397  *
    398  * @param {Object} state Global application state.
    399  *
    400  * @return {Array} Block type items.
    401  */
    402 
    403 const getUnusedBlockTypes = Object(external_wp_data_["createRegistrySelector"])(select => state => {
    404   const usedBlockTree = select(external_wp_blockEditor_["store"]).getBlocks();
    405   const installedBlockTypes = getInstalledBlockTypes(state);
    406   return installedBlockTypes.filter(blockType => !hasBlockType(blockType, usedBlockTree));
    407 });
    408 /**
    409  * Returns true if a block plugin install is in progress.
    410  *
    411  * @param {Object} state   Global application state.
    412  * @param {string} blockId Id of the block.
    413  *
    414  * @return {boolean} Whether this block is currently being installed.
    415  */
    416 
    417 function selectors_isInstalling(state, blockId) {
    418   return state.blockManagement.isInstalling[blockId] || false;
    419 }
    420 /**
    421  * Returns all block error notices.
    422  *
    423  * @param {Object} state Global application state.
    424  *
    425  * @return {Object} Object with error notices.
    426  */
    427 
    428 function getErrorNotices(state) {
    429   return state.errorNotices;
    430 }
    431 /**
    432  * Returns the error notice for a given block.
    433  *
    434  * @param {Object} state   Global application state.
    435  * @param {string} blockId The ID of the block plugin. eg: my-block
    436  *
    437  * @return {string|boolean} The error text, or false if no error.
    438  */
    439 
    440 function selectors_getErrorNoticeForBlock(state, blockId) {
    441   return state.errorNotices[blockId];
    442 }
    443 
    444 // EXTERNAL MODULE: external ["wp","i18n"]
    445 var external_wp_i18n_ = __webpack_require__("l3Sj");
    446 
    447 // EXTERNAL MODULE: external ["wp","notices"]
    448 var external_wp_notices_ = __webpack_require__("onLe");
    449 
    450 // EXTERNAL MODULE: external ["wp","apiFetch"]
    451 var external_wp_apiFetch_ = __webpack_require__("ywyh");
    452 var external_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_wp_apiFetch_);
    453 
    454 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/controls.js
    455 /**
    456  * WordPress dependencies
    457  */
    458 
    459 /**
    460  * Load an asset for a block.
    461  *
    462  * This function returns a Promise that will resolve once the asset is loaded,
    463  * or in the case of Stylesheets and Inline JavaScript, will resolve immediately.
    464  *
    465  * @param {HTMLElement} el A HTML Element asset to inject.
    466  *
    467  * @return {Promise} Promise which will resolve when the asset is loaded.
    468  */
    469 
    470 const loadAsset = el => {
    471   return new Promise((resolve, reject) => {
    472     /*
    473      * Reconstruct the passed element, this is required as inserting the Node directly
    474      * won't always fire the required onload events, even if the asset wasn't already loaded.
    475      */
    476     const newNode = document.createElement(el.nodeName);
    477     ['id', 'rel', 'src', 'href', 'type'].forEach(attr => {
    478       if (el[attr]) {
    479         newNode[attr] = el[attr];
    480       }
    481     }); // Append inline <script> contents.
    482 
    483     if (el.innerHTML) {
    484       newNode.appendChild(document.createTextNode(el.innerHTML));
    485     }
    486 
    487     newNode.onload = () => resolve(true);
    488 
    489     newNode.onerror = () => reject(new Error('Error loading asset.'));
    490 
    491     document.body.appendChild(newNode); // Resolve Stylesheets and Inline JavaScript immediately.
    492 
    493     if ('link' === newNode.nodeName.toLowerCase() || 'script' === newNode.nodeName.toLowerCase() && !newNode.src) {
    494       resolve();
    495     }
    496   });
    497 };
    498 /**
    499  * Load the asset files for a block
    500  *
    501  * @param {Array} assets A collection of URLs for the assets.
    502  *
    503  * @return {Object} Control descriptor.
    504  */
    505 
    506 function loadAssets(assets) {
    507   return {
    508     type: 'LOAD_ASSETS',
    509     assets
    510   };
    511 }
    512 const controls = {
    513   async LOAD_ASSETS() {
    514     /*
    515      * Fetch the current URL (post-new.php, or post.php?post=1&action=edit) and compare the
    516      * JavaScript and CSS assets loaded between the pages. This imports the required assets
    517      * for the block into the current page while not requiring that we know them up-front.
    518      * In the future this can be improved by reliance upon block.json and/or a script-loader
    519      * dependency API.
    520      */
    521     const response = await external_wp_apiFetch_default()({
    522       url: document.location.href,
    523       parse: false
    524     });
    525     const data = await response.text();
    526     const doc = new window.DOMParser().parseFromString(data, 'text/html');
    527     const newAssets = Array.from(doc.querySelectorAll('link[rel="stylesheet"],script')).filter(asset => asset.id && !document.getElementById(asset.id));
    528     /*
    529      * Load each asset in order, as they may depend upon an earlier loaded script.
    530      * Stylesheets and Inline Scripts will resolve immediately upon insertion.
    531      */
    532 
    533     for (const newAsset of newAssets) {
    534       await loadAsset(newAsset);
    535     }
    536   }
    537 
    538 };
    539 /* harmony default export */ var store_controls = (controls);
    540 
    541 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/utils/get-plugin-url.js
    542 /**
    543  * Get the plugin's direct API link out of a block-directory response.
    544  *
    545  * @param {Object} block The block object
    546  *
    547  * @return {string} The plugin URL, if exists.
    548  */
    549 function getPluginUrl(block) {
    550   if (!block) {
    551     return false;
    552   }
    553 
    554   const link = block.links['wp:plugin'] || block.links.self;
    555 
    556   if (link && link.length) {
    557     return link[0].href;
    558   }
    559 
    560   return false;
    561 }
    562 
    563 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/actions.js
    564 /**
    565  * WordPress dependencies
    566  */
    567 
    568 
    569 
    570 
    571 
    572 /**
    573  * Internal dependencies
    574  */
    575 
    576 
    577 
    578 /**
    579  * Returns an action object used in signalling that the downloadable blocks
    580  * have been requested and are loading.
    581  *
    582  * @param {string} filterValue Search string.
    583  *
    584  * @return {Object} Action object.
    585  */
    586 
    587 function fetchDownloadableBlocks(filterValue) {
    588   return {
    589     type: 'FETCH_DOWNLOADABLE_BLOCKS',
    590     filterValue
    591   };
    592 }
    593 /**
    594  * Returns an action object used in signalling that the downloadable blocks
    595  * have been updated.
    596  *
    597  * @param {Array}  downloadableBlocks Downloadable blocks.
    598  * @param {string} filterValue        Search string.
    599  *
    600  * @return {Object} Action object.
    601  */
    602 
    603 function receiveDownloadableBlocks(downloadableBlocks, filterValue) {
    604   return {
    605     type: 'RECEIVE_DOWNLOADABLE_BLOCKS',
    606     downloadableBlocks,
    607     filterValue
    608   };
    609 }
    610 /**
    611  * Action triggered to install a block plugin.
    612  *
    613  * @param {Object} block The block item returned by search.
    614  *
    615  * @return {boolean} Whether the block was successfully installed & loaded.
    616  */
    617 
    618 function* actions_installBlockType(block) {
    619   const {
    620     id,
    621     assets
    622   } = block;
    623   let success = false;
    624   yield clearErrorNotice(id);
    625 
    626   try {
    627     yield setIsInstalling(block.id, true); // If we have a wp:plugin link, the plugin is installed but inactive.
    628 
    629     const url = getPluginUrl(block);
    630     let links = {};
    631 
    632     if (url) {
    633       yield Object(external_wp_dataControls_["apiFetch"])({
    634         url,
    635         data: {
    636           status: 'active'
    637         },
    638         method: 'PUT'
    639       });
    640     } else {
    641       const response = yield Object(external_wp_dataControls_["apiFetch"])({
    642         path: 'wp/v2/plugins',
    643         data: {
    644           slug: block.id,
    645           status: 'active'
    646         },
    647         method: 'POST'
    648       }); // Add the `self` link for newly-installed blocks.
    649 
    650       links = response._links;
    651     }
    652 
    653     yield addInstalledBlockType({ ...block,
    654       links: { ...block.links,
    655         ...links
    656       }
    657     });
    658     yield loadAssets(assets);
    659     const registeredBlocks = yield external_wp_data_["controls"].select(external_wp_blocks_["store"].name, 'getBlockTypes');
    660 
    661     if (!registeredBlocks.some(i => i.name === block.name)) {
    662       throw new Error(Object(external_wp_i18n_["__"])('Error registering block. Try reloading the page.'));
    663     }
    664 
    665     yield external_wp_data_["controls"].dispatch(external_wp_notices_["store"], 'createInfoNotice', Object(external_wp_i18n_["sprintf"])( // translators: %s is the block title.
    666     Object(external_wp_i18n_["__"])('Block %s installed and added.'), block.title), {
    667       speak: true,
    668       type: 'snackbar'
    669     });
    670     success = true;
    671   } catch (error) {
    672     let message = error.message || Object(external_wp_i18n_["__"])('An error occurred.'); // Errors we throw are fatal
    673 
    674 
    675     let isFatal = error instanceof Error; // Specific API errors that are fatal
    676 
    677     const fatalAPIErrors = {
    678       folder_exists: Object(external_wp_i18n_["__"])('This block is already installed. Try reloading the page.'),
    679       unable_to_connect_to_filesystem: Object(external_wp_i18n_["__"])('Error installing block. You can reload the page and try again.')
    680     };
    681 
    682     if (fatalAPIErrors[error.code]) {
    683       isFatal = true;
    684       message = fatalAPIErrors[error.code];
    685     }
    686 
    687     yield setErrorNotice(id, message, isFatal);
    688     yield external_wp_data_["controls"].dispatch(external_wp_notices_["store"], 'createErrorNotice', message, {
    689       speak: true,
    690       isDismissible: true
    691     });
    692   }
    693 
    694   yield setIsInstalling(block.id, false);
    695   return success;
    696 }
    697 /**
    698  * Action triggered to uninstall a block plugin.
    699  *
    700  * @param {Object} block The blockType object.
    701  */
    702 
    703 function* actions_uninstallBlockType(block) {
    704   try {
    705     yield Object(external_wp_dataControls_["apiFetch"])({
    706       url: getPluginUrl(block),
    707       data: {
    708         status: 'inactive'
    709       },
    710       method: 'PUT'
    711     });
    712     yield Object(external_wp_dataControls_["apiFetch"])({
    713       url: getPluginUrl(block),
    714       method: 'DELETE'
    715     });
    716     yield removeInstalledBlockType(block);
    717   } catch (error) {
    718     yield external_wp_data_["controls"].dispatch(external_wp_notices_["store"], 'createErrorNotice', error.message || Object(external_wp_i18n_["__"])('An error occurred.'));
    719   }
    720 }
    721 /**
    722  * Returns an action object used to add a block type to the "newly installed"
    723  * tracking list.
    724  *
    725  * @param {Object} item The block item with the block id and name.
    726  *
    727  * @return {Object} Action object.
    728  */
    729 
    730 function addInstalledBlockType(item) {
    731   return {
    732     type: 'ADD_INSTALLED_BLOCK_TYPE',
    733     item
    734   };
    735 }
    736 /**
    737  * Returns an action object used to remove a block type from the "newly installed"
    738  * tracking list.
    739  *
    740  * @param {string} item The block item with the block id and name.
    741  *
    742  * @return {Object} Action object.
    743  */
    744 
    745 function removeInstalledBlockType(item) {
    746   return {
    747     type: 'REMOVE_INSTALLED_BLOCK_TYPE',
    748     item
    749   };
    750 }
    751 /**
    752  * Returns an action object used to indicate install in progress.
    753  *
    754  * @param {string} blockId
    755  * @param {boolean} isInstalling
    756  *
    757  * @return {Object} Action object.
    758  */
    759 
    760 function setIsInstalling(blockId, isInstalling) {
    761   return {
    762     type: 'SET_INSTALLING_BLOCK',
    763     blockId,
    764     isInstalling
    765   };
    766 }
    767 /**
    768  * Sets an error notice to be displayed to the user for a given block.
    769  *
    770  * @param {string} blockId  The ID of the block plugin. eg: my-block
    771  * @param {string} message  The message shown in the notice.
    772  * @param {boolean} isFatal Whether the user can recover from the error.
    773  *
    774  * @return {Object} Action object.
    775  */
    776 
    777 function setErrorNotice(blockId, message, isFatal = false) {
    778   return {
    779     type: 'SET_ERROR_NOTICE',
    780     blockId,
    781     message,
    782     isFatal
    783   };
    784 }
    785 /**
    786  * Sets the error notice to empty for specific block.
    787  *
    788  * @param {string} blockId The ID of the block plugin. eg: my-block
    789  *
    790  * @return {Object} Action object.
    791  */
    792 
    793 function clearErrorNotice(blockId) {
    794   return {
    795     type: 'CLEAR_ERROR_NOTICE',
    796     blockId
    797   };
    798 }
    799 
    800 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/resolvers.js
    801 /**
    802  * External dependencies
    803  */
    804 
    805 /**
    806  * WordPress dependencies
    807  */
    808 
    809 
    810 /**
    811  * Internal dependencies
    812  */
    813 
    814 
    815 /* harmony default export */ var resolvers = ({
    816   *getDownloadableBlocks(filterValue) {
    817     if (!filterValue) {
    818       return;
    819     }
    820 
    821     try {
    822       yield fetchDownloadableBlocks(filterValue);
    823       const results = yield Object(external_wp_dataControls_["apiFetch"])({
    824         path: `wp/v2/block-directory/search?term=${filterValue}`
    825       });
    826       const blocks = results.map(result => Object(external_lodash_["mapKeys"])(result, (value, key) => {
    827         return Object(external_lodash_["camelCase"])(key);
    828       }));
    829       yield receiveDownloadableBlocks(blocks, filterValue);
    830     } catch (error) {}
    831   }
    832 
    833 });
    834 
    835 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/index.js
    836 /**
    837  * WordPress dependencies
    838  */
    839 
    840 
    841 /**
    842  * Internal dependencies
    843  */
    844 
    845 
    846 
    847 
    848 
    849 
    850 /**
    851  * Module Constants
    852  */
    853 
    854 const STORE_NAME = 'core/block-directory';
    855 /**
    856  * Block editor data store configuration.
    857  *
    858  * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#registerStore
    859  *
    860  * @type {Object}
    861  */
    862 
    863 const storeConfig = {
    864   reducer: reducer,
    865   selectors: selectors_namespaceObject,
    866   actions: actions_namespaceObject,
    867   controls: { ...external_wp_dataControls_["controls"],
    868     ...store_controls
    869   },
    870   resolvers: resolvers
    871 };
    872 /**
    873  * Store definition for the block directory namespace.
    874  *
    875  * @see https://github.com/WordPress/gutenberg/blob/HEAD/packages/data/README.md#createReduxStore
    876  *
    877  * @type {Object}
    878  */
    879 
    880 const store = Object(external_wp_data_["createReduxStore"])(STORE_NAME, storeConfig);
    881 Object(external_wp_data_["register"])(store);
    882 
    883 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/auto-block-uninstaller/index.js
    884 /**
    885  * WordPress dependencies
    886  */
    887 
    888 
    889 
    890 
    891 /**
    892  * Internal dependencies
    893  */
    894 
    895 
    896 function AutoBlockUninstaller() {
    897   const {
    898     uninstallBlockType
    899   } = Object(external_wp_data_["useDispatch"])(store);
    900   const shouldRemoveBlockTypes = Object(external_wp_data_["useSelect"])(select => {
    901     const {
    902       isAutosavingPost,
    903       isSavingPost
    904     } = select(external_wp_editor_["store"]);
    905     return isSavingPost() && !isAutosavingPost();
    906   }, []);
    907   const unusedBlockTypes = Object(external_wp_data_["useSelect"])(select => select(store).getUnusedBlockTypes(), []);
    908   Object(external_wp_element_["useEffect"])(() => {
    909     if (shouldRemoveBlockTypes && unusedBlockTypes.length) {
    910       unusedBlockTypes.forEach(blockType => {
    911         uninstallBlockType(blockType);
    912         Object(external_wp_blocks_["unregisterBlockType"])(blockType.name);
    913       });
    914     }
    915   }, [shouldRemoveBlockTypes]);
    916   return null;
    917 }
    918 
    919 // EXTERNAL MODULE: external ["wp","components"]
    920 var external_wp_components_ = __webpack_require__("tI+e");
    921 
    922 // EXTERNAL MODULE: external ["wp","compose"]
    923 var external_wp_compose_ = __webpack_require__("K9lf");
    924 
    925 // EXTERNAL MODULE: external ["wp","coreData"]
    926 var external_wp_coreData_ = __webpack_require__("jZUy");
    927 
    928 // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
    929 var esm_extends = __webpack_require__("wx14");
    930 
    931 // EXTERNAL MODULE: external ["wp","htmlEntities"]
    932 var external_wp_htmlEntities_ = __webpack_require__("rmEH");
    933 
    934 // EXTERNAL MODULE: ./node_modules/@wordpress/icons/build-module/icon/index.js
    935 var build_module_icon = __webpack_require__("iClF");
    936 
    937 // EXTERNAL MODULE: ./node_modules/@wordpress/icons/build-module/library/star-filled.js
    938 var star_filled = __webpack_require__("URob");
    939 
    940 // EXTERNAL MODULE: external ["wp","primitives"]
    941 var external_wp_primitives_ = __webpack_require__("Tqx9");
    942 
    943 // CONCATENATED MODULE: ./node_modules/@wordpress/icons/build-module/library/star-half.js
    944 
    945 
    946 /**
    947  * WordPress dependencies
    948  */
    949 
    950 const starHalf = Object(external_wp_element_["createElement"])(external_wp_primitives_["SVG"], {
    951   xmlns: "http://www.w3.org/2000/svg",
    952   viewBox: "0 0 24 24"
    953 }, Object(external_wp_element_["createElement"])(external_wp_primitives_["Path"], {
    954   d: "M9.518 8.783a.25.25 0 00.188-.137l2.069-4.192a.25.25 0 01.448 0l2.07 4.192a.25.25 0 00.187.137l4.626.672a.25.25 0 01.139.427l-3.347 3.262a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.363.264l-4.137-2.176a.25.25 0 00-.233 0l-4.138 2.175a.25.25 0 01-.362-.263l.79-4.607a.25.25 0 00-.072-.222L4.753 9.882a.25.25 0 01.14-.427l4.625-.672zM12 14.533c.28 0 .559.067.814.2l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39v7.143z"
    955 }));
    956 /* harmony default export */ var star_half = (starHalf);
    957 
    958 // EXTERNAL MODULE: ./node_modules/@wordpress/icons/build-module/library/star-empty.js
    959 var star_empty = __webpack_require__("Xxwi");
    960 
    961 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/block-ratings/stars.js
    962 
    963 
    964 /**
    965  * External dependencies
    966  */
    967 
    968 /**
    969  * WordPress dependencies
    970  */
    971 
    972 
    973 
    974 
    975 function Stars({
    976   rating
    977 }) {
    978   const stars = Math.round(rating / 0.5) * 0.5;
    979   const fullStarCount = Math.floor(rating);
    980   const halfStarCount = Math.ceil(rating - fullStarCount);
    981   const emptyStarCount = 5 - (fullStarCount + halfStarCount);
    982   return Object(external_wp_element_["createElement"])("span", {
    983     "aria-label": Object(external_wp_i18n_["sprintf"])(
    984     /* translators: %s: number of stars. */
    985     Object(external_wp_i18n_["__"])('%s out of 5 stars'), stars)
    986   }, Object(external_lodash_["times"])(fullStarCount, i => Object(external_wp_element_["createElement"])(build_module_icon["a" /* default */], {
    987     key: `full_stars_${i}`,
    988     className: "block-directory-block-ratings__star-full",
    989     icon: star_filled["a" /* default */],
    990     size: 16
    991   })), Object(external_lodash_["times"])(halfStarCount, i => Object(external_wp_element_["createElement"])(build_module_icon["a" /* default */], {
    992     key: `half_stars_${i}`,
    993     className: "block-directory-block-ratings__star-half-full",
    994     icon: star_half,
    995     size: 16
    996   })), Object(external_lodash_["times"])(emptyStarCount, i => Object(external_wp_element_["createElement"])(build_module_icon["a" /* default */], {
    997     key: `empty_stars_${i}`,
    998     className: "block-directory-block-ratings__star-empty",
    999     icon: star_empty["a" /* default */],
   1000     size: 16
   1001   })));
   1002 }
   1003 
   1004 /* harmony default export */ var block_ratings_stars = (Stars);
   1005 
   1006 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/block-ratings/index.js
   1007 
   1008 
   1009 /**
   1010  * Internal dependencies
   1011  */
   1012 
   1013 const BlockRatings = ({
   1014   rating
   1015 }) => Object(external_wp_element_["createElement"])("span", {
   1016   className: "block-directory-block-ratings"
   1017 }, Object(external_wp_element_["createElement"])(block_ratings_stars, {
   1018   rating: rating
   1019 }));
   1020 /* harmony default export */ var block_ratings = (BlockRatings);
   1021 
   1022 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-icon/index.js
   1023 
   1024 
   1025 /**
   1026  * WordPress dependencies
   1027  */
   1028 
   1029 
   1030 function DownloadableBlockIcon({
   1031   icon
   1032 }) {
   1033   const className = 'block-directory-downloadable-block-icon';
   1034   return icon.match(/\.(jpeg|jpg|gif|png|svg)(?:\?.*)?$/) !== null ? Object(external_wp_element_["createElement"])("img", {
   1035     className: className,
   1036     src: icon,
   1037     alt: ""
   1038   }) : Object(external_wp_element_["createElement"])(external_wp_blockEditor_["BlockIcon"], {
   1039     className: className,
   1040     icon: icon,
   1041     showColors: true
   1042   });
   1043 }
   1044 
   1045 /* harmony default export */ var downloadable_block_icon = (DownloadableBlockIcon);
   1046 
   1047 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-notice/index.js
   1048 
   1049 
   1050 /**
   1051  * WordPress dependencies
   1052  */
   1053 
   1054 
   1055 /**
   1056  * Internal dependencies
   1057  */
   1058 
   1059 
   1060 const DownloadableBlockNotice = ({
   1061   block
   1062 }) => {
   1063   const errorNotice = Object(external_wp_data_["useSelect"])(select => select(store).getErrorNoticeForBlock(block.id), [block]);
   1064 
   1065   if (!errorNotice) {
   1066     return null;
   1067   }
   1068 
   1069   return Object(external_wp_element_["createElement"])("div", {
   1070     className: "block-directory-downloadable-block-notice"
   1071   }, Object(external_wp_element_["createElement"])("div", {
   1072     className: "block-directory-downloadable-block-notice__content"
   1073   }, errorNotice.message, errorNotice.isFatal ? ' ' + Object(external_wp_i18n_["__"])('Try reloading the page.') : null));
   1074 };
   1075 /* harmony default export */ var downloadable_block_notice = (DownloadableBlockNotice);
   1076 
   1077 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-list-item/index.js
   1078 
   1079 
   1080 
   1081 /**
   1082  * WordPress dependencies
   1083  */
   1084 
   1085 
   1086 
   1087 
   1088 
   1089 
   1090 /**
   1091  * Internal dependencies
   1092  */
   1093 
   1094 
   1095 
   1096 
   1097  // Return the appropriate block item label, given the block data and status.
   1098 
   1099 function getDownloadableBlockLabel({
   1100   title,
   1101   rating,
   1102   ratingCount
   1103 }, {
   1104   hasNotice,
   1105   isInstalled,
   1106   isInstalling
   1107 }) {
   1108   const stars = Math.round(rating / 0.5) * 0.5;
   1109 
   1110   if (!isInstalled && hasNotice) {
   1111     /* translators: %1$s: block title */
   1112     return Object(external_wp_i18n_["sprintf"])('Retry installing %s.', Object(external_wp_htmlEntities_["decodeEntities"])(title));
   1113   }
   1114 
   1115   if (isInstalled) {
   1116     /* translators: %1$s: block title */
   1117     return Object(external_wp_i18n_["sprintf"])('Add %s.', Object(external_wp_htmlEntities_["decodeEntities"])(title));
   1118   }
   1119 
   1120   if (isInstalling) {
   1121     /* translators: %1$s: block title */
   1122     return Object(external_wp_i18n_["sprintf"])('Installing %s.', Object(external_wp_htmlEntities_["decodeEntities"])(title));
   1123   } // No ratings yet, just use the title.
   1124 
   1125 
   1126   if (ratingCount < 1) {
   1127     /* translators: %1$s: block title */
   1128     return Object(external_wp_i18n_["sprintf"])('Install %s.', Object(external_wp_htmlEntities_["decodeEntities"])(title));
   1129   }
   1130 
   1131   return Object(external_wp_i18n_["sprintf"])(
   1132   /* translators: %1$s: block title, %2$s: average rating, %3$s: total ratings count. */
   1133   Object(external_wp_i18n_["_n"])('Install %1$s. %2$s stars with %3$s review.', 'Install %1$s. %2$s stars with %3$s reviews.', ratingCount), Object(external_wp_htmlEntities_["decodeEntities"])(title), stars, ratingCount);
   1134 }
   1135 
   1136 function DownloadableBlockListItem({
   1137   composite,
   1138   item,
   1139   onClick
   1140 }) {
   1141   const {
   1142     author,
   1143     description,
   1144     icon,
   1145     rating,
   1146     title
   1147   } = item; // getBlockType returns a block object if this block exists, or null if not.
   1148 
   1149   const isInstalled = !!Object(external_wp_blocks_["getBlockType"])(item.name);
   1150   const {
   1151     hasNotice,
   1152     isInstalling,
   1153     isInstallable
   1154   } = Object(external_wp_data_["useSelect"])(select => {
   1155     const {
   1156       getErrorNoticeForBlock,
   1157       isInstalling: isBlockInstalling
   1158     } = select(store);
   1159     const notice = getErrorNoticeForBlock(item.id);
   1160     const hasFatal = notice && notice.isFatal;
   1161     return {
   1162       hasNotice: !!notice,
   1163       isInstalling: isBlockInstalling(item.id),
   1164       isInstallable: !hasFatal
   1165     };
   1166   }, [item]);
   1167   let statusText = '';
   1168 
   1169   if (isInstalled) {
   1170     statusText = Object(external_wp_i18n_["__"])('Installed!');
   1171   } else if (isInstalling) {
   1172     statusText = Object(external_wp_i18n_["__"])('Installing…');
   1173   }
   1174 
   1175   return Object(external_wp_element_["createElement"])(external_wp_components_["__unstableCompositeItem"], Object(esm_extends["a" /* default */])({
   1176     role: "option",
   1177     as: external_wp_components_["Button"]
   1178   }, composite, {
   1179     className: "block-directory-downloadable-block-list-item",
   1180     onClick: event => {
   1181       event.preventDefault();
   1182       onClick();
   1183     },
   1184     isBusy: isInstalling,
   1185     disabled: isInstalling || !isInstallable,
   1186     label: getDownloadableBlockLabel(item, {
   1187       hasNotice,
   1188       isInstalled,
   1189       isInstalling
   1190     }),
   1191     showTooltip: true,
   1192     tooltipPosition: "top center"
   1193   }), Object(external_wp_element_["createElement"])("div", {
   1194     className: "block-directory-downloadable-block-list-item__icon"
   1195   }, Object(external_wp_element_["createElement"])(downloadable_block_icon, {
   1196     icon: icon,
   1197     title: title
   1198   }), isInstalling ? Object(external_wp_element_["createElement"])("span", {
   1199     className: "block-directory-downloadable-block-list-item__spinner"
   1200   }, Object(external_wp_element_["createElement"])(external_wp_components_["Spinner"], null)) : Object(external_wp_element_["createElement"])(block_ratings, {
   1201     rating: rating
   1202   })), Object(external_wp_element_["createElement"])("span", {
   1203     className: "block-directory-downloadable-block-list-item__details"
   1204   }, Object(external_wp_element_["createElement"])("span", {
   1205     className: "block-directory-downloadable-block-list-item__title"
   1206   }, Object(external_wp_element_["createInterpolateElement"])(Object(external_wp_i18n_["sprintf"])(
   1207   /* translators: %1$s: block title, %2$s: author name. */
   1208   Object(external_wp_i18n_["__"])('%1$s <span>by %2$s</span>'), Object(external_wp_htmlEntities_["decodeEntities"])(title), author), {
   1209     span: Object(external_wp_element_["createElement"])("span", {
   1210       className: "block-directory-downloadable-block-list-item__author"
   1211     })
   1212   })), hasNotice ? Object(external_wp_element_["createElement"])(downloadable_block_notice, {
   1213     block: item
   1214   }) : Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, Object(external_wp_element_["createElement"])("span", {
   1215     className: "block-directory-downloadable-block-list-item__desc"
   1216   }, !!statusText ? statusText : Object(external_wp_htmlEntities_["decodeEntities"])(description)), isInstallable && !(isInstalled || isInstalling) && Object(external_wp_element_["createElement"])(external_wp_components_["VisuallyHidden"], null, Object(external_wp_i18n_["__"])('Install block')))));
   1217 }
   1218 
   1219 /* harmony default export */ var downloadable_block_list_item = (DownloadableBlockListItem);
   1220 
   1221 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-blocks-list/index.js
   1222 
   1223 
   1224 
   1225 /**
   1226  * External dependencies
   1227  */
   1228 
   1229 /**
   1230  * WordPress dependencies
   1231  */
   1232 
   1233 
   1234 
   1235 
   1236 
   1237 /**
   1238  * Internal dependencies
   1239  */
   1240 
   1241 
   1242 
   1243 
   1244 function DownloadableBlocksList({
   1245   items,
   1246   onHover = external_lodash_["noop"],
   1247   onSelect
   1248 }) {
   1249   const composite = Object(external_wp_components_["__unstableUseCompositeState"])();
   1250   const {
   1251     installBlockType
   1252   } = Object(external_wp_data_["useDispatch"])(store);
   1253 
   1254   if (!items.length) {
   1255     return null;
   1256   }
   1257 
   1258   return Object(external_wp_element_["createElement"])(external_wp_components_["__unstableComposite"], Object(esm_extends["a" /* default */])({}, composite, {
   1259     role: "listbox",
   1260     className: "block-directory-downloadable-blocks-list",
   1261     "aria-label": Object(external_wp_i18n_["__"])('Blocks available for install')
   1262   }), items.map(item => {
   1263     return Object(external_wp_element_["createElement"])(downloadable_block_list_item, {
   1264       key: item.id,
   1265       composite: composite,
   1266       onClick: () => {
   1267         // Check if the block is registered (`getBlockType`
   1268         // will return an object). If so, insert the block.
   1269         // This prevents installing existing plugins.
   1270         if (Object(external_wp_blocks_["getBlockType"])(item.name)) {
   1271           onSelect(item);
   1272         } else {
   1273           installBlockType(item).then(success => {
   1274             if (success) {
   1275               onSelect(item);
   1276             }
   1277           });
   1278         }
   1279 
   1280         onHover(null);
   1281       },
   1282       onHover: onHover,
   1283       item: item
   1284     });
   1285   }));
   1286 }
   1287 
   1288 /* harmony default export */ var downloadable_blocks_list = (DownloadableBlocksList);
   1289 
   1290 // EXTERNAL MODULE: external ["wp","a11y"]
   1291 var external_wp_a11y_ = __webpack_require__("gdqT");
   1292 
   1293 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-blocks-panel/inserter-panel.js
   1294 
   1295 
   1296 /**
   1297  * WordPress dependencies
   1298  */
   1299 
   1300 
   1301 
   1302 
   1303 function DownloadableBlocksInserterPanel({
   1304   children,
   1305   downloadableItems,
   1306   hasLocalBlocks
   1307 }) {
   1308   const count = downloadableItems.length;
   1309   Object(external_wp_element_["useEffect"])(() => {
   1310     Object(external_wp_a11y_["speak"])(Object(external_wp_i18n_["sprintf"])(
   1311     /* translators: %d: number of available blocks. */
   1312     Object(external_wp_i18n_["_n"])('%d additional block is available to install.', '%d additional blocks are available to install.', count), count));
   1313   }, [count]);
   1314   return Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, !hasLocalBlocks && Object(external_wp_element_["createElement"])("p", {
   1315     className: "block-directory-downloadable-blocks-panel__no-local"
   1316   }, Object(external_wp_i18n_["__"])('No results available from your installed blocks.')), Object(external_wp_element_["createElement"])("div", {
   1317     className: "block-editor-inserter__quick-inserter-separator"
   1318   }), Object(external_wp_element_["createElement"])("div", {
   1319     className: "block-directory-downloadable-blocks-panel"
   1320   }, Object(external_wp_element_["createElement"])("div", {
   1321     className: "block-directory-downloadable-blocks-panel__header"
   1322   }, Object(external_wp_element_["createElement"])("h2", {
   1323     className: "block-directory-downloadable-blocks-panel__title"
   1324   }, Object(external_wp_i18n_["__"])('Available to install')), Object(external_wp_element_["createElement"])("p", {
   1325     className: "block-directory-downloadable-blocks-panel__description"
   1326   }, Object(external_wp_i18n_["__"])('Select a block to install and add it to your post.'))), children));
   1327 }
   1328 
   1329 /* harmony default export */ var inserter_panel = (DownloadableBlocksInserterPanel);
   1330 
   1331 // EXTERNAL MODULE: ./node_modules/@wordpress/icons/build-module/library/block-default.js
   1332 var block_default = __webpack_require__("//Lo");
   1333 
   1334 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-blocks-panel/no-results.js
   1335 
   1336 
   1337 /**
   1338  * WordPress dependencies
   1339  */
   1340 
   1341 
   1342 
   1343 function DownloadableBlocksNoResults() {
   1344   return Object(external_wp_element_["createElement"])("div", {
   1345     className: "block-editor-inserter__no-results"
   1346   }, Object(external_wp_element_["createElement"])(build_module_icon["a" /* default */], {
   1347     className: "block-editor-inserter__no-results-icon",
   1348     icon: block_default["a" /* default */]
   1349   }), Object(external_wp_element_["createElement"])("p", null, Object(external_wp_i18n_["__"])('No results found.')));
   1350 }
   1351 
   1352 /* harmony default export */ var no_results = (DownloadableBlocksNoResults);
   1353 
   1354 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-blocks-panel/index.js
   1355 
   1356 
   1357 /**
   1358  * WordPress dependencies
   1359  */
   1360 
   1361 
   1362 
   1363 
   1364 
   1365 
   1366 /**
   1367  * Internal dependencies
   1368  */
   1369 
   1370 
   1371 
   1372 
   1373 
   1374 
   1375 function DownloadableBlocksPanel({
   1376   downloadableItems,
   1377   onSelect,
   1378   onHover,
   1379   hasLocalBlocks,
   1380   hasPermission,
   1381   isLoading,
   1382   isTyping
   1383 }) {
   1384   if (typeof hasPermission === 'undefined' || isLoading || isTyping) {
   1385     return Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, hasPermission && !hasLocalBlocks && Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, Object(external_wp_element_["createElement"])("p", {
   1386       className: "block-directory-downloadable-blocks-panel__no-local"
   1387     }, Object(external_wp_i18n_["__"])('No results available from your installed blocks.')), Object(external_wp_element_["createElement"])("div", {
   1388       className: "block-editor-inserter__quick-inserter-separator"
   1389     })), Object(external_wp_element_["createElement"])("div", {
   1390       className: "block-directory-downloadable-blocks-panel has-blocks-loading"
   1391     }, Object(external_wp_element_["createElement"])(external_wp_components_["Spinner"], null)));
   1392   }
   1393 
   1394   if (false === hasPermission) {
   1395     if (!hasLocalBlocks) {
   1396       return Object(external_wp_element_["createElement"])(no_results, null);
   1397     }
   1398 
   1399     return null;
   1400   }
   1401 
   1402   return !!downloadableItems.length ? Object(external_wp_element_["createElement"])(inserter_panel, {
   1403     downloadableItems: downloadableItems,
   1404     hasLocalBlocks: hasLocalBlocks
   1405   }, Object(external_wp_element_["createElement"])(downloadable_blocks_list, {
   1406     items: downloadableItems,
   1407     onSelect: onSelect,
   1408     onHover: onHover
   1409   })) : !hasLocalBlocks && Object(external_wp_element_["createElement"])(no_results, null);
   1410 }
   1411 
   1412 /* harmony default export */ var downloadable_blocks_panel = (Object(external_wp_compose_["compose"])([Object(external_wp_data_["withSelect"])((select, {
   1413   filterValue,
   1414   rootClientId = null
   1415 }) => {
   1416   const {
   1417     getDownloadableBlocks,
   1418     isRequestingDownloadableBlocks
   1419   } = select(store);
   1420   const {
   1421     canInsertBlockType
   1422   } = select(external_wp_blockEditor_["store"]);
   1423   const hasPermission = select(external_wp_coreData_["store"]).canUser('read', 'block-directory/search');
   1424 
   1425   function getInstallableBlocks(term) {
   1426     return getDownloadableBlocks(term).filter(block => canInsertBlockType(block, rootClientId, true));
   1427   }
   1428 
   1429   const downloadableItems = hasPermission ? getInstallableBlocks(filterValue) : [];
   1430   const isLoading = isRequestingDownloadableBlocks(filterValue);
   1431   return {
   1432     downloadableItems,
   1433     hasPermission,
   1434     isLoading
   1435   };
   1436 })])(DownloadableBlocksPanel));
   1437 
   1438 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/inserter-menu-downloadable-blocks-panel/index.js
   1439 
   1440 
   1441 /**
   1442  * External dependencies
   1443  */
   1444 
   1445 /**
   1446  * WordPress dependencies
   1447  */
   1448 
   1449 
   1450 
   1451 /**
   1452  * Internal dependencies
   1453  */
   1454 
   1455 
   1456 
   1457 function InserterMenuDownloadableBlocksPanel() {
   1458   const [debouncedFilterValue, setFilterValue] = Object(external_wp_element_["useState"])('');
   1459   const debouncedSetFilterValue = Object(external_lodash_["debounce"])(setFilterValue, 400);
   1460   return Object(external_wp_element_["createElement"])(external_wp_blockEditor_["__unstableInserterMenuExtension"], null, ({
   1461     onSelect,
   1462     onHover,
   1463     filterValue,
   1464     hasItems,
   1465     rootClientId
   1466   }) => {
   1467     if (debouncedFilterValue !== filterValue) {
   1468       debouncedSetFilterValue(filterValue);
   1469     }
   1470 
   1471     if (!debouncedFilterValue) {
   1472       return null;
   1473     }
   1474 
   1475     return Object(external_wp_element_["createElement"])(downloadable_blocks_panel, {
   1476       onSelect: onSelect,
   1477       onHover: onHover,
   1478       rootClientId: rootClientId,
   1479       filterValue: debouncedFilterValue,
   1480       hasLocalBlocks: hasItems,
   1481       isTyping: filterValue !== debouncedFilterValue
   1482     });
   1483   });
   1484 }
   1485 
   1486 /* harmony default export */ var inserter_menu_downloadable_blocks_panel = (InserterMenuDownloadableBlocksPanel);
   1487 
   1488 // EXTERNAL MODULE: external ["wp","editPost"]
   1489 var external_wp_editPost_ = __webpack_require__("BLhE");
   1490 
   1491 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/compact-list/index.js
   1492 
   1493 
   1494 /**
   1495  * WordPress dependencies
   1496  */
   1497 
   1498 /**
   1499  * Internal dependencies
   1500  */
   1501 
   1502 
   1503 function CompactList({
   1504   items
   1505 }) {
   1506   if (!items.length) {
   1507     return null;
   1508   }
   1509 
   1510   return Object(external_wp_element_["createElement"])("ul", {
   1511     className: "block-directory-compact-list"
   1512   }, items.map(({
   1513     icon,
   1514     id,
   1515     title,
   1516     author
   1517   }) => Object(external_wp_element_["createElement"])("li", {
   1518     key: id,
   1519     className: "block-directory-compact-list__item"
   1520   }, Object(external_wp_element_["createElement"])(downloadable_block_icon, {
   1521     icon: icon,
   1522     title: title
   1523   }), Object(external_wp_element_["createElement"])("div", {
   1524     className: "block-directory-compact-list__item-details"
   1525   }, Object(external_wp_element_["createElement"])("div", {
   1526     className: "block-directory-compact-list__item-title"
   1527   }, title), Object(external_wp_element_["createElement"])("div", {
   1528     className: "block-directory-compact-list__item-author"
   1529   }, Object(external_wp_i18n_["sprintf"])(
   1530   /* translators: %s: Name of the block author. */
   1531   Object(external_wp_i18n_["__"])('By %s'), author))))));
   1532 }
   1533 
   1534 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/installed-blocks-pre-publish-panel/index.js
   1535 
   1536 
   1537 /**
   1538  * WordPress dependencies
   1539  */
   1540 
   1541 
   1542 
   1543 
   1544 /**
   1545  * Internal dependencies
   1546  */
   1547 
   1548 
   1549 
   1550 function InstalledBlocksPrePublishPanel() {
   1551   const newBlockTypes = Object(external_wp_data_["useSelect"])(select => select(store).getNewBlockTypes(), []);
   1552 
   1553   if (!newBlockTypes.length) {
   1554     return null;
   1555   }
   1556 
   1557   return Object(external_wp_element_["createElement"])(external_wp_editPost_["PluginPrePublishPanel"], {
   1558     icon: block_default["a" /* default */],
   1559     title: Object(external_wp_i18n_["sprintf"])( // translators: %d: number of blocks (number).
   1560     Object(external_wp_i18n_["_n"])('Added: %d block', 'Added: %d blocks', newBlockTypes.length), newBlockTypes.length),
   1561     initialOpen: true
   1562   }, Object(external_wp_element_["createElement"])("p", {
   1563     className: "installed-blocks-pre-publish-panel__copy"
   1564   }, Object(external_wp_i18n_["_n"])('The following block has been added to your site.', 'The following blocks have been added to your site.', newBlockTypes.length)), Object(external_wp_element_["createElement"])(CompactList, {
   1565     items: newBlockTypes
   1566   }));
   1567 }
   1568 
   1569 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/get-install-missing/install-button.js
   1570 
   1571 
   1572 /**
   1573  * WordPress dependencies
   1574  */
   1575 
   1576 
   1577 
   1578 
   1579 
   1580 /**
   1581  * Internal dependencies
   1582  */
   1583 
   1584 
   1585 function InstallButton({
   1586   attributes,
   1587   block,
   1588   clientId
   1589 }) {
   1590   const isInstallingBlock = Object(external_wp_data_["useSelect"])(select => select(store).isInstalling(block.id));
   1591   const {
   1592     installBlockType
   1593   } = Object(external_wp_data_["useDispatch"])(store);
   1594   const {
   1595     replaceBlock
   1596   } = Object(external_wp_data_["useDispatch"])(external_wp_blockEditor_["store"]);
   1597   return Object(external_wp_element_["createElement"])(external_wp_components_["Button"], {
   1598     onClick: () => installBlockType(block).then(success => {
   1599       if (success) {
   1600         const blockType = Object(external_wp_blocks_["getBlockType"])(block.name);
   1601         const [originalBlock] = Object(external_wp_blocks_["parse"])(attributes.originalContent);
   1602 
   1603         if (originalBlock) {
   1604           replaceBlock(clientId, Object(external_wp_blocks_["createBlock"])(blockType.name, originalBlock.attributes, originalBlock.innerBlocks));
   1605         }
   1606       }
   1607     }),
   1608     disabled: isInstallingBlock,
   1609     isBusy: isInstallingBlock,
   1610     isPrimary: true
   1611   }, Object(external_wp_i18n_["sprintf"])(
   1612   /* translators: %s: block name */
   1613   Object(external_wp_i18n_["__"])('Install %s'), block.title));
   1614 }
   1615 
   1616 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/get-install-missing/index.js
   1617 
   1618 
   1619 
   1620 /**
   1621  * WordPress dependencies
   1622  */
   1623 
   1624 
   1625 
   1626 
   1627 
   1628 
   1629 
   1630 /**
   1631  * Internal dependencies
   1632  */
   1633 
   1634 
   1635 
   1636 
   1637 const getInstallMissing = OriginalComponent => props => {
   1638   const {
   1639     originalName
   1640   } = props.attributes; // Disable reason: This is a valid component, but it's mistaken for a callback.
   1641   // eslint-disable-next-line react-hooks/rules-of-hooks
   1642 
   1643   const {
   1644     block,
   1645     hasPermission
   1646   } = Object(external_wp_data_["useSelect"])(select => {
   1647     const {
   1648       getDownloadableBlocks
   1649     } = select(store);
   1650     const blocks = getDownloadableBlocks('block:' + originalName).filter(({
   1651       name
   1652     }) => originalName === name);
   1653     return {
   1654       hasPermission: select(external_wp_coreData_["store"]).canUser('read', 'block-directory/search'),
   1655       block: blocks.length && blocks[0]
   1656     };
   1657   }, [originalName]); // The user can't install blocks, or the block isn't available for download.
   1658 
   1659   if (!hasPermission || !block) {
   1660     return Object(external_wp_element_["createElement"])(OriginalComponent, props);
   1661   }
   1662 
   1663   return Object(external_wp_element_["createElement"])(ModifiedWarning, Object(esm_extends["a" /* default */])({}, props, {
   1664     originalBlock: block
   1665   }));
   1666 };
   1667 
   1668 const ModifiedWarning = ({
   1669   originalBlock,
   1670   ...props
   1671 }) => {
   1672   const {
   1673     originalName,
   1674     originalUndelimitedContent
   1675   } = props.attributes;
   1676   const {
   1677     replaceBlock
   1678   } = Object(external_wp_data_["useDispatch"])(external_wp_blockEditor_["store"]);
   1679 
   1680   const convertToHTML = () => {
   1681     replaceBlock(props.clientId, Object(external_wp_blocks_["createBlock"])('core/html', {
   1682       content: originalUndelimitedContent
   1683     }));
   1684   };
   1685 
   1686   const hasContent = !!originalUndelimitedContent;
   1687   const hasHTMLBlock = Object(external_wp_blocks_["getBlockType"])('core/html');
   1688   let messageHTML = Object(external_wp_i18n_["sprintf"])(
   1689   /* translators: %s: block name */
   1690   Object(external_wp_i18n_["__"])('Your site doesn’t include support for the %s block. You can try installing the block or remove it entirely.'), originalBlock.title || originalName);
   1691   const actions = [Object(external_wp_element_["createElement"])(InstallButton, {
   1692     key: "install",
   1693     block: originalBlock,
   1694     attributes: props.attributes,
   1695     clientId: props.clientId
   1696   })];
   1697 
   1698   if (hasContent && hasHTMLBlock) {
   1699     messageHTML = Object(external_wp_i18n_["sprintf"])(
   1700     /* translators: %s: block name */
   1701     Object(external_wp_i18n_["__"])('Your site doesn’t include support for the %s block. You can try installing the block, convert it to a Custom HTML block, or remove it entirely.'), originalBlock.title || originalName);
   1702     actions.push(Object(external_wp_element_["createElement"])(external_wp_components_["Button"], {
   1703       key: "convert",
   1704       onClick: convertToHTML,
   1705       isLink: true
   1706     }, Object(external_wp_i18n_["__"])('Keep as HTML')));
   1707   }
   1708 
   1709   return Object(external_wp_element_["createElement"])("div", Object(external_wp_blockEditor_["useBlockProps"])(), Object(external_wp_element_["createElement"])(external_wp_blockEditor_["Warning"], {
   1710     actions: actions
   1711   }, messageHTML), Object(external_wp_element_["createElement"])(external_wp_element_["RawHTML"], null, originalUndelimitedContent));
   1712 };
   1713 
   1714 /* harmony default export */ var get_install_missing = (getInstallMissing);
   1715 
   1716 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/index.js
   1717 
   1718 
   1719 /**
   1720  * WordPress dependencies
   1721  */
   1722 
   1723 
   1724 /**
   1725  * Internal dependencies
   1726  */
   1727 
   1728 
   1729 
   1730 
   1731 
   1732 Object(external_wp_plugins_["registerPlugin"])('block-directory', {
   1733   render() {
   1734     return Object(external_wp_element_["createElement"])(external_wp_element_["Fragment"], null, Object(external_wp_element_["createElement"])(AutoBlockUninstaller, null), Object(external_wp_element_["createElement"])(inserter_menu_downloadable_blocks_panel, null), Object(external_wp_element_["createElement"])(InstalledBlocksPrePublishPanel, null));
   1735   }
   1736 
   1737 });
   1738 Object(external_wp_hooks_["addFilter"])('blocks.registerBlockType', 'block-directory/fallback', (settings, name) => {
   1739   if (name !== 'core/missing') {
   1740     return settings;
   1741   }
   1742 
   1743   settings.edit = get_install_missing(settings.edit);
   1744   return settings;
   1745 });
   1746 
   1747 // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/index.js
   1748 /**
   1749  * Internal dependencies
   1750  */
   1751 
   1752 
   1753 
   1754 
   1755 /***/ }),
   1756 
   1757 /***/ "BLhE":
   1758 /***/ (function(module, exports) {
   1759 
   1760 (function() { module.exports = window["wp"]["editPost"]; }());
   1761 
   1762 /***/ }),
   1763 
   1764 /***/ "GRId":
   1765 /***/ (function(module, exports) {
   1766 
   1767 (function() { module.exports = window["wp"]["element"]; }());
   1768 
   1769 /***/ }),
   1770 
   1771 /***/ "HSyU":
   1772 /***/ (function(module, exports) {
   1773 
   1774 (function() { module.exports = window["wp"]["blocks"]; }());
   1775 
   1776 /***/ }),
   1777 
   1778 /***/ "K9lf":
   1779 /***/ (function(module, exports) {
   1780 
   1781 (function() { module.exports = window["wp"]["compose"]; }());
   1782 
   1783 /***/ }),
   1784 
   1785 /***/ "Tqx9":
   1786 /***/ (function(module, exports) {
   1787 
   1788 (function() { module.exports = window["wp"]["primitives"]; }());
   1789 
   1790 /***/ }),
   1791 
   1792 /***/ "TvNi":
   1793 /***/ (function(module, exports) {
   1794 
   1795 (function() { module.exports = window["wp"]["plugins"]; }());
   1796 
   1797 /***/ }),
   1798 
   1799 /***/ "URob":
   1800 /***/ (function(module, __webpack_exports__, __webpack_require__) {
   1801 
   1802 "use strict";
   1803 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("GRId");
   1804 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
   1805 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("Tqx9");
   1806 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
   1807 
   1808 
   1809 /**
   1810  * WordPress dependencies
   1811  */
   1812 
   1813 const starFilled = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
   1814   xmlns: "http://www.w3.org/2000/svg",
   1815   viewBox: "0 0 24 24"
   1816 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
   1817   d: "M11.776 4.454a.25.25 0 01.448 0l2.069 4.192a.25.25 0 00.188.137l4.626.672a.25.25 0 01.139.426l-3.348 3.263a.25.25 0 00-.072.222l.79 4.607a.25.25 0 01-.362.263l-4.138-2.175a.25.25 0 00-.232 0l-4.138 2.175a.25.25 0 01-.363-.263l.79-4.607a.25.25 0 00-.071-.222L4.754 9.881a.25.25 0 01.139-.426l4.626-.672a.25.25 0 00.188-.137l2.069-4.192z"
   1818 }));
   1819 /* harmony default export */ __webpack_exports__["a"] = (starFilled);
   1820 
   1821 
   1822 /***/ }),
   1823 
   1824 /***/ "Xxwi":
   1825 /***/ (function(module, __webpack_exports__, __webpack_require__) {
   1826 
   1827 "use strict";
   1828 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("GRId");
   1829 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
   1830 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__("Tqx9");
   1831 /* harmony import */ var _wordpress_primitives__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__);
   1832 
   1833 
   1834 /**
   1835  * WordPress dependencies
   1836  */
   1837 
   1838 const starEmpty = Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["SVG"], {
   1839   xmlns: "http://www.w3.org/2000/svg",
   1840   viewBox: "0 0 24 24"
   1841 }, Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["createElement"])(_wordpress_primitives__WEBPACK_IMPORTED_MODULE_1__["Path"], {
   1842   fillRule: "evenodd",
   1843   d: "M9.706 8.646a.25.25 0 01-.188.137l-4.626.672a.25.25 0 00-.139.427l3.348 3.262a.25.25 0 01.072.222l-.79 4.607a.25.25 0 00.362.264l4.138-2.176a.25.25 0 01.233 0l4.137 2.175a.25.25 0 00.363-.263l-.79-4.607a.25.25 0 01.072-.222l3.347-3.262a.25.25 0 00-.139-.427l-4.626-.672a.25.25 0 01-.188-.137l-2.069-4.192a.25.25 0 00-.448 0L9.706 8.646zM12 7.39l-.948 1.921a1.75 1.75 0 01-1.317.957l-2.12.308 1.534 1.495c.412.402.6.982.503 1.55l-.362 2.11 1.896-.997a1.75 1.75 0 011.629 0l1.895.997-.362-2.11a1.75 1.75 0 01.504-1.55l1.533-1.495-2.12-.308a1.75 1.75 0 01-1.317-.957L12 7.39z",
   1844   clipRule: "evenodd"
   1845 }));
   1846 /* harmony default export */ __webpack_exports__["a"] = (starEmpty);
   1847 
   1848 
   1849 /***/ }),
   1850 
   1851 /***/ "YLtl":
   1852 /***/ (function(module, exports) {
   1853 
   1854 (function() { module.exports = window["lodash"]; }());
   1855 
   1856 /***/ }),
   1857 
   1858 /***/ "axFQ":
   1859 /***/ (function(module, exports) {
   1860 
   1861 (function() { module.exports = window["wp"]["blockEditor"]; }());
   1862 
   1863 /***/ }),
   1864 
   1865 /***/ "g56x":
   1866 /***/ (function(module, exports) {
   1867 
   1868 (function() { module.exports = window["wp"]["hooks"]; }());
   1869 
   1870 /***/ }),
   1871 
   1872 /***/ "gdqT":
   1873 /***/ (function(module, exports) {
   1874 
   1875 (function() { module.exports = window["wp"]["a11y"]; }());
   1876 
   1877 /***/ }),
   1878 
   1879 /***/ "iClF":
   1880 /***/ (function(module, __webpack_exports__, __webpack_require__) {
   1881 
   1882 "use strict";
   1883 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__("GRId");
   1884 /* harmony import */ var _wordpress_element__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__);
   1885 /**
   1886  * WordPress dependencies
   1887  */
   1888 
   1889 /** @typedef {{icon: JSX.Element, size?: number} & import('@wordpress/primitives').SVGProps} IconProps */
   1890 
   1891 /**
   1892  * Return an SVG icon.
   1893  *
   1894  * @param {IconProps} props icon is the SVG component to render
   1895  *                          size is a number specifiying the icon size in pixels
   1896  *                          Other props will be passed to wrapped SVG component
   1897  *
   1898  * @return {JSX.Element}  Icon component
   1899  */
   1900 
   1901 function Icon({
   1902   icon,
   1903   size = 24,
   1904   ...props
   1905 }) {
   1906   return Object(_wordpress_element__WEBPACK_IMPORTED_MODULE_0__["cloneElement"])(icon, {
   1907     width: size,
   1908     height: size,
   1909     ...props
   1910   });
   1911 }
   1912 
   1913 /* harmony default export */ __webpack_exports__["a"] = (Icon);
   1914 
   1915 
   1916 /***/ }),
   1917 
   1918 /***/ "jSdM":
   1919 /***/ (function(module, exports) {
   1920 
   1921 (function() { module.exports = window["wp"]["editor"]; }());
   1922 
   1923 /***/ }),
   1924 
   1925 /***/ "jZUy":
   1926 /***/ (function(module, exports) {
   1927 
   1928 (function() { module.exports = window["wp"]["coreData"]; }());
   1929 
   1930 /***/ }),
   1931 
   1932 /***/ "l3Sj":
   1933 /***/ (function(module, exports) {
   1934 
   1935 (function() { module.exports = window["wp"]["i18n"]; }());
   1936 
   1937 /***/ }),
   1938 
   1939 /***/ "onLe":
   1940 /***/ (function(module, exports) {
   1941 
   1942 (function() { module.exports = window["wp"]["notices"]; }());
   1943 
   1944 /***/ }),
   1945 
   1946 /***/ "rmEH":
   1947 /***/ (function(module, exports) {
   1948 
   1949 (function() { module.exports = window["wp"]["htmlEntities"]; }());
   1950 
   1951 /***/ }),
   1952 
   1953 /***/ "tI+e":
   1954 /***/ (function(module, exports) {
   1955 
   1956 (function() { module.exports = window["wp"]["components"]; }());
   1957 
   1958 /***/ }),
   1959 
   1960 /***/ "wx14":
   1961 /***/ (function(module, __webpack_exports__, __webpack_require__) {
   1962 
   1963 "use strict";
   1964 /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _extends; });
   1965 function _extends() {
   1966   _extends = Object.assign || function (target) {
   1967     for (var i = 1; i < arguments.length; i++) {
   1968       var source = arguments[i];
   1969 
   1970       for (var key in source) {
   1971         if (Object.prototype.hasOwnProperty.call(source, key)) {
   1972           target[key] = source[key];
   1973         }
   1974       }
   1975     }
   1976 
   1977     return target;
   1978   };
   1979 
   1980   return _extends.apply(this, arguments);
   1981 }
   1982 
   1983 /***/ }),
   1984 
   1985 /***/ "ywyh":
   1986 /***/ (function(module, exports) {
   1987 
   1988 (function() { module.exports = window["wp"]["apiFetch"]; }());
   1989 
   1990 /***/ })
   1991 
   1992 /******/ });