this["wp"] = this["wp"] || {}; this["wp"]["blockDirectory"] = /******/ (function(modules) { // webpackBootstrap /******/ // The module cache /******/ var installedModules = {}; /******/ /******/ // The require function /******/ function __webpack_require__(moduleId) { /******/ /******/ // Check if module is in cache /******/ if(installedModules[moduleId]) { /******/ return installedModules[moduleId].exports; /******/ } /******/ // Create a new module (and put it into the cache) /******/ var module = installedModules[moduleId] = { /******/ i: moduleId, /******/ l: false, /******/ exports: {} /******/ }; /******/ /******/ // Execute the module function /******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__); /******/ /******/ // Flag the module as loaded /******/ module.l = true; /******/ /******/ // Return the exports of the module /******/ return module.exports; /******/ } /******/ /******/ /******/ // expose the modules object (__webpack_modules__) /******/ __webpack_require__.m = modules; /******/ /******/ // expose the module cache /******/ __webpack_require__.c = installedModules; /******/ /******/ // define getter function for harmony exports /******/ __webpack_require__.d = function(exports, name, getter) { /******/ if(!__webpack_require__.o(exports, name)) { /******/ Object.defineProperty(exports, name, { enumerable: true, get: getter }); /******/ } /******/ }; /******/ /******/ // define __esModule on exports /******/ __webpack_require__.r = function(exports) { /******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) { /******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' }); /******/ } /******/ Object.defineProperty(exports, '__esModule', { value: true }); /******/ }; /******/ /******/ // create a fake namespace object /******/ // mode & 1: value is a module id, require it /******/ // mode & 2: merge all properties of value into the ns /******/ // mode & 4: return value when already ns object /******/ // mode & 8|1: behave like require /******/ __webpack_require__.t = function(value, mode) { /******/ if(mode & 1) value = __webpack_require__(value); /******/ if(mode & 8) return value; /******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value; /******/ var ns = Object.create(null); /******/ __webpack_require__.r(ns); /******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value }); /******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key)); /******/ return ns; /******/ }; /******/ /******/ // getDefaultExport function for compatibility with non-harmony modules /******/ __webpack_require__.n = function(module) { /******/ var getter = module && module.__esModule ? /******/ function getDefault() { return module['default']; } : /******/ function getModuleExports() { return module; }; /******/ __webpack_require__.d(getter, 'a', getter); /******/ return getter; /******/ }; /******/ /******/ // Object.prototype.hasOwnProperty.call /******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); }; /******/ /******/ // __webpack_public_path__ /******/ __webpack_require__.p = ""; /******/ /******/ /******/ // Load entry module and return exports /******/ return __webpack_require__(__webpack_require__.s = 370); /******/ }) /************************************************************************/ /******/ ({ /***/ 0: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["element"]; }()); /***/ }), /***/ 1: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["i18n"]; }()); /***/ }), /***/ 10: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["blocks"]; }()); /***/ }), /***/ 18: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } } // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js var iterableToArray = __webpack_require__(32); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js function _nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance"); } // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _toConsumableArray; }); function _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || Object(iterableToArray["a" /* default */])(arr) || _nonIterableSpread(); } /***/ }), /***/ 2: /***/ (function(module, exports) { (function() { module.exports = this["lodash"]; }()); /***/ }), /***/ 22: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js var arrayWithHoles = __webpack_require__(33); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js function _iterableToArrayLimit(arr, i) { if (!(Symbol.iterator in Object(arr) || Object.prototype.toString.call(arr) === "[object Arguments]")) { return; } var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i["return"] != null) _i["return"](); } finally { if (_d) throw _e; } } return _arr; } // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js var nonIterableRest = __webpack_require__(34); // CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _slicedToArray; }); function _slicedToArray(arr, i) { return Object(arrayWithHoles["a" /* default */])(arr) || _iterableToArrayLimit(arr, i) || Object(nonIterableRest["a" /* default */])(); } /***/ }), /***/ 23: /***/ (function(module, exports) { (function() { module.exports = this["regeneratorRuntime"]; }()); /***/ }), /***/ 3: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["components"]; }()); /***/ }), /***/ 32: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _iterableToArray; }); function _iterableToArray(iter) { if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter); } /***/ }), /***/ 33: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayWithHoles; }); function _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; } /***/ }), /***/ 34: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _nonIterableRest; }); function _nonIterableRest() { throw new TypeError("Invalid attempt to destructure non-iterable instance"); } /***/ }), /***/ 37: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["apiFetch"]; }()); /***/ }), /***/ 370: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; __webpack_require__.r(__webpack_exports__); var selectors_namespaceObject = {}; __webpack_require__.r(selectors_namespaceObject); __webpack_require__.d(selectors_namespaceObject, "isRequestingDownloadableBlocks", function() { return isRequestingDownloadableBlocks; }); __webpack_require__.d(selectors_namespaceObject, "getDownloadableBlocks", function() { return selectors_getDownloadableBlocks; }); __webpack_require__.d(selectors_namespaceObject, "hasInstallBlocksPermission", function() { return selectors_hasInstallBlocksPermission; }); __webpack_require__.d(selectors_namespaceObject, "getInstalledBlockTypes", function() { return getInstalledBlockTypes; }); var actions_namespaceObject = {}; __webpack_require__.r(actions_namespaceObject); __webpack_require__.d(actions_namespaceObject, "fetchDownloadableBlocks", function() { return fetchDownloadableBlocks; }); __webpack_require__.d(actions_namespaceObject, "receiveDownloadableBlocks", function() { return receiveDownloadableBlocks; }); __webpack_require__.d(actions_namespaceObject, "setInstallBlocksPermission", function() { return setInstallBlocksPermission; }); __webpack_require__.d(actions_namespaceObject, "downloadBlock", function() { return actions_downloadBlock; }); __webpack_require__.d(actions_namespaceObject, "installBlock", function() { return actions_installBlock; }); __webpack_require__.d(actions_namespaceObject, "uninstallBlock", function() { return uninstallBlock; }); __webpack_require__.d(actions_namespaceObject, "addInstalledBlockType", function() { return addInstalledBlockType; }); __webpack_require__.d(actions_namespaceObject, "removeInstalledBlockType", function() { return removeInstalledBlockType; }); // EXTERNAL MODULE: external {"this":["wp","data"]} var external_this_wp_data_ = __webpack_require__(4); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules var toConsumableArray = __webpack_require__(18); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js var defineProperty = __webpack_require__(9); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread.js var objectSpread = __webpack_require__(7); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/reducer.js /** * WordPress dependencies */ /** * Reducer returning an array of downloadable blocks. * * @param {Object} state Current state. * @param {Object} action Dispatched action. * * @return {Object} Updated state. */ var reducer_downloadableBlocks = function downloadableBlocks() { var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { results: {}, hasPermission: true, filterValue: undefined, isRequestingDownloadableBlocks: true, installedBlockTypes: [] }; var action = arguments.length > 1 ? arguments[1] : undefined; switch (action.type) { case 'FETCH_DOWNLOADABLE_BLOCKS': return Object(objectSpread["a" /* default */])({}, state, { isRequestingDownloadableBlocks: true }); case 'RECEIVE_DOWNLOADABLE_BLOCKS': return Object(objectSpread["a" /* default */])({}, state, { results: Object.assign({}, state.results, Object(defineProperty["a" /* default */])({}, action.filterValue, action.downloadableBlocks)), hasPermission: true, isRequestingDownloadableBlocks: false }); case 'SET_INSTALL_BLOCKS_PERMISSION': return Object(objectSpread["a" /* default */])({}, state, { items: action.hasPermission ? state.items : [], hasPermission: action.hasPermission }); case 'ADD_INSTALLED_BLOCK_TYPE': return Object(objectSpread["a" /* default */])({}, state, { installedBlockTypes: [].concat(Object(toConsumableArray["a" /* default */])(state.installedBlockTypes), [action.item]) }); case 'REMOVE_INSTALLED_BLOCK_TYPE': return Object(objectSpread["a" /* default */])({}, state, { installedBlockTypes: state.installedBlockTypes.filter(function (blockType) { return blockType.name !== action.item.name; }) }); } return state; }; /* harmony default export */ var reducer = (Object(external_this_wp_data_["combineReducers"])({ downloadableBlocks: reducer_downloadableBlocks })); // EXTERNAL MODULE: external {"this":"lodash"} var external_this_lodash_ = __webpack_require__(2); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/selectors.js /** * External dependencies */ /** * Returns true if application is requesting for downloadable blocks. * * @param {Object} state Global application state. * * @return {Array} Downloadable blocks */ function isRequestingDownloadableBlocks(state) { return state.downloadableBlocks.isRequestingDownloadableBlocks; } /** * Returns the available uninstalled blocks * * @param {Object} state Global application state. * @param {string} filterValue Search string. * * @return {Array} Downloadable blocks */ function selectors_getDownloadableBlocks(state, filterValue) { if (!state.downloadableBlocks.results[filterValue]) { return []; } return state.downloadableBlocks.results[filterValue]; } /** * Returns true if user has permission to install blocks. * * @param {Object} state Global application state. * * @return {boolean} User has permission to install blocks. */ function selectors_hasInstallBlocksPermission(state) { return state.downloadableBlocks.hasPermission; } /** * Returns the block types that have been installed on the server. * * @param {Object} state Global application state. * * @return {Array} Block type items. */ function getInstalledBlockTypes(state) { return Object(external_this_lodash_["get"])(state, ['downloadableBlocks', 'installedBlockTypes'], []); } // EXTERNAL MODULE: external {"this":"regeneratorRuntime"} var external_this_regeneratorRuntime_ = __webpack_require__(23); var external_this_regeneratorRuntime_default = /*#__PURE__*/__webpack_require__.n(external_this_regeneratorRuntime_); // EXTERNAL MODULE: external {"this":["wp","blocks"]} var external_this_wp_blocks_ = __webpack_require__(10); // EXTERNAL MODULE: external {"this":["wp","apiFetch"]} var external_this_wp_apiFetch_ = __webpack_require__(37); var external_this_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_apiFetch_); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/controls.js var _marked = /*#__PURE__*/ external_this_regeneratorRuntime_default.a.mark(loadAssets); /** * External dependencies */ /** * WordPress dependencies */ /** * Calls a selector using the current state. * * @param {string} storeName Store name. * @param {string} selectorName Selector name. * @param {Array} args Selector arguments. * * @return {Object} Control descriptor. */ function controls_select(storeName, selectorName) { for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) { args[_key - 2] = arguments[_key]; } return { type: 'SELECT', storeName: storeName, selectorName: selectorName, args: args }; } /** * Calls a dispatcher using the current state. * * @param {string} storeName Store name. * @param {string} dispatcherName Dispatcher name. * @param {Array} args Selector arguments. * * @return {Object} Control descriptor. */ function controls_dispatch(storeName, dispatcherName) { for (var _len2 = arguments.length, args = new Array(_len2 > 2 ? _len2 - 2 : 0), _key2 = 2; _key2 < _len2; _key2++) { args[_key2 - 2] = arguments[_key2]; } return { type: 'DISPATCH', storeName: storeName, dispatcherName: dispatcherName, args: args }; } /** * Trigger an API Fetch request. * * @param {Object} request API Fetch Request Object. * * @return {Object} Control descriptor. */ function apiFetch(request) { return { type: 'API_FETCH', request: request }; } /** * Loads JavaScript * * @param {Array} asset The url for the JavaScript. * @param {Function} onLoad Callback function on success. * @param {Function} onError Callback function on failure. */ var loadScript = function loadScript(asset, onLoad, onError) { if (!asset) { return; } var existing = document.querySelector("script[src=\"".concat(asset.src, "\"]")); if (existing) { existing.parentNode.removeChild(existing); } var script = document.createElement('script'); script.src = typeof asset === 'string' ? asset : asset.src; script.onload = onLoad; script.onerror = onError; document.body.appendChild(script); }; /** * Loads CSS file. * * @param {*} asset the url for the CSS file. */ var loadStyle = function loadStyle(asset) { if (!asset) { return; } var link = document.createElement('link'); link.rel = 'stylesheet'; link.href = typeof asset === 'string' ? asset : asset.src; document.body.appendChild(link); }; /** * Load the asset files for a block * * @param {Array} assets A collection of URL for the assets. * * @return {Object} Control descriptor. */ function loadAssets(assets) { return external_this_regeneratorRuntime_default.a.wrap(function loadAssets$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: return _context.abrupt("return", { type: 'LOAD_ASSETS', assets: assets }); case 1: case "end": return _context.stop(); } } }, _marked); } var controls = { SELECT: Object(external_this_wp_data_["createRegistryControl"])(function (registry) { return function (_ref) { var _registry$select; var storeName = _ref.storeName, selectorName = _ref.selectorName, args = _ref.args; return (_registry$select = registry.select(storeName))[selectorName].apply(_registry$select, Object(toConsumableArray["a" /* default */])(args)); }; }), DISPATCH: Object(external_this_wp_data_["createRegistryControl"])(function (registry) { return function (_ref2) { var _registry$dispatch; var storeName = _ref2.storeName, dispatcherName = _ref2.dispatcherName, args = _ref2.args; return (_registry$dispatch = registry.dispatch(storeName))[dispatcherName].apply(_registry$dispatch, Object(toConsumableArray["a" /* default */])(args)); }; }), API_FETCH: function API_FETCH(_ref3) { var request = _ref3.request; return external_this_wp_apiFetch_default()(Object(objectSpread["a" /* default */])({}, request)); }, LOAD_ASSETS: function LOAD_ASSETS(_ref4) { var assets = _ref4.assets; return new Promise(function (resolve, reject) { if (Array.isArray(assets)) { var scriptsCount = 0; Object(external_this_lodash_["forEach"])(assets, function (asset) { if (asset.match(/\.js$/) !== null) { scriptsCount++; loadScript(asset, function () { scriptsCount--; if (scriptsCount === 0) { return resolve(scriptsCount); } }, reject); } else { loadStyle(asset); } }); } else { loadScript(assets.editor_script, function () { return resolve(0); }, reject); loadStyle(assets.style); } }); } }; /* harmony default export */ var store_controls = (controls); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/actions.js var actions_marked = /*#__PURE__*/ external_this_regeneratorRuntime_default.a.mark(actions_downloadBlock), _marked2 = /*#__PURE__*/ external_this_regeneratorRuntime_default.a.mark(actions_installBlock), _marked3 = /*#__PURE__*/ external_this_regeneratorRuntime_default.a.mark(uninstallBlock); /** * WordPress dependencies */ /** * Internal dependencies */ /** * Returns an action object used in signalling that the downloadable blocks have been requested and is loading. * * @return {Object} Action object. */ function fetchDownloadableBlocks() { return { type: 'FETCH_DOWNLOADABLE_BLOCKS' }; } /** * Returns an action object used in signalling that the downloadable blocks have been updated. * * @param {Array} downloadableBlocks Downloadable blocks. * @param {string} filterValue Search string. * * @return {Object} Action object. */ function receiveDownloadableBlocks(downloadableBlocks, filterValue) { return { type: 'RECEIVE_DOWNLOADABLE_BLOCKS', downloadableBlocks: downloadableBlocks, filterValue: filterValue }; } /** * Returns an action object used in signalling that the user does not have permission to install blocks. * @param {boolean} hasPermission User has permission to install blocks. * * @return {Object} Action object. */ function setInstallBlocksPermission(hasPermission) { return { type: 'SET_INSTALL_BLOCKS_PERMISSION', hasPermission: hasPermission }; } /** * Action triggered to download block assets. * * @param {Object} item The selected block item * @param {Function} onSuccess The callback function when the action has succeeded. * @param {Function} onError The callback function when the action has failed. */ function actions_downloadBlock(item, onSuccess, onError) { var registeredBlocks; return external_this_regeneratorRuntime_default.a.wrap(function downloadBlock$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: _context.prev = 0; if (item.assets.length) { _context.next = 3; break; } throw new Error('Block has no assets'); case 3: _context.next = 5; return loadAssets(item.assets); case 5: registeredBlocks = Object(external_this_wp_blocks_["getBlockTypes"])(); if (!registeredBlocks.length) { _context.next = 10; break; } onSuccess(item); _context.next = 11; break; case 10: throw new Error('Unable to get block types'); case 11: _context.next = 17; break; case 13: _context.prev = 13; _context.t0 = _context["catch"](0); _context.next = 17; return onError(_context.t0); case 17: case "end": return _context.stop(); } } }, actions_marked, null, [[0, 13]]); } /** * Action triggered to install a block plugin. * * @param {string} item The block item returned by search. * @param {Function} onSuccess The callback function when the action has succeeded. * @param {Function} onError The callback function when the action has failed. * */ function actions_installBlock(_ref, onSuccess, onError) { var id, name, response; return external_this_regeneratorRuntime_default.a.wrap(function installBlock$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: id = _ref.id, name = _ref.name; _context2.prev = 1; _context2.next = 4; return apiFetch({ path: '__experimental/block-directory/install', data: { slug: id }, method: 'POST' }); case 4: response = _context2.sent; if (!(response.success === false)) { _context2.next = 7; break; } throw new Error(response.errorMessage); case 7: _context2.next = 9; return addInstalledBlockType({ id: id, name: name }); case 9: onSuccess(); _context2.next = 15; break; case 12: _context2.prev = 12; _context2.t0 = _context2["catch"](1); onError(_context2.t0); case 15: case "end": return _context2.stop(); } } }, _marked2, null, [[1, 12]]); } /** * Action triggered to uninstall a block plugin. * * @param {string} item The block item returned by search. * @param {Function} onSuccess The callback function when the action has succeeded. * @param {Function} onError The callback function when the action has failed. * */ function uninstallBlock(_ref2, onSuccess, onError) { var id, name, response; return external_this_regeneratorRuntime_default.a.wrap(function uninstallBlock$(_context3) { while (1) { switch (_context3.prev = _context3.next) { case 0: id = _ref2.id, name = _ref2.name; _context3.prev = 1; _context3.next = 4; return apiFetch({ path: '__experimental/block-directory/uninstall', data: { slug: id }, method: 'DELETE' }); case 4: response = _context3.sent; if (!(response.success === false)) { _context3.next = 7; break; } throw new Error(response.errorMessage); case 7: _context3.next = 9; return removeInstalledBlockType({ id: id, name: name }); case 9: onSuccess(); _context3.next = 15; break; case 12: _context3.prev = 12; _context3.t0 = _context3["catch"](1); onError(_context3.t0); case 15: case "end": return _context3.stop(); } } }, _marked3, null, [[1, 12]]); } /** * Returns an action object used to add a newly installed block type. * * @param {string} item The block item with the block id and name. * * @return {Object} Action object. */ function addInstalledBlockType(item) { return { type: 'ADD_INSTALLED_BLOCK_TYPE', item: item }; } /** * Returns an action object used to remove a newly installed block type. * * @param {string} item The block item with the block id and name. * * @return {Object} Action object. */ function removeInstalledBlockType(item) { return { type: 'REMOVE_INSTALLED_BLOCK_TYPE', item: item }; } // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/resolvers.js /** * External dependencies */ /** * Internal dependencies */ /* harmony default export */ var resolvers = ({ getDownloadableBlocks: /*#__PURE__*/ external_this_regeneratorRuntime_default.a.mark(function getDownloadableBlocks(filterValue) { var results, blocks; return external_this_regeneratorRuntime_default.a.wrap(function getDownloadableBlocks$(_context) { while (1) { switch (_context.prev = _context.next) { case 0: if (filterValue) { _context.next = 2; break; } return _context.abrupt("return"); case 2: _context.prev = 2; _context.next = 5; return fetchDownloadableBlocks(filterValue); case 5: _context.next = 7; return apiFetch({ path: "__experimental/block-directory/search?term=".concat(filterValue) }); case 7: results = _context.sent; blocks = results.map(function (result) { return Object(external_this_lodash_["mapKeys"])(result, function (value, key) { return Object(external_this_lodash_["camelCase"])(key); }); }); _context.next = 11; return receiveDownloadableBlocks(blocks, filterValue); case 11: _context.next = 18; break; case 13: _context.prev = 13; _context.t0 = _context["catch"](2); if (!(_context.t0.code === 'rest_user_cannot_view')) { _context.next = 18; break; } _context.next = 18; return setInstallBlocksPermission(false); case 18: case "end": return _context.stop(); } } }, getDownloadableBlocks, null, [[2, 13]]); }), hasInstallBlocksPermission: /*#__PURE__*/ external_this_regeneratorRuntime_default.a.mark(function hasInstallBlocksPermission() { return external_this_regeneratorRuntime_default.a.wrap(function hasInstallBlocksPermission$(_context2) { while (1) { switch (_context2.prev = _context2.next) { case 0: _context2.prev = 0; _context2.next = 3; return apiFetch({ path: "__experimental/block-directory/search?term=" }); case 3: _context2.next = 5; return setInstallBlocksPermission(true); case 5: _context2.next = 12; break; case 7: _context2.prev = 7; _context2.t0 = _context2["catch"](0); if (!(_context2.t0.code === 'rest_user_cannot_view')) { _context2.next = 12; break; } _context2.next = 12; return setInstallBlocksPermission(false); case 12: case "end": return _context2.stop(); } } }, hasInstallBlocksPermission, null, [[0, 7]]); }) }); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/index.js /** * WordPress dependencies */ /** * Internal dependencies */ /** * Module Constants */ var MODULE_KEY = 'core/block-directory'; /** * Block editor data store configuration. * * @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#registerStore * * @type {Object} */ var storeConfig = { reducer: reducer, selectors: selectors_namespaceObject, actions: actions_namespaceObject, controls: store_controls, resolvers: resolvers }; var store = Object(external_this_wp_data_["registerStore"])(MODULE_KEY, storeConfig); /* harmony default export */ var build_module_store = (store); // EXTERNAL MODULE: external {"this":["wp","element"]} var external_this_wp_element_ = __webpack_require__(0); // EXTERNAL MODULE: external {"this":["wp","plugins"]} var external_this_wp_plugins_ = __webpack_require__(49); // EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules var slicedToArray = __webpack_require__(22); // EXTERNAL MODULE: external {"this":["wp","blockEditor"]} var external_this_wp_blockEditor_ = __webpack_require__(5); // EXTERNAL MODULE: external {"this":["wp","compose"]} var external_this_wp_compose_ = __webpack_require__(8); // EXTERNAL MODULE: external {"this":["wp","i18n"]} var external_this_wp_i18n_ = __webpack_require__(1); // EXTERNAL MODULE: external {"this":["wp","components"]} var external_this_wp_components_ = __webpack_require__(3); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/block-ratings/stars.js /** * External dependencies */ /** * WordPress dependencies */ function Stars(_ref) { var rating = _ref.rating; var stars = Math.round(rating / 0.5) * 0.5; var fullStarCount = Math.floor(rating); var halfStarCount = Math.ceil(rating - fullStarCount); var emptyStarCount = 5 - (fullStarCount + halfStarCount); return Object(external_this_wp_element_["createElement"])("div", { "aria-label": Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('%s out of 5 stars'), stars) }, Object(external_this_lodash_["times"])(fullStarCount, function (i) { return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { key: "full_stars_".concat(i), icon: "star-filled", size: 16 }); }), Object(external_this_lodash_["times"])(halfStarCount, function (i) { return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { key: "half_stars_".concat(i), icon: "star-half", size: 16 }); }), Object(external_this_lodash_["times"])(emptyStarCount, function (i) { return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { key: "empty_stars_".concat(i), icon: "star-empty", size: 16 }); })); } /* harmony default export */ var block_ratings_stars = (Stars); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/block-ratings/index.js /** * WordPress dependencies */ /** * Internal dependencies */ var block_ratings_BlockRatings = function BlockRatings(_ref) { var rating = _ref.rating, ratingCount = _ref.ratingCount; return Object(external_this_wp_element_["createElement"])("div", { className: "block-directory-block-ratings" }, Object(external_this_wp_element_["createElement"])(block_ratings_stars, { rating: rating }), Object(external_this_wp_element_["createElement"])("span", { className: "block-directory-block-ratings__rating-count", "aria-label": // translators: %d: number of ratings (number). Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d total rating', '%d total ratings', ratingCount), ratingCount) }, "(", ratingCount, ")")); }; /* harmony default export */ var block_ratings = (block_ratings_BlockRatings); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-header/index.js /** * WordPress dependencies */ /** * Internal dependencies */ function DownloadableBlockHeader(_ref) { var icon = _ref.icon, title = _ref.title, rating = _ref.rating, ratingCount = _ref.ratingCount, _onClick = _ref.onClick; return Object(external_this_wp_element_["createElement"])("div", { className: "block-directory-downloadable-block-header__row" }, icon.match(/\.(jpeg|jpg|gif|png)$/) !== null ? Object(external_this_wp_element_["createElement"])("img", { src: icon, alt: "block icon" }) : Object(external_this_wp_element_["createElement"])("span", null, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockIcon"], { icon: icon, showColors: true })), Object(external_this_wp_element_["createElement"])("div", { className: "block-directory-downloadable-block-header__column" }, Object(external_this_wp_element_["createElement"])("span", { role: "heading", className: "block-directory-downloadable-block-header__title" }, title), Object(external_this_wp_element_["createElement"])(block_ratings, { rating: rating, ratingCount: ratingCount })), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { isDefault: true, onClick: function onClick(event) { event.preventDefault(); _onClick(); } }, Object(external_this_wp_i18n_["__"])('Add'))); } /* harmony default export */ var downloadable_block_header = (DownloadableBlockHeader); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-author-info/index.js /** * WordPress dependencies */ function DownloadableBlockAuthorInfo(_ref) { var author = _ref.author, authorBlockCount = _ref.authorBlockCount, authorBlockRating = _ref.authorBlockRating; return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("span", { className: "block-directory-downloadable-block-author-info__content-author" }, Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Authored by %s'), author)), Object(external_this_wp_element_["createElement"])("span", { className: "block-directory-downloadable-block-author-info__content" }, Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('This author has %d block, with an average rating of %d.', 'This author has %d blocks, with an average rating of %d.', authorBlockCount), authorBlockCount, authorBlockRating))); } /* harmony default export */ var downloadable_block_author_info = (DownloadableBlockAuthorInfo); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-info/index.js /** * WordPress dependencies */ function DownloadableBlockInfo(_ref) { var description = _ref.description, activeInstalls = _ref.activeInstalls, humanizedUpdated = _ref.humanizedUpdated; return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("p", { className: "block-directory-downloadable-block-info__content" }, description), Object(external_this_wp_element_["createElement"])("div", { className: "block-directory-downloadable-block-info__row" }, Object(external_this_wp_element_["createElement"])("div", { className: "block-directory-downloadable-block-info__column" }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { icon: "chart-line" }), Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d active installation', '%d active installations', activeInstalls), activeInstalls)), Object(external_this_wp_element_["createElement"])("div", { className: "block-directory-downloadable-block-info__column" }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { icon: "update" }), Object(external_this_wp_element_["createElement"])("span", { "aria-label": Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Updated %s'), humanizedUpdated) }, humanizedUpdated)))); } /* harmony default export */ var downloadable_block_info = (DownloadableBlockInfo); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-block-list-item/index.js /** * Internal dependencies */ function DownloadableBlockListItem(_ref) { var item = _ref.item, onClick = _ref.onClick; var icon = item.icon, title = item.title, description = item.description, rating = item.rating, activeInstalls = item.activeInstalls, ratingCount = item.ratingCount, author = item.author, humanizedUpdated = item.humanizedUpdated, authorBlockCount = item.authorBlockCount, authorBlockRating = item.authorBlockRating; return Object(external_this_wp_element_["createElement"])("li", { className: "block-directory-downloadable-block-list-item" }, Object(external_this_wp_element_["createElement"])("article", { className: "block-directory-downloadable-block-list-item__panel" }, Object(external_this_wp_element_["createElement"])("header", { className: "block-directory-downloadable-block-list-item__header" }, Object(external_this_wp_element_["createElement"])(downloadable_block_header, { icon: icon, onClick: onClick, title: title, rating: rating, ratingCount: ratingCount })), Object(external_this_wp_element_["createElement"])("section", { className: "block-directory-downloadable-block-list-item__body" }, Object(external_this_wp_element_["createElement"])(downloadable_block_info, { activeInstalls: activeInstalls, description: description, humanizedUpdated: humanizedUpdated })), Object(external_this_wp_element_["createElement"])("footer", { className: "block-directory-downloadable-block-list-item__footer" }, Object(external_this_wp_element_["createElement"])(downloadable_block_author_info, { author: author, authorBlockCount: authorBlockCount, authorBlockRating: authorBlockRating })))); } /* harmony default export */ var downloadable_block_list_item = (DownloadableBlockListItem); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-blocks-list/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ var DOWNLOAD_ERROR_NOTICE_ID = 'block-download-error'; var INSTALL_ERROR_NOTICE_ID = 'block-install-error'; function DownloadableBlocksList(_ref) { var items = _ref.items, _ref$onHover = _ref.onHover, onHover = _ref$onHover === void 0 ? external_this_lodash_["noop"] : _ref$onHover, children = _ref.children, downloadAndInstallBlock = _ref.downloadAndInstallBlock; return ( /* * Disable reason: The `list` ARIA role is redundant but * Safari+VoiceOver won't announce the list otherwise. */ /* eslint-disable jsx-a11y/no-redundant-roles */ Object(external_this_wp_element_["createElement"])("ul", { role: "list", className: "block-directory-downloadable-blocks-list" }, items && items.map(function (item) { return Object(external_this_wp_element_["createElement"])(downloadable_block_list_item, { key: item.id, className: Object(external_this_wp_blocks_["getBlockMenuDefaultClassName"])(item.id), icons: item.icons, onClick: function onClick() { downloadAndInstallBlock(item); onHover(null); }, onFocus: function onFocus() { return onHover(item); }, onMouseEnter: function onMouseEnter() { return onHover(item); }, onMouseLeave: function onMouseLeave() { return onHover(null); }, onBlur: function onBlur() { return onHover(null); }, item: item }); }), children) /* eslint-enable jsx-a11y/no-redundant-roles */ ); } /* harmony default export */ var downloadable_blocks_list = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withDispatch"])(function (dispatch, props) { var _dispatch = dispatch('core/block-directory'), installBlock = _dispatch.installBlock, downloadBlock = _dispatch.downloadBlock; var _dispatch2 = dispatch('core/notices'), createErrorNotice = _dispatch2.createErrorNotice, removeNotice = _dispatch2.removeNotice; var _dispatch3 = dispatch('core/block-editor'), removeBlocks = _dispatch3.removeBlocks; var onSelect = props.onSelect; return { downloadAndInstallBlock: function downloadAndInstallBlock(item) { var onDownloadError = function onDownloadError() { createErrorNotice(Object(external_this_wp_i18n_["__"])('Block previews can’t load.'), { id: DOWNLOAD_ERROR_NOTICE_ID, actions: [{ label: Object(external_this_wp_i18n_["__"])('Retry'), onClick: function onClick() { removeNotice(DOWNLOAD_ERROR_NOTICE_ID); downloadBlock(item, onSuccess, onDownloadError); } }] }); }; var onSuccess = function onSuccess() { var createdBlock = onSelect(item); var onInstallBlockError = function onInstallBlockError() { createErrorNotice(Object(external_this_wp_i18n_["__"])('Block previews can\'t install.'), { id: INSTALL_ERROR_NOTICE_ID, actions: [{ label: Object(external_this_wp_i18n_["__"])('Retry'), onClick: function onClick() { removeNotice(INSTALL_ERROR_NOTICE_ID); installBlock(item, external_this_lodash_["noop"], onInstallBlockError); } }, { label: Object(external_this_wp_i18n_["__"])('Remove'), onClick: function onClick() { removeNotice(INSTALL_ERROR_NOTICE_ID); removeBlocks(createdBlock.clientId); Object(external_this_wp_blocks_["unregisterBlockType"])(item.name); } }] }); }; installBlock(item, external_this_lodash_["noop"], onInstallBlockError); }; downloadBlock(item, onSuccess, onDownloadError); } }; }))(DownloadableBlocksList)); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/components/downloadable-blocks-panel/index.js /** * WordPress dependencies */ /** * Internal dependencies */ function DownloadableBlocksPanel(_ref) { var downloadableItems = _ref.downloadableItems, onSelect = _ref.onSelect, onHover = _ref.onHover, hasPermission = _ref.hasPermission, isLoading = _ref.isLoading, isWaiting = _ref.isWaiting, debouncedSpeak = _ref.debouncedSpeak; if (!hasPermission) { debouncedSpeak(Object(external_this_wp_i18n_["__"])('No blocks found in your library. Please contact your site administrator to install new blocks.')); return Object(external_this_wp_element_["createElement"])("p", { className: "block-directory-downloadable-blocks-panel__description has-no-results" }, Object(external_this_wp_i18n_["__"])('No blocks found in your library.'), Object(external_this_wp_element_["createElement"])("br", null), Object(external_this_wp_i18n_["__"])('Please contact your site administrator to install new blocks.')); } if (isLoading || isWaiting) { return Object(external_this_wp_element_["createElement"])("p", { className: "block-directory-downloadable-blocks-panel__description has-no-results" }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Spinner"], null)); } if (!downloadableItems.length) { return Object(external_this_wp_element_["createElement"])("p", { className: "block-directory-downloadable-blocks-panel__description has-no-results" }, Object(external_this_wp_i18n_["__"])('No blocks found in your library.')); } var resultsFoundMessage = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('No blocks found in your library. We did find %d block available for download.', 'No blocks found in your library. We did find %d blocks available for download.', downloadableItems.length), downloadableItems.length); debouncedSpeak(resultsFoundMessage); return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("p", { className: "block-directory-downloadable-blocks-panel__description" }, Object(external_this_wp_i18n_["__"])('No blocks found in your library. These blocks can be downloaded and installed:')), Object(external_this_wp_element_["createElement"])(downloadable_blocks_list, { items: downloadableItems, onSelect: onSelect, onHover: onHover })); } /* harmony default export */ var downloadable_blocks_panel = (Object(external_this_wp_compose_["compose"])([external_this_wp_components_["withSpokenMessages"], Object(external_this_wp_data_["withSelect"])(function (select, _ref2) { var filterValue = _ref2.filterValue; var _select = select('core/block-directory'), getDownloadableBlocks = _select.getDownloadableBlocks, hasInstallBlocksPermission = _select.hasInstallBlocksPermission, isRequestingDownloadableBlocks = _select.isRequestingDownloadableBlocks; var hasPermission = hasInstallBlocksPermission(); var downloadableItems = hasPermission ? getDownloadableBlocks(filterValue) : []; var isLoading = isRequestingDownloadableBlocks(); return { downloadableItems: downloadableItems, hasPermission: hasPermission, isLoading: isLoading }; })])(DownloadableBlocksPanel)); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/inserter-menu-downloadable-blocks-panel/index.js /** * External dependencies */ /** * WordPress dependencies */ /** * Internal dependencies */ function InserterMenuDownloadableBlocksPanel() { var _useState = Object(external_this_wp_element_["useState"])(''), _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2), debouncedFilterValue = _useState2[0], setFilterValue = _useState2[1]; var debouncedSetFilterValue = Object(external_this_lodash_["debounce"])(setFilterValue, 400); return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["__experimentalInserterMenuExtension"], null, function (_ref) { var onSelect = _ref.onSelect, onHover = _ref.onHover, filterValue = _ref.filterValue, hasItems = _ref.hasItems; if (hasItems || !filterValue) { return null; } if (debouncedFilterValue !== filterValue) { debouncedSetFilterValue(filterValue); } return Object(external_this_wp_element_["createElement"])(downloadable_blocks_panel, { onSelect: onSelect, onHover: onHover, filterValue: debouncedFilterValue, isWaiting: filterValue !== debouncedFilterValue }); }); } /* harmony default export */ var inserter_menu_downloadable_blocks_panel = (InserterMenuDownloadableBlocksPanel); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/plugins/index.js /** * WordPress dependencies */ /** * Internal dependencies */ Object(external_this_wp_plugins_["registerPlugin"])('block-directory', { render: function render() { return Object(external_this_wp_element_["createElement"])(inserter_menu_downloadable_blocks_panel, null); } }); // CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/index.js /** * Internal dependencies */ /***/ }), /***/ 4: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["data"]; }()); /***/ }), /***/ 49: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["plugins"]; }()); /***/ }), /***/ 5: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["blockEditor"]; }()); /***/ }), /***/ 7: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectSpread; }); /* harmony import */ var _defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(9); function _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(Object(source)); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { Object(_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(target, key, source[key]); }); } return target; } /***/ }), /***/ 8: /***/ (function(module, exports) { (function() { module.exports = this["wp"]["compose"]; }()); /***/ }), /***/ 9: /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; /* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; }); function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; } /***/ }) /******/ });