diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-07 13:06:14 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-07 13:06:14 +0100 |
| commit | 7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8 (patch) | |
| tree | f7453d7dd5cbaaab246e23810b02d3edf1e451be /srcs/wordpress/wp-includes/js/dist/editor.js | |
| parent | c59bdcf77c50cbe89b4a93782cdd6d9e7532080e (diff) | |
| download | ft_server-7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8.tar.gz ft_server-7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8.tar.bz2 ft_server-7086111ad4dd997e12a3220e1ee60c9b9bcf0bb8.zip | |
Added wordpress
Diffstat (limited to 'srcs/wordpress/wp-includes/js/dist/editor.js')
| -rw-r--r-- | srcs/wordpress/wp-includes/js/dist/editor.js | 16227 |
1 files changed, 16227 insertions, 0 deletions
diff --git a/srcs/wordpress/wp-includes/js/dist/editor.js b/srcs/wordpress/wp-includes/js/dist/editor.js new file mode 100644 index 0000000..fe98b0e --- /dev/null +++ b/srcs/wordpress/wp-includes/js/dist/editor.js @@ -0,0 +1,16227 @@ +this["wp"] = this["wp"] || {}; this["wp"]["editor"] = +/******/ (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 = 343); +/******/ }) +/************************************************************************/ +/******/ ({ + +/***/ 0: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["element"]; }()); + +/***/ }), + +/***/ 1: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["i18n"]; }()); + +/***/ }), + +/***/ 10: +/***/ (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; +} + +/***/ }), + +/***/ 11: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; }); +function _defineProperties(target, props) { + for (var i = 0; i < props.length; i++) { + var descriptor = props[i]; + descriptor.enumerable = descriptor.enumerable || false; + descriptor.configurable = true; + if ("value" in descriptor) descriptor.writable = true; + Object.defineProperty(target, descriptor.key, descriptor); + } +} + +function _createClass(Constructor, protoProps, staticProps) { + if (protoProps) _defineProperties(Constructor.prototype, protoProps); + if (staticProps) _defineProperties(Constructor, staticProps); + return Constructor; +} + +/***/ }), + +/***/ 115: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +var __extends = (this && this.__extends) || (function () { + var extendStatics = Object.setPrototypeOf || + ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) || + function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; }; + return function (d, b) { + extendStatics(d, b); + function __() { this.constructor = d; } + d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __()); + }; +})(); +var __assign = (this && this.__assign) || Object.assign || function(t) { + for (var s, i = 1, n = arguments.length; i < n; i++) { + s = arguments[i]; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) + t[p] = s[p]; + } + return t; +}; +var __rest = (this && this.__rest) || function (s, e) { + var t = {}; + for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) + t[p] = s[p]; + if (s != null && typeof Object.getOwnPropertySymbols === "function") + for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0) + t[p[i]] = s[p[i]]; + return t; +}; +exports.__esModule = true; +var React = __webpack_require__(28); +var PropTypes = __webpack_require__(33); +var autosize = __webpack_require__(116); +var _getLineHeight = __webpack_require__(117); +var getLineHeight = _getLineHeight; +var UPDATE = 'autosize:update'; +var DESTROY = 'autosize:destroy'; +var RESIZED = 'autosize:resized'; +/** + * A light replacement for built-in textarea component + * which automaticaly adjusts its height to match the content + */ +var TextareaAutosize = /** @class */ (function (_super) { + __extends(TextareaAutosize, _super); + function TextareaAutosize() { + var _this = _super !== null && _super.apply(this, arguments) || this; + _this.state = { + lineHeight: null + }; + _this.dispatchEvent = function (EVENT_TYPE) { + var event = document.createEvent('Event'); + event.initEvent(EVENT_TYPE, true, false); + _this.textarea.dispatchEvent(event); + }; + _this.updateLineHeight = function () { + _this.setState({ + lineHeight: getLineHeight(_this.textarea) + }); + }; + _this.onChange = function (e) { + var onChange = _this.props.onChange; + _this.currentValue = e.currentTarget.value; + onChange && onChange(e); + }; + _this.saveDOMNodeRef = function (ref) { + var innerRef = _this.props.innerRef; + if (innerRef) { + innerRef(ref); + } + _this.textarea = ref; + }; + _this.getLocals = function () { + var _a = _this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef"]), lineHeight = _a.state.lineHeight, saveDOMNodeRef = _a.saveDOMNodeRef; + var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null; + return __assign({}, props, { saveDOMNodeRef: saveDOMNodeRef, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, onChange: _this.onChange }); + }; + return _this; + } + TextareaAutosize.prototype.componentDidMount = function () { + var _this = this; + var _a = this.props, onResize = _a.onResize, maxRows = _a.maxRows; + if (typeof maxRows === 'number') { + this.updateLineHeight(); + } + /* + the defer is needed to: + - force "autosize" to activate the scrollbar when this.props.maxRows is passed + - support StyledComponents (see #71) + */ + setTimeout(function () { return autosize(_this.textarea); }); + if (onResize) { + this.textarea.addEventListener(RESIZED, onResize); + } + }; + TextareaAutosize.prototype.componentWillUnmount = function () { + var onResize = this.props.onResize; + if (onResize) { + this.textarea.removeEventListener(RESIZED, onResize); + } + this.dispatchEvent(DESTROY); + }; + TextareaAutosize.prototype.render = function () { + var _a = this.getLocals(), children = _a.children, saveDOMNodeRef = _a.saveDOMNodeRef, locals = __rest(_a, ["children", "saveDOMNodeRef"]); + return (React.createElement("textarea", __assign({}, locals, { ref: saveDOMNodeRef }), children)); + }; + TextareaAutosize.prototype.componentDidUpdate = function (prevProps) { + if (this.props.value !== this.currentValue || this.props.rows !== prevProps.rows) { + this.dispatchEvent(UPDATE); + } + }; + TextareaAutosize.defaultProps = { + rows: 1 + }; + TextareaAutosize.propTypes = { + rows: PropTypes.number, + maxRows: PropTypes.number, + onResize: PropTypes.func, + innerRef: PropTypes.func + }; + return TextareaAutosize; +}(React.Component)); +exports["default"] = TextareaAutosize; + + +/***/ }), + +/***/ 116: +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + autosize 4.0.2 + license: MIT + http://www.jacklmoore.com/autosize +*/ +(function (global, factory) { + if (true) { + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory), + __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ? + (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else { var mod; } +})(this, function (module, exports) { + 'use strict'; + + var map = typeof Map === "function" ? new Map() : function () { + var keys = []; + var values = []; + + return { + has: function has(key) { + return keys.indexOf(key) > -1; + }, + get: function get(key) { + return values[keys.indexOf(key)]; + }, + set: function set(key, value) { + if (keys.indexOf(key) === -1) { + keys.push(key); + values.push(value); + } + }, + delete: function _delete(key) { + var index = keys.indexOf(key); + if (index > -1) { + keys.splice(index, 1); + values.splice(index, 1); + } + } + }; + }(); + + var createEvent = function createEvent(name) { + return new Event(name, { bubbles: true }); + }; + try { + new Event('test'); + } catch (e) { + // IE does not support `new Event()` + createEvent = function createEvent(name) { + var evt = document.createEvent('Event'); + evt.initEvent(name, true, false); + return evt; + }; + } + + function assign(ta) { + if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return; + + var heightOffset = null; + var clientWidth = null; + var cachedHeight = null; + + function init() { + var style = window.getComputedStyle(ta, null); + + if (style.resize === 'vertical') { + ta.style.resize = 'none'; + } else if (style.resize === 'both') { + ta.style.resize = 'horizontal'; + } + + if (style.boxSizing === 'content-box') { + heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom)); + } else { + heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth); + } + // Fix when a textarea is not on document body and heightOffset is Not a Number + if (isNaN(heightOffset)) { + heightOffset = 0; + } + + update(); + } + + function changeOverflow(value) { + { + // Chrome/Safari-specific fix: + // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space + // made available by removing the scrollbar. The following forces the necessary text reflow. + var width = ta.style.width; + ta.style.width = '0px'; + // Force reflow: + /* jshint ignore:start */ + ta.offsetWidth; + /* jshint ignore:end */ + ta.style.width = width; + } + + ta.style.overflowY = value; + } + + function getParentOverflows(el) { + var arr = []; + + while (el && el.parentNode && el.parentNode instanceof Element) { + if (el.parentNode.scrollTop) { + arr.push({ + node: el.parentNode, + scrollTop: el.parentNode.scrollTop + }); + } + el = el.parentNode; + } + + return arr; + } + + function resize() { + if (ta.scrollHeight === 0) { + // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM. + return; + } + + var overflows = getParentOverflows(ta); + var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240) + + ta.style.height = ''; + ta.style.height = ta.scrollHeight + heightOffset + 'px'; + + // used to check if an update is actually necessary on window.resize + clientWidth = ta.clientWidth; + + // prevents scroll-position jumping + overflows.forEach(function (el) { + el.node.scrollTop = el.scrollTop; + }); + + if (docTop) { + document.documentElement.scrollTop = docTop; + } + } + + function update() { + resize(); + + var styleHeight = Math.round(parseFloat(ta.style.height)); + var computed = window.getComputedStyle(ta, null); + + // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box + var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight; + + // The actual height not matching the style height (set via the resize method) indicates that + // the max-height has been exceeded, in which case the overflow should be allowed. + if (actualHeight < styleHeight) { + if (computed.overflowY === 'hidden') { + changeOverflow('scroll'); + resize(); + actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; + } + } else { + // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands. + if (computed.overflowY !== 'hidden') { + changeOverflow('hidden'); + resize(); + actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight; + } + } + + if (cachedHeight !== actualHeight) { + cachedHeight = actualHeight; + var evt = createEvent('autosize:resized'); + try { + ta.dispatchEvent(evt); + } catch (err) { + // Firefox will throw an error on dispatchEvent for a detached element + // https://bugzilla.mozilla.org/show_bug.cgi?id=889376 + } + } + } + + var pageResize = function pageResize() { + if (ta.clientWidth !== clientWidth) { + update(); + } + }; + + var destroy = function (style) { + window.removeEventListener('resize', pageResize, false); + ta.removeEventListener('input', update, false); + ta.removeEventListener('keyup', update, false); + ta.removeEventListener('autosize:destroy', destroy, false); + ta.removeEventListener('autosize:update', update, false); + + Object.keys(style).forEach(function (key) { + ta.style[key] = style[key]; + }); + + map.delete(ta); + }.bind(ta, { + height: ta.style.height, + resize: ta.style.resize, + overflowY: ta.style.overflowY, + overflowX: ta.style.overflowX, + wordWrap: ta.style.wordWrap + }); + + ta.addEventListener('autosize:destroy', destroy, false); + + // IE9 does not fire onpropertychange or oninput for deletions, + // so binding to onkeyup to catch most of those events. + // There is no way that I know of to detect something like 'cut' in IE9. + if ('onpropertychange' in ta && 'oninput' in ta) { + ta.addEventListener('keyup', update, false); + } + + window.addEventListener('resize', pageResize, false); + ta.addEventListener('input', update, false); + ta.addEventListener('autosize:update', update, false); + ta.style.overflowX = 'hidden'; + ta.style.wordWrap = 'break-word'; + + map.set(ta, { + destroy: destroy, + update: update + }); + + init(); + } + + function destroy(ta) { + var methods = map.get(ta); + if (methods) { + methods.destroy(); + } + } + + function update(ta) { + var methods = map.get(ta); + if (methods) { + methods.update(); + } + } + + var autosize = null; + + // Do nothing in Node.js environment and IE8 (or lower) + if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') { + autosize = function autosize(el) { + return el; + }; + autosize.destroy = function (el) { + return el; + }; + autosize.update = function (el) { + return el; + }; + } else { + autosize = function autosize(el, options) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], function (x) { + return assign(x, options); + }); + } + return el; + }; + autosize.destroy = function (el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], destroy); + } + return el; + }; + autosize.update = function (el) { + if (el) { + Array.prototype.forEach.call(el.length ? el : [el], update); + } + return el; + }; + } + + exports.default = autosize; + module.exports = exports['default']; +}); + +/***/ }), + +/***/ 117: +/***/ (function(module, exports, __webpack_require__) { + +// Load in dependencies +var computedStyle = __webpack_require__(118); + +/** + * Calculate the `line-height` of a given node + * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM. + * @returns {Number} `line-height` of the element in pixels + */ +function lineHeight(node) { + // Grab the line-height via style + var lnHeightStr = computedStyle(node, 'line-height'); + var lnHeight = parseFloat(lnHeightStr, 10); + + // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em') + if (lnHeightStr === lnHeight + '') { + // Save the old lineHeight style and update the em unit to the element + var _lnHeightStyle = node.style.lineHeight; + node.style.lineHeight = lnHeightStr + 'em'; + + // Calculate the em based height + lnHeightStr = computedStyle(node, 'line-height'); + lnHeight = parseFloat(lnHeightStr, 10); + + // Revert the lineHeight style + if (_lnHeightStyle) { + node.style.lineHeight = _lnHeightStyle; + } else { + delete node.style.lineHeight; + } + } + + // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt) + // DEV: `em` units are converted to `pt` in IE6 + // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length + if (lnHeightStr.indexOf('pt') !== -1) { + lnHeight *= 4; + lnHeight /= 3; + // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm) + } else if (lnHeightStr.indexOf('mm') !== -1) { + lnHeight *= 96; + lnHeight /= 25.4; + // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm) + } else if (lnHeightStr.indexOf('cm') !== -1) { + lnHeight *= 96; + lnHeight /= 2.54; + // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in) + } else if (lnHeightStr.indexOf('in') !== -1) { + lnHeight *= 96; + // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc) + } else if (lnHeightStr.indexOf('pc') !== -1) { + lnHeight *= 16; + } + + // Continue our computation + lnHeight = Math.round(lnHeight); + + // If the line-height is "normal", calculate by font-size + if (lnHeightStr === 'normal') { + // Create a temporary node + var nodeName = node.nodeName; + var _node = document.createElement(nodeName); + _node.innerHTML = ' '; + + // If we have a text area, reset it to only 1 row + // https://github.com/twolfson/line-height/issues/4 + if (nodeName.toUpperCase() === 'TEXTAREA') { + _node.setAttribute('rows', '1'); + } + + // Set the font-size of the element + var fontSizeStr = computedStyle(node, 'font-size'); + _node.style.fontSize = fontSizeStr; + + // Remove default padding/border which can affect offset height + // https://github.com/twolfson/line-height/issues/4 + // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight + _node.style.padding = '0px'; + _node.style.border = '0px'; + + // Append it to the body + var body = document.body; + body.appendChild(_node); + + // Assume the line height of the element is the height + var height = _node.offsetHeight; + lnHeight = height; + + // Remove our child from the DOM + body.removeChild(_node); + } + + // Return the calculated height + return lnHeight; +} + +// Export lineHeight +module.exports = lineHeight; + + +/***/ }), + +/***/ 118: +/***/ (function(module, exports) { + +// This code has been refactored for 140 bytes +// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js +var computedStyle = function (el, prop, getComputedStyle) { + getComputedStyle = window.getComputedStyle; + + // In one fell swoop + return ( + // If we have getComputedStyle + getComputedStyle ? + // Query it + // TODO: From CSS-Query notes, we might need (node, null) for FF + getComputedStyle(el) : + + // Otherwise, we are in IE and use currentStyle + el.currentStyle + )[ + // Switch to camelCase for CSSOM + // DEV: Grabbed from jQuery + // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194 + // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597 + prop.replace(/-(\w)/gi, function (word, letter) { + return letter.toUpperCase(); + }) + ]; +}; + +module.exports = computedStyle; + + +/***/ }), + +/***/ 12: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; }); +function _classCallCheck(instance, Constructor) { + if (!(instance instanceof Constructor)) { + throw new TypeError("Cannot call a class as a function"); + } +} + +/***/ }), + +/***/ 13: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; }); +/* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(31); +/* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5); + + +function _possibleConstructorReturn(self, call) { + if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) { + return call; + } + + return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self); +} + +/***/ }), + +/***/ 14: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; }); +function _getPrototypeOf(o) { + _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { + return o.__proto__ || Object.getPrototypeOf(o); + }; + return _getPrototypeOf(o); +} + +/***/ }), + +/***/ 142: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["notices"]; }()); + +/***/ }), + +/***/ 15: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js +function _setPrototypeOf(o, p) { + _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { + o.__proto__ = p; + return o; + }; + + return _setPrototypeOf(o, p); +} +// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _inherits; }); + +function _inherits(subClass, superClass) { + if (typeof superClass !== "function" && superClass !== null) { + throw new TypeError("Super expression must either be null or a function"); + } + + subClass.prototype = Object.create(superClass && superClass.prototype, { + constructor: { + value: subClass, + writable: true, + configurable: true + } + }); + if (superClass) _setPrototypeOf(subClass, superClass); +} + +/***/ }), + +/***/ 16: +/***/ (function(module, exports, __webpack_require__) { + +var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*! + Copyright (c) 2017 Jed Watson. + Licensed under the MIT License (MIT), see + http://jedwatson.github.io/classnames +*/ +/* global define */ + +(function () { + 'use strict'; + + var hasOwn = {}.hasOwnProperty; + + function classNames () { + var classes = []; + + for (var i = 0; i < arguments.length; i++) { + var arg = arguments[i]; + if (!arg) continue; + + var argType = typeof arg; + + if (argType === 'string' || argType === 'number') { + classes.push(arg); + } else if (Array.isArray(arg) && arg.length) { + var inner = classNames.apply(null, arg); + if (inner) { + classes.push(inner); + } + } else if (argType === 'object') { + for (var key in arg) { + if (hasOwn.call(arg, key) && arg[key]) { + classes.push(key); + } + } + } + } + + return classes.join(' '); + } + + if ( true && module.exports) { + classNames.default = classNames; + module.exports = classNames; + } else if (true) { + // register as 'classnames', consistent with npm package name + !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () { + return classNames; + }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__), + __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__)); + } else {} +}()); + + +/***/ }), + +/***/ 17: +/***/ (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__(30); + +// 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(); +} + +/***/ }), + +/***/ 18: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _extends; }); +function _extends() { + _extends = Object.assign || function (target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i]; + + for (var key in source) { + if (Object.prototype.hasOwnProperty.call(source, key)) { + target[key] = source[key]; + } + } + } + + return target; + }; + + return _extends.apply(this, arguments); +} + +/***/ }), + +/***/ 19: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["keycodes"]; }()); + +/***/ }), + +/***/ 2: +/***/ (function(module, exports) { + +(function() { module.exports = this["lodash"]; }()); + +/***/ }), + +/***/ 20: +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(47); + + +/***/ }), + +/***/ 21: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js +function _objectWithoutPropertiesLoose(source, excluded) { + if (source == null) return {}; + var target = {}; + var sourceKeys = Object.keys(source); + var key, i; + + for (i = 0; i < sourceKeys.length; i++) { + key = sourceKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + target[key] = source[key]; + } + + return target; +} +// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; }); + +function _objectWithoutProperties(source, excluded) { + if (source == null) return {}; + var target = _objectWithoutPropertiesLoose(source, excluded); + var key, i; + + if (Object.getOwnPropertySymbols) { + var sourceSymbolKeys = Object.getOwnPropertySymbols(source); + + for (i = 0; i < sourceSymbolKeys.length; i++) { + key = sourceSymbolKeys[i]; + if (excluded.indexOf(key) >= 0) continue; + if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; + target[key] = source[key]; + } + } + + return target; +} + +/***/ }), + +/***/ 22: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["richText"]; }()); + +/***/ }), + +/***/ 23: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js +var arrayWithHoles = __webpack_require__(38); + +// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js +function _iterableToArrayLimit(arr, i) { + 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__(39); + +// 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 */])(); +} + +/***/ }), + +/***/ 26: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["url"]; }()); + +/***/ }), + +/***/ 27: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["hooks"]; }()); + +/***/ }), + +/***/ 28: +/***/ (function(module, exports) { + +(function() { module.exports = this["React"]; }()); + +/***/ }), + +/***/ 3: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["components"]; }()); + +/***/ }), + +/***/ 30: +/***/ (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); +} + +/***/ }), + +/***/ 31: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; }); +function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); } + +function _typeof(obj) { + if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") { + _typeof = function _typeof(obj) { + return _typeof2(obj); + }; + } else { + _typeof = function _typeof(obj) { + return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj); + }; + } + + return _typeof(obj); +} + +/***/ }), + +/***/ 32: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["dataControls"]; }()); + +/***/ }), + +/***/ 325: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; + +function _objectWithoutProperties(obj, keys) { var target = {}; for (var i in obj) { if (keys.indexOf(i) >= 0) continue; if (!Object.prototype.hasOwnProperty.call(obj, i)) continue; target[i] = obj[i]; } return target; } + +var BEGIN = 'BEGIN'; +var COMMIT = 'COMMIT'; +var REVERT = 'REVERT'; +// Array({transactionID: string or null, beforeState: {object}, action: {object}} +var INITIAL_OPTIMIST = []; + +module.exports = optimist; +module.exports.BEGIN = BEGIN; +module.exports.COMMIT = COMMIT; +module.exports.REVERT = REVERT; +function optimist(fn) { + function beginReducer(state, action) { + var _separateState = separateState(state); + + var optimist = _separateState.optimist; + var innerState = _separateState.innerState; + + optimist = optimist.concat([{ beforeState: innerState, action: action }]); + innerState = fn(innerState, action); + validateState(innerState, action); + return _extends({ optimist: optimist }, innerState); + } + function commitReducer(state, action) { + var _separateState2 = separateState(state); + + var optimist = _separateState2.optimist; + var innerState = _separateState2.innerState; + + var newOptimist = [], + started = false, + committed = false; + optimist.forEach(function (entry) { + if (started) { + if (entry.beforeState && matchesTransaction(entry.action, action.optimist.id)) { + committed = true; + newOptimist.push({ action: entry.action }); + } else { + newOptimist.push(entry); + } + } else if (entry.beforeState && !matchesTransaction(entry.action, action.optimist.id)) { + started = true; + newOptimist.push(entry); + } else if (entry.beforeState && matchesTransaction(entry.action, action.optimist.id)) { + committed = true; + } + }); + if (!committed) { + console.error('Cannot commit transaction with id "' + action.optimist.id + '" because it does not exist'); + } + optimist = newOptimist; + return baseReducer(optimist, innerState, action); + } + function revertReducer(state, action) { + var _separateState3 = separateState(state); + + var optimist = _separateState3.optimist; + var innerState = _separateState3.innerState; + + var newOptimist = [], + started = false, + gotInitialState = false, + currentState = innerState; + optimist.forEach(function (entry) { + if (entry.beforeState && matchesTransaction(entry.action, action.optimist.id)) { + currentState = entry.beforeState; + gotInitialState = true; + } + if (!matchesTransaction(entry.action, action.optimist.id)) { + if (entry.beforeState) { + started = true; + } + if (started) { + if (gotInitialState && entry.beforeState) { + newOptimist.push({ + beforeState: currentState, + action: entry.action + }); + } else { + newOptimist.push(entry); + } + } + if (gotInitialState) { + currentState = fn(currentState, entry.action); + validateState(innerState, action); + } + } + }); + if (!gotInitialState) { + console.error('Cannot revert transaction with id "' + action.optimist.id + '" because it does not exist'); + } + optimist = newOptimist; + return baseReducer(optimist, currentState, action); + } + function baseReducer(optimist, innerState, action) { + if (optimist.length) { + optimist = optimist.concat([{ action: action }]); + } + innerState = fn(innerState, action); + validateState(innerState, action); + return _extends({ optimist: optimist }, innerState); + } + return function (state, action) { + if (action.optimist) { + switch (action.optimist.type) { + case BEGIN: + return beginReducer(state, action); + case COMMIT: + return commitReducer(state, action); + case REVERT: + return revertReducer(state, action); + } + } + + var _separateState4 = separateState(state); + + var optimist = _separateState4.optimist; + var innerState = _separateState4.innerState; + + if (state && !optimist.length) { + var nextState = fn(innerState, action); + if (nextState === innerState) { + return state; + } + validateState(nextState, action); + return _extends({ optimist: optimist }, nextState); + } + return baseReducer(optimist, innerState, action); + }; +} + +function matchesTransaction(action, id) { + return action.optimist && action.optimist.id === id; +} + +function validateState(newState, action) { + if (!newState || typeof newState !== 'object' || Array.isArray(newState)) { + throw new TypeError('Error while handling "' + action.type + '": Optimist requires that state is always a plain object.'); + } +} + +function separateState(state) { + if (!state) { + return { optimist: INITIAL_OPTIMIST, innerState: state }; + } else { + var _state$optimist = state.optimist; + + var _optimist = _state$optimist === undefined ? INITIAL_OPTIMIST : _state$optimist; + + var innerState = _objectWithoutProperties(state, ['optimist']); + + return { optimist: _optimist, innerState: innerState }; + } +} + +/***/ }), + +/***/ 33: +/***/ (function(module, exports, __webpack_require__) { + +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +if (false) { var throwOnDirectAccess, ReactIs; } else { + // By explicitly using `prop-types` you are opting into new production behavior. + // http://fb.me/prop-types-in-prod + module.exports = __webpack_require__(87)(); +} + + +/***/ }), + +/***/ 34: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["apiFetch"]; }()); + +/***/ }), + +/***/ 343: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +__webpack_require__.r(__webpack_exports__); +var meta_namespaceObject = {}; +__webpack_require__.r(meta_namespaceObject); +__webpack_require__.d(meta_namespaceObject, "getDependencies", function() { return getDependencies; }); +__webpack_require__.d(meta_namespaceObject, "apply", function() { return apply; }); +__webpack_require__.d(meta_namespaceObject, "update", function() { return update; }); +var block_sources_namespaceObject = {}; +__webpack_require__.r(block_sources_namespaceObject); +__webpack_require__.d(block_sources_namespaceObject, "meta", function() { return meta_namespaceObject; }); +var actions_namespaceObject = {}; +__webpack_require__.r(actions_namespaceObject); +__webpack_require__.d(actions_namespaceObject, "setupEditor", function() { return setupEditor; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalTearDownEditor", function() { return __experimentalTearDownEditor; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalSubscribeSources", function() { return __experimentalSubscribeSources; }); +__webpack_require__.d(actions_namespaceObject, "resetPost", function() { return resetPost; }); +__webpack_require__.d(actions_namespaceObject, "resetAutosave", function() { return resetAutosave; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalRequestPostUpdateStart", function() { return __experimentalRequestPostUpdateStart; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalRequestPostUpdateFinish", function() { return __experimentalRequestPostUpdateFinish; }); +__webpack_require__.d(actions_namespaceObject, "updatePost", function() { return updatePost; }); +__webpack_require__.d(actions_namespaceObject, "setupEditorState", function() { return setupEditorState; }); +__webpack_require__.d(actions_namespaceObject, "editPost", function() { return actions_editPost; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalOptimisticUpdatePost", function() { return __experimentalOptimisticUpdatePost; }); +__webpack_require__.d(actions_namespaceObject, "savePost", function() { return savePost; }); +__webpack_require__.d(actions_namespaceObject, "refreshPost", function() { return refreshPost; }); +__webpack_require__.d(actions_namespaceObject, "trashPost", function() { return trashPost; }); +__webpack_require__.d(actions_namespaceObject, "autosave", function() { return actions_autosave; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalLocalAutosave", function() { return actions_experimentalLocalAutosave; }); +__webpack_require__.d(actions_namespaceObject, "redo", function() { return actions_redo; }); +__webpack_require__.d(actions_namespaceObject, "undo", function() { return actions_undo; }); +__webpack_require__.d(actions_namespaceObject, "createUndoLevel", function() { return createUndoLevel; }); +__webpack_require__.d(actions_namespaceObject, "updatePostLock", function() { return updatePostLock; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalFetchReusableBlocks", function() { return __experimentalFetchReusableBlocks; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalReceiveReusableBlocks", function() { return __experimentalReceiveReusableBlocks; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalSaveReusableBlock", function() { return __experimentalSaveReusableBlock; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalDeleteReusableBlock", function() { return __experimentalDeleteReusableBlock; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalUpdateReusableBlock", function() { return __experimentalUpdateReusableBlock; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalConvertBlockToStatic", function() { return __experimentalConvertBlockToStatic; }); +__webpack_require__.d(actions_namespaceObject, "__experimentalConvertBlockToReusable", function() { return __experimentalConvertBlockToReusable; }); +__webpack_require__.d(actions_namespaceObject, "enablePublishSidebar", function() { return enablePublishSidebar; }); +__webpack_require__.d(actions_namespaceObject, "disablePublishSidebar", function() { return disablePublishSidebar; }); +__webpack_require__.d(actions_namespaceObject, "lockPostSaving", function() { return lockPostSaving; }); +__webpack_require__.d(actions_namespaceObject, "unlockPostSaving", function() { return unlockPostSaving; }); +__webpack_require__.d(actions_namespaceObject, "resetEditorBlocks", function() { return actions_resetEditorBlocks; }); +__webpack_require__.d(actions_namespaceObject, "updateEditorSettings", function() { return updateEditorSettings; }); +__webpack_require__.d(actions_namespaceObject, "resetBlocks", function() { return resetBlocks; }); +__webpack_require__.d(actions_namespaceObject, "receiveBlocks", function() { return receiveBlocks; }); +__webpack_require__.d(actions_namespaceObject, "updateBlock", function() { return updateBlock; }); +__webpack_require__.d(actions_namespaceObject, "updateBlockAttributes", function() { return updateBlockAttributes; }); +__webpack_require__.d(actions_namespaceObject, "selectBlock", function() { return selectBlock; }); +__webpack_require__.d(actions_namespaceObject, "startMultiSelect", function() { return startMultiSelect; }); +__webpack_require__.d(actions_namespaceObject, "stopMultiSelect", function() { return stopMultiSelect; }); +__webpack_require__.d(actions_namespaceObject, "multiSelect", function() { return multiSelect; }); +__webpack_require__.d(actions_namespaceObject, "clearSelectedBlock", function() { return clearSelectedBlock; }); +__webpack_require__.d(actions_namespaceObject, "toggleSelection", function() { return toggleSelection; }); +__webpack_require__.d(actions_namespaceObject, "replaceBlocks", function() { return actions_replaceBlocks; }); +__webpack_require__.d(actions_namespaceObject, "replaceBlock", function() { return replaceBlock; }); +__webpack_require__.d(actions_namespaceObject, "moveBlocksDown", function() { return moveBlocksDown; }); +__webpack_require__.d(actions_namespaceObject, "moveBlocksUp", function() { return moveBlocksUp; }); +__webpack_require__.d(actions_namespaceObject, "moveBlockToPosition", function() { return moveBlockToPosition; }); +__webpack_require__.d(actions_namespaceObject, "insertBlock", function() { return insertBlock; }); +__webpack_require__.d(actions_namespaceObject, "insertBlocks", function() { return insertBlocks; }); +__webpack_require__.d(actions_namespaceObject, "showInsertionPoint", function() { return showInsertionPoint; }); +__webpack_require__.d(actions_namespaceObject, "hideInsertionPoint", function() { return hideInsertionPoint; }); +__webpack_require__.d(actions_namespaceObject, "setTemplateValidity", function() { return setTemplateValidity; }); +__webpack_require__.d(actions_namespaceObject, "synchronizeTemplate", function() { return synchronizeTemplate; }); +__webpack_require__.d(actions_namespaceObject, "mergeBlocks", function() { return mergeBlocks; }); +__webpack_require__.d(actions_namespaceObject, "removeBlocks", function() { return actions_removeBlocks; }); +__webpack_require__.d(actions_namespaceObject, "removeBlock", function() { return removeBlock; }); +__webpack_require__.d(actions_namespaceObject, "toggleBlockMode", function() { return toggleBlockMode; }); +__webpack_require__.d(actions_namespaceObject, "startTyping", function() { return startTyping; }); +__webpack_require__.d(actions_namespaceObject, "stopTyping", function() { return stopTyping; }); +__webpack_require__.d(actions_namespaceObject, "enterFormattedText", function() { return enterFormattedText; }); +__webpack_require__.d(actions_namespaceObject, "exitFormattedText", function() { return exitFormattedText; }); +__webpack_require__.d(actions_namespaceObject, "insertDefaultBlock", function() { return insertDefaultBlock; }); +__webpack_require__.d(actions_namespaceObject, "updateBlockListSettings", function() { return updateBlockListSettings; }); +var selectors_namespaceObject = {}; +__webpack_require__.r(selectors_namespaceObject); +__webpack_require__.d(selectors_namespaceObject, "hasEditorUndo", function() { return hasEditorUndo; }); +__webpack_require__.d(selectors_namespaceObject, "hasEditorRedo", function() { return hasEditorRedo; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostNew", function() { return selectors_isEditedPostNew; }); +__webpack_require__.d(selectors_namespaceObject, "hasChangedContent", function() { return hasChangedContent; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostDirty", function() { return selectors_isEditedPostDirty; }); +__webpack_require__.d(selectors_namespaceObject, "isCleanNewPost", function() { return selectors_isCleanNewPost; }); +__webpack_require__.d(selectors_namespaceObject, "getCurrentPost", function() { return selectors_getCurrentPost; }); +__webpack_require__.d(selectors_namespaceObject, "getCurrentPostType", function() { return selectors_getCurrentPostType; }); +__webpack_require__.d(selectors_namespaceObject, "getCurrentPostId", function() { return selectors_getCurrentPostId; }); +__webpack_require__.d(selectors_namespaceObject, "getCurrentPostRevisionsCount", function() { return getCurrentPostRevisionsCount; }); +__webpack_require__.d(selectors_namespaceObject, "getCurrentPostLastRevisionId", function() { return getCurrentPostLastRevisionId; }); +__webpack_require__.d(selectors_namespaceObject, "getPostEdits", function() { return getPostEdits; }); +__webpack_require__.d(selectors_namespaceObject, "getCurrentPostAttribute", function() { return selectors_getCurrentPostAttribute; }); +__webpack_require__.d(selectors_namespaceObject, "getEditedPostAttribute", function() { return selectors_getEditedPostAttribute; }); +__webpack_require__.d(selectors_namespaceObject, "getAutosaveAttribute", function() { return getAutosaveAttribute; }); +__webpack_require__.d(selectors_namespaceObject, "getEditedPostVisibility", function() { return selectors_getEditedPostVisibility; }); +__webpack_require__.d(selectors_namespaceObject, "isCurrentPostPending", function() { return isCurrentPostPending; }); +__webpack_require__.d(selectors_namespaceObject, "isCurrentPostPublished", function() { return selectors_isCurrentPostPublished; }); +__webpack_require__.d(selectors_namespaceObject, "isCurrentPostScheduled", function() { return selectors_isCurrentPostScheduled; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostPublishable", function() { return selectors_isEditedPostPublishable; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostSaveable", function() { return selectors_isEditedPostSaveable; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostEmpty", function() { return isEditedPostEmpty; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostAutosaveable", function() { return selectors_isEditedPostAutosaveable; }); +__webpack_require__.d(selectors_namespaceObject, "getAutosave", function() { return getAutosave; }); +__webpack_require__.d(selectors_namespaceObject, "hasAutosave", function() { return hasAutosave; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostBeingScheduled", function() { return selectors_isEditedPostBeingScheduled; }); +__webpack_require__.d(selectors_namespaceObject, "isEditedPostDateFloating", function() { return isEditedPostDateFloating; }); +__webpack_require__.d(selectors_namespaceObject, "isSavingPost", function() { return selectors_isSavingPost; }); +__webpack_require__.d(selectors_namespaceObject, "didPostSaveRequestSucceed", function() { return didPostSaveRequestSucceed; }); +__webpack_require__.d(selectors_namespaceObject, "didPostSaveRequestFail", function() { return didPostSaveRequestFail; }); +__webpack_require__.d(selectors_namespaceObject, "isAutosavingPost", function() { return selectors_isAutosavingPost; }); +__webpack_require__.d(selectors_namespaceObject, "isPreviewingPost", function() { return isPreviewingPost; }); +__webpack_require__.d(selectors_namespaceObject, "getEditedPostPreviewLink", function() { return selectors_getEditedPostPreviewLink; }); +__webpack_require__.d(selectors_namespaceObject, "getSuggestedPostFormat", function() { return selectors_getSuggestedPostFormat; }); +__webpack_require__.d(selectors_namespaceObject, "getBlocksForSerialization", function() { return getBlocksForSerialization; }); +__webpack_require__.d(selectors_namespaceObject, "getEditedPostContent", function() { return getEditedPostContent; }); +__webpack_require__.d(selectors_namespaceObject, "__experimentalGetReusableBlock", function() { return __experimentalGetReusableBlock; }); +__webpack_require__.d(selectors_namespaceObject, "__experimentalIsSavingReusableBlock", function() { return __experimentalIsSavingReusableBlock; }); +__webpack_require__.d(selectors_namespaceObject, "__experimentalIsFetchingReusableBlock", function() { return __experimentalIsFetchingReusableBlock; }); +__webpack_require__.d(selectors_namespaceObject, "__experimentalGetReusableBlocks", function() { return selectors_experimentalGetReusableBlocks; }); +__webpack_require__.d(selectors_namespaceObject, "getStateBeforeOptimisticTransaction", function() { return getStateBeforeOptimisticTransaction; }); +__webpack_require__.d(selectors_namespaceObject, "isPublishingPost", function() { return selectors_isPublishingPost; }); +__webpack_require__.d(selectors_namespaceObject, "isPermalinkEditable", function() { return selectors_isPermalinkEditable; }); +__webpack_require__.d(selectors_namespaceObject, "getPermalink", function() { return getPermalink; }); +__webpack_require__.d(selectors_namespaceObject, "getPermalinkParts", function() { return selectors_getPermalinkParts; }); +__webpack_require__.d(selectors_namespaceObject, "inSomeHistory", function() { return inSomeHistory; }); +__webpack_require__.d(selectors_namespaceObject, "isPostLocked", function() { return isPostLocked; }); +__webpack_require__.d(selectors_namespaceObject, "isPostSavingLocked", function() { return selectors_isPostSavingLocked; }); +__webpack_require__.d(selectors_namespaceObject, "isPostAutosavingLocked", function() { return isPostAutosavingLocked; }); +__webpack_require__.d(selectors_namespaceObject, "isPostLockTakeover", function() { return isPostLockTakeover; }); +__webpack_require__.d(selectors_namespaceObject, "getPostLockUser", function() { return getPostLockUser; }); +__webpack_require__.d(selectors_namespaceObject, "getActivePostLock", function() { return getActivePostLock; }); +__webpack_require__.d(selectors_namespaceObject, "canUserUseUnfilteredHTML", function() { return selectors_canUserUseUnfilteredHTML; }); +__webpack_require__.d(selectors_namespaceObject, "isPublishSidebarEnabled", function() { return selectors_isPublishSidebarEnabled; }); +__webpack_require__.d(selectors_namespaceObject, "getEditorBlocks", function() { return selectors_getEditorBlocks; }); +__webpack_require__.d(selectors_namespaceObject, "__unstableIsEditorReady", function() { return __unstableIsEditorReady; }); +__webpack_require__.d(selectors_namespaceObject, "getEditorSettings", function() { return selectors_getEditorSettings; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockName", function() { return selectors_getBlockName; }); +__webpack_require__.d(selectors_namespaceObject, "isBlockValid", function() { return isBlockValid; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockAttributes", function() { return getBlockAttributes; }); +__webpack_require__.d(selectors_namespaceObject, "getBlock", function() { return selectors_getBlock; }); +__webpack_require__.d(selectors_namespaceObject, "getBlocks", function() { return selectors_getBlocks; }); +__webpack_require__.d(selectors_namespaceObject, "__unstableGetBlockWithoutInnerBlocks", function() { return __unstableGetBlockWithoutInnerBlocks; }); +__webpack_require__.d(selectors_namespaceObject, "getClientIdsOfDescendants", function() { return getClientIdsOfDescendants; }); +__webpack_require__.d(selectors_namespaceObject, "getClientIdsWithDescendants", function() { return getClientIdsWithDescendants; }); +__webpack_require__.d(selectors_namespaceObject, "getGlobalBlockCount", function() { return getGlobalBlockCount; }); +__webpack_require__.d(selectors_namespaceObject, "getBlocksByClientId", function() { return selectors_getBlocksByClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockCount", function() { return getBlockCount; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockSelectionStart", function() { return getBlockSelectionStart; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockSelectionEnd", function() { return getBlockSelectionEnd; }); +__webpack_require__.d(selectors_namespaceObject, "getSelectedBlockCount", function() { return getSelectedBlockCount; }); +__webpack_require__.d(selectors_namespaceObject, "hasSelectedBlock", function() { return hasSelectedBlock; }); +__webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientId", function() { return selectors_getSelectedBlockClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getSelectedBlock", function() { return getSelectedBlock; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockRootClientId", function() { return getBlockRootClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockHierarchyRootClientId", function() { return getBlockHierarchyRootClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getAdjacentBlockClientId", function() { return getAdjacentBlockClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getPreviousBlockClientId", function() { return getPreviousBlockClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getNextBlockClientId", function() { return getNextBlockClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getSelectedBlocksInitialCaretPosition", function() { return getSelectedBlocksInitialCaretPosition; }); +__webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlockClientIds", function() { return getMultiSelectedBlockClientIds; }); +__webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocks", function() { return getMultiSelectedBlocks; }); +__webpack_require__.d(selectors_namespaceObject, "getFirstMultiSelectedBlockClientId", function() { return getFirstMultiSelectedBlockClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getLastMultiSelectedBlockClientId", function() { return getLastMultiSelectedBlockClientId; }); +__webpack_require__.d(selectors_namespaceObject, "isFirstMultiSelectedBlock", function() { return isFirstMultiSelectedBlock; }); +__webpack_require__.d(selectors_namespaceObject, "isBlockMultiSelected", function() { return isBlockMultiSelected; }); +__webpack_require__.d(selectors_namespaceObject, "isAncestorMultiSelected", function() { return isAncestorMultiSelected; }); +__webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksStartClientId", function() { return getMultiSelectedBlocksStartClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getMultiSelectedBlocksEndClientId", function() { return getMultiSelectedBlocksEndClientId; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockOrder", function() { return getBlockOrder; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockIndex", function() { return getBlockIndex; }); +__webpack_require__.d(selectors_namespaceObject, "isBlockSelected", function() { return isBlockSelected; }); +__webpack_require__.d(selectors_namespaceObject, "hasSelectedInnerBlock", function() { return hasSelectedInnerBlock; }); +__webpack_require__.d(selectors_namespaceObject, "isBlockWithinSelection", function() { return isBlockWithinSelection; }); +__webpack_require__.d(selectors_namespaceObject, "hasMultiSelection", function() { return hasMultiSelection; }); +__webpack_require__.d(selectors_namespaceObject, "isMultiSelecting", function() { return isMultiSelecting; }); +__webpack_require__.d(selectors_namespaceObject, "isSelectionEnabled", function() { return isSelectionEnabled; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockMode", function() { return getBlockMode; }); +__webpack_require__.d(selectors_namespaceObject, "isTyping", function() { return isTyping; }); +__webpack_require__.d(selectors_namespaceObject, "isCaretWithinFormattedText", function() { return isCaretWithinFormattedText; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockInsertionPoint", function() { return getBlockInsertionPoint; }); +__webpack_require__.d(selectors_namespaceObject, "isBlockInsertionPointVisible", function() { return isBlockInsertionPointVisible; }); +__webpack_require__.d(selectors_namespaceObject, "isValidTemplate", function() { return isValidTemplate; }); +__webpack_require__.d(selectors_namespaceObject, "getTemplate", function() { return getTemplate; }); +__webpack_require__.d(selectors_namespaceObject, "getTemplateLock", function() { return getTemplateLock; }); +__webpack_require__.d(selectors_namespaceObject, "canInsertBlockType", function() { return selectors_canInsertBlockType; }); +__webpack_require__.d(selectors_namespaceObject, "getInserterItems", function() { return selectors_getInserterItems; }); +__webpack_require__.d(selectors_namespaceObject, "hasInserterItems", function() { return hasInserterItems; }); +__webpack_require__.d(selectors_namespaceObject, "getBlockListSettings", function() { return getBlockListSettings; }); +var store_selectors_namespaceObject = {}; +__webpack_require__.r(store_selectors_namespaceObject); +__webpack_require__.d(store_selectors_namespaceObject, "isRequestingDownloadableBlocks", function() { return isRequestingDownloadableBlocks; }); +__webpack_require__.d(store_selectors_namespaceObject, "getDownloadableBlocks", function() { return selectors_getDownloadableBlocks; }); +__webpack_require__.d(store_selectors_namespaceObject, "hasInstallBlocksPermission", function() { return selectors_hasInstallBlocksPermission; }); +__webpack_require__.d(store_selectors_namespaceObject, "getInstalledBlockTypes", function() { return selectors_getInstalledBlockTypes; }); +var store_actions_namespaceObject = {}; +__webpack_require__.r(store_actions_namespaceObject); +__webpack_require__.d(store_actions_namespaceObject, "fetchDownloadableBlocks", function() { return fetchDownloadableBlocks; }); +__webpack_require__.d(store_actions_namespaceObject, "receiveDownloadableBlocks", function() { return receiveDownloadableBlocks; }); +__webpack_require__.d(store_actions_namespaceObject, "setInstallBlocksPermission", function() { return setInstallBlocksPermission; }); +__webpack_require__.d(store_actions_namespaceObject, "downloadBlock", function() { return actions_downloadBlock; }); +__webpack_require__.d(store_actions_namespaceObject, "installBlock", function() { return actions_installBlock; }); +__webpack_require__.d(store_actions_namespaceObject, "uninstallBlock", function() { return uninstallBlock; }); +__webpack_require__.d(store_actions_namespaceObject, "addInstalledBlockType", function() { return addInstalledBlockType; }); +__webpack_require__.d(store_actions_namespaceObject, "removeInstalledBlockType", function() { return removeInstalledBlockType; }); + +// EXTERNAL MODULE: external {"this":["wp","blockEditor"]} +var external_this_wp_blockEditor_ = __webpack_require__(6); + +// EXTERNAL MODULE: external {"this":["wp","blocks"]} +var external_this_wp_blocks_ = __webpack_require__(9); + +// EXTERNAL MODULE: external {"this":["wp","coreData"]} +var external_this_wp_coreData_ = __webpack_require__(89); + +// EXTERNAL MODULE: external {"this":["wp","notices"]} +var external_this_wp_notices_ = __webpack_require__(142); + +// EXTERNAL MODULE: external {"this":["wp","nux"]} +var external_this_wp_nux_ = __webpack_require__(61); + +// EXTERNAL MODULE: external {"this":["wp","richText"]} +var external_this_wp_richText_ = __webpack_require__(22); + +// EXTERNAL MODULE: external {"this":["wp","viewport"]} +var external_this_wp_viewport_ = __webpack_require__(42); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread.js +var objectSpread = __webpack_require__(7); + +// EXTERNAL MODULE: external {"this":["wp","data"]} +var external_this_wp_data_ = __webpack_require__(4); + +// EXTERNAL MODULE: external {"this":["wp","dataControls"]} +var external_this_wp_dataControls_ = __webpack_require__(32); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js +var defineProperty = __webpack_require__(10); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js +var esm_typeof = __webpack_require__(31); + +// EXTERNAL MODULE: ./node_modules/redux-optimist/index.js +var redux_optimist = __webpack_require__(83); +var redux_optimist_default = /*#__PURE__*/__webpack_require__.n(redux_optimist); + +// EXTERNAL MODULE: external "lodash" +var external_lodash_ = __webpack_require__(2); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/defaults.js + + +/** + * WordPress dependencies + */ + +var PREFERENCES_DEFAULTS = { + insertUsage: {}, + // Should be kept for backward compatibility, see: https://github.com/WordPress/gutenberg/issues/14580. + isPublishSidebarEnabled: true +}; +/** + * The default post editor settings + * + * allowedBlockTypes boolean|Array Allowed block types + * richEditingEnabled boolean Whether rich editing is enabled or not + * codeEditingEnabled boolean Whether code editing is enabled or not + * enableCustomFields boolean Whether the WordPress custom fields are enabled or not + * autosaveInterval number Autosave Interval + * availableTemplates array? The available post templates + * disablePostFormats boolean Whether or not the post formats are disabled + * allowedMimeTypes array? List of allowed mime types and file extensions + * maxUploadFileSize number Maximum upload file size + */ + +var EDITOR_SETTINGS_DEFAULTS = Object(objectSpread["a" /* default */])({}, external_this_wp_blockEditor_["SETTINGS_DEFAULTS"], { + richEditingEnabled: true, + codeEditingEnabled: true, + enableCustomFields: false +}); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/reducer.js + + + + +/** + * External dependencies + */ + + +/** + * WordPress dependencies + */ + + +/** + * Internal dependencies + */ + + +/** + * Returns a post attribute value, flattening nested rendered content using its + * raw value in place of its original object form. + * + * @param {*} value Original value. + * + * @return {*} Raw value. + */ + +function getPostRawValue(value) { + if (value && 'object' === Object(esm_typeof["a" /* default */])(value) && 'raw' in value) { + return value.raw; + } + + return value; +} +/** + * Returns true if the two object arguments have the same keys, or false + * otherwise. + * + * @param {Object} a First object. + * @param {Object} b Second object. + * + * @return {boolean} Whether the two objects have the same keys. + */ + +function hasSameKeys(a, b) { + return Object(external_lodash_["isEqual"])(Object(external_lodash_["keys"])(a), Object(external_lodash_["keys"])(b)); +} +/** + * Returns true if, given the currently dispatching action and the previously + * dispatched action, the two actions are editing the same post property, or + * false otherwise. + * + * @param {Object} action Currently dispatching action. + * @param {Object} previousAction Previously dispatched action. + * + * @return {boolean} Whether actions are updating the same post property. + */ + +function isUpdatingSamePostProperty(action, previousAction) { + return action.type === 'EDIT_POST' && hasSameKeys(action.edits, previousAction.edits); +} +/** + * Returns true if, given the currently dispatching action and the previously + * dispatched action, the two actions are modifying the same property such that + * undo history should be batched. + * + * @param {Object} action Currently dispatching action. + * @param {Object} previousAction Previously dispatched action. + * + * @return {boolean} Whether to overwrite present state. + */ + +function shouldOverwriteState(action, previousAction) { + if (action.type === 'RESET_EDITOR_BLOCKS') { + return !action.shouldCreateUndoLevel; + } + + if (!previousAction || action.type !== previousAction.type) { + return false; + } + + return isUpdatingSamePostProperty(action, previousAction); +} +function reducer_postId() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'SETUP_EDITOR_STATE': + case 'RESET_POST': + case 'UPDATE_POST': + return action.post.id; + } + + return state; +} +function reducer_postType() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'SETUP_EDITOR_STATE': + case 'RESET_POST': + case 'UPDATE_POST': + return action.post.type; + } + + return state; +} +/** + * Reducer returning whether the post blocks match the defined template or not. + * + * @param {Object} state Current state. + * @param {Object} action Dispatched action. + * + * @return {boolean} Updated state. + */ + +function reducer_template() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + isValid: true + }; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'SET_TEMPLATE_VALIDITY': + return Object(objectSpread["a" /* default */])({}, state, { + isValid: action.isValid + }); + } + + return state; +} +/** + * Reducer returning the user preferences. + * + * @param {Object} state Current state. + * @param {Object} action Dispatched action. + * + * @return {string} Updated state. + */ + +function preferences() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : PREFERENCES_DEFAULTS; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'ENABLE_PUBLISH_SIDEBAR': + return Object(objectSpread["a" /* default */])({}, state, { + isPublishSidebarEnabled: true + }); + + case 'DISABLE_PUBLISH_SIDEBAR': + return Object(objectSpread["a" /* default */])({}, state, { + isPublishSidebarEnabled: false + }); + } + + return state; +} +/** + * Reducer returning current network request state (whether a request to + * the WP REST API is in progress, successful, or failed). + * + * @param {Object} state Current state. + * @param {Object} action Dispatched action. + * + * @return {Object} Updated state. + */ + +function saving() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'REQUEST_POST_UPDATE_START': + case 'REQUEST_POST_UPDATE_FINISH': + return { + pending: action.type === 'REQUEST_POST_UPDATE_START', + options: action.options || {} + }; + } + + return state; +} +/** + * Post Lock State. + * + * @typedef {Object} PostLockState + * + * @property {boolean} isLocked Whether the post is locked. + * @property {?boolean} isTakeover Whether the post editing has been taken over. + * @property {?boolean} activePostLock Active post lock value. + * @property {?Object} user User that took over the post. + */ + +/** + * Reducer returning the post lock status. + * + * @param {PostLockState} state Current state. + * @param {Object} action Dispatched action. + * + * @return {PostLockState} Updated state. + */ + +function postLock() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : { + isLocked: false + }; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'UPDATE_POST_LOCK': + return action.lock; + } + + return state; +} +/** + * Post saving lock. + * + * When post saving is locked, the post cannot be published or updated. + * + * @param {PostSavingLockState} state Current state. + * @param {Object} action Dispatched action. + * + * @return {PostLockState} Updated state. + */ + +function postSavingLock() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'LOCK_POST_SAVING': + return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.lockName, true)); + + case 'UNLOCK_POST_SAVING': + return Object(external_lodash_["omit"])(state, action.lockName); + } + + return state; +} +/** + * Post autosaving lock. + * + * When post autosaving is locked, the post will not autosave. + * + * @param {PostAutosavingLockState} state Current state. + * @param {Object} action Dispatched action. + * + * @return {PostLockState} Updated state. + */ + +function postAutosavingLock() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'LOCK_POST_AUTOSAVING': + return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.lockName, true)); + + case 'UNLOCK_POST_AUTOSAVING': + return Object(external_lodash_["omit"])(state, action.lockName); + } + + return state; +} +var reducer_reusableBlocks = Object(external_this_wp_data_["combineReducers"])({ + data: function data() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'RECEIVE_REUSABLE_BLOCKS': + { + return Object(objectSpread["a" /* default */])({}, state, Object(external_lodash_["keyBy"])(action.results, 'id')); + } + + case 'UPDATE_REUSABLE_BLOCK': + { + var id = action.id, + changes = action.changes; + return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, id, Object(objectSpread["a" /* default */])({}, state[id], changes))); + } + + case 'SAVE_REUSABLE_BLOCK_SUCCESS': + { + var _id = action.id, + updatedId = action.updatedId; // If a temporary reusable block is saved, we swap the temporary id with the final one + + if (_id === updatedId) { + return state; + } + + var value = state[_id]; + return Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state, _id), Object(defineProperty["a" /* default */])({}, updatedId, Object(objectSpread["a" /* default */])({}, value, { + id: updatedId + }))); + } + + case 'REMOVE_REUSABLE_BLOCK': + { + var _id2 = action.id; + return Object(external_lodash_["omit"])(state, _id2); + } + } + + return state; + }, + isFetching: function isFetching() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'FETCH_REUSABLE_BLOCKS': + { + var id = action.id; + + if (!id) { + return state; + } + + return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, id, true)); + } + + case 'FETCH_REUSABLE_BLOCKS_SUCCESS': + case 'FETCH_REUSABLE_BLOCKS_FAILURE': + { + var _id3 = action.id; + return Object(external_lodash_["omit"])(state, _id3); + } + } + + return state; + }, + isSaving: function isSaving() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'SAVE_REUSABLE_BLOCK': + return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.id, true)); + + case 'SAVE_REUSABLE_BLOCK_SUCCESS': + case 'SAVE_REUSABLE_BLOCK_FAILURE': + { + var id = action.id; + return Object(external_lodash_["omit"])(state, id); + } + } + + return state; + } +}); +/** + * Reducer returning whether the editor is ready to be rendered. + * The editor is considered ready to be rendered once + * the post object is loaded properly and the initial blocks parsed. + * + * @param {boolean} state + * @param {Object} action + * + * @return {boolean} Updated state. + */ + +function reducer_isReady() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'SETUP_EDITOR_STATE': + return true; + + case 'TEAR_DOWN_EDITOR': + return false; + } + + return state; +} +/** + * Reducer returning the post editor setting. + * + * @param {Object} state Current state. + * @param {Object} action Dispatched action. + * + * @return {Object} Updated state. + */ + +function reducer_editorSettings() { + var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : EDITOR_SETTINGS_DEFAULTS; + var action = arguments.length > 1 ? arguments[1] : undefined; + + switch (action.type) { + case 'UPDATE_EDITOR_SETTINGS': + return Object(objectSpread["a" /* default */])({}, state, action.settings); + } + + return state; +} +/* harmony default export */ var reducer = (redux_optimist_default()(Object(external_this_wp_data_["combineReducers"])({ + postId: reducer_postId, + postType: reducer_postType, + preferences: preferences, + saving: saving, + postLock: postLock, + reusableBlocks: reducer_reusableBlocks, + template: reducer_template, + postSavingLock: postSavingLock, + isReady: reducer_isReady, + editorSettings: reducer_editorSettings, + postAutosavingLock: postAutosavingLock +}))); + +// EXTERNAL MODULE: ./node_modules/refx/refx.js +var refx = __webpack_require__(72); +var refx_default = /*#__PURE__*/__webpack_require__.n(refx); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/regenerator/index.js +var regenerator = __webpack_require__(20); +var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js +var asyncToGenerator = __webpack_require__(43); + +// EXTERNAL MODULE: external {"this":["wp","apiFetch"]} +var external_this_wp_apiFetch_ = __webpack_require__(34); +var external_this_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_apiFetch_); + +// EXTERNAL MODULE: external {"this":["wp","i18n"]} +var external_this_wp_i18n_ = __webpack_require__(1); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules +var slicedToArray = __webpack_require__(23); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules +var toConsumableArray = __webpack_require__(17); + +// EXTERNAL MODULE: external {"this":["wp","deprecated"]} +var external_this_wp_deprecated_ = __webpack_require__(37); +var external_this_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_deprecated_); + +// EXTERNAL MODULE: external {"this":["wp","isShallowEqual"]} +var external_this_wp_isShallowEqual_ = __webpack_require__(41); +var external_this_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_isShallowEqual_); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/constants.js +/** + * Set of post properties for which edits should assume a merging behavior, + * assuming an object value. + * + * @type {Set} + */ +var EDIT_MERGE_PROPERTIES = new Set(['meta']); +/** + * Constant for the store module (or reducer) key. + * + * @type {string} + */ + +var STORE_KEY = 'core/editor'; +var POST_UPDATE_TRANSACTION_ID = 'post-update'; +var SAVE_POST_NOTICE_ID = 'SAVE_POST_NOTICE_ID'; +var TRASH_POST_NOTICE_ID = 'TRASH_POST_NOTICE_ID'; +var PERMALINK_POSTNAME_REGEX = /%(?:postname|pagename)%/; +var ONE_MINUTE_IN_MS = 60 * 1000; +var AUTOSAVE_PROPERTIES = ['title', 'excerpt', 'content']; + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/utils/notice-builder.js +/** + * WordPress dependencies + */ + +/** + * Internal dependencies + */ + + +/** + * External dependencies + */ + + +/** + * Builds the arguments for a success notification dispatch. + * + * @param {Object} data Incoming data to build the arguments from. + * + * @return {Array} Arguments for dispatch. An empty array signals no + * notification should be sent. + */ + +function getNotificationArgumentsForSaveSuccess(data) { + var previousPost = data.previousPost, + post = data.post, + postType = data.postType; // Autosaves are neither shown a notice nor redirected. + + if (Object(external_lodash_["get"])(data.options, ['isAutosave'])) { + return []; + } + + var publishStatus = ['publish', 'private', 'future']; + var isPublished = Object(external_lodash_["includes"])(publishStatus, previousPost.status); + var willPublish = Object(external_lodash_["includes"])(publishStatus, post.status); + var noticeMessage; + var shouldShowLink = Object(external_lodash_["get"])(postType, ['viewable'], false); + + if (!isPublished && !willPublish) { + // If saving a non-published post, don't show notice. + noticeMessage = null; + } else if (isPublished && !willPublish) { + // If undoing publish status, show specific notice + noticeMessage = postType.labels.item_reverted_to_draft; + shouldShowLink = false; + } else if (!isPublished && willPublish) { + // If publishing or scheduling a post, show the corresponding + // publish message + noticeMessage = { + publish: postType.labels.item_published, + private: postType.labels.item_published_privately, + future: postType.labels.item_scheduled + }[post.status]; + } else { + // Generic fallback notice + noticeMessage = postType.labels.item_updated; + } + + if (noticeMessage) { + var actions = []; + + if (shouldShowLink) { + actions.push({ + label: postType.labels.view_item, + url: post.link + }); + } + + return [noticeMessage, { + id: SAVE_POST_NOTICE_ID, + type: 'snackbar', + actions: actions + }]; + } + + return []; +} +/** + * Builds the fail notification arguments for dispatch. + * + * @param {Object} data Incoming data to build the arguments with. + * + * @return {Array} Arguments for dispatch. An empty array signals no + * notification should be sent. + */ + +function getNotificationArgumentsForSaveFail(data) { + var post = data.post, + edits = data.edits, + error = data.error; + + if (error && 'rest_autosave_no_changes' === error.code) { + // Autosave requested a new autosave, but there were no changes. This shouldn't + // result in an error notice for the user. + return []; + } + + var publishStatus = ['publish', 'private', 'future']; + var isPublished = publishStatus.indexOf(post.status) !== -1; // If the post was being published, we show the corresponding publish error message + // Unless we publish an "updating failed" message + + var messages = { + publish: Object(external_this_wp_i18n_["__"])('Publishing failed.'), + private: Object(external_this_wp_i18n_["__"])('Publishing failed.'), + future: Object(external_this_wp_i18n_["__"])('Scheduling failed.') + }; + var noticeMessage = !isPublished && publishStatus.indexOf(edits.status) !== -1 ? messages[edits.status] : Object(external_this_wp_i18n_["__"])('Updating failed.'); // Check if message string contains HTML. Notice text is currently only + // supported as plaintext, and stripping the tags may muddle the meaning. + + if (error.message && !/<\/?[^>]*>/.test(error.message)) { + noticeMessage = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('%1$s Error message: %2$s'), noticeMessage, error.message); + } + + return [noticeMessage, { + id: SAVE_POST_NOTICE_ID + }]; +} +/** + * Builds the trash fail notification arguments for dispatch. + * + * @param {Object} data + * + * @return {Array} Arguments for dispatch. + */ + +function getNotificationArgumentsForTrashFail(data) { + return [data.error.message && data.error.code !== 'unknown_error' ? data.error.message : Object(external_this_wp_i18n_["__"])('Trashing failed'), { + id: TRASH_POST_NOTICE_ID + }]; +} + +// EXTERNAL MODULE: ./node_modules/memize/index.js +var memize = __webpack_require__(44); +var memize_default = /*#__PURE__*/__webpack_require__.n(memize); + +// EXTERNAL MODULE: external {"this":["wp","autop"]} +var external_this_wp_autop_ = __webpack_require__(69); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/utils/serialize-blocks.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +/** + * Serializes blocks following backwards compatibility conventions. + * + * @param {Array} blocksForSerialization The blocks to serialize. + * + * @return {string} The blocks serialization. + */ + +var serializeBlocks = memize_default()(function (blocksForSerialization) { + // A single unmodified default block is assumed to + // be equivalent to an empty post. + if (blocksForSerialization.length === 1 && Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])(blocksForSerialization[0])) { + blocksForSerialization = []; + } + + var content = Object(external_this_wp_blocks_["serialize"])(blocksForSerialization); // For compatibility, treat a post consisting of a + // single freeform block as legacy content and apply + // pre-block-editor removep'd content formatting. + + if (blocksForSerialization.length === 1 && blocksForSerialization[0].name === Object(external_this_wp_blocks_["getFreeformContentHandlerName"])()) { + content = Object(external_this_wp_autop_["removep"])(content); + } + + return content; +}, { + maxSize: 1 +}); +/* harmony default export */ var serialize_blocks = (serializeBlocks); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/controls.js +/** + * WordPress dependencies + */ + +/** + * Returns a control descriptor signalling to subscribe to the registry and + * resolve the control promise only when the next state change occurs. + * + * @return {Object} Control descriptor. + */ + +function awaitNextStateChange() { + return { + type: 'AWAIT_NEXT_STATE_CHANGE' + }; +} +/** + * Returns a control descriptor signalling to resolve with the current data + * registry. + * + * @return {Object} Control descriptor. + */ + +function getRegistry() { + return { + type: 'GET_REGISTRY' + }; +} +/** + * Function returning a sessionStorage key to set or retrieve a given post's + * automatic session backup. + * + * Keys are crucially prefixed with 'wp-autosave-' so that wp-login.php's + * `loggedout` handler can clear sessionStorage of any user-private content. + * + * @see https://github.com/WordPress/wordpress-develop/blob/6dad32d2aed47e6c0cf2aee8410645f6d7aba6bd/src/wp-login.php#L103 + * + * @param {string} postId Post ID. + * @return {string} sessionStorage key + */ + +function postKey(postId) { + return "wp-autosave-block-editor-post-".concat(postId); +} + +function localAutosaveGet(postId) { + return window.sessionStorage.getItem(postKey(postId)); +} +function localAutosaveSet(postId, title, content, excerpt) { + window.sessionStorage.setItem(postKey(postId), JSON.stringify({ + post_title: title, + content: content, + excerpt: excerpt + })); +} +function localAutosaveClear(postId) { + window.sessionStorage.removeItem(postKey(postId)); +} +var controls = { + AWAIT_NEXT_STATE_CHANGE: Object(external_this_wp_data_["createRegistryControl"])(function (registry) { + return function () { + return new Promise(function (resolve) { + var unsubscribe = registry.subscribe(function () { + unsubscribe(); + resolve(); + }); + }); + }; + }), + GET_REGISTRY: Object(external_this_wp_data_["createRegistryControl"])(function (registry) { + return function () { + return registry; + }; + }), + LOCAL_AUTOSAVE_SET: function LOCAL_AUTOSAVE_SET(_ref) { + var postId = _ref.postId, + title = _ref.title, + content = _ref.content, + excerpt = _ref.excerpt; + localAutosaveSet(postId, title, content, excerpt); + } +}; +/* harmony default export */ var store_controls = (controls); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/block-sources/meta.js + + + +var _marked = +/*#__PURE__*/ +regenerator_default.a.mark(getDependencies), + _marked2 = +/*#__PURE__*/ +regenerator_default.a.mark(update); + +/** + * WordPress dependencies + */ + +/** + * Internal dependencies + */ + + +/** + * Store control invoked upon a state change, responsible for returning an + * object of dependencies. When a change in dependencies occurs (by shallow + * equality of the returned object), blocks are reset to apply the new sourced + * value. + * + * @yield {Object} Optional yielded controls. + * + * @return {Object} Dependencies as object. + */ + +function getDependencies() { + return regenerator_default.a.wrap(function getDependencies$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return Object(external_this_wp_dataControls_["select"])('core/editor', 'getEditedPostAttribute', 'meta'); + + case 2: + _context.t0 = _context.sent; + return _context.abrupt("return", { + meta: _context.t0 + }); + + case 4: + case "end": + return _context.stop(); + } + } + }, _marked); +} +/** + * Given an attribute schema and dependencies data, returns a source value. + * + * @param {Object} schema Block type attribute schema. + * @param {Object} dependencies Source dependencies. + * @param {Object} dependencies.meta Post meta. + * + * @return {Object} Block attribute value. + */ + +function apply(schema, _ref) { + var meta = _ref.meta; + return meta[schema.meta]; +} +/** + * Store control invoked upon a block attributes update, responsible for + * reflecting an update in a meta value. + * + * @param {Object} schema Block type attribute schema. + * @param {*} value Updated block attribute value. + * + * @yield {Object} Yielded action objects or store controls. + */ + +function update(schema, value) { + return regenerator_default.a.wrap(function update$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return actions_editPost({ + meta: Object(defineProperty["a" /* default */])({}, schema.meta, value) + }); + + case 2: + case "end": + return _context2.stop(); + } + } + }, _marked2); +} + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/block-sources/index.js +/** + * Internal dependencies + */ + + + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/actions.js + + + + + + +var actions_marked = +/*#__PURE__*/ +regenerator_default.a.mark(getBlocksWithSourcedAttributes), + actions_marked2 = +/*#__PURE__*/ +regenerator_default.a.mark(resetLastBlockSourceDependencies), + _marked3 = +/*#__PURE__*/ +regenerator_default.a.mark(setupEditor), + _marked4 = +/*#__PURE__*/ +regenerator_default.a.mark(__experimentalSubscribeSources), + _marked5 = +/*#__PURE__*/ +regenerator_default.a.mark(resetAutosave), + _marked6 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_editPost), + _marked7 = +/*#__PURE__*/ +regenerator_default.a.mark(savePost), + _marked8 = +/*#__PURE__*/ +regenerator_default.a.mark(refreshPost), + _marked9 = +/*#__PURE__*/ +regenerator_default.a.mark(trashPost), + _marked10 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_autosave), + _marked11 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_experimentalLocalAutosave), + _marked12 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_redo), + _marked13 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_undo), + _marked14 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_resetEditorBlocks); + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + + + + + +/** + * Map of Registry instance to WeakMap of dependencies by custom source. + * + * @type WeakMap<WPDataRegistry,WeakMap<WPBlockAttributeSource,Object>> + */ + +var lastBlockSourceDependenciesByRegistry = new WeakMap(); +/** + * Given a blocks array, returns a blocks array with sourced attribute values + * applied. The reference will remain consistent with the original argument if + * no attribute values must be overridden. If sourced values are applied, the + * return value will be a modified copy of the original array. + * + * @param {WPBlock[]} blocks Original blocks array. + * + * @return {WPBlock[]} Blocks array with sourced values applied. + */ + +function getBlocksWithSourcedAttributes(blocks) { + var registry, blockSourceDependencies, workingBlocks, i, block, blockType, _i, _Object$entries, _Object$entries$_i, attributeName, schema, dependencies, sourcedAttributeValue, appliedInnerBlocks; + + return regenerator_default.a.wrap(function getBlocksWithSourcedAttributes$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return getRegistry(); + + case 2: + registry = _context.sent; + + if (lastBlockSourceDependenciesByRegistry.has(registry)) { + _context.next = 5; + break; + } + + return _context.abrupt("return", blocks); + + case 5: + blockSourceDependencies = lastBlockSourceDependenciesByRegistry.get(registry); + workingBlocks = blocks; + i = 0; + + case 8: + if (!(i < blocks.length)) { + _context.next = 37; + break; + } + + block = blocks[i]; + _context.next = 12; + return Object(external_this_wp_dataControls_["select"])('core/blocks', 'getBlockType', block.name); + + case 12: + blockType = _context.sent; + _i = 0, _Object$entries = Object.entries(blockType.attributes); + + case 14: + if (!(_i < _Object$entries.length)) { + _context.next = 30; + break; + } + + _Object$entries$_i = Object(slicedToArray["a" /* default */])(_Object$entries[_i], 2), attributeName = _Object$entries$_i[0], schema = _Object$entries$_i[1]; + + if (!(!block_sources_namespaceObject[schema.source] || !block_sources_namespaceObject[schema.source].apply)) { + _context.next = 18; + break; + } + + return _context.abrupt("continue", 27); + + case 18: + if (blockSourceDependencies.has(block_sources_namespaceObject[schema.source])) { + _context.next = 20; + break; + } + + return _context.abrupt("continue", 27); + + case 20: + dependencies = blockSourceDependencies.get(block_sources_namespaceObject[schema.source]); + sourcedAttributeValue = block_sources_namespaceObject[schema.source].apply(schema, dependencies); // It's only necessary to apply the value if it differs from the + // block's locally-assigned value, to avoid needlessly resetting + // the block editor. + + if (!(sourcedAttributeValue === block.attributes[attributeName])) { + _context.next = 24; + break; + } + + return _context.abrupt("continue", 27); + + case 24: + // Create a shallow clone to mutate, leaving the original intact. + if (workingBlocks === blocks) { + workingBlocks = Object(toConsumableArray["a" /* default */])(workingBlocks); + } + + block = Object(objectSpread["a" /* default */])({}, block, { + attributes: Object(objectSpread["a" /* default */])({}, block.attributes, Object(defineProperty["a" /* default */])({}, attributeName, sourcedAttributeValue)) + }); + workingBlocks.splice(i, 1, block); + + case 27: + _i++; + _context.next = 14; + break; + + case 30: + if (!block.innerBlocks.length) { + _context.next = 34; + break; + } + + return _context.delegateYield(getBlocksWithSourcedAttributes(block.innerBlocks), "t0", 32); + + case 32: + appliedInnerBlocks = _context.t0; + + if (appliedInnerBlocks !== block.innerBlocks) { + if (workingBlocks === blocks) { + workingBlocks = Object(toConsumableArray["a" /* default */])(workingBlocks); + } + + block = Object(objectSpread["a" /* default */])({}, block, { + innerBlocks: appliedInnerBlocks + }); + workingBlocks.splice(i, 1, block); + } + + case 34: + i++; + _context.next = 8; + break; + + case 37: + return _context.abrupt("return", workingBlocks); + + case 38: + case "end": + return _context.stop(); + } + } + }, actions_marked); +} +/** + * Refreshes the last block source dependencies, optionally for a given subset + * of sources (defaults to the full set of sources). + * + * @param {?Array} sourcesToUpdate Optional subset of sources to reset. + * + * @yield {Object} Yielded actions or control descriptors. + */ + + +function resetLastBlockSourceDependencies() { + var sourcesToUpdate, + registry, + lastBlockSourceDependencies, + _iteratorNormalCompletion, + _didIteratorError, + _iteratorError, + _iterator, + _step, + source, + dependencies, + _args2 = arguments; + + return regenerator_default.a.wrap(function resetLastBlockSourceDependencies$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + sourcesToUpdate = _args2.length > 0 && _args2[0] !== undefined ? _args2[0] : Object.values(block_sources_namespaceObject); + + if (sourcesToUpdate.length) { + _context2.next = 3; + break; + } + + return _context2.abrupt("return"); + + case 3: + _context2.next = 5; + return getRegistry(); + + case 5: + registry = _context2.sent; + + if (!lastBlockSourceDependenciesByRegistry.has(registry)) { + lastBlockSourceDependenciesByRegistry.set(registry, new WeakMap()); + } + + lastBlockSourceDependencies = lastBlockSourceDependenciesByRegistry.get(registry); + _iteratorNormalCompletion = true; + _didIteratorError = false; + _iteratorError = undefined; + _context2.prev = 11; + _iterator = sourcesToUpdate[Symbol.iterator](); + + case 13: + if (_iteratorNormalCompletion = (_step = _iterator.next()).done) { + _context2.next = 21; + break; + } + + source = _step.value; + return _context2.delegateYield(source.getDependencies(), "t0", 16); + + case 16: + dependencies = _context2.t0; + lastBlockSourceDependencies.set(source, dependencies); + + case 18: + _iteratorNormalCompletion = true; + _context2.next = 13; + break; + + case 21: + _context2.next = 27; + break; + + case 23: + _context2.prev = 23; + _context2.t1 = _context2["catch"](11); + _didIteratorError = true; + _iteratorError = _context2.t1; + + case 27: + _context2.prev = 27; + _context2.prev = 28; + + if (!_iteratorNormalCompletion && _iterator.return != null) { + _iterator.return(); + } + + case 30: + _context2.prev = 30; + + if (!_didIteratorError) { + _context2.next = 33; + break; + } + + throw _iteratorError; + + case 33: + return _context2.finish(30); + + case 34: + return _context2.finish(27); + + case 35: + case "end": + return _context2.stop(); + } + } + }, actions_marked2, null, [[11, 23, 27, 35], [28,, 30, 34]]); +} +/** + * Returns an action generator used in signalling that editor has initialized with + * the specified post object and editor settings. + * + * @param {Object} post Post object. + * @param {Object} edits Initial edited attributes object. + * @param {Array?} template Block Template. + */ + + +function setupEditor(post, edits, template) { + var content, blocks, isNewPost; + return regenerator_default.a.wrap(function setupEditor$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + // In order to ensure maximum of a single parse during setup, edits are + // included as part of editor setup action. Assume edited content as + // canonical if provided, falling back to post. + if (Object(external_lodash_["has"])(edits, ['content'])) { + content = edits.content; + } else { + content = post.content.raw; + } + + blocks = Object(external_this_wp_blocks_["parse"])(content); // Apply a template for new posts only, if exists. + + isNewPost = post.status === 'auto-draft'; + + if (isNewPost && template) { + blocks = Object(external_this_wp_blocks_["synchronizeBlocksWithTemplate"])(blocks, template); + } + + _context3.next = 6; + return resetPost(post); + + case 6: + return _context3.delegateYield(resetLastBlockSourceDependencies(), "t0", 7); + + case 7: + _context3.next = 9; + return { + type: 'SETUP_EDITOR', + post: post, + edits: edits, + template: template + }; + + case 9: + _context3.next = 11; + return actions_resetEditorBlocks(blocks, { + __unstableShouldCreateUndoLevel: false + }); + + case 11: + _context3.next = 13; + return setupEditorState(post); + + case 13: + if (!(edits && Object.keys(edits).some(function (key) { + return edits[key] !== (Object(external_lodash_["has"])(post, [key, 'raw']) ? post[key].raw : post[key]); + }))) { + _context3.next = 16; + break; + } + + _context3.next = 16; + return actions_editPost(edits); + + case 16: + return _context3.delegateYield(__experimentalSubscribeSources(), "t1", 17); + + case 17: + case "end": + return _context3.stop(); + } + } + }, _marked3); +} +/** + * Returns an action object signalling that the editor is being destroyed and + * that any necessary state or side-effect cleanup should occur. + * + * @return {Object} Action object. + */ + +function __experimentalTearDownEditor() { + return { + type: 'TEAR_DOWN_EDITOR' + }; +} +/** + * Returns an action generator which loops to await the next state change, + * calling to reset blocks when a block source dependencies change. + * + * @yield {Object} Action object. + */ + +function __experimentalSubscribeSources() { + var isStillReady, registry, reset, _i2, _Object$values, source, dependencies, lastBlockSourceDependencies, lastDependencies; + + return regenerator_default.a.wrap(function __experimentalSubscribeSources$(_context4) { + while (1) { + switch (_context4.prev = _context4.next) { + case 0: + if (false) {} + + _context4.next = 3; + return awaitNextStateChange(); + + case 3: + _context4.next = 5; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, '__unstableIsEditorReady'); + + case 5: + isStillReady = _context4.sent; + + if (isStillReady) { + _context4.next = 8; + break; + } + + return _context4.abrupt("break", 36); + + case 8: + _context4.next = 10; + return getRegistry(); + + case 10: + registry = _context4.sent; + reset = false; + _i2 = 0, _Object$values = Object.values(block_sources_namespaceObject); + + case 13: + if (!(_i2 < _Object$values.length)) { + _context4.next = 26; + break; + } + + source = _Object$values[_i2]; + + if (source.getDependencies) { + _context4.next = 17; + break; + } + + return _context4.abrupt("continue", 23); + + case 17: + return _context4.delegateYield(source.getDependencies(), "t0", 18); + + case 18: + dependencies = _context4.t0; + + if (!lastBlockSourceDependenciesByRegistry.has(registry)) { + lastBlockSourceDependenciesByRegistry.set(registry, new WeakMap()); + } + + lastBlockSourceDependencies = lastBlockSourceDependenciesByRegistry.get(registry); + lastDependencies = lastBlockSourceDependencies.get(source); + + if (!external_this_wp_isShallowEqual_default()(dependencies, lastDependencies)) { + lastBlockSourceDependencies.set(source, dependencies); // Allow the loop to continue in order to assign latest + // dependencies values, but mark for reset. + + reset = true; + } + + case 23: + _i2++; + _context4.next = 13; + break; + + case 26: + if (!reset) { + _context4.next = 34; + break; + } + + _context4.t1 = actions_resetEditorBlocks; + _context4.next = 30; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditorBlocks'); + + case 30: + _context4.t2 = _context4.sent; + _context4.t3 = { + __unstableShouldCreateUndoLevel: false + }; + _context4.next = 34; + return (0, _context4.t1)(_context4.t2, _context4.t3); + + case 34: + _context4.next = 0; + break; + + case 36: + case "end": + return _context4.stop(); + } + } + }, _marked4); +} +/** + * Returns an action object used in signalling that the latest version of the + * post has been received, either by initialization or save. + * + * @param {Object} post Post object. + * + * @return {Object} Action object. + */ + +function resetPost(post) { + return { + type: 'RESET_POST', + post: post + }; +} +/** + * Returns an action object used in signalling that the latest autosave of the + * post has been received, by initialization or autosave. + * + * @deprecated since 5.6. Callers should use the `receiveAutosaves( postId, autosave )` + * selector from the '@wordpress/core-data' package. + * + * @param {Object} newAutosave Autosave post object. + * + * @return {Object} Action object. + */ + +function resetAutosave(newAutosave) { + var postId; + return regenerator_default.a.wrap(function resetAutosave$(_context5) { + while (1) { + switch (_context5.prev = _context5.next) { + case 0: + external_this_wp_deprecated_default()('resetAutosave action (`core/editor` store)', { + alternative: 'receiveAutosaves action (`core` store)', + plugin: 'Gutenberg' + }); + _context5.next = 3; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPostId'); + + case 3: + postId = _context5.sent; + _context5.next = 6; + return Object(external_this_wp_dataControls_["dispatch"])('core', 'receiveAutosaves', postId, newAutosave); + + case 6: + return _context5.abrupt("return", { + type: '__INERT__' + }); + + case 7: + case "end": + return _context5.stop(); + } + } + }, _marked5); +} +/** + * Action for dispatching that a post update request has started. + * + * @param {Object} options + * + * @return {Object} An action object + */ + +function __experimentalRequestPostUpdateStart() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return { + type: 'REQUEST_POST_UPDATE_START', + options: options + }; +} +/** + * Action for dispatching that a post update request has finished. + * + * @param {Object} options + * + * @return {Object} An action object + */ + +function __experimentalRequestPostUpdateFinish() { + var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + return { + type: 'REQUEST_POST_UPDATE_FINISH', + options: options + }; +} +/** + * Returns an action object used in signalling that a patch of updates for the + * latest version of the post have been received. + * + * @param {Object} edits Updated post fields. + * + * @return {Object} Action object. + */ + +function updatePost(edits) { + return { + type: 'UPDATE_POST', + edits: edits + }; +} +/** + * Returns an action object used to setup the editor state when first opening + * an editor. + * + * @param {Object} post Post object. + * + * @return {Object} Action object. + */ + +function setupEditorState(post) { + return { + type: 'SETUP_EDITOR_STATE', + post: post + }; +} +/** + * Returns an action object used in signalling that attributes of the post have + * been edited. + * + * @param {Object} edits Post attributes to edit. + * @param {Object} options Options for the edit. + * + * @yield {Object} Action object or control. + */ + +function actions_editPost(edits, options) { + var _ref, id, type; + + return regenerator_default.a.wrap(function editPost$(_context6) { + while (1) { + switch (_context6.prev = _context6.next) { + case 0: + _context6.next = 2; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 2: + _ref = _context6.sent; + id = _ref.id; + type = _ref.type; + _context6.next = 7; + return Object(external_this_wp_dataControls_["dispatch"])('core', 'editEntityRecord', 'postType', type, id, edits, options); + + case 7: + case "end": + return _context6.stop(); + } + } + }, _marked6); +} +/** + * Returns action object produced by the updatePost creator augmented by + * an optimist option that signals optimistically applying updates. + * + * @param {Object} edits Updated post fields. + * + * @return {Object} Action object. + */ + +function __experimentalOptimisticUpdatePost(edits) { + return Object(objectSpread["a" /* default */])({}, updatePost(edits), { + optimist: { + id: POST_UPDATE_TRANSACTION_ID + } + }); +} +/** + * Action generator for saving the current post in the editor. + * + * @param {Object} options + */ + +function savePost() { + var options, + edits, + previousRecord, + error, + args, + updatedRecord, + _args7, + _args8 = arguments; + + return regenerator_default.a.wrap(function savePost$(_context7) { + while (1) { + switch (_context7.prev = _context7.next) { + case 0: + options = _args8.length > 0 && _args8[0] !== undefined ? _args8[0] : {}; + _context7.next = 3; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'isEditedPostSaveable'); + + case 3: + if (_context7.sent) { + _context7.next = 5; + break; + } + + return _context7.abrupt("return"); + + case 5: + _context7.next = 7; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostContent'); + + case 7: + _context7.t0 = _context7.sent; + edits = { + content: _context7.t0 + }; + + if (options.isAutosave) { + _context7.next = 12; + break; + } + + _context7.next = 12; + return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'editPost', edits, { + undoIgnore: true + }); + + case 12: + _context7.next = 14; + return __experimentalRequestPostUpdateStart(options); + + case 14: + _context7.next = 16; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 16: + previousRecord = _context7.sent; + _context7.t1 = objectSpread["a" /* default */]; + _context7.t2 = { + id: previousRecord.id + }; + _context7.next = 21; + return Object(external_this_wp_dataControls_["select"])('core', 'getEntityRecordNonTransientEdits', 'postType', previousRecord.type, previousRecord.id); + + case 21: + _context7.t3 = _context7.sent; + _context7.t4 = edits; + edits = (0, _context7.t1)(_context7.t2, _context7.t3, _context7.t4); + _context7.next = 26; + return Object(external_this_wp_dataControls_["dispatch"])('core', 'saveEntityRecord', 'postType', previousRecord.type, edits, options); + + case 26: + _context7.next = 28; + return __experimentalRequestPostUpdateFinish(options); + + case 28: + _context7.next = 30; + return Object(external_this_wp_dataControls_["select"])('core', 'getLastEntitySaveError', 'postType', previousRecord.type, previousRecord.id); + + case 30: + error = _context7.sent; + + if (!error) { + _context7.next = 38; + break; + } + + args = getNotificationArgumentsForSaveFail({ + post: previousRecord, + edits: edits, + error: error + }); + + if (!args.length) { + _context7.next = 36; + break; + } + + _context7.next = 36; + return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/notices', 'createErrorNotice'].concat(Object(toConsumableArray["a" /* default */])(args))); + + case 36: + _context7.next = 56; + break; + + case 38: + _context7.next = 40; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 40: + updatedRecord = _context7.sent; + _context7.t5 = getNotificationArgumentsForSaveSuccess; + _context7.t6 = previousRecord; + _context7.t7 = updatedRecord; + _context7.next = 46; + return Object(external_this_wp_dataControls_["select"])('core', 'getPostType', updatedRecord.type); + + case 46: + _context7.t8 = _context7.sent; + _context7.t9 = options; + _context7.t10 = { + previousPost: _context7.t6, + post: _context7.t7, + postType: _context7.t8, + options: _context7.t9 + }; + _args7 = (0, _context7.t5)(_context7.t10); + + if (!_args7.length) { + _context7.next = 53; + break; + } + + _context7.next = 53; + return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/notices', 'createSuccessNotice'].concat(Object(toConsumableArray["a" /* default */])(_args7))); + + case 53: + if (options.isAutosave) { + _context7.next = 56; + break; + } + + _context7.next = 56; + return Object(external_this_wp_dataControls_["dispatch"])('core/block-editor', '__unstableMarkLastChangeAsPersistent'); + + case 56: + case "end": + return _context7.stop(); + } + } + }, _marked7); +} +/** + * Action generator for handling refreshing the current post. + */ + +function refreshPost() { + var post, postTypeSlug, postType, newPost; + return regenerator_default.a.wrap(function refreshPost$(_context8) { + while (1) { + switch (_context8.prev = _context8.next) { + case 0: + _context8.next = 2; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 2: + post = _context8.sent; + _context8.next = 5; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPostType'); + + case 5: + postTypeSlug = _context8.sent; + _context8.next = 8; + return Object(external_this_wp_dataControls_["select"])('core', 'getPostType', postTypeSlug); + + case 8: + postType = _context8.sent; + _context8.next = 11; + return Object(external_this_wp_dataControls_["apiFetch"])({ + // Timestamp arg allows caller to bypass browser caching, which is + // expected for this specific function. + path: "/wp/v2/".concat(postType.rest_base, "/").concat(post.id) + "?context=edit&_timestamp=".concat(Date.now()) + }); + + case 11: + newPost = _context8.sent; + _context8.next = 14; + return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'resetPost', newPost); + + case 14: + case "end": + return _context8.stop(); + } + } + }, _marked8); +} +/** + * Action generator for trashing the current post in the editor. + */ + +function trashPost() { + var postTypeSlug, postType, post; + return regenerator_default.a.wrap(function trashPost$(_context9) { + while (1) { + switch (_context9.prev = _context9.next) { + case 0: + _context9.next = 2; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPostType'); + + case 2: + postTypeSlug = _context9.sent; + _context9.next = 5; + return Object(external_this_wp_dataControls_["select"])('core', 'getPostType', postTypeSlug); + + case 5: + postType = _context9.sent; + _context9.next = 8; + return Object(external_this_wp_dataControls_["dispatch"])('core/notices', 'removeNotice', TRASH_POST_NOTICE_ID); + + case 8: + _context9.prev = 8; + _context9.next = 11; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 11: + post = _context9.sent; + _context9.next = 14; + return Object(external_this_wp_dataControls_["apiFetch"])({ + path: "/wp/v2/".concat(postType.rest_base, "/").concat(post.id), + method: 'DELETE' + }); + + case 14: + _context9.next = 16; + return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'savePost'); + + case 16: + _context9.next = 22; + break; + + case 18: + _context9.prev = 18; + _context9.t0 = _context9["catch"](8); + _context9.next = 22; + return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/notices', 'createErrorNotice'].concat(Object(toConsumableArray["a" /* default */])(getNotificationArgumentsForTrashFail({ + error: _context9.t0 + })))); + + case 22: + case "end": + return _context9.stop(); + } + } + }, _marked9, null, [[8, 18]]); +} +/** + * Action generator used in signalling that the post should autosave. + * + * @param {Object?} options Extra flags to identify the autosave. + */ + +function actions_autosave(options) { + return regenerator_default.a.wrap(function autosave$(_context10) { + while (1) { + switch (_context10.prev = _context10.next) { + case 0: + _context10.next = 2; + return Object(external_this_wp_dataControls_["dispatch"])(STORE_KEY, 'savePost', Object(objectSpread["a" /* default */])({ + isAutosave: true + }, options)); + + case 2: + case "end": + return _context10.stop(); + } + } + }, _marked10); +} +function actions_experimentalLocalAutosave() { + var post, title, content, excerpt; + return regenerator_default.a.wrap(function __experimentalLocalAutosave$(_context11) { + while (1) { + switch (_context11.prev = _context11.next) { + case 0: + _context11.next = 2; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 2: + post = _context11.sent; + _context11.next = 5; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostAttribute', 'title'); + + case 5: + title = _context11.sent; + _context11.next = 8; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostAttribute', 'content'); + + case 8: + content = _context11.sent; + _context11.next = 11; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getEditedPostAttribute', 'excerpt'); + + case 11: + excerpt = _context11.sent; + _context11.next = 14; + return { + type: 'LOCAL_AUTOSAVE_SET', + postId: post.id, + title: title, + content: content, + excerpt: excerpt + }; + + case 14: + case "end": + return _context11.stop(); + } + } + }, _marked11); +} +/** + * Returns an action object used in signalling that undo history should + * restore last popped state. + * + * @yield {Object} Action object. + */ + +function actions_redo() { + return regenerator_default.a.wrap(function redo$(_context12) { + while (1) { + switch (_context12.prev = _context12.next) { + case 0: + _context12.next = 2; + return Object(external_this_wp_dataControls_["dispatch"])('core', 'redo'); + + case 2: + case "end": + return _context12.stop(); + } + } + }, _marked12); +} +/** + * Returns an action object used in signalling that undo history should pop. + * + * @yield {Object} Action object. + */ + +function actions_undo() { + return regenerator_default.a.wrap(function undo$(_context13) { + while (1) { + switch (_context13.prev = _context13.next) { + case 0: + _context13.next = 2; + return Object(external_this_wp_dataControls_["dispatch"])('core', 'undo'); + + case 2: + case "end": + return _context13.stop(); + } + } + }, _marked13); +} +/** + * Returns an action object used in signalling that undo history record should + * be created. + * + * @return {Object} Action object. + */ + +function createUndoLevel() { + return { + type: 'CREATE_UNDO_LEVEL' + }; +} +/** + * Returns an action object used to lock the editor. + * + * @param {Object} lock Details about the post lock status, user, and nonce. + * + * @return {Object} Action object. + */ + +function updatePostLock(lock) { + return { + type: 'UPDATE_POST_LOCK', + lock: lock + }; +} +/** + * Returns an action object used to fetch a single reusable block or all + * reusable blocks from the REST API into the store. + * + * @param {?string} id If given, only a single reusable block with this ID will + * be fetched. + * + * @return {Object} Action object. + */ + +function __experimentalFetchReusableBlocks(id) { + return { + type: 'FETCH_REUSABLE_BLOCKS', + id: id + }; +} +/** + * Returns an action object used in signalling that reusable blocks have been + * received. `results` is an array of objects containing: + * - `reusableBlock` - Details about how the reusable block is persisted. + * - `parsedBlock` - The original block. + * + * @param {Object[]} results Reusable blocks received. + * + * @return {Object} Action object. + */ + +function __experimentalReceiveReusableBlocks(results) { + return { + type: 'RECEIVE_REUSABLE_BLOCKS', + results: results + }; +} +/** + * Returns an action object used to save a reusable block that's in the store to + * the REST API. + * + * @param {Object} id The ID of the reusable block to save. + * + * @return {Object} Action object. + */ + +function __experimentalSaveReusableBlock(id) { + return { + type: 'SAVE_REUSABLE_BLOCK', + id: id + }; +} +/** + * Returns an action object used to delete a reusable block via the REST API. + * + * @param {number} id The ID of the reusable block to delete. + * + * @return {Object} Action object. + */ + +function __experimentalDeleteReusableBlock(id) { + return { + type: 'DELETE_REUSABLE_BLOCK', + id: id + }; +} +/** + * Returns an action object used in signalling that a reusable block is + * to be updated. + * + * @param {number} id The ID of the reusable block to update. + * @param {Object} changes The changes to apply. + * + * @return {Object} Action object. + */ + +function __experimentalUpdateReusableBlock(id, changes) { + return { + type: 'UPDATE_REUSABLE_BLOCK', + id: id, + changes: changes + }; +} +/** + * Returns an action object used to convert a reusable block into a static + * block. + * + * @param {string} clientId The client ID of the block to attach. + * + * @return {Object} Action object. + */ + +function __experimentalConvertBlockToStatic(clientId) { + return { + type: 'CONVERT_BLOCK_TO_STATIC', + clientId: clientId + }; +} +/** + * Returns an action object used to convert a static block into a reusable + * block. + * + * @param {string} clientIds The client IDs of the block to detach. + * + * @return {Object} Action object. + */ + +function __experimentalConvertBlockToReusable(clientIds) { + return { + type: 'CONVERT_BLOCK_TO_REUSABLE', + clientIds: Object(external_lodash_["castArray"])(clientIds) + }; +} +/** + * Returns an action object used in signalling that the user has enabled the + * publish sidebar. + * + * @return {Object} Action object + */ + +function enablePublishSidebar() { + return { + type: 'ENABLE_PUBLISH_SIDEBAR' + }; +} +/** + * Returns an action object used in signalling that the user has disabled the + * publish sidebar. + * + * @return {Object} Action object + */ + +function disablePublishSidebar() { + return { + type: 'DISABLE_PUBLISH_SIDEBAR' + }; +} +/** + * Returns an action object used to signal that post saving is locked. + * + * @param {string} lockName The lock name. + * + * @example + * ``` + * const { subscribe } = wp.data; + * + * const initialPostStatus = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'status' ); + * + * // Only allow publishing posts that are set to a future date. + * if ( 'publish' !== initialPostStatus ) { + * + * // Track locking. + * let locked = false; + * + * // Watch for the publish event. + * let unssubscribe = subscribe( () => { + * const currentPostStatus = wp.data.select( 'core/editor' ).getEditedPostAttribute( 'status' ); + * if ( 'publish' !== currentPostStatus ) { + * + * // Compare the post date to the current date, lock the post if the date isn't in the future. + * const postDate = new Date( wp.data.select( 'core/editor' ).getEditedPostAttribute( 'date' ) ); + * const currentDate = new Date(); + * if ( postDate.getTime() <= currentDate.getTime() ) { + * if ( ! locked ) { + * locked = true; + * wp.data.dispatch( 'core/editor' ).lockPostSaving( 'futurelock' ); + * } + * } else { + * if ( locked ) { + * locked = false; + * wp.data.dispatch( 'core/editor' ).unlockPostSaving( 'futurelock' ); + * } + * } + * } + * } ); + * } + * ``` + * + * @return {Object} Action object + */ + +function lockPostSaving(lockName) { + return { + type: 'LOCK_POST_SAVING', + lockName: lockName + }; +} +/** + * Returns an action object used to signal that post saving is unlocked. + * + * @param {string} lockName The lock name. + * + * @example + * ``` + * // Unlock post saving with the lock key `mylock`: + * wp.data.dispatch( 'core/editor' ).unlockPostSaving( 'mylock' ); + * ``` + * + * @return {Object} Action object + */ + +function unlockPostSaving(lockName) { + return { + type: 'UNLOCK_POST_SAVING', + lockName: lockName + }; +} +/** + * Returns an action object used to signal that the blocks have been updated. + * + * @param {Array} blocks Block Array. + * @param {?Object} options Optional options. + * + * @yield {Object} Action object + */ + +function actions_resetEditorBlocks(blocks) { + var options, + lastBlockAttributesChange, + updatedSources, + updatedBlockTypes, + _i3, + _Object$entries2, + _Object$entries2$_i, + clientId, + attributes, + blockName, + blockType, + _i4, + _Object$entries3, + _Object$entries3$_i, + attributeName, + newAttributeValue, + schema, + source, + edits, + _ref2, + id, + type, + noChange, + _args15 = arguments; + + return regenerator_default.a.wrap(function resetEditorBlocks$(_context14) { + while (1) { + switch (_context14.prev = _context14.next) { + case 0: + options = _args15.length > 1 && _args15[1] !== undefined ? _args15[1] : {}; + _context14.next = 3; + return Object(external_this_wp_dataControls_["select"])('core/block-editor', '__experimentalGetLastBlockAttributeChanges'); + + case 3: + lastBlockAttributesChange = _context14.sent; + + if (!lastBlockAttributesChange) { + _context14.next = 36; + break; + } + + updatedSources = new Set(); + updatedBlockTypes = new Set(); + _i3 = 0, _Object$entries2 = Object.entries(lastBlockAttributesChange); + + case 8: + if (!(_i3 < _Object$entries2.length)) { + _context14.next = 35; + break; + } + + _Object$entries2$_i = Object(slicedToArray["a" /* default */])(_Object$entries2[_i3], 2), clientId = _Object$entries2$_i[0], attributes = _Object$entries2$_i[1]; + _context14.next = 12; + return Object(external_this_wp_dataControls_["select"])('core/block-editor', 'getBlockName', clientId); + + case 12: + blockName = _context14.sent; + + if (!updatedBlockTypes.has(blockName)) { + _context14.next = 15; + break; + } + + return _context14.abrupt("continue", 32); + + case 15: + updatedBlockTypes.add(blockName); + _context14.next = 18; + return Object(external_this_wp_dataControls_["select"])('core/blocks', 'getBlockType', blockName); + + case 18: + blockType = _context14.sent; + _i4 = 0, _Object$entries3 = Object.entries(attributes); + + case 20: + if (!(_i4 < _Object$entries3.length)) { + _context14.next = 32; + break; + } + + _Object$entries3$_i = Object(slicedToArray["a" /* default */])(_Object$entries3[_i4], 2), attributeName = _Object$entries3$_i[0], newAttributeValue = _Object$entries3$_i[1]; + + if (blockType.attributes.hasOwnProperty(attributeName)) { + _context14.next = 24; + break; + } + + return _context14.abrupt("continue", 29); + + case 24: + schema = blockType.attributes[attributeName]; + source = block_sources_namespaceObject[schema.source]; + + if (!(source && source.update)) { + _context14.next = 29; + break; + } + + return _context14.delegateYield(source.update(schema, newAttributeValue), "t0", 28); + + case 28: + updatedSources.add(source); + + case 29: + _i4++; + _context14.next = 20; + break; + + case 32: + _i3++; + _context14.next = 8; + break; + + case 35: + return _context14.delegateYield(resetLastBlockSourceDependencies(Array.from(updatedSources)), "t1", 36); + + case 36: + return _context14.delegateYield(getBlocksWithSourcedAttributes(blocks), "t2", 37); + + case 37: + _context14.t3 = _context14.t2; + edits = { + blocks: _context14.t3 + }; + + if (!(options.__unstableShouldCreateUndoLevel !== false)) { + _context14.next = 55; + break; + } + + _context14.next = 42; + return Object(external_this_wp_dataControls_["select"])(STORE_KEY, 'getCurrentPost'); + + case 42: + _ref2 = _context14.sent; + id = _ref2.id; + type = _ref2.type; + _context14.next = 47; + return Object(external_this_wp_dataControls_["select"])('core', 'getEditedEntityRecord', 'postType', type, id); + + case 47: + _context14.t4 = _context14.sent.blocks; + _context14.t5 = edits.blocks; + noChange = _context14.t4 === _context14.t5; + + if (!noChange) { + _context14.next = 54; + break; + } + + _context14.next = 53; + return Object(external_this_wp_dataControls_["dispatch"])('core', '__unstableCreateUndoLevel', 'postType', type, id); + + case 53: + return _context14.abrupt("return", _context14.sent); + + case 54: + // We create a new function here on every persistent edit + // to make sure the edit makes the post dirty and creates + // a new undo level. + edits.content = function (_ref3) { + var _ref3$blocks = _ref3.blocks, + blocksForSerialization = _ref3$blocks === void 0 ? [] : _ref3$blocks; + return serialize_blocks(blocksForSerialization); + }; + + case 55: + return _context14.delegateYield(actions_editPost(edits), "t6", 56); + + case 56: + case "end": + return _context14.stop(); + } + } + }, _marked14); +} +/* + * Returns an action object used in signalling that the post editor settings have been updated. + * + * @param {Object} settings Updated settings + * + * @return {Object} Action object + */ + +function updateEditorSettings(settings) { + return { + type: 'UPDATE_EDITOR_SETTINGS', + settings: settings + }; +} +/** + * Backward compatibility + */ + +var actions_getBlockEditorAction = function getBlockEditorAction(name) { + return ( + /*#__PURE__*/ + regenerator_default.a.mark(function _callee() { + var _len, + args, + _key, + _args16 = arguments; + + return regenerator_default.a.wrap(function _callee$(_context15) { + while (1) { + switch (_context15.prev = _context15.next) { + case 0: + external_this_wp_deprecated_default()('`wp.data.dispatch( \'core/editor\' ).' + name + '`', { + alternative: '`wp.data.dispatch( \'core/block-editor\' ).' + name + '`' + }); + + for (_len = _args16.length, args = new Array(_len), _key = 0; _key < _len; _key++) { + args[_key] = _args16[_key]; + } + + _context15.next = 4; + return external_this_wp_dataControls_["dispatch"].apply(void 0, ['core/block-editor', name].concat(args)); + + case 4: + case "end": + return _context15.stop(); + } + } + }, _callee); + }) + ); +}; +/** + * @see resetBlocks in core/block-editor store. + */ + + +var resetBlocks = actions_getBlockEditorAction('resetBlocks'); +/** + * @see receiveBlocks in core/block-editor store. + */ + +var receiveBlocks = actions_getBlockEditorAction('receiveBlocks'); +/** + * @see updateBlock in core/block-editor store. + */ + +var updateBlock = actions_getBlockEditorAction('updateBlock'); +/** + * @see updateBlockAttributes in core/block-editor store. + */ + +var updateBlockAttributes = actions_getBlockEditorAction('updateBlockAttributes'); +/** + * @see selectBlock in core/block-editor store. + */ + +var selectBlock = actions_getBlockEditorAction('selectBlock'); +/** + * @see startMultiSelect in core/block-editor store. + */ + +var startMultiSelect = actions_getBlockEditorAction('startMultiSelect'); +/** + * @see stopMultiSelect in core/block-editor store. + */ + +var stopMultiSelect = actions_getBlockEditorAction('stopMultiSelect'); +/** + * @see multiSelect in core/block-editor store. + */ + +var multiSelect = actions_getBlockEditorAction('multiSelect'); +/** + * @see clearSelectedBlock in core/block-editor store. + */ + +var clearSelectedBlock = actions_getBlockEditorAction('clearSelectedBlock'); +/** + * @see toggleSelection in core/block-editor store. + */ + +var toggleSelection = actions_getBlockEditorAction('toggleSelection'); +/** + * @see replaceBlocks in core/block-editor store. + */ + +var actions_replaceBlocks = actions_getBlockEditorAction('replaceBlocks'); +/** + * @see replaceBlock in core/block-editor store. + */ + +var replaceBlock = actions_getBlockEditorAction('replaceBlock'); +/** + * @see moveBlocksDown in core/block-editor store. + */ + +var moveBlocksDown = actions_getBlockEditorAction('moveBlocksDown'); +/** + * @see moveBlocksUp in core/block-editor store. + */ + +var moveBlocksUp = actions_getBlockEditorAction('moveBlocksUp'); +/** + * @see moveBlockToPosition in core/block-editor store. + */ + +var moveBlockToPosition = actions_getBlockEditorAction('moveBlockToPosition'); +/** + * @see insertBlock in core/block-editor store. + */ + +var insertBlock = actions_getBlockEditorAction('insertBlock'); +/** + * @see insertBlocks in core/block-editor store. + */ + +var insertBlocks = actions_getBlockEditorAction('insertBlocks'); +/** + * @see showInsertionPoint in core/block-editor store. + */ + +var showInsertionPoint = actions_getBlockEditorAction('showInsertionPoint'); +/** + * @see hideInsertionPoint in core/block-editor store. + */ + +var hideInsertionPoint = actions_getBlockEditorAction('hideInsertionPoint'); +/** + * @see setTemplateValidity in core/block-editor store. + */ + +var setTemplateValidity = actions_getBlockEditorAction('setTemplateValidity'); +/** + * @see synchronizeTemplate in core/block-editor store. + */ + +var synchronizeTemplate = actions_getBlockEditorAction('synchronizeTemplate'); +/** + * @see mergeBlocks in core/block-editor store. + */ + +var mergeBlocks = actions_getBlockEditorAction('mergeBlocks'); +/** + * @see removeBlocks in core/block-editor store. + */ + +var actions_removeBlocks = actions_getBlockEditorAction('removeBlocks'); +/** + * @see removeBlock in core/block-editor store. + */ + +var removeBlock = actions_getBlockEditorAction('removeBlock'); +/** + * @see toggleBlockMode in core/block-editor store. + */ + +var toggleBlockMode = actions_getBlockEditorAction('toggleBlockMode'); +/** + * @see startTyping in core/block-editor store. + */ + +var startTyping = actions_getBlockEditorAction('startTyping'); +/** + * @see stopTyping in core/block-editor store. + */ + +var stopTyping = actions_getBlockEditorAction('stopTyping'); +/** + * @see enterFormattedText in core/block-editor store. + */ + +var enterFormattedText = actions_getBlockEditorAction('enterFormattedText'); +/** + * @see exitFormattedText in core/block-editor store. + */ + +var exitFormattedText = actions_getBlockEditorAction('exitFormattedText'); +/** + * @see insertDefaultBlock in core/block-editor store. + */ + +var insertDefaultBlock = actions_getBlockEditorAction('insertDefaultBlock'); +/** + * @see updateBlockListSettings in core/block-editor store. + */ + +var updateBlockListSettings = actions_getBlockEditorAction('updateBlockListSettings'); + +// EXTERNAL MODULE: ./node_modules/rememo/es/rememo.js +var rememo = __webpack_require__(36); + +// EXTERNAL MODULE: external {"this":["wp","date"]} +var external_this_wp_date_ = __webpack_require__(53); + +// EXTERNAL MODULE: external {"this":["wp","url"]} +var external_this_wp_url_ = __webpack_require__(26); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/selectors.js + + + +/** + * External dependencies + */ + + +/** + * WordPress dependencies + */ + + + + + + +/** + * Internal dependencies + */ + + + + + +/** + * Shared reference to an empty object for cases where it is important to avoid + * returning a new object reference on every invocation, as in a connected or + * other pure component which performs `shouldComponentUpdate` check on props. + * This should be used as a last resort, since the normalized data should be + * maintained by the reducer result in state. + */ + +var EMPTY_OBJECT = {}; +/** + * Shared reference to an empty array for cases where it is important to avoid + * returning a new array reference on every invocation, as in a connected or + * other pure component which performs `shouldComponentUpdate` check on props. + * This should be used as a last resort, since the normalized data should be + * maintained by the reducer result in state. + */ + +var EMPTY_ARRAY = []; +/** + * Returns true if any past editor history snapshots exist, or false otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether undo history exists. + */ + +var hasEditorUndo = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function () { + return select('core').hasUndo(); + }; +}); +/** + * Returns true if any future editor history snapshots exist, or false + * otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether redo history exists. + */ + +var hasEditorRedo = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function () { + return select('core').hasRedo(); + }; +}); +/** + * Returns true if the currently edited post is yet to be saved, or false if + * the post has been saved. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post is new. + */ + +function selectors_isEditedPostNew(state) { + return selectors_getCurrentPost(state).status === 'auto-draft'; +} +/** + * Returns true if content includes unsaved changes, or false otherwise. + * + * @param {Object} state Editor state. + * + * @return {boolean} Whether content includes unsaved changes. + */ + +function hasChangedContent(state) { + var edits = getPostEdits(state); + return 'blocks' in edits || // `edits` is intended to contain only values which are different from + // the saved post, so the mere presence of a property is an indicator + // that the value is different than what is known to be saved. While + // content in Visual mode is represented by the blocks state, in Text + // mode it is tracked by `edits.content`. + 'content' in edits; +} +/** + * Returns true if there are unsaved values for the current edit session, or + * false if the editing state matches the saved or new post. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether unsaved values exist. + */ + +var selectors_isEditedPostDirty = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + // Edits should contain only fields which differ from the saved post (reset + // at initial load and save complete). Thus, a non-empty edits state can be + // inferred to contain unsaved values. + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + + if (select('core').hasEditsForEntityRecord('postType', postType, postId)) { + return true; + } + + return false; + }; +}); +/** + * Returns true if there are no unsaved values for the current edit session and + * if the currently edited post is new (has never been saved before). + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether new post and unsaved values exist. + */ + +function selectors_isCleanNewPost(state) { + return !selectors_isEditedPostDirty(state) && selectors_isEditedPostNew(state); +} +/** + * Returns the post currently being edited in its last known saved state, not + * including unsaved edits. Returns an object containing relevant default post + * values if the post has not yet been saved. + * + * @param {Object} state Global application state. + * + * @return {Object} Post object. + */ + +var selectors_getCurrentPost = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var postId = selectors_getCurrentPostId(state); + var postType = selectors_getCurrentPostType(state); + var post = select('core').getRawEntityRecord('postType', postType, postId); + + if (post) { + return post; + } // This exists for compatibility with the previous selector behavior + // which would guarantee an object return based on the editor reducer's + // default empty object state. + + + return EMPTY_OBJECT; + }; +}); +/** + * Returns the post type of the post currently being edited. + * + * @param {Object} state Global application state. + * + * @return {string} Post type. + */ + +function selectors_getCurrentPostType(state) { + return state.postType; +} +/** + * Returns the ID of the post currently being edited, or null if the post has + * not yet been saved. + * + * @param {Object} state Global application state. + * + * @return {?number} ID of current post. + */ + +function selectors_getCurrentPostId(state) { + return state.postId; +} +/** + * Returns the number of revisions of the post currently being edited. + * + * @param {Object} state Global application state. + * + * @return {number} Number of revisions. + */ + +function getCurrentPostRevisionsCount(state) { + return Object(external_lodash_["get"])(selectors_getCurrentPost(state), ['_links', 'version-history', 0, 'count'], 0); +} +/** + * Returns the last revision ID of the post currently being edited, + * or null if the post has no revisions. + * + * @param {Object} state Global application state. + * + * @return {?number} ID of the last revision. + */ + +function getCurrentPostLastRevisionId(state) { + return Object(external_lodash_["get"])(selectors_getCurrentPost(state), ['_links', 'predecessor-version', 0, 'id'], null); +} +/** + * Returns any post values which have been changed in the editor but not yet + * been saved. + * + * @param {Object} state Global application state. + * + * @return {Object} Object of key value pairs comprising unsaved edits. + */ + +var getPostEdits = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + return select('core').getEntityRecordEdits('postType', postType, postId) || EMPTY_OBJECT; + }; +}); +/** + * Returns an attribute value of the saved post. + * + * @param {Object} state Global application state. + * @param {string} attributeName Post attribute name. + * + * @return {*} Post attribute value. + */ + +function selectors_getCurrentPostAttribute(state, attributeName) { + switch (attributeName) { + case 'type': + return selectors_getCurrentPostType(state); + + case 'id': + return selectors_getCurrentPostId(state); + + default: + var post = selectors_getCurrentPost(state); + + if (!post.hasOwnProperty(attributeName)) { + break; + } + + return getPostRawValue(post[attributeName]); + } +} +/** + * Returns a single attribute of the post being edited, preferring the unsaved + * edit if one exists, but merging with the attribute value for the last known + * saved state of the post (this is needed for some nested attributes like meta). + * + * @param {Object} state Global application state. + * @param {string} attributeName Post attribute name. + * + * @return {*} Post attribute value. + */ + +var selectors_getNestedEditedPostProperty = function getNestedEditedPostProperty(state, attributeName) { + var edits = getPostEdits(state); + + if (!edits.hasOwnProperty(attributeName)) { + return selectors_getCurrentPostAttribute(state, attributeName); + } + + return Object(objectSpread["a" /* default */])({}, selectors_getCurrentPostAttribute(state, attributeName), edits[attributeName]); +}; +/** + * Returns a single attribute of the post being edited, preferring the unsaved + * edit if one exists, but falling back to the attribute for the last known + * saved state of the post. + * + * @param {Object} state Global application state. + * @param {string} attributeName Post attribute name. + * + * @return {*} Post attribute value. + */ + + +function selectors_getEditedPostAttribute(state, attributeName) { + // Special cases + switch (attributeName) { + case 'content': + return getEditedPostContent(state); + } // Fall back to saved post value if not edited. + + + var edits = getPostEdits(state); + + if (!edits.hasOwnProperty(attributeName)) { + return selectors_getCurrentPostAttribute(state, attributeName); + } // Merge properties are objects which contain only the patch edit in state, + // and thus must be merged with the current post attribute. + + + if (EDIT_MERGE_PROPERTIES.has(attributeName)) { + return selectors_getNestedEditedPostProperty(state, attributeName); + } + + return edits[attributeName]; +} +/** + * Returns an attribute value of the current autosave revision for a post, or + * null if there is no autosave for the post. + * + * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` selector + * from the '@wordpress/core-data' package and access properties on the returned + * autosave object using getPostRawValue. + * + * @param {Object} state Global application state. + * @param {string} attributeName Autosave attribute name. + * + * @return {*} Autosave attribute value. + */ + +var getAutosaveAttribute = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state, attributeName) { + if (!Object(external_lodash_["includes"])(AUTOSAVE_PROPERTIES, attributeName) && attributeName !== 'preview_link') { + return; + } + + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + var currentUserId = Object(external_lodash_["get"])(select('core').getCurrentUser(), ['id']); + var autosave = select('core').getAutosave(postType, postId, currentUserId); + + if (autosave) { + return getPostRawValue(autosave[attributeName]); + } + }; +}); +/** + * Returns the current visibility of the post being edited, preferring the + * unsaved value if different than the saved post. The return value is one of + * "private", "password", or "public". + * + * @param {Object} state Global application state. + * + * @return {string} Post visibility. + */ + +function selectors_getEditedPostVisibility(state) { + var status = selectors_getEditedPostAttribute(state, 'status'); + + if (status === 'private') { + return 'private'; + } + + var password = selectors_getEditedPostAttribute(state, 'password'); + + if (password) { + return 'password'; + } + + return 'public'; +} +/** + * Returns true if post is pending review. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether current post is pending review. + */ + +function isCurrentPostPending(state) { + return selectors_getCurrentPost(state).status === 'pending'; +} +/** + * Return true if the current post has already been published. + * + * @param {Object} state Global application state. + * @param {Object?} currentPost Explicit current post for bypassing registry selector. + * + * @return {boolean} Whether the post has been published. + */ + +function selectors_isCurrentPostPublished(state, currentPost) { + var post = currentPost || selectors_getCurrentPost(state); + return ['publish', 'private'].indexOf(post.status) !== -1 || post.status === 'future' && !Object(external_this_wp_date_["isInTheFuture"])(new Date(Number(Object(external_this_wp_date_["getDate"])(post.date)) - ONE_MINUTE_IN_MS)); +} +/** + * Returns true if post is already scheduled. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether current post is scheduled to be posted. + */ + +function selectors_isCurrentPostScheduled(state) { + return selectors_getCurrentPost(state).status === 'future' && !selectors_isCurrentPostPublished(state); +} +/** + * Return true if the post being edited can be published. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post can been published. + */ + +function selectors_isEditedPostPublishable(state) { + var post = selectors_getCurrentPost(state); // TODO: Post being publishable should be superset of condition of post + // being saveable. Currently this restriction is imposed at UI. + // + // See: <PostPublishButton /> (`isButtonEnabled` assigned by `isSaveable`) + + return selectors_isEditedPostDirty(state) || ['publish', 'private', 'future'].indexOf(post.status) === -1; +} +/** + * Returns true if the post can be saved, or false otherwise. A post must + * contain a title, an excerpt, or non-empty content to be valid for save. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post can be saved. + */ + +function selectors_isEditedPostSaveable(state) { + if (selectors_isSavingPost(state)) { + return false; + } // TODO: Post should not be saveable if not dirty. Cannot be added here at + // this time since posts where meta boxes are present can be saved even if + // the post is not dirty. Currently this restriction is imposed at UI, but + // should be moved here. + // + // See: `isEditedPostPublishable` (includes `isEditedPostDirty` condition) + // See: <PostSavedState /> (`forceIsDirty` prop) + // See: <PostPublishButton /> (`forceIsDirty` prop) + // See: https://github.com/WordPress/gutenberg/pull/4184 + + + return !!selectors_getEditedPostAttribute(state, 'title') || !!selectors_getEditedPostAttribute(state, 'excerpt') || !isEditedPostEmpty(state); +} +/** + * Returns true if the edited post has content. A post has content if it has at + * least one saveable block or otherwise has a non-empty content property + * assigned. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether post has content. + */ + +function isEditedPostEmpty(state) { + // While the condition of truthy content string is sufficient to determine + // emptiness, testing saveable blocks length is a trivial operation. Since + // this function can be called frequently, optimize for the fast case as a + // condition of the mere existence of blocks. Note that the value of edited + // content takes precedent over block content, and must fall through to the + // default logic. + var blocks = selectors_getEditorBlocks(state); + + if (blocks.length) { + // Pierce the abstraction of the serializer in knowing that blocks are + // joined with with newlines such that even if every individual block + // produces an empty save result, the serialized content is non-empty. + if (blocks.length > 1) { + return false; + } // There are two conditions under which the optimization cannot be + // assumed, and a fallthrough to getEditedPostContent must occur: + // + // 1. getBlocksForSerialization has special treatment in omitting a + // single unmodified default block. + // 2. Comment delimiters are omitted for a freeform or unregistered + // block in its serialization. The freeform block specifically may + // produce an empty string in its saved output. + // + // For all other content, the single block is assumed to make a post + // non-empty, if only by virtue of its own comment delimiters. + + + var blockName = blocks[0].name; + + if (blockName !== Object(external_this_wp_blocks_["getDefaultBlockName"])() && blockName !== Object(external_this_wp_blocks_["getFreeformContentHandlerName"])()) { + return false; + } + } + + return !getEditedPostContent(state); +} +/** + * Returns true if the post can be autosaved, or false otherwise. + * + * @param {Object} state Global application state. + * @param {Object} autosave A raw autosave object from the REST API. + * + * @return {boolean} Whether the post can be autosaved. + */ + +var selectors_isEditedPostAutosaveable = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + // A post must contain a title, an excerpt, or non-empty content to be valid for autosaving. + if (!selectors_isEditedPostSaveable(state)) { + return false; + } // A post is not autosavable when there is a post autosave lock. + + + if (isPostAutosavingLocked(state)) { + return false; + } + + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + var hasFetchedAutosave = select('core').hasFetchedAutosaves(postType, postId); + var currentUserId = Object(external_lodash_["get"])(select('core').getCurrentUser(), ['id']); // Disable reason - this line causes the side-effect of fetching the autosave + // via a resolver, moving below the return would result in the autosave never + // being fetched. + // eslint-disable-next-line @wordpress/no-unused-vars-before-return + + var autosave = select('core').getAutosave(postType, postId, currentUserId); // If any existing autosaves have not yet been fetched, this function is + // unable to determine if the post is autosaveable, so return false. + + if (!hasFetchedAutosave) { + return false; + } // If we don't already have an autosave, the post is autosaveable. + + + if (!autosave) { + return true; + } // To avoid an expensive content serialization, use the content dirtiness + // flag in place of content field comparison against the known autosave. + // This is not strictly accurate, and relies on a tolerance toward autosave + // request failures for unnecessary saves. + + + if (hasChangedContent(state)) { + return true; + } // If the title or excerpt has changed, the post is autosaveable. + + + return ['title', 'excerpt'].some(function (field) { + return getPostRawValue(autosave[field]) !== selectors_getEditedPostAttribute(state, field); + }); + }; +}); +/** + * Returns the current autosave, or null if one is not set (i.e. if the post + * has yet to be autosaved, or has been saved or published since the last + * autosave). + * + * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` + * selector from the '@wordpress/core-data' package. + * + * @param {Object} state Editor state. + * + * @return {?Object} Current autosave, if exists. + */ + +var getAutosave = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + external_this_wp_deprecated_default()('`wp.data.select( \'core/editor\' ).getAutosave()`', { + alternative: '`wp.data.select( \'core\' ).getAutosave( postType, postId, userId )`', + plugin: 'Gutenberg' + }); + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + var currentUserId = Object(external_lodash_["get"])(select('core').getCurrentUser(), ['id']); + var autosave = select('core').getAutosave(postType, postId, currentUserId); + return Object(external_lodash_["mapValues"])(Object(external_lodash_["pick"])(autosave, AUTOSAVE_PROPERTIES), getPostRawValue); + }; +}); +/** + * Returns the true if there is an existing autosave, otherwise false. + * + * @deprecated since 5.6. Callers should use the `getAutosave( postType, postId, userId )` selector + * from the '@wordpress/core-data' package and check for a truthy value. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether there is an existing autosave. + */ + +var hasAutosave = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + external_this_wp_deprecated_default()('`wp.data.select( \'core/editor\' ).hasAutosave()`', { + alternative: '`!! wp.data.select( \'core\' ).getAutosave( postType, postId, userId )`', + plugin: 'Gutenberg' + }); + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + var currentUserId = Object(external_lodash_["get"])(select('core').getCurrentUser(), ['id']); + return !!select('core').getAutosave(postType, postId, currentUserId); + }; +}); +/** + * Return true if the post being edited is being scheduled. Preferring the + * unsaved status values. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post has been published. + */ + +function selectors_isEditedPostBeingScheduled(state) { + var date = selectors_getEditedPostAttribute(state, 'date'); // Offset the date by one minute (network latency) + + var checkedDate = new Date(Number(Object(external_this_wp_date_["getDate"])(date)) - ONE_MINUTE_IN_MS); + return Object(external_this_wp_date_["isInTheFuture"])(checkedDate); +} +/** + * Returns whether the current post should be considered to have a "floating" + * date (i.e. that it would publish "Immediately" rather than at a set time). + * + * Unlike in the PHP backend, the REST API returns a full date string for posts + * where the 0000-00-00T00:00:00 placeholder is present in the database. To + * infer that a post is set to publish "Immediately" we check whether the date + * and modified date are the same. + * + * @param {Object} state Editor state. + * + * @return {boolean} Whether the edited post has a floating date value. + */ + +function isEditedPostDateFloating(state) { + var date = selectors_getEditedPostAttribute(state, 'date'); + var modified = selectors_getEditedPostAttribute(state, 'modified'); + var status = selectors_getEditedPostAttribute(state, 'status'); + + if (status === 'draft' || status === 'auto-draft' || status === 'pending') { + return date === modified; + } + + return false; +} +/** + * Returns true if the post is currently being saved, or false otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether post is being saved. + */ + +var selectors_isSavingPost = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + return select('core').isSavingEntityRecord('postType', postType, postId); + }; +}); +/** + * Returns true if a previous post save was attempted successfully, or false + * otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post was saved successfully. + */ + +var didPostSaveRequestSucceed = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + return !select('core').getLastEntitySaveError('postType', postType, postId); + }; +}); +/** + * Returns true if a previous post save was attempted but failed, or false + * otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post save failed. + */ + +var didPostSaveRequestFail = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var postType = selectors_getCurrentPostType(state); + var postId = selectors_getCurrentPostId(state); + return !!select('core').getLastEntitySaveError('postType', postType, postId); + }; +}); +/** + * Returns true if the post is autosaving, or false otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post is autosaving. + */ + +function selectors_isAutosavingPost(state) { + if (!selectors_isSavingPost(state)) { + return false; + } + + return !!Object(external_lodash_["get"])(state.saving, ['options', 'isAutosave']); +} +/** + * Returns true if the post is being previewed, or false otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the post is being previewed. + */ + +function isPreviewingPost(state) { + if (!selectors_isSavingPost(state)) { + return false; + } + + return !!state.saving.options.isPreview; +} +/** + * Returns the post preview link + * + * @param {Object} state Global application state. + * + * @return {string?} Preview Link. + */ + +function selectors_getEditedPostPreviewLink(state) { + if (state.saving.pending || selectors_isSavingPost(state)) { + return; + } + + var previewLink = getAutosaveAttribute(state, 'preview_link'); + + if (!previewLink) { + previewLink = selectors_getEditedPostAttribute(state, 'link'); + + if (previewLink) { + previewLink = Object(external_this_wp_url_["addQueryArgs"])(previewLink, { + preview: true + }); + } + } + + var featuredImageId = selectors_getEditedPostAttribute(state, 'featured_media'); + + if (previewLink && featuredImageId) { + return Object(external_this_wp_url_["addQueryArgs"])(previewLink, { + _thumbnail_id: featuredImageId + }); + } + + return previewLink; +} +/** + * Returns a suggested post format for the current post, inferred only if there + * is a single block within the post and it is of a type known to match a + * default post format. Returns null if the format cannot be determined. + * + * @param {Object} state Global application state. + * + * @return {?string} Suggested post format. + */ + +function selectors_getSuggestedPostFormat(state) { + var blocks = selectors_getEditorBlocks(state); + var name; // If there is only one block in the content of the post grab its name + // so we can derive a suitable post format from it. + + if (blocks.length === 1) { + name = blocks[0].name; + } // If there are two blocks in the content and the last one is a text blocks + // grab the name of the first one to also suggest a post format from it. + + + if (blocks.length === 2) { + if (blocks[1].name === 'core/paragraph') { + name = blocks[0].name; + } + } // We only convert to default post formats in core. + + + switch (name) { + case 'core/image': + return 'image'; + + case 'core/quote': + case 'core/pullquote': + return 'quote'; + + case 'core/gallery': + return 'gallery'; + + case 'core/video': + case 'core-embed/youtube': + case 'core-embed/vimeo': + return 'video'; + + case 'core/audio': + case 'core-embed/spotify': + case 'core-embed/soundcloud': + return 'audio'; + } + + return null; +} +/** + * Returns a set of blocks which are to be used in consideration of the post's + * generated save content. + * + * @deprecated since Gutenberg 6.2.0. + * + * @param {Object} state Editor state. + * + * @return {WPBlock[]} Filtered set of blocks for save. + */ + +function getBlocksForSerialization(state) { + external_this_wp_deprecated_default()('`core/editor` getBlocksForSerialization selector', { + plugin: 'Gutenberg', + alternative: 'getEditorBlocks', + hint: 'Blocks serialization pre-processing occurs at save time' + }); + var blocks = state.editor.present.blocks.value; // WARNING: Any changes to the logic of this function should be verified + // against the implementation of isEditedPostEmpty, which bypasses this + // function for performance' sake, in an assumption of this current logic + // being irrelevant to the optimized condition of emptiness. + // A single unmodified default block is assumed to be equivalent to an + // empty post. + + var isSingleUnmodifiedDefaultBlock = blocks.length === 1 && Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])(blocks[0]); + + if (isSingleUnmodifiedDefaultBlock) { + return []; + } + + return blocks; +} +/** + * Returns the content of the post being edited. + * + * @param {Object} state Global application state. + * + * @return {string} Post content. + */ + +var getEditedPostContent = Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var postId = selectors_getCurrentPostId(state); + var postType = selectors_getCurrentPostType(state); + var record = select('core').getEditedEntityRecord('postType', postType, postId); + + if (record) { + if (typeof record.content === 'function') { + return record.content(record); + } else if (record.blocks) { + return serialize_blocks(record.blocks); + } else if (record.content) { + return record.content; + } + } + + return ''; + }; +}); +/** + * Returns the reusable block with the given ID. + * + * @param {Object} state Global application state. + * @param {number|string} ref The reusable block's ID. + * + * @return {Object} The reusable block, or null if none exists. + */ + +var __experimentalGetReusableBlock = Object(rememo["a" /* default */])(function (state, ref) { + var block = state.reusableBlocks.data[ref]; + + if (!block) { + return null; + } + + var isTemporary = isNaN(parseInt(ref)); + return Object(objectSpread["a" /* default */])({}, block, { + id: isTemporary ? ref : +ref, + isTemporary: isTemporary + }); +}, function (state, ref) { + return [state.reusableBlocks.data[ref]]; +}); +/** + * Returns whether or not the reusable block with the given ID is being saved. + * + * @param {Object} state Global application state. + * @param {string} ref The reusable block's ID. + * + * @return {boolean} Whether or not the reusable block is being saved. + */ + +function __experimentalIsSavingReusableBlock(state, ref) { + return state.reusableBlocks.isSaving[ref] || false; +} +/** + * Returns true if the reusable block with the given ID is being fetched, or + * false otherwise. + * + * @param {Object} state Global application state. + * @param {string} ref The reusable block's ID. + * + * @return {boolean} Whether the reusable block is being fetched. + */ + +function __experimentalIsFetchingReusableBlock(state, ref) { + return !!state.reusableBlocks.isFetching[ref]; +} +/** + * Returns an array of all reusable blocks. + * + * @param {Object} state Global application state. + * + * @return {Array} An array of all reusable blocks. + */ + +var selectors_experimentalGetReusableBlocks = Object(rememo["a" /* default */])(function (state) { + return Object(external_lodash_["map"])(state.reusableBlocks.data, function (value, ref) { + return __experimentalGetReusableBlock(state, ref); + }); +}, function (state) { + return [state.reusableBlocks.data]; +}); +/** + * Returns state object prior to a specified optimist transaction ID, or `null` + * if the transaction corresponding to the given ID cannot be found. + * + * @param {Object} state Current global application state. + * @param {Object} transactionId Optimist transaction ID. + * + * @return {Object} Global application state prior to transaction. + */ + +function getStateBeforeOptimisticTransaction(state, transactionId) { + var transaction = Object(external_lodash_["find"])(state.optimist, function (entry) { + return entry.beforeState && Object(external_lodash_["get"])(entry.action, ['optimist', 'id']) === transactionId; + }); + return transaction ? transaction.beforeState : null; +} +/** + * Returns true if the post is being published, or false otherwise. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether post is being published. + */ + +function selectors_isPublishingPost(state) { + if (!selectors_isSavingPost(state)) { + return false; + } // Saving is optimistic, so assume that current post would be marked as + // published if publishing + + + if (!selectors_isCurrentPostPublished(state)) { + return false; + } // Use post update transaction ID to retrieve the state prior to the + // optimistic transaction + + + var stateBeforeRequest = getStateBeforeOptimisticTransaction(state, POST_UPDATE_TRANSACTION_ID); // Consider as publishing when current post prior to request was not + // considered published + + return !!stateBeforeRequest && !selectors_isCurrentPostPublished(null, stateBeforeRequest.currentPost); +} +/** + * Returns whether the permalink is editable or not. + * + * @param {Object} state Editor state. + * + * @return {boolean} Whether or not the permalink is editable. + */ + +function selectors_isPermalinkEditable(state) { + var permalinkTemplate = selectors_getEditedPostAttribute(state, 'permalink_template'); + return PERMALINK_POSTNAME_REGEX.test(permalinkTemplate); +} +/** + * Returns the permalink for the post. + * + * @param {Object} state Editor state. + * + * @return {?string} The permalink, or null if the post is not viewable. + */ + +function getPermalink(state) { + var permalinkParts = selectors_getPermalinkParts(state); + + if (!permalinkParts) { + return null; + } + + var prefix = permalinkParts.prefix, + postName = permalinkParts.postName, + suffix = permalinkParts.suffix; + + if (selectors_isPermalinkEditable(state)) { + return prefix + postName + suffix; + } + + return prefix; +} +/** + * Returns the permalink for a post, split into it's three parts: the prefix, + * the postName, and the suffix. + * + * @param {Object} state Editor state. + * + * @return {Object} An object containing the prefix, postName, and suffix for + * the permalink, or null if the post is not viewable. + */ + +function selectors_getPermalinkParts(state) { + var permalinkTemplate = selectors_getEditedPostAttribute(state, 'permalink_template'); + + if (!permalinkTemplate) { + return null; + } + + var postName = selectors_getEditedPostAttribute(state, 'slug') || selectors_getEditedPostAttribute(state, 'generated_slug'); + + var _permalinkTemplate$sp = permalinkTemplate.split(PERMALINK_POSTNAME_REGEX), + _permalinkTemplate$sp2 = Object(slicedToArray["a" /* default */])(_permalinkTemplate$sp, 2), + prefix = _permalinkTemplate$sp2[0], + suffix = _permalinkTemplate$sp2[1]; + + return { + prefix: prefix, + postName: postName, + suffix: suffix + }; +} +/** + * Returns true if an optimistic transaction is pending commit, for which the + * before state satisfies the given predicate function. + * + * @param {Object} state Editor state. + * @param {Function} predicate Function given state, returning true if match. + * + * @return {boolean} Whether predicate matches for some history. + */ + +function inSomeHistory(state, predicate) { + var optimist = state.optimist; // In recursion, optimist state won't exist. Assume exhausted options. + + if (!optimist) { + return false; + } + + return optimist.some(function (_ref) { + var beforeState = _ref.beforeState; + return beforeState && predicate(beforeState); + }); +} +/** + * Returns whether the post is locked. + * + * @param {Object} state Global application state. + * + * @return {boolean} Is locked. + */ + +function isPostLocked(state) { + return state.postLock.isLocked; +} +/** + * Returns whether post saving is locked. + * + * @param {Object} state Global application state. + * + * @return {boolean} Is locked. + */ + +function selectors_isPostSavingLocked(state) { + return Object.keys(state.postSavingLock).length > 0; +} +/** + * Returns whether post autosaving is locked. + * + * @param {Object} state Global application state. + * + * @return {boolean} Is locked. + */ + +function isPostAutosavingLocked(state) { + return Object.keys(state.postAutosavingLock).length > 0; +} +/** + * Returns whether the edition of the post has been taken over. + * + * @param {Object} state Global application state. + * + * @return {boolean} Is post lock takeover. + */ + +function isPostLockTakeover(state) { + return state.postLock.isTakeover; +} +/** + * Returns details about the post lock user. + * + * @param {Object} state Global application state. + * + * @return {Object} A user object. + */ + +function getPostLockUser(state) { + return state.postLock.user; +} +/** + * Returns the active post lock. + * + * @param {Object} state Global application state. + * + * @return {Object} The lock object. + */ + +function getActivePostLock(state) { + return state.postLock.activePostLock; +} +/** + * Returns whether or not the user has the unfiltered_html capability. + * + * @param {Object} state Editor state. + * + * @return {boolean} Whether the user can or can't post unfiltered HTML. + */ + +function selectors_canUserUseUnfilteredHTML(state) { + return Object(external_lodash_["has"])(selectors_getCurrentPost(state), ['_links', 'wp:action-unfiltered-html']); +} +/** + * Returns whether the pre-publish panel should be shown + * or skipped when the user clicks the "publish" button. + * + * @param {Object} state Global application state. + * + * @return {boolean} Whether the pre-publish panel should be shown or not. + */ + +function selectors_isPublishSidebarEnabled(state) { + if (state.preferences.hasOwnProperty('isPublishSidebarEnabled')) { + return state.preferences.isPublishSidebarEnabled; + } + + return PREFERENCES_DEFAULTS.isPublishSidebarEnabled; +} +/** + * Return the current block list. + * + * @param {Object} state + * @return {Array} Block list. + */ + +function selectors_getEditorBlocks(state) { + return selectors_getEditedPostAttribute(state, 'blocks') || EMPTY_ARRAY; +} +/** + * Is the editor ready + * + * @param {Object} state + * @return {boolean} is Ready. + */ + +function __unstableIsEditorReady(state) { + return state.isReady; +} +/** + * Returns the post editor settings. + * + * @param {Object} state Editor state. + * + * @return {Object} The editor settings object. + */ + +function selectors_getEditorSettings(state) { + return state.editorSettings; +} +/* + * Backward compatibility + */ + +function getBlockEditorSelector(name) { + return Object(external_this_wp_data_["createRegistrySelector"])(function (select) { + return function (state) { + var _select; + + external_this_wp_deprecated_default()('`wp.data.select( \'core/editor\' ).' + name + '`', { + alternative: '`wp.data.select( \'core/block-editor\' ).' + name + '`' + }); + + for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) { + args[_key - 1] = arguments[_key]; + } + + return (_select = select('core/block-editor'))[name].apply(_select, args); + }; + }); +} +/** + * @see getBlockName in core/block-editor store. + */ + + +var selectors_getBlockName = getBlockEditorSelector('getBlockName'); +/** + * @see isBlockValid in core/block-editor store. + */ + +var isBlockValid = getBlockEditorSelector('isBlockValid'); +/** + * @see getBlockAttributes in core/block-editor store. + */ + +var getBlockAttributes = getBlockEditorSelector('getBlockAttributes'); +/** + * @see getBlock in core/block-editor store. + */ + +var selectors_getBlock = getBlockEditorSelector('getBlock'); +/** + * @see getBlocks in core/block-editor store. + */ + +var selectors_getBlocks = getBlockEditorSelector('getBlocks'); +/** + * @see __unstableGetBlockWithoutInnerBlocks in core/block-editor store. + */ + +var __unstableGetBlockWithoutInnerBlocks = getBlockEditorSelector('__unstableGetBlockWithoutInnerBlocks'); +/** + * @see getClientIdsOfDescendants in core/block-editor store. + */ + +var getClientIdsOfDescendants = getBlockEditorSelector('getClientIdsOfDescendants'); +/** + * @see getClientIdsWithDescendants in core/block-editor store. + */ + +var getClientIdsWithDescendants = getBlockEditorSelector('getClientIdsWithDescendants'); +/** + * @see getGlobalBlockCount in core/block-editor store. + */ + +var getGlobalBlockCount = getBlockEditorSelector('getGlobalBlockCount'); +/** + * @see getBlocksByClientId in core/block-editor store. + */ + +var selectors_getBlocksByClientId = getBlockEditorSelector('getBlocksByClientId'); +/** + * @see getBlockCount in core/block-editor store. + */ + +var getBlockCount = getBlockEditorSelector('getBlockCount'); +/** + * @see getBlockSelectionStart in core/block-editor store. + */ + +var getBlockSelectionStart = getBlockEditorSelector('getBlockSelectionStart'); +/** + * @see getBlockSelectionEnd in core/block-editor store. + */ + +var getBlockSelectionEnd = getBlockEditorSelector('getBlockSelectionEnd'); +/** + * @see getSelectedBlockCount in core/block-editor store. + */ + +var getSelectedBlockCount = getBlockEditorSelector('getSelectedBlockCount'); +/** + * @see hasSelectedBlock in core/block-editor store. + */ + +var hasSelectedBlock = getBlockEditorSelector('hasSelectedBlock'); +/** + * @see getSelectedBlockClientId in core/block-editor store. + */ + +var selectors_getSelectedBlockClientId = getBlockEditorSelector('getSelectedBlockClientId'); +/** + * @see getSelectedBlock in core/block-editor store. + */ + +var getSelectedBlock = getBlockEditorSelector('getSelectedBlock'); +/** + * @see getBlockRootClientId in core/block-editor store. + */ + +var getBlockRootClientId = getBlockEditorSelector('getBlockRootClientId'); +/** + * @see getBlockHierarchyRootClientId in core/block-editor store. + */ + +var getBlockHierarchyRootClientId = getBlockEditorSelector('getBlockHierarchyRootClientId'); +/** + * @see getAdjacentBlockClientId in core/block-editor store. + */ + +var getAdjacentBlockClientId = getBlockEditorSelector('getAdjacentBlockClientId'); +/** + * @see getPreviousBlockClientId in core/block-editor store. + */ + +var getPreviousBlockClientId = getBlockEditorSelector('getPreviousBlockClientId'); +/** + * @see getNextBlockClientId in core/block-editor store. + */ + +var getNextBlockClientId = getBlockEditorSelector('getNextBlockClientId'); +/** + * @see getSelectedBlocksInitialCaretPosition in core/block-editor store. + */ + +var getSelectedBlocksInitialCaretPosition = getBlockEditorSelector('getSelectedBlocksInitialCaretPosition'); +/** + * @see getMultiSelectedBlockClientIds in core/block-editor store. + */ + +var getMultiSelectedBlockClientIds = getBlockEditorSelector('getMultiSelectedBlockClientIds'); +/** + * @see getMultiSelectedBlocks in core/block-editor store. + */ + +var getMultiSelectedBlocks = getBlockEditorSelector('getMultiSelectedBlocks'); +/** + * @see getFirstMultiSelectedBlockClientId in core/block-editor store. + */ + +var getFirstMultiSelectedBlockClientId = getBlockEditorSelector('getFirstMultiSelectedBlockClientId'); +/** + * @see getLastMultiSelectedBlockClientId in core/block-editor store. + */ + +var getLastMultiSelectedBlockClientId = getBlockEditorSelector('getLastMultiSelectedBlockClientId'); +/** + * @see isFirstMultiSelectedBlock in core/block-editor store. + */ + +var isFirstMultiSelectedBlock = getBlockEditorSelector('isFirstMultiSelectedBlock'); +/** + * @see isBlockMultiSelected in core/block-editor store. + */ + +var isBlockMultiSelected = getBlockEditorSelector('isBlockMultiSelected'); +/** + * @see isAncestorMultiSelected in core/block-editor store. + */ + +var isAncestorMultiSelected = getBlockEditorSelector('isAncestorMultiSelected'); +/** + * @see getMultiSelectedBlocksStartClientId in core/block-editor store. + */ + +var getMultiSelectedBlocksStartClientId = getBlockEditorSelector('getMultiSelectedBlocksStartClientId'); +/** + * @see getMultiSelectedBlocksEndClientId in core/block-editor store. + */ + +var getMultiSelectedBlocksEndClientId = getBlockEditorSelector('getMultiSelectedBlocksEndClientId'); +/** + * @see getBlockOrder in core/block-editor store. + */ + +var getBlockOrder = getBlockEditorSelector('getBlockOrder'); +/** + * @see getBlockIndex in core/block-editor store. + */ + +var getBlockIndex = getBlockEditorSelector('getBlockIndex'); +/** + * @see isBlockSelected in core/block-editor store. + */ + +var isBlockSelected = getBlockEditorSelector('isBlockSelected'); +/** + * @see hasSelectedInnerBlock in core/block-editor store. + */ + +var hasSelectedInnerBlock = getBlockEditorSelector('hasSelectedInnerBlock'); +/** + * @see isBlockWithinSelection in core/block-editor store. + */ + +var isBlockWithinSelection = getBlockEditorSelector('isBlockWithinSelection'); +/** + * @see hasMultiSelection in core/block-editor store. + */ + +var hasMultiSelection = getBlockEditorSelector('hasMultiSelection'); +/** + * @see isMultiSelecting in core/block-editor store. + */ + +var isMultiSelecting = getBlockEditorSelector('isMultiSelecting'); +/** + * @see isSelectionEnabled in core/block-editor store. + */ + +var isSelectionEnabled = getBlockEditorSelector('isSelectionEnabled'); +/** + * @see getBlockMode in core/block-editor store. + */ + +var getBlockMode = getBlockEditorSelector('getBlockMode'); +/** + * @see isTyping in core/block-editor store. + */ + +var isTyping = getBlockEditorSelector('isTyping'); +/** + * @see isCaretWithinFormattedText in core/block-editor store. + */ + +var isCaretWithinFormattedText = getBlockEditorSelector('isCaretWithinFormattedText'); +/** + * @see getBlockInsertionPoint in core/block-editor store. + */ + +var getBlockInsertionPoint = getBlockEditorSelector('getBlockInsertionPoint'); +/** + * @see isBlockInsertionPointVisible in core/block-editor store. + */ + +var isBlockInsertionPointVisible = getBlockEditorSelector('isBlockInsertionPointVisible'); +/** + * @see isValidTemplate in core/block-editor store. + */ + +var isValidTemplate = getBlockEditorSelector('isValidTemplate'); +/** + * @see getTemplate in core/block-editor store. + */ + +var getTemplate = getBlockEditorSelector('getTemplate'); +/** + * @see getTemplateLock in core/block-editor store. + */ + +var getTemplateLock = getBlockEditorSelector('getTemplateLock'); +/** + * @see canInsertBlockType in core/block-editor store. + */ + +var selectors_canInsertBlockType = getBlockEditorSelector('canInsertBlockType'); +/** + * @see getInserterItems in core/block-editor store. + */ + +var selectors_getInserterItems = getBlockEditorSelector('getInserterItems'); +/** + * @see hasInserterItems in core/block-editor store. + */ + +var hasInserterItems = getBlockEditorSelector('hasInserterItems'); +/** + * @see getBlockListSettings in core/block-editor store. + */ + +var getBlockListSettings = getBlockEditorSelector('getBlockListSettings'); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/effects/reusable-blocks.js + + + + +/** + * External dependencies + */ + + +/** + * WordPress dependencies + */ + + + + // TODO: Ideally this would be the only dispatch in scope. This requires either +// refactoring editor actions to yielded controls, or replacing direct dispatch +// on the editor store with action creators (e.g. `REMOVE_REUSABLE_BLOCK`). + + +/** + * Internal dependencies + */ + + + +/** + * Module Constants + */ + +var REUSABLE_BLOCK_NOTICE_ID = 'REUSABLE_BLOCK_NOTICE_ID'; +/** + * Fetch Reusable Blocks Effect Handler. + * + * @param {Object} action action object. + * @param {Object} store Redux Store. + */ + +var fetchReusableBlocks = +/*#__PURE__*/ +function () { + var _ref = Object(asyncToGenerator["a" /* default */])( + /*#__PURE__*/ + regenerator_default.a.mark(function _callee(action, store) { + var id, dispatch, postType, posts, results; + return regenerator_default.a.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + id = action.id; + dispatch = store.dispatch; // TODO: these are potentially undefined, this fix is in place + // until there is a filter to not use reusable blocks if undefined + + _context.next = 4; + return external_this_wp_apiFetch_default()({ + path: '/wp/v2/types/wp_block' + }); + + case 4: + postType = _context.sent; + + if (postType) { + _context.next = 7; + break; + } + + return _context.abrupt("return"); + + case 7: + _context.prev = 7; + + if (!id) { + _context.next = 15; + break; + } + + _context.next = 11; + return external_this_wp_apiFetch_default()({ + path: "/wp/v2/".concat(postType.rest_base, "/").concat(id) + }); + + case 11: + _context.t0 = _context.sent; + posts = [_context.t0]; + _context.next = 18; + break; + + case 15: + _context.next = 17; + return external_this_wp_apiFetch_default()({ + path: "/wp/v2/".concat(postType.rest_base, "?per_page=-1") + }); + + case 17: + posts = _context.sent; + + case 18: + results = Object(external_lodash_["compact"])(Object(external_lodash_["map"])(posts, function (post) { + if (post.status !== 'publish' || post.content.protected) { + return null; + } + + return Object(objectSpread["a" /* default */])({}, post, { + content: post.content.raw, + title: post.title.raw + }); + })); + + if (results.length) { + dispatch(__experimentalReceiveReusableBlocks(results)); + } + + dispatch({ + type: 'FETCH_REUSABLE_BLOCKS_SUCCESS', + id: id + }); + _context.next = 26; + break; + + case 23: + _context.prev = 23; + _context.t1 = _context["catch"](7); + dispatch({ + type: 'FETCH_REUSABLE_BLOCKS_FAILURE', + id: id, + error: _context.t1 + }); + + case 26: + case "end": + return _context.stop(); + } + } + }, _callee, null, [[7, 23]]); + })); + + return function fetchReusableBlocks(_x, _x2) { + return _ref.apply(this, arguments); + }; +}(); +/** + * Save Reusable Blocks Effect Handler. + * + * @param {Object} action action object. + * @param {Object} store Redux Store. + */ + +var saveReusableBlocks = +/*#__PURE__*/ +function () { + var _ref2 = Object(asyncToGenerator["a" /* default */])( + /*#__PURE__*/ + regenerator_default.a.mark(function _callee2(action, store) { + var postType, id, dispatch, state, _getReusableBlock, title, content, isTemporary, data, path, method, updatedReusableBlock, message; + + return regenerator_default.a.wrap(function _callee2$(_context2) { + while (1) { + switch (_context2.prev = _context2.next) { + case 0: + _context2.next = 2; + return external_this_wp_apiFetch_default()({ + path: '/wp/v2/types/wp_block' + }); + + case 2: + postType = _context2.sent; + + if (postType) { + _context2.next = 5; + break; + } + + return _context2.abrupt("return"); + + case 5: + id = action.id; + dispatch = store.dispatch; + state = store.getState(); + _getReusableBlock = __experimentalGetReusableBlock(state, id), title = _getReusableBlock.title, content = _getReusableBlock.content, isTemporary = _getReusableBlock.isTemporary; + data = isTemporary ? { + title: title, + content: content, + status: 'publish' + } : { + id: id, + title: title, + content: content, + status: 'publish' + }; + path = isTemporary ? "/wp/v2/".concat(postType.rest_base) : "/wp/v2/".concat(postType.rest_base, "/").concat(id); + method = isTemporary ? 'POST' : 'PUT'; + _context2.prev = 12; + _context2.next = 15; + return external_this_wp_apiFetch_default()({ + path: path, + data: data, + method: method + }); + + case 15: + updatedReusableBlock = _context2.sent; + dispatch({ + type: 'SAVE_REUSABLE_BLOCK_SUCCESS', + updatedId: updatedReusableBlock.id, + id: id + }); + message = isTemporary ? Object(external_this_wp_i18n_["__"])('Block created.') : Object(external_this_wp_i18n_["__"])('Block updated.'); + Object(external_this_wp_data_["dispatch"])('core/notices').createSuccessNotice(message, { + id: REUSABLE_BLOCK_NOTICE_ID, + type: 'snackbar' + }); + + Object(external_this_wp_data_["dispatch"])('core/block-editor').__unstableSaveReusableBlock(id, updatedReusableBlock.id); + + _context2.next = 26; + break; + + case 22: + _context2.prev = 22; + _context2.t0 = _context2["catch"](12); + dispatch({ + type: 'SAVE_REUSABLE_BLOCK_FAILURE', + id: id + }); + Object(external_this_wp_data_["dispatch"])('core/notices').createErrorNotice(_context2.t0.message, { + id: REUSABLE_BLOCK_NOTICE_ID + }); + + case 26: + case "end": + return _context2.stop(); + } + } + }, _callee2, null, [[12, 22]]); + })); + + return function saveReusableBlocks(_x3, _x4) { + return _ref2.apply(this, arguments); + }; +}(); +/** + * Delete Reusable Blocks Effect Handler. + * + * @param {Object} action action object. + * @param {Object} store Redux Store. + */ + +var deleteReusableBlocks = +/*#__PURE__*/ +function () { + var _ref3 = Object(asyncToGenerator["a" /* default */])( + /*#__PURE__*/ + regenerator_default.a.mark(function _callee3(action, store) { + var postType, id, getState, dispatch, reusableBlock, allBlocks, associatedBlocks, associatedBlockClientIds, transactionId, message; + return regenerator_default.a.wrap(function _callee3$(_context3) { + while (1) { + switch (_context3.prev = _context3.next) { + case 0: + _context3.next = 2; + return external_this_wp_apiFetch_default()({ + path: '/wp/v2/types/wp_block' + }); + + case 2: + postType = _context3.sent; + + if (postType) { + _context3.next = 5; + break; + } + + return _context3.abrupt("return"); + + case 5: + id = action.id; + getState = store.getState, dispatch = store.dispatch; // Don't allow a reusable block with a temporary ID to be deleted + + reusableBlock = __experimentalGetReusableBlock(getState(), id); + + if (!(!reusableBlock || reusableBlock.isTemporary)) { + _context3.next = 10; + break; + } + + return _context3.abrupt("return"); + + case 10: + // Remove any other blocks that reference this reusable block + allBlocks = Object(external_this_wp_data_["select"])('core/block-editor').getBlocks(); + associatedBlocks = allBlocks.filter(function (block) { + return Object(external_this_wp_blocks_["isReusableBlock"])(block) && block.attributes.ref === id; + }); + associatedBlockClientIds = associatedBlocks.map(function (block) { + return block.clientId; + }); + transactionId = Object(external_lodash_["uniqueId"])(); + dispatch({ + type: 'REMOVE_REUSABLE_BLOCK', + id: id, + optimist: { + type: redux_optimist["BEGIN"], + id: transactionId + } + }); // Remove the parsed block. + + if (associatedBlockClientIds.length) { + Object(external_this_wp_data_["dispatch"])('core/block-editor').removeBlocks(associatedBlockClientIds); + } + + _context3.prev = 16; + _context3.next = 19; + return external_this_wp_apiFetch_default()({ + path: "/wp/v2/".concat(postType.rest_base, "/").concat(id), + method: 'DELETE' + }); + + case 19: + dispatch({ + type: 'DELETE_REUSABLE_BLOCK_SUCCESS', + id: id, + optimist: { + type: redux_optimist["COMMIT"], + id: transactionId + } + }); + message = Object(external_this_wp_i18n_["__"])('Block deleted.'); + Object(external_this_wp_data_["dispatch"])('core/notices').createSuccessNotice(message, { + id: REUSABLE_BLOCK_NOTICE_ID, + type: 'snackbar' + }); + _context3.next = 28; + break; + + case 24: + _context3.prev = 24; + _context3.t0 = _context3["catch"](16); + dispatch({ + type: 'DELETE_REUSABLE_BLOCK_FAILURE', + id: id, + optimist: { + type: redux_optimist["REVERT"], + id: transactionId + } + }); + Object(external_this_wp_data_["dispatch"])('core/notices').createErrorNotice(_context3.t0.message, { + id: REUSABLE_BLOCK_NOTICE_ID + }); + + case 28: + case "end": + return _context3.stop(); + } + } + }, _callee3, null, [[16, 24]]); + })); + + return function deleteReusableBlocks(_x5, _x6) { + return _ref3.apply(this, arguments); + }; +}(); +/** + * Convert a reusable block to a static block effect handler + * + * @param {Object} action action object. + * @param {Object} store Redux Store. + */ + +var reusable_blocks_convertBlockToStatic = function convertBlockToStatic(action, store) { + var state = store.getState(); + var oldBlock = Object(external_this_wp_data_["select"])('core/block-editor').getBlock(action.clientId); + var reusableBlock = __experimentalGetReusableBlock(state, oldBlock.attributes.ref); + var newBlocks = Object(external_this_wp_blocks_["parse"])(reusableBlock.content); + Object(external_this_wp_data_["dispatch"])('core/block-editor').replaceBlocks(oldBlock.clientId, newBlocks); +}; +/** + * Convert a static block to a reusable block effect handler + * + * @param {Object} action action object. + * @param {Object} store Redux Store. + */ + +var reusable_blocks_convertBlockToReusable = function convertBlockToReusable(action, store) { + var dispatch = store.dispatch; + var reusableBlock = { + id: Object(external_lodash_["uniqueId"])('reusable'), + title: Object(external_this_wp_i18n_["__"])('Untitled Reusable Block'), + content: Object(external_this_wp_blocks_["serialize"])(Object(external_this_wp_data_["select"])('core/block-editor').getBlocksByClientId(action.clientIds)) + }; + dispatch(__experimentalReceiveReusableBlocks([reusableBlock])); + dispatch(__experimentalSaveReusableBlock(reusableBlock.id)); + Object(external_this_wp_data_["dispatch"])('core/block-editor').replaceBlocks(action.clientIds, Object(external_this_wp_blocks_["createBlock"])('core/block', { + ref: reusableBlock.id + })); +}; + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/effects.js +/** + * Internal dependencies + */ + +/* harmony default export */ var effects = ({ + FETCH_REUSABLE_BLOCKS: function FETCH_REUSABLE_BLOCKS(action, store) { + fetchReusableBlocks(action, store); + }, + SAVE_REUSABLE_BLOCK: function SAVE_REUSABLE_BLOCK(action, store) { + saveReusableBlocks(action, store); + }, + DELETE_REUSABLE_BLOCK: function DELETE_REUSABLE_BLOCK(action, store) { + deleteReusableBlocks(action, store); + }, + CONVERT_BLOCK_TO_STATIC: reusable_blocks_convertBlockToStatic, + CONVERT_BLOCK_TO_REUSABLE: reusable_blocks_convertBlockToReusable +}); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/middlewares.js +/** + * External dependencies + */ + +/** + * Internal dependencies + */ + + +/** + * Applies the custom middlewares used specifically in the editor module. + * + * @param {Object} store Store Object. + * + * @return {Object} Update Store Object. + */ + +function applyMiddlewares(store) { + var enhancedDispatch = function enhancedDispatch() { + throw new Error('Dispatching while constructing your middleware is not allowed. ' + 'Other middleware would not be applied to this dispatch.'); + }; + + var middlewareAPI = { + getState: store.getState, + dispatch: function dispatch() { + return enhancedDispatch.apply(void 0, arguments); + } + }; + enhancedDispatch = refx_default()(effects)(middlewareAPI)(store.dispatch); + store.dispatch = enhancedDispatch; + return store; +} + +/* harmony default export */ var middlewares = (applyMiddlewares); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/index.js + + +/** + * WordPress dependencies + */ + + +/** + * Internal dependencies + */ + + + + + + + +/** + * Post 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: Object(objectSpread["a" /* default */])({}, external_this_wp_dataControls_["controls"], store_controls) +}; +var store_store = Object(external_this_wp_data_["registerStore"])(STORE_KEY, Object(objectSpread["a" /* default */])({}, storeConfig, { + persist: ['preferences'] +})); +middlewares(store_store); +/* harmony default export */ var build_module_store = (store_store); + +// EXTERNAL MODULE: external {"this":["wp","hooks"]} +var external_this_wp_hooks_ = __webpack_require__(27); + +// EXTERNAL MODULE: external {"this":["wp","element"]} +var external_this_wp_element_ = __webpack_require__(0); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/block.js + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + +/** + * Returns the client ID of the parent where a newly inserted block would be + * placed. + * + * @return {string} Client ID of the parent where a newly inserted block would + * be placed. + */ + +function defaultGetBlockInsertionParentClientId() { + return Object(external_this_wp_data_["select"])('core/block-editor').getBlockInsertionPoint().rootClientId; +} +/** + * Returns the inserter items for the specified parent block. + * + * @param {string} rootClientId Client ID of the block for which to retrieve + * inserter items. + * + * @return {Array<Editor.InserterItem>} The inserter items for the specified + * parent. + */ + + +function defaultGetInserterItems(rootClientId) { + return Object(external_this_wp_data_["select"])('core/block-editor').getInserterItems(rootClientId); +} +/** + * Returns the name of the currently selected block. + * + * @return {string?} The name of the currently selected block or `null` if no + * block is selected. + */ + + +function defaultGetSelectedBlockName() { + var _select = Object(external_this_wp_data_["select"])('core/block-editor'), + getSelectedBlockClientId = _select.getSelectedBlockClientId, + getBlockName = _select.getBlockName; + + var selectedBlockClientId = getSelectedBlockClientId(); + return selectedBlockClientId ? getBlockName(selectedBlockClientId) : null; +} +/** + * Triggers a fetch of reusable blocks, once. + * + * TODO: Reusable blocks fetching should be reimplemented as a core-data entity + * resolver, not relying on `core/editor` (see #7119). The implementation here + * is imperfect in that the options result will not await the completion of the + * fetch request and thus will not include any reusable blocks. This has always + * been true, but relied upon the fact the user would be delayed in typing an + * autocompleter search query. Once implemented using resolvers, the status of + * this request could be subscribed to as part of a promised return value using + * the result of `hasFinishedResolution`. There is currently reliable way to + * determine that a reusable blocks fetch request has completed. + * + * @return {Promise} Promise resolving once reusable blocks fetched. + */ + + +var block_fetchReusableBlocks = Object(external_lodash_["once"])(function () { + Object(external_this_wp_data_["dispatch"])('core/editor').__experimentalFetchReusableBlocks(); +}); +/** + * Creates a blocks repeater for replacing the current block with a selected block type. + * + * @return {Completer} A blocks completer. + */ + +function createBlockCompleter() { + var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}, + _ref$getBlockInsertio = _ref.getBlockInsertionParentClientId, + getBlockInsertionParentClientId = _ref$getBlockInsertio === void 0 ? defaultGetBlockInsertionParentClientId : _ref$getBlockInsertio, + _ref$getInserterItems = _ref.getInserterItems, + getInserterItems = _ref$getInserterItems === void 0 ? defaultGetInserterItems : _ref$getInserterItems, + _ref$getSelectedBlock = _ref.getSelectedBlockName, + getSelectedBlockName = _ref$getSelectedBlock === void 0 ? defaultGetSelectedBlockName : _ref$getSelectedBlock; + + return { + name: 'blocks', + className: 'editor-autocompleters__block', + triggerPrefix: '/', + options: function options() { + block_fetchReusableBlocks(); + var selectedBlockName = getSelectedBlockName(); + return getInserterItems(getBlockInsertionParentClientId()).filter( // Avoid offering to replace the current block with a block of the same type. + function (inserterItem) { + return selectedBlockName !== inserterItem.name; + }); + }, + getOptionKeywords: function getOptionKeywords(inserterItem) { + var title = inserterItem.title, + _inserterItem$keyword = inserterItem.keywords, + keywords = _inserterItem$keyword === void 0 ? [] : _inserterItem$keyword, + category = inserterItem.category; + return [category].concat(Object(toConsumableArray["a" /* default */])(keywords), [title]); + }, + getOptionLabel: function getOptionLabel(inserterItem) { + var icon = inserterItem.icon, + title = inserterItem.title; + return [Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockIcon"], { + key: "icon", + icon: icon, + showColors: true + }), title]; + }, + allowContext: function allowContext(before, after) { + return !(/\S/.test(before) || /\S/.test(after)); + }, + getOptionCompletion: function getOptionCompletion(inserterItem) { + var name = inserterItem.name, + initialAttributes = inserterItem.initialAttributes; + return { + action: 'replace', + value: Object(external_this_wp_blocks_["createBlock"])(name, initialAttributes) + }; + }, + isOptionDisabled: function isOptionDisabled(inserterItem) { + return inserterItem.isDisabled; + } + }; +} +/** + * Creates a blocks repeater for replacing the current block with a selected block type. + * + * @return {Completer} A blocks completer. + */ + +/* harmony default export */ var autocompleters_block = (createBlockCompleter()); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/user.js + + +/** + * WordPress dependencies + */ + +/** + * A user mentions completer. + * + * @type {Completer} + */ + +/* harmony default export */ var autocompleters_user = ({ + name: 'users', + className: 'editor-autocompleters__user', + triggerPrefix: '@', + options: function options(search) { + var payload = ''; + + if (search) { + payload = '?search=' + encodeURIComponent(search); + } + + return external_this_wp_apiFetch_default()({ + path: '/wp/v2/users' + payload + }); + }, + isDebounced: true, + getOptionKeywords: function getOptionKeywords(user) { + return [user.slug, user.name]; + }, + getOptionLabel: function getOptionLabel(user) { + return [Object(external_this_wp_element_["createElement"])("img", { + key: "avatar", + className: "editor-autocompleters__user-avatar", + alt: "", + src: user.avatar_urls[24] + }), Object(external_this_wp_element_["createElement"])("span", { + key: "name", + className: "editor-autocompleters__user-name" + }, user.name), Object(external_this_wp_element_["createElement"])("span", { + key: "slug", + className: "editor-autocompleters__user-slug" + }, user.slug)]; + }, + getOptionCompletion: function getOptionCompletion(user) { + return "@".concat(user.slug); + } +}); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autocompleters/index.js + + + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js +var classCallCheck = __webpack_require__(12); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js +var createClass = __webpack_require__(11); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js +var possibleConstructorReturn = __webpack_require__(13); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js +var getPrototypeOf = __webpack_require__(14); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules +var inherits = __webpack_require__(15); + +// EXTERNAL MODULE: external {"this":["wp","compose"]} +var external_this_wp_compose_ = __webpack_require__(8); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/autosave-monitor/index.js + + + + + + +/** + * WordPress dependencies + */ + + + +var autosave_monitor_AutosaveMonitor = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(AutosaveMonitor, _Component); + + function AutosaveMonitor() { + Object(classCallCheck["a" /* default */])(this, AutosaveMonitor); + + return Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(AutosaveMonitor).apply(this, arguments)); + } + + Object(createClass["a" /* default */])(AutosaveMonitor, [{ + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + var _this$props = this.props, + isDirty = _this$props.isDirty, + editsReference = _this$props.editsReference, + isAutosaveable = _this$props.isAutosaveable, + isAutosaving = _this$props.isAutosaving; // The edits reference is held for comparison to avoid scheduling an + // autosave if an edit has not been made since the last autosave + // completion. This is assigned when the autosave completes, and reset + // when an edit occurs. + // + // See: https://github.com/WordPress/gutenberg/issues/12318 + + if (editsReference !== prevProps.editsReference) { + this.didAutosaveForEditsReference = false; + } + + if (!isAutosaving && prevProps.isAutosaving) { + this.didAutosaveForEditsReference = true; + } + + if (prevProps.isDirty !== isDirty || prevProps.isAutosaveable !== isAutosaveable || prevProps.editsReference !== editsReference) { + this.toggleTimer(isDirty && isAutosaveable && !this.didAutosaveForEditsReference); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.toggleTimer(false); + } + }, { + key: "toggleTimer", + value: function toggleTimer(isPendingSave) { + var _this = this; + + var _this$props2 = this.props, + interval = _this$props2.interval, + _this$props2$shouldTh = _this$props2.shouldThrottle, + shouldThrottle = _this$props2$shouldTh === void 0 ? false : _this$props2$shouldTh; // By default, AutosaveMonitor will wait for a pause in editing before + // autosaving. In other words, its action is "debounced". + // + // The `shouldThrottle` props allows overriding this behaviour, thus + // making the autosave action "throttled". + + if (!shouldThrottle && this.pendingSave) { + clearTimeout(this.pendingSave); + delete this.pendingSave; + } + + if (isPendingSave && !(shouldThrottle && this.pendingSave)) { + this.pendingSave = setTimeout(function () { + _this.props.autosave(); + + delete _this.pendingSave; + }, interval * 1000); + } + } + }, { + key: "render", + value: function render() { + return null; + } + }]); + + return AutosaveMonitor; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var autosave_monitor = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, ownProps) { + var _select = select('core'), + getReferenceByDistinctEdits = _select.getReferenceByDistinctEdits; + + var _select2 = select('core/editor'), + isEditedPostDirty = _select2.isEditedPostDirty, + isEditedPostAutosaveable = _select2.isEditedPostAutosaveable, + isAutosavingPost = _select2.isAutosavingPost, + getEditorSettings = _select2.getEditorSettings; + + var _ownProps$interval = ownProps.interval, + interval = _ownProps$interval === void 0 ? getEditorSettings().autosaveInterval : _ownProps$interval; + return { + isDirty: isEditedPostDirty(), + isAutosaveable: isEditedPostAutosaveable(), + editsReference: getReferenceByDistinctEdits(), + isAutosaving: isAutosavingPost(), + interval: interval + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) { + return { + autosave: function autosave() { + var _ownProps$autosave = ownProps.autosave, + autosave = _ownProps$autosave === void 0 ? dispatch('core/editor').autosave : _ownProps$autosave; + autosave(); + } + }; +})])(autosave_monitor_AutosaveMonitor)); + +// EXTERNAL MODULE: ./node_modules/classnames/index.js +var classnames = __webpack_require__(16); +var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/item.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +var item_TableOfContentsItem = function TableOfContentsItem(_ref) { + var children = _ref.children, + isValid = _ref.isValid, + level = _ref.level, + _ref$path = _ref.path, + path = _ref$path === void 0 ? [] : _ref$path, + href = _ref.href, + onSelect = _ref.onSelect; + return Object(external_this_wp_element_["createElement"])("li", { + className: classnames_default()('document-outline__item', "is-".concat(level.toLowerCase()), { + 'is-invalid': !isValid + }) + }, Object(external_this_wp_element_["createElement"])("a", { + href: href, + className: "document-outline__button", + onClick: onSelect + }, Object(external_this_wp_element_["createElement"])("span", { + className: "document-outline__emdash", + "aria-hidden": "true" + }), // path is an array of nodes that are ancestors of the heading starting in the top level node. + // This mapping renders each ancestor to make it easier for the user to know where the headings are nested. + path.map(function (_ref2, index) { + var clientId = _ref2.clientId; + return Object(external_this_wp_element_["createElement"])("strong", { + key: index, + className: "document-outline__level" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockTitle"], { + clientId: clientId + })); + }), Object(external_this_wp_element_["createElement"])("strong", { + className: "document-outline__level" + }, level), Object(external_this_wp_element_["createElement"])("span", { + className: "document-outline__item-content" + }, children))); +}; + +/* harmony default export */ var document_outline_item = (item_TableOfContentsItem); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/index.js + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + +/** + * Module constants + */ + +var emptyHeadingContent = Object(external_this_wp_element_["createElement"])("em", null, Object(external_this_wp_i18n_["__"])('(Empty heading)')); +var incorrectLevelContent = [Object(external_this_wp_element_["createElement"])("br", { + key: "incorrect-break" +}), Object(external_this_wp_element_["createElement"])("em", { + key: "incorrect-message" +}, Object(external_this_wp_i18n_["__"])('(Incorrect heading level)'))]; +var singleH1Headings = [Object(external_this_wp_element_["createElement"])("br", { + key: "incorrect-break-h1" +}), Object(external_this_wp_element_["createElement"])("em", { + key: "incorrect-message-h1" +}, Object(external_this_wp_i18n_["__"])('(Your theme may already use a H1 for the post title)'))]; +var multipleH1Headings = [Object(external_this_wp_element_["createElement"])("br", { + key: "incorrect-break-multiple-h1" +}), Object(external_this_wp_element_["createElement"])("em", { + key: "incorrect-message-multiple-h1" +}, Object(external_this_wp_i18n_["__"])('(Multiple H1 headings are not recommended)'))]; +/** + * Returns an array of heading blocks enhanced with the following properties: + * path - An array of blocks that are ancestors of the heading starting from a top-level node. + * Can be an empty array if the heading is a top-level node (is not nested inside another block). + * level - An integer with the heading level. + * isEmpty - Flag indicating if the heading has no content. + * + * @param {?Array} blocks An array of blocks. + * @param {?Array} path An array of blocks that are ancestors of the blocks passed as blocks. + * + * @return {Array} An array of heading blocks enhanced with the properties described above. + */ + +var document_outline_computeOutlineHeadings = function computeOutlineHeadings() { + var blocks = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var path = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : []; + return Object(external_lodash_["flatMap"])(blocks, function () { + var block = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + + if (block.name === 'core/heading') { + return Object(objectSpread["a" /* default */])({}, block, { + path: path, + level: block.attributes.level, + isEmpty: isEmptyHeading(block) + }); + } + + return computeOutlineHeadings(block.innerBlocks, [].concat(Object(toConsumableArray["a" /* default */])(path), [block])); + }); +}; + +var isEmptyHeading = function isEmptyHeading(heading) { + return !heading.attributes.content || heading.attributes.content.length === 0; +}; + +var document_outline_DocumentOutline = function DocumentOutline(_ref) { + var _ref$blocks = _ref.blocks, + blocks = _ref$blocks === void 0 ? [] : _ref$blocks, + title = _ref.title, + onSelect = _ref.onSelect, + isTitleSupported = _ref.isTitleSupported, + hasOutlineItemsDisabled = _ref.hasOutlineItemsDisabled; + var headings = document_outline_computeOutlineHeadings(blocks); + + if (headings.length < 1) { + return null; + } + + var prevHeadingLevel = 1; // Not great but it's the simplest way to locate the title right now. + + var titleNode = document.querySelector('.editor-post-title__input'); + var hasTitle = isTitleSupported && title && titleNode; + var countByLevel = Object(external_lodash_["countBy"])(headings, 'level'); + var hasMultipleH1 = countByLevel[1] > 1; + return Object(external_this_wp_element_["createElement"])("div", { + className: "document-outline" + }, Object(external_this_wp_element_["createElement"])("ul", null, hasTitle && Object(external_this_wp_element_["createElement"])(document_outline_item, { + level: Object(external_this_wp_i18n_["__"])('Title'), + isValid: true, + onSelect: onSelect, + href: "#".concat(titleNode.id), + isDisabled: hasOutlineItemsDisabled + }, title), headings.map(function (item, index) { + // Headings remain the same, go up by one, or down by any amount. + // Otherwise there are missing levels. + var isIncorrectLevel = item.level > prevHeadingLevel + 1; + var isValid = !item.isEmpty && !isIncorrectLevel && !!item.level && (item.level !== 1 || !hasMultipleH1 && !hasTitle); + prevHeadingLevel = item.level; + return Object(external_this_wp_element_["createElement"])(document_outline_item, { + key: index, + level: "H".concat(item.level), + isValid: isValid, + path: item.path, + isDisabled: hasOutlineItemsDisabled, + href: "#block-".concat(item.clientId), + onSelect: onSelect + }, item.isEmpty ? emptyHeadingContent : Object(external_this_wp_richText_["getTextContent"])(Object(external_this_wp_richText_["create"])({ + html: item.attributes.content + })), isIncorrectLevel && incorrectLevelContent, item.level === 1 && hasMultipleH1 && multipleH1Headings, hasTitle && item.level === 1 && !hasMultipleH1 && singleH1Headings); + }))); +}; +/* harmony default export */ var document_outline = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/block-editor'), + getBlocks = _select.getBlocks; + + var _select2 = select('core/editor'), + getEditedPostAttribute = _select2.getEditedPostAttribute; + + var _select3 = select('core'), + getPostType = _select3.getPostType; + + var postType = getPostType(getEditedPostAttribute('type')); + return { + title: getEditedPostAttribute('title'), + blocks: getBlocks(), + isTitleSupported: Object(external_lodash_["get"])(postType, ['supports', 'title'], false) + }; +}))(document_outline_DocumentOutline)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/document-outline/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +function DocumentOutlineCheck(_ref) { + var blocks = _ref.blocks, + children = _ref.children; + var headings = Object(external_lodash_["filter"])(blocks, function (block) { + return block.name === 'core/heading'; + }); + + if (headings.length < 1) { + return null; + } + + return children; +} + +/* harmony default export */ var check = (Object(external_this_wp_data_["withSelect"])(function (select) { + return { + blocks: select('core/block-editor').getBlocks() + }; +})(DocumentOutlineCheck)); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js +var assertThisInitialized = __webpack_require__(5); + +// EXTERNAL MODULE: external {"this":["wp","components"]} +var external_this_wp_components_ = __webpack_require__(3); + +// EXTERNAL MODULE: external {"this":["wp","keycodes"]} +var external_this_wp_keycodes_ = __webpack_require__(19); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/save-shortcut.js + + + +/** + * WordPress dependencies + */ + + + + +function SaveShortcut(_ref) { + var onSave = _ref.onSave; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], { + bindGlobal: true, + shortcuts: Object(defineProperty["a" /* default */])({}, external_this_wp_keycodes_["rawShortcut"].primary('s'), function (event) { + event.preventDefault(); + onSave(); + }) + }); +} +/* harmony default export */ var save_shortcut = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isEditedPostDirty = _select.isEditedPostDirty; + + return { + isDirty: isEditedPostDirty() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps, _ref3) { + var select = _ref3.select; + + var _dispatch = dispatch('core/editor'), + savePost = _dispatch.savePost; + + return { + onSave: function onSave() { + // TODO: This should be handled in the `savePost` effect in + // considering `isSaveable`. See note on `isEditedPostSaveable` + // selector about dirtiness and meta-boxes. + // + // See: `isEditedPostSaveable` + var _select2 = select('core/editor'), + isEditedPostDirty = _select2.isEditedPostDirty; + + if (!isEditedPostDirty()) { + return; + } + + savePost(); + } + }; +})])(SaveShortcut)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/visual-editor-shortcuts.js + + + + + + + + + +/** + * WordPress dependencies + */ + + + + + + +/** + * Internal dependencies + */ + + + +var visual_editor_shortcuts_VisualEditorGlobalKeyboardShortcuts = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(VisualEditorGlobalKeyboardShortcuts, _Component); + + function VisualEditorGlobalKeyboardShortcuts() { + var _this; + + Object(classCallCheck["a" /* default */])(this, VisualEditorGlobalKeyboardShortcuts); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(VisualEditorGlobalKeyboardShortcuts).apply(this, arguments)); + _this.undoOrRedo = _this.undoOrRedo.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(VisualEditorGlobalKeyboardShortcuts, [{ + key: "undoOrRedo", + value: function undoOrRedo(event) { + var _this$props = this.props, + onRedo = _this$props.onRedo, + onUndo = _this$props.onUndo; + + if (event.shiftKey) { + onRedo(); + } else { + onUndo(); + } + + event.preventDefault(); + } + }, { + key: "render", + value: function render() { + var _ref; + + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockEditorKeyboardShortcuts"], null), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], { + shortcuts: (_ref = {}, Object(defineProperty["a" /* default */])(_ref, external_this_wp_keycodes_["rawShortcut"].primary('z'), this.undoOrRedo), Object(defineProperty["a" /* default */])(_ref, external_this_wp_keycodes_["rawShortcut"].primaryShift('z'), this.undoOrRedo), _ref) + }), Object(external_this_wp_element_["createElement"])(save_shortcut, null)); + } + }]); + + return VisualEditorGlobalKeyboardShortcuts; +}(external_this_wp_element_["Component"]); + +var EnhancedVisualEditorGlobalKeyboardShortcuts = Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + redo = _dispatch.redo, + undo = _dispatch.undo; + + return { + onRedo: redo, + onUndo: undo + }; +})(visual_editor_shortcuts_VisualEditorGlobalKeyboardShortcuts); +/* harmony default export */ var visual_editor_shortcuts = (EnhancedVisualEditorGlobalKeyboardShortcuts); +function EditorGlobalKeyboardShortcuts() { + external_this_wp_deprecated_default()('EditorGlobalKeyboardShortcuts', { + alternative: 'VisualEditorGlobalKeyboardShortcuts', + plugin: 'Gutenberg' + }); + return Object(external_this_wp_element_["createElement"])(EnhancedVisualEditorGlobalKeyboardShortcuts, null); +} + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/global-keyboard-shortcuts/text-editor-shortcuts.js + + +/** + * Internal dependencies + */ + +function TextEditorGlobalKeyboardShortcuts() { + return Object(external_this_wp_element_["createElement"])(save_shortcut, null); +} + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-history/redo.js + + +/** + * WordPress dependencies + */ + + + + + + +function EditorHistoryRedo(_ref) { + var hasRedo = _ref.hasRedo, + redo = _ref.redo; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], { + icon: "redo", + label: Object(external_this_wp_i18n_["__"])('Redo'), + shortcut: external_this_wp_keycodes_["displayShortcut"].primaryShift('z') // If there are no redo levels we don't want to actually disable this + // button, because it will remove focus for keyboard users. + // See: https://github.com/WordPress/gutenberg/issues/3486 + , + "aria-disabled": !hasRedo, + onClick: hasRedo ? redo : undefined, + className: "editor-history__redo" + }); +} + +/* harmony default export */ var editor_history_redo = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + hasRedo: select('core/editor').hasEditorRedo() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + redo: dispatch('core/editor').redo + }; +})])(EditorHistoryRedo)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-history/undo.js + + +/** + * WordPress dependencies + */ + + + + + + +function EditorHistoryUndo(_ref) { + var hasUndo = _ref.hasUndo, + undo = _ref.undo; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], { + icon: "undo", + label: Object(external_this_wp_i18n_["__"])('Undo'), + shortcut: external_this_wp_keycodes_["displayShortcut"].primary('z') // If there are no undo levels we don't want to actually disable this + // button, because it will remove focus for keyboard users. + // See: https://github.com/WordPress/gutenberg/issues/3486 + , + "aria-disabled": !hasUndo, + onClick: hasUndo ? undo : undefined, + className: "editor-history__undo" + }); +} + +/* harmony default export */ var editor_history_undo = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + hasUndo: select('core/editor').hasEditorUndo() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + undo: dispatch('core/editor').undo + }; +})])(EditorHistoryUndo)); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules +var objectWithoutProperties = __webpack_require__(21); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/template-validation-notice/index.js + + + +/** + * WordPress dependencies + */ + + + + + +function TemplateValidationNotice(_ref) { + var isValid = _ref.isValid, + props = Object(objectWithoutProperties["a" /* default */])(_ref, ["isValid"]); + + if (isValid) { + return null; + } + + var confirmSynchronization = function confirmSynchronization() { + // eslint-disable-next-line no-alert + if (window.confirm(Object(external_this_wp_i18n_["__"])('Resetting the template may result in loss of content, do you want to continue?'))) { + props.synchronizeTemplate(); + } + }; + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Notice"], { + className: "editor-template-validation-notice", + isDismissible: false, + status: "warning" + }, Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('The content of your post doesn’t match the template assigned to your post type.')), Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isDefault: true, + onClick: props.resetTemplateValidity + }, Object(external_this_wp_i18n_["__"])('Keep it as is')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + onClick: confirmSynchronization, + isPrimary: true + }, Object(external_this_wp_i18n_["__"])('Reset the template')))); +} + +/* harmony default export */ var template_validation_notice = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + isValid: select('core/block-editor').isValidTemplate() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/block-editor'), + setTemplateValidity = _dispatch.setTemplateValidity, + synchronizeTemplate = _dispatch.synchronizeTemplate; + + return { + resetTemplateValidity: function resetTemplateValidity() { + return setTemplateValidity(true); + }, + synchronizeTemplate: synchronizeTemplate + }; +})])(TemplateValidationNotice)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/editor-notices/index.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + +function EditorNotices(_ref) { + var notices = _ref.notices, + onRemove = _ref.onRemove; + var dismissibleNotices = Object(external_lodash_["filter"])(notices, { + isDismissible: true, + type: 'default' + }); + var nonDismissibleNotices = Object(external_lodash_["filter"])(notices, { + isDismissible: false, + type: 'default' + }); + var snackbarNotices = Object(external_lodash_["filter"])(notices, { + type: 'snackbar' + }); + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NoticeList"], { + notices: nonDismissibleNotices, + className: "components-editor-notices__pinned" + }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NoticeList"], { + notices: dismissibleNotices, + className: "components-editor-notices__dismissible", + onRemove: onRemove + }, Object(external_this_wp_element_["createElement"])(template_validation_notice, null)), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SnackbarList"], { + notices: snackbarNotices, + className: "components-editor-notices__snackbar", + onRemove: onRemove + })); +} +/* harmony default export */ var editor_notices = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + notices: select('core/notices').getNotices() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onRemove: dispatch('core/notices').removeNotice + }; +})])(EditorNotices)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/error-boundary/index.js + + + + + + + + +/** + * WordPress dependencies + */ + + + + + + +var error_boundary_ErrorBoundary = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(ErrorBoundary, _Component); + + function ErrorBoundary() { + var _this; + + Object(classCallCheck["a" /* default */])(this, ErrorBoundary); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(ErrorBoundary).apply(this, arguments)); + _this.reboot = _this.reboot.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.getContent = _this.getContent.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = { + error: null + }; + return _this; + } + + Object(createClass["a" /* default */])(ErrorBoundary, [{ + key: "componentDidCatch", + value: function componentDidCatch(error) { + this.setState({ + error: error + }); + } + }, { + key: "reboot", + value: function reboot() { + this.props.onError(); + } + }, { + key: "getContent", + value: function getContent() { + try { + // While `select` in a component is generally discouraged, it is + // used here because it (a) reduces the chance of data loss in the + // case of additional errors by performing a direct retrieval and + // (b) avoids the performance cost associated with unnecessary + // content serialization throughout the lifetime of a non-erroring + // application. + return Object(external_this_wp_data_["select"])('core/editor').getEditedPostContent(); + } catch (error) {} + } + }, { + key: "render", + value: function render() { + var error = this.state.error; + + if (!error) { + return this.props.children; + } + + return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["Warning"], { + className: "editor-error-boundary", + actions: [Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + key: "recovery", + onClick: this.reboot, + isLarge: true + }, Object(external_this_wp_i18n_["__"])('Attempt Recovery')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ClipboardButton"], { + key: "copy-post", + text: this.getContent, + isLarge: true + }, Object(external_this_wp_i18n_["__"])('Copy Post Text')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ClipboardButton"], { + key: "copy-error", + text: error.stack, + isLarge: true + }, Object(external_this_wp_i18n_["__"])('Copy Error'))] + }, Object(external_this_wp_i18n_["__"])('The editor has encountered an unexpected error.')); + } + }]); + + return ErrorBoundary; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var error_boundary = (error_boundary_ErrorBoundary); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/local-autosave-monitor/index.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +/** + * Internal dependencies + */ + + + +var requestIdleCallback = window.requestIdleCallback ? window.requestIdleCallback : window.requestAnimationFrame; +/** + * Function which returns true if the current environment supports browser + * sessionStorage, or false otherwise. The result of this function is cached and + * reused in subsequent invocations. + */ + +var hasSessionStorageSupport = Object(external_lodash_["once"])(function () { + try { + // Private Browsing in Safari 10 and earlier will throw an error when + // attempting to set into sessionStorage. The test here is intentional in + // causing a thrown error as condition bailing from local autosave. + window.sessionStorage.setItem('__wpEditorTestSessionStorage', ''); + window.sessionStorage.removeItem('__wpEditorTestSessionStorage'); + return true; + } catch (error) { + return false; + } +}); +/** + * Custom hook which manages the creation of a notice prompting the user to + * restore a local autosave, if one exists. + */ + +function useAutosaveNotice() { + var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) { + var _postId = select('core/editor').getCurrentPostId(); + + var postType = select('core/editor').getCurrentPostType(); + var user = select('core').getCurrentUser(); + return { + postId: _postId, + getEditedPostAttribute: select('core/editor').getEditedPostAttribute, + remoteAutosave: select('core').getAutosave(postType, _postId, user.id), + hasFetchedAutosave: select('core').hasFetchedAutosaves(postType, _postId) && user.id + }; + }), + postId = _useSelect.postId, + getEditedPostAttribute = _useSelect.getEditedPostAttribute, + remoteAutosave = _useSelect.remoteAutosave, + hasFetchedAutosave = _useSelect.hasFetchedAutosave; + + var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/notices'), + createWarningNotice = _useDispatch.createWarningNotice, + removeNotice = _useDispatch.removeNotice; + + var _useDispatch2 = Object(external_this_wp_data_["useDispatch"])('core/editor'), + editPost = _useDispatch2.editPost, + resetEditorBlocks = _useDispatch2.resetEditorBlocks; + + Object(external_this_wp_element_["useEffect"])(function () { + if (!hasFetchedAutosave) { + return; + } + + var localAutosave = localAutosaveGet(postId); + + if (!localAutosave) { + return; + } + + try { + localAutosave = JSON.parse(localAutosave); + } catch (error) { + // Not usable if it can't be parsed. + return; + } + + var _localAutosave = localAutosave, + title = _localAutosave.post_title, + content = _localAutosave.content, + excerpt = _localAutosave.excerpt; + var edits = { + title: title, + content: content, + excerpt: excerpt + }; + { + // Only display a notice if there is a difference between what has been + // saved and that which is stored in sessionStorage. + var hasDifference = Object.keys(edits).some(function (key) { + return edits[key] !== getEditedPostAttribute(key); + }); + + if (!hasDifference) { + // If there is no difference, it can be safely ejected from storage. + localAutosaveClear(postId); + return; + } + } + + if (remoteAutosave) { + return; + } + + var noticeId = Object(external_lodash_["uniqueId"])('wpEditorAutosaveRestore'); + createWarningNotice(Object(external_this_wp_i18n_["__"])('The backup of this post in your browser is different from the version below.'), { + id: noticeId, + actions: [{ + label: Object(external_this_wp_i18n_["__"])('Restore the backup'), + onClick: function onClick() { + editPost(Object(external_lodash_["omit"])(edits, ['content'])); + resetEditorBlocks(Object(external_this_wp_blocks_["parse"])(edits.content)); + removeNotice(noticeId); + } + }] + }); + }, [postId, hasFetchedAutosave]); +} +/** + * Custom hook which ejects a local autosave after a successful save occurs. + */ + + +function useAutosavePurge() { + var _useSelect2 = Object(external_this_wp_data_["useSelect"])(function (select) { + return { + postId: select('core/editor').getCurrentPostId(), + postType: select('core/editor').getCurrentPostType(), + isDirty: select('core/editor').isEditedPostDirty(), + isAutosaving: select('core/editor').isAutosavingPost(), + didError: select('core/editor').didPostSaveRequestFail() + }; + }), + postId = _useSelect2.postId, + isDirty = _useSelect2.isDirty, + isAutosaving = _useSelect2.isAutosaving, + didError = _useSelect2.didError; + + var lastIsDirty = Object(external_this_wp_element_["useRef"])(isDirty); + var lastIsAutosaving = Object(external_this_wp_element_["useRef"])(isAutosaving); + Object(external_this_wp_element_["useEffect"])(function () { + if (!didError && (lastIsAutosaving.current && !isAutosaving || lastIsDirty.current && !isDirty)) { + localAutosaveClear(postId); + } + + lastIsDirty.current = isDirty; + lastIsAutosaving.current = isAutosaving; + }, [isDirty, isAutosaving, didError]); +} + +function LocalAutosaveMonitor() { + var _useDispatch3 = Object(external_this_wp_data_["useDispatch"])('core/editor'), + __experimentalLocalAutosave = _useDispatch3.__experimentalLocalAutosave; + + var autosave = Object(external_this_wp_element_["useCallback"])(function () { + requestIdleCallback(__experimentalLocalAutosave); + }, []); + useAutosaveNotice(); + useAutosavePurge(); + + var _useSelect3 = Object(external_this_wp_data_["useSelect"])(function (select) { + return { + localAutosaveInterval: select('core/editor').getEditorSettings().__experimentalLocalAutosaveInterval + }; + }), + localAutosaveInterval = _useSelect3.localAutosaveInterval; + + return Object(external_this_wp_element_["createElement"])(autosave_monitor, { + interval: localAutosaveInterval, + autosave: autosave, + shouldThrottle: true + }); +} + +/* harmony default export */ var local_autosave_monitor = (Object(external_this_wp_compose_["ifCondition"])(hasSessionStorageSupport)(LocalAutosaveMonitor)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + +function PageAttributesCheck(_ref) { + var availableTemplates = _ref.availableTemplates, + postType = _ref.postType, + children = _ref.children; + var supportsPageAttributes = Object(external_lodash_["get"])(postType, ['supports', 'page-attributes'], false); // Only render fields if post type supports page attributes or available templates exist. + + if (!supportsPageAttributes && Object(external_lodash_["isEmpty"])(availableTemplates)) { + return null; + } + + return children; +} +/* harmony default export */ var page_attributes_check = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + getEditorSettings = _select.getEditorSettings; + + var _select2 = select('core'), + getPostType = _select2.getPostType; + + var _getEditorSettings = getEditorSettings(), + availableTemplates = _getEditorSettings.availableTemplates; + + return { + postType: getPostType(getEditedPostAttribute('type')), + availableTemplates: availableTemplates + }; +})(PageAttributesCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-type-support-check/index.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + +/** + * A component which renders its own children only if the current editor post + * type supports one of the given `supportKeys` prop. + * + * @param {Object} props + * @param {string} [props.postType] Current post type. + * @param {WPElement} props.children Children to be rendered if post + * type supports. + * @param {(string|string[])} props.supportKeys String or string array of keys + * to test. + * + * @return {WPElement} Rendered element. + */ + +function PostTypeSupportCheck(_ref) { + var postType = _ref.postType, + children = _ref.children, + supportKeys = _ref.supportKeys; + var isSupported = true; + + if (postType) { + isSupported = Object(external_lodash_["some"])(Object(external_lodash_["castArray"])(supportKeys), function (key) { + return !!postType.supports[key]; + }); + } + + if (!isSupported) { + return null; + } + + return children; +} +/* harmony default export */ var post_type_support_check = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute; + + var _select2 = select('core'), + getPostType = _select2.getPostType; + + return { + postType: getPostType(getEditedPostAttribute('type')) + }; +})(PostTypeSupportCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/order.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + +var PageAttributesOrder = Object(external_this_wp_compose_["withState"])({ + orderInput: null +})(function (_ref) { + var onUpdateOrder = _ref.onUpdateOrder, + _ref$order = _ref.order, + order = _ref$order === void 0 ? 0 : _ref$order, + orderInput = _ref.orderInput, + setState = _ref.setState; + + var setUpdatedOrder = function setUpdatedOrder(value) { + setState({ + orderInput: value + }); + var newOrder = Number(value); + + if (Number.isInteger(newOrder) && Object(external_lodash_["invoke"])(value, ['trim']) !== '') { + onUpdateOrder(Number(value)); + } + }; + + var value = orderInput === null ? order : orderInput; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextControl"], { + className: "editor-page-attributes__order", + type: "number", + label: Object(external_this_wp_i18n_["__"])('Order'), + value: value, + onChange: setUpdatedOrder, + size: 6, + onBlur: function onBlur() { + setState({ + orderInput: null + }); + } + }); +}); + +function PageAttributesOrderWithChecks(props) { + return Object(external_this_wp_element_["createElement"])(post_type_support_check, { + supportKeys: "page-attributes" + }, Object(external_this_wp_element_["createElement"])(PageAttributesOrder, props)); +} + +/* harmony default export */ var page_attributes_order = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + order: select('core/editor').getEditedPostAttribute('menu_order') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateOrder: function onUpdateOrder(order) { + dispatch('core/editor').editPost({ + menu_order: order + }); + } + }; +})])(PageAttributesOrderWithChecks)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/terms.js + + +/** + * External dependencies + */ + +/** + * Returns terms in a tree form. + * + * @param {Array} flatTerms Array of terms in flat format. + * + * @return {Array} Array of terms in tree format. + */ + +function buildTermsTree(flatTerms) { + var flatTermsWithParentAndChildren = flatTerms.map(function (term) { + return Object(objectSpread["a" /* default */])({ + children: [], + parent: null + }, term); + }); + var termsByParent = Object(external_lodash_["groupBy"])(flatTermsWithParentAndChildren, 'parent'); + + if (termsByParent.null && termsByParent.null.length) { + return flatTermsWithParentAndChildren; + } + + var fillWithChildren = function fillWithChildren(terms) { + return terms.map(function (term) { + var children = termsByParent[term.id]; + return Object(objectSpread["a" /* default */])({}, term, { + children: children && children.length ? fillWithChildren(children) : [] + }); + }); + }; + + return fillWithChildren(termsByParent['0'] || []); +} + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/parent.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + +function PageAttributesParent(_ref) { + var parent = _ref.parent, + postType = _ref.postType, + items = _ref.items, + onUpdateParent = _ref.onUpdateParent; + var isHierarchical = Object(external_lodash_["get"])(postType, ['hierarchical'], false); + var parentPageLabel = Object(external_lodash_["get"])(postType, ['labels', 'parent_item_colon']); + var pageItems = items || []; + + if (!isHierarchical || !parentPageLabel || !pageItems.length) { + return null; + } + + var pagesTree = buildTermsTree(pageItems.map(function (item) { + return { + id: item.id, + parent: item.parent, + name: item.title.raw ? item.title.raw : "#".concat(item.id, " (").concat(Object(external_this_wp_i18n_["__"])('no title'), ")") + }; + })); + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TreeSelect"], { + className: "editor-page-attributes__parent", + label: parentPageLabel, + noOptionLabel: "(".concat(Object(external_this_wp_i18n_["__"])('no parent'), ")"), + tree: pagesTree, + selectedId: parent, + onChange: onUpdateParent + }); +} +var applyWithSelect = Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core'), + getPostType = _select.getPostType, + getEntityRecords = _select.getEntityRecords; + + var _select2 = select('core/editor'), + getCurrentPostId = _select2.getCurrentPostId, + getEditedPostAttribute = _select2.getEditedPostAttribute; + + var postTypeSlug = getEditedPostAttribute('type'); + var postType = getPostType(postTypeSlug); + var postId = getCurrentPostId(); + var isHierarchical = Object(external_lodash_["get"])(postType, ['hierarchical'], false); + var query = { + per_page: -1, + exclude: postId, + parent_exclude: postId, + orderby: 'menu_order', + order: 'asc' + }; + return { + parent: getEditedPostAttribute('parent'), + items: isHierarchical ? getEntityRecords('postType', postTypeSlug, query) : [], + postType: postType + }; +}); +var applyWithDispatch = Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + editPost = _dispatch.editPost; + + return { + onUpdateParent: function onUpdateParent(parent) { + editPost({ + parent: parent || 0 + }); + } + }; +}); +/* harmony default export */ var page_attributes_parent = (Object(external_this_wp_compose_["compose"])([applyWithSelect, applyWithDispatch])(PageAttributesParent)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/page-attributes/template.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +function PageTemplate(_ref) { + var availableTemplates = _ref.availableTemplates, + selectedTemplate = _ref.selectedTemplate, + onUpdate = _ref.onUpdate; + + if (Object(external_lodash_["isEmpty"])(availableTemplates)) { + return null; + } + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SelectControl"], { + label: Object(external_this_wp_i18n_["__"])('Template:'), + value: selectedTemplate, + onChange: onUpdate, + className: "editor-page-attributes__template", + options: Object(external_lodash_["map"])(availableTemplates, function (templateName, templateSlug) { + return { + value: templateSlug, + label: templateName + }; + }) + }); +} +/* harmony default export */ var page_attributes_template = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + getEditorSettings = _select.getEditorSettings; + + var _getEditorSettings = getEditorSettings(), + availableTemplates = _getEditorSettings.availableTemplates; + + return { + selectedTemplate: getEditedPostAttribute('template'), + availableTemplates: availableTemplates + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdate: function onUpdate(templateSlug) { + dispatch('core/editor').editPost({ + template: templateSlug || '' + }); + } + }; +}))(PageTemplate)); + +// EXTERNAL MODULE: external {"this":["wp","htmlEntities"]} +var external_this_wp_htmlEntities_ = __webpack_require__(52); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/check.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +/** + * Internal dependencies + */ + + +function PostAuthorCheck(_ref) { + var hasAssignAuthorAction = _ref.hasAssignAuthorAction, + authors = _ref.authors, + children = _ref.children; + + if (!hasAssignAuthorAction || authors.length < 2) { + return null; + } + + return Object(external_this_wp_element_["createElement"])(post_type_support_check, { + supportKeys: "author" + }, children); +} +/* harmony default export */ var post_author_check = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var post = select('core/editor').getCurrentPost(); + return { + hasAssignAuthorAction: Object(external_lodash_["get"])(post, ['_links', 'wp:action-assign-author'], false), + postType: select('core/editor').getCurrentPostType(), + authors: select('core').getAuthors() + }; +}), external_this_wp_compose_["withInstanceId"]])(PostAuthorCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-author/index.js + + + + + + + + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + +var post_author_PostAuthor = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostAuthor, _Component); + + function PostAuthor() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostAuthor); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostAuthor).apply(this, arguments)); + _this.setAuthorId = _this.setAuthorId.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(PostAuthor, [{ + key: "setAuthorId", + value: function setAuthorId(event) { + var onUpdateAuthor = this.props.onUpdateAuthor; + var value = event.target.value; + onUpdateAuthor(Number(value)); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + postAuthor = _this$props.postAuthor, + instanceId = _this$props.instanceId, + authors = _this$props.authors; + var selectId = 'post-author-selector-' + instanceId; // Disable reason: A select with an onchange throws a warning + + /* eslint-disable jsx-a11y/no-onchange */ + + return Object(external_this_wp_element_["createElement"])(post_author_check, null, Object(external_this_wp_element_["createElement"])("label", { + htmlFor: selectId + }, Object(external_this_wp_i18n_["__"])('Author')), Object(external_this_wp_element_["createElement"])("select", { + id: selectId, + value: postAuthor, + onChange: this.setAuthorId, + className: "editor-post-author__select" + }, authors.map(function (author) { + return Object(external_this_wp_element_["createElement"])("option", { + key: author.id, + value: author.id + }, Object(external_this_wp_htmlEntities_["decodeEntities"])(author.name)); + }))); + /* eslint-enable jsx-a11y/no-onchange */ + } + }]); + + return PostAuthor; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_author = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + postAuthor: select('core/editor').getEditedPostAttribute('author'), + authors: select('core').getAuthors() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateAuthor: function onUpdateAuthor(author) { + dispatch('core/editor').editPost({ + author: author + }); + } + }; +}), external_this_wp_compose_["withInstanceId"]])(post_author_PostAuthor)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-comments/index.js + + + +/** + * WordPress dependencies + */ + + + + + +function PostComments(_ref) { + var _ref$commentStatus = _ref.commentStatus, + commentStatus = _ref$commentStatus === void 0 ? 'open' : _ref$commentStatus, + props = Object(objectWithoutProperties["a" /* default */])(_ref, ["commentStatus"]); + + var onToggleComments = function onToggleComments() { + return props.editPost({ + comment_status: commentStatus === 'open' ? 'closed' : 'open' + }); + }; + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { + label: Object(external_this_wp_i18n_["__"])('Allow Comments'), + checked: commentStatus === 'open', + onChange: onToggleComments + }); +} + +/* harmony default export */ var post_comments = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + commentStatus: select('core/editor').getEditedPostAttribute('comment_status') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + editPost: dispatch('core/editor').editPost + }; +})])(PostComments)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/index.js + + +/** + * WordPress dependencies + */ + + + + + +function PostExcerpt(_ref) { + var excerpt = _ref.excerpt, + onUpdateExcerpt = _ref.onUpdateExcerpt; + return Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-excerpt" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextareaControl"], { + label: Object(external_this_wp_i18n_["__"])('Write an excerpt (optional)'), + className: "editor-post-excerpt__textarea", + onChange: function onChange(value) { + return onUpdateExcerpt(value); + }, + value: excerpt + }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ExternalLink"], { + href: Object(external_this_wp_i18n_["__"])('https://codex.wordpress.org/Excerpt') + }, Object(external_this_wp_i18n_["__"])('Learn more about manual excerpts'))); +} + +/* harmony default export */ var post_excerpt = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + excerpt: select('core/editor').getEditedPostAttribute('excerpt') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateExcerpt: function onUpdateExcerpt(excerpt) { + dispatch('core/editor').editPost({ + excerpt: excerpt + }); + } + }; +})])(PostExcerpt)); + +// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js +var esm_extends = __webpack_require__(18); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-excerpt/check.js + + + +/** + * Internal dependencies + */ + + +function PostExcerptCheck(props) { + return Object(external_this_wp_element_["createElement"])(post_type_support_check, Object(esm_extends["a" /* default */])({}, props, { + supportKeys: "excerpt" + })); +} + +/* harmony default export */ var post_excerpt_check = (PostExcerptCheck); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/theme-support-check/index.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + +function ThemeSupportCheck(_ref) { + var themeSupports = _ref.themeSupports, + children = _ref.children, + postType = _ref.postType, + supportKeys = _ref.supportKeys; + var isSupported = Object(external_lodash_["some"])(Object(external_lodash_["castArray"])(supportKeys), function (key) { + var supported = Object(external_lodash_["get"])(themeSupports, [key], false); // 'post-thumbnails' can be boolean or an array of post types. + // In the latter case, we need to verify `postType` exists + // within `supported`. If `postType` isn't passed, then the check + // should fail. + + if ('post-thumbnails' === key && Object(external_lodash_["isArray"])(supported)) { + return Object(external_lodash_["includes"])(supported, postType); + } + + return supported; + }); + + if (!isSupported) { + return null; + } + + return children; +} +/* harmony default export */ var theme_support_check = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core'), + getThemeSupports = _select.getThemeSupports; + + var _select2 = select('core/editor'), + getEditedPostAttribute = _select2.getEditedPostAttribute; + + return { + postType: getEditedPostAttribute('type'), + themeSupports: getThemeSupports() + }; +})(ThemeSupportCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-featured-image/check.js + + + +/** + * Internal dependencies + */ + + + +function PostFeaturedImageCheck(props) { + return Object(external_this_wp_element_["createElement"])(theme_support_check, { + supportKeys: "post-thumbnails" + }, Object(external_this_wp_element_["createElement"])(post_type_support_check, Object(esm_extends["a" /* default */])({}, props, { + supportKeys: "thumbnail" + }))); +} + +/* harmony default export */ var post_featured_image_check = (PostFeaturedImageCheck); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-featured-image/index.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + +/** + * Internal dependencies + */ + + +var ALLOWED_MEDIA_TYPES = ['image']; // Used when labels from post type were not yet loaded or when they are not present. + +var DEFAULT_FEATURE_IMAGE_LABEL = Object(external_this_wp_i18n_["__"])('Featured Image'); + +var DEFAULT_SET_FEATURE_IMAGE_LABEL = Object(external_this_wp_i18n_["__"])('Set Featured Image'); + +var DEFAULT_REMOVE_FEATURE_IMAGE_LABEL = Object(external_this_wp_i18n_["__"])('Remove Image'); + +function PostFeaturedImage(_ref) { + var currentPostId = _ref.currentPostId, + featuredImageId = _ref.featuredImageId, + onUpdateImage = _ref.onUpdateImage, + onRemoveImage = _ref.onRemoveImage, + media = _ref.media, + postType = _ref.postType; + var postLabel = Object(external_lodash_["get"])(postType, ['labels'], {}); + var instructions = Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('To edit the featured image, you need permission to upload media.')); + var mediaWidth, mediaHeight, mediaSourceUrl; + + if (media) { + var mediaSize = Object(external_this_wp_hooks_["applyFilters"])('editor.PostFeaturedImage.imageSize', 'post-thumbnail', media.id, currentPostId); + + if (Object(external_lodash_["has"])(media, ['media_details', 'sizes', mediaSize])) { + mediaWidth = media.media_details.sizes[mediaSize].width; + mediaHeight = media.media_details.sizes[mediaSize].height; + mediaSourceUrl = media.media_details.sizes[mediaSize].source_url; + } else { + mediaWidth = media.media_details.width; + mediaHeight = media.media_details.height; + mediaSourceUrl = media.source_url; + } + } + + return Object(external_this_wp_element_["createElement"])(post_featured_image_check, null, Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-featured-image" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUploadCheck"], { + fallback: instructions + }, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUpload"], { + title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL, + onSelect: onUpdateImage, + unstableFeaturedImageFlow: true, + allowedTypes: ALLOWED_MEDIA_TYPES, + modalClass: !featuredImageId ? 'editor-post-featured-image__media-modal' : 'editor-post-featured-image__media-modal', + render: function render(_ref2) { + var open = _ref2.open; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + className: !featuredImageId ? 'editor-post-featured-image__toggle' : 'editor-post-featured-image__preview', + onClick: open, + "aria-label": !featuredImageId ? null : Object(external_this_wp_i18n_["__"])('Edit or update the image') + }, !!featuredImageId && media && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ResponsiveWrapper"], { + naturalWidth: mediaWidth, + naturalHeight: mediaHeight, + isInline: true + }, Object(external_this_wp_element_["createElement"])("img", { + src: mediaSourceUrl, + alt: "" + })), !!featuredImageId && !media && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Spinner"], null), !featuredImageId && (postLabel.set_featured_image || DEFAULT_SET_FEATURE_IMAGE_LABEL)); + }, + value: featuredImageId + })), !!featuredImageId && media && !media.isLoading && Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUploadCheck"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUpload"], { + title: postLabel.featured_image || DEFAULT_FEATURE_IMAGE_LABEL, + onSelect: onUpdateImage, + unstableFeaturedImageFlow: true, + allowedTypes: ALLOWED_MEDIA_TYPES, + modalClass: "editor-post-featured-image__media-modal", + render: function render(_ref3) { + var open = _ref3.open; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + onClick: open, + isDefault: true, + isLarge: true + }, Object(external_this_wp_i18n_["__"])('Replace Image')); + } + })), !!featuredImageId && Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["MediaUploadCheck"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + onClick: onRemoveImage, + isLink: true, + isDestructive: true + }, postLabel.remove_featured_image || DEFAULT_REMOVE_FEATURE_IMAGE_LABEL)))); +} + +var post_featured_image_applyWithSelect = Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core'), + getMedia = _select.getMedia, + getPostType = _select.getPostType; + + var _select2 = select('core/editor'), + getCurrentPostId = _select2.getCurrentPostId, + getEditedPostAttribute = _select2.getEditedPostAttribute; + + var featuredImageId = getEditedPostAttribute('featured_media'); + return { + media: featuredImageId ? getMedia(featuredImageId) : null, + currentPostId: getCurrentPostId(), + postType: getPostType(getEditedPostAttribute('type')), + featuredImageId: featuredImageId + }; +}); +var post_featured_image_applyWithDispatch = Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + editPost = _dispatch.editPost; + + return { + onUpdateImage: function onUpdateImage(image) { + editPost({ + featured_media: image.id + }); + }, + onRemoveImage: function onRemoveImage() { + editPost({ + featured_media: 0 + }); + } + }; +}); +/* harmony default export */ var post_featured_image = (Object(external_this_wp_compose_["compose"])(post_featured_image_applyWithSelect, post_featured_image_applyWithDispatch, Object(external_this_wp_components_["withFilters"])('editor.PostFeaturedImage'))(PostFeaturedImage)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-format/check.js + + + + +/** + * WordPress dependencies + */ + +/** + * Internal dependencies + */ + + + +function PostFormatCheck(_ref) { + var disablePostFormats = _ref.disablePostFormats, + props = Object(objectWithoutProperties["a" /* default */])(_ref, ["disablePostFormats"]); + + return !disablePostFormats && Object(external_this_wp_element_["createElement"])(post_type_support_check, Object(esm_extends["a" /* default */])({}, props, { + supportKeys: "post-formats" + })); +} + +/* harmony default export */ var post_format_check = (Object(external_this_wp_data_["withSelect"])(function (select) { + var editorSettings = select('core/editor').getEditorSettings(); + return { + disablePostFormats: editorSettings.disablePostFormats + }; +})(PostFormatCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-format/index.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + +var POST_FORMATS = [{ + id: 'aside', + caption: Object(external_this_wp_i18n_["__"])('Aside') +}, { + id: 'gallery', + caption: Object(external_this_wp_i18n_["__"])('Gallery') +}, { + id: 'link', + caption: Object(external_this_wp_i18n_["__"])('Link') +}, { + id: 'image', + caption: Object(external_this_wp_i18n_["__"])('Image') +}, { + id: 'quote', + caption: Object(external_this_wp_i18n_["__"])('Quote') +}, { + id: 'standard', + caption: Object(external_this_wp_i18n_["__"])('Standard') +}, { + id: 'status', + caption: Object(external_this_wp_i18n_["__"])('Status') +}, { + id: 'video', + caption: Object(external_this_wp_i18n_["__"])('Video') +}, { + id: 'audio', + caption: Object(external_this_wp_i18n_["__"])('Audio') +}, { + id: 'chat', + caption: Object(external_this_wp_i18n_["__"])('Chat') +}]; + +function PostFormat(_ref) { + var onUpdatePostFormat = _ref.onUpdatePostFormat, + _ref$postFormat = _ref.postFormat, + postFormat = _ref$postFormat === void 0 ? 'standard' : _ref$postFormat, + supportedFormats = _ref.supportedFormats, + suggestedFormat = _ref.suggestedFormat, + instanceId = _ref.instanceId; + var postFormatSelectorId = 'post-format-selector-' + instanceId; + var formats = POST_FORMATS.filter(function (format) { + return Object(external_lodash_["includes"])(supportedFormats, format.id); + }); + var suggestion = Object(external_lodash_["find"])(formats, function (format) { + return format.id === suggestedFormat; + }); // Disable reason: We need to change the value immiediately to show/hide the suggestion if needed + + return Object(external_this_wp_element_["createElement"])(post_format_check, null, Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-format" + }, Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-format__content" + }, Object(external_this_wp_element_["createElement"])("label", { + htmlFor: postFormatSelectorId + }, Object(external_this_wp_i18n_["__"])('Post Format')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SelectControl"], { + value: postFormat, + onChange: function onChange(format) { + return onUpdatePostFormat(format); + }, + id: postFormatSelectorId, + options: formats.map(function (format) { + return { + label: format.caption, + value: format.id + }; + }) + })), suggestion && suggestion.id !== postFormat && Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-format__suggestion" + }, Object(external_this_wp_i18n_["__"])('Suggestion:'), ' ', Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isLink: true, + onClick: function onClick() { + return onUpdatePostFormat(suggestion.id); + } + }, suggestion.caption)))); +} + +/* harmony default export */ var post_format = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + getSuggestedPostFormat = _select.getSuggestedPostFormat; + + var postFormat = getEditedPostAttribute('format'); + var themeSupports = select('core').getThemeSupports(); // Ensure current format is always in the set. + // The current format may not be a format supported by the theme. + + var supportedFormats = Object(external_lodash_["union"])([postFormat], Object(external_lodash_["get"])(themeSupports, ['formats'], [])); + return { + postFormat: postFormat, + supportedFormats: supportedFormats, + suggestedFormat: getSuggestedPostFormat() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdatePostFormat: function onUpdatePostFormat(postFormat) { + dispatch('core/editor').editPost({ + format: postFormat + }); + } + }; +}), external_this_wp_compose_["withInstanceId"]])(PostFormat)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-last-revision/check.js + + +/** + * WordPress dependencies + */ + +/** + * Internal dependencies + */ + + +function PostLastRevisionCheck(_ref) { + var lastRevisionId = _ref.lastRevisionId, + revisionsCount = _ref.revisionsCount, + children = _ref.children; + + if (!lastRevisionId || revisionsCount < 2) { + return null; + } + + return Object(external_this_wp_element_["createElement"])(post_type_support_check, { + supportKeys: "revisions" + }, children); +} +/* harmony default export */ var post_last_revision_check = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getCurrentPostLastRevisionId = _select.getCurrentPostLastRevisionId, + getCurrentPostRevisionsCount = _select.getCurrentPostRevisionsCount; + + return { + lastRevisionId: getCurrentPostLastRevisionId(), + revisionsCount: getCurrentPostRevisionsCount() + }; +})(PostLastRevisionCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/url.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + +/** + * Returns the URL of a WPAdmin Page. + * + * TODO: This should be moved to a module less specific to the editor. + * + * @param {string} page Page to navigate to. + * @param {Object} query Query Args. + * + * @return {string} WPAdmin URL. + */ + +function getWPAdminURL(page, query) { + return Object(external_this_wp_url_["addQueryArgs"])(page, query); +} +/** + * Performs some basic cleanup of a string for use as a post slug + * + * This replicates some of what sanitize_title() does in WordPress core, but + * is only designed to approximate what the slug will be. + * + * Converts whitespace, periods, forward slashes and underscores to hyphens. + * Converts Latin-1 Supplement and Latin Extended-A letters to basic Latin + * letters. Removes combining diacritical marks. Converts remaining string + * to lowercase. It does not touch octets, HTML entities, or other encoded + * characters. + * + * @param {string} string Title or slug to be processed + * + * @return {string} Processed string + */ + +function cleanForSlug(string) { + if (!string) { + return ''; + } + + return Object(external_lodash_["toLower"])(Object(external_lodash_["deburr"])(Object(external_lodash_["trim"])(string.replace(/[\s\./_]+/g, '-'), '-'))); +} + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-last-revision/index.js + + +/** + * WordPress dependencies + */ + + + +/** + * Internal dependencies + */ + + + + +function LastRevision(_ref) { + var lastRevisionId = _ref.lastRevisionId, + revisionsCount = _ref.revisionsCount; + return Object(external_this_wp_element_["createElement"])(post_last_revision_check, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], { + href: getWPAdminURL('revision.php', { + revision: lastRevisionId, + gutenberg: true + }), + className: "editor-post-last-revision__title", + icon: "backup" + }, Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d Revision', '%d Revisions', revisionsCount), revisionsCount))); +} + +/* harmony default export */ var post_last_revision = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getCurrentPostLastRevisionId = _select.getCurrentPostLastRevisionId, + getCurrentPostRevisionsCount = _select.getCurrentPostRevisionsCount; + + return { + lastRevisionId: getCurrentPostLastRevisionId(), + revisionsCount: getCurrentPostRevisionsCount() + }; +})(LastRevision)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-preview-button/index.js + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + + + +function writeInterstitialMessage(targetDocument) { + var markup = Object(external_this_wp_element_["renderToString"])(Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-preview-button__interstitial-message" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], { + xmlns: "http://www.w3.org/2000/svg", + viewBox: "0 0 96 96" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], { + className: "outer", + d: "M48 12c19.9 0 36 16.1 36 36S67.9 84 48 84 12 67.9 12 48s16.1-36 36-36", + fill: "none" + }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], { + className: "inner", + d: "M69.5 46.4c0-3.9-1.4-6.7-2.6-8.8-1.6-2.6-3.1-4.9-3.1-7.5 0-2.9 2.2-5.7 5.4-5.7h.4C63.9 19.2 56.4 16 48 16c-11.2 0-21 5.7-26.7 14.4h2.1c3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3L40 67.5l7-20.9L42 33c-1.7-.1-3.3-.3-3.3-.3-1.7-.1-1.5-2.7.2-2.6 0 0 5.3.4 8.4.4 3.3 0 8.5-.4 8.5-.4 1.7-.1 1.9 2.4.2 2.6 0 0-1.7.2-3.7.3l11.5 34.3 3.3-10.4c1.6-4.5 2.4-7.8 2.4-10.5zM16.1 48c0 12.6 7.3 23.5 18 28.7L18.8 35c-1.7 4-2.7 8.4-2.7 13zm32.5 2.8L39 78.6c2.9.8 5.9 1.3 9 1.3 3.7 0 7.3-.6 10.6-1.8-.1-.1-.2-.3-.2-.4l-9.8-26.9zM76.2 36c0 3.2-.6 6.9-2.4 11.4L64 75.6c9.5-5.5 15.9-15.8 15.9-27.6 0-5.5-1.4-10.8-3.9-15.3.1 1 .2 2.1.2 3.3z", + fill: "none" + })), Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('Generating preview…')))); + markup += "\n\t\t<style>\n\t\t\tbody {\n\t\t\t\tmargin: 0;\n\t\t\t}\n\t\t\t.editor-post-preview-button__interstitial-message {\n\t\t\t\tdisplay: flex;\n\t\t\t\tflex-direction: column;\n\t\t\t\talign-items: center;\n\t\t\t\tjustify-content: center;\n\t\t\t\theight: 100vh;\n\t\t\t\twidth: 100vw;\n\t\t\t}\n\t\t\t@-webkit-keyframes paint {\n\t\t\t\t0% {\n\t\t\t\t\tstroke-dashoffset: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t@-moz-keyframes paint {\n\t\t\t\t0% {\n\t\t\t\t\tstroke-dashoffset: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t@-o-keyframes paint {\n\t\t\t\t0% {\n\t\t\t\t\tstroke-dashoffset: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t@keyframes paint {\n\t\t\t\t0% {\n\t\t\t\t\tstroke-dashoffset: 0;\n\t\t\t\t}\n\t\t\t}\n\t\t\t.editor-post-preview-button__interstitial-message svg {\n\t\t\t\twidth: 192px;\n\t\t\t\theight: 192px;\n\t\t\t\tstroke: #555d66;\n\t\t\t\tstroke-width: 0.75;\n\t\t\t}\n\t\t\t.editor-post-preview-button__interstitial-message svg .outer,\n\t\t\t.editor-post-preview-button__interstitial-message svg .inner {\n\t\t\t\tstroke-dasharray: 280;\n\t\t\t\tstroke-dashoffset: 280;\n\t\t\t\t-webkit-animation: paint 1.5s ease infinite alternate;\n\t\t\t\t-moz-animation: paint 1.5s ease infinite alternate;\n\t\t\t\t-o-animation: paint 1.5s ease infinite alternate;\n\t\t\t\tanimation: paint 1.5s ease infinite alternate;\n\t\t\t}\n\t\t\tp {\n\t\t\t\ttext-align: center;\n\t\t\t\tfont-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Oxygen-Sans, Ubuntu, Cantarell, \"Helvetica Neue\", sans-serif;\n\t\t\t}\n\t\t</style>\n\t"; + /** + * Filters the interstitial message shown when generating previews. + * + * @param {string} markup The preview interstitial markup. + */ + + markup = Object(external_this_wp_hooks_["applyFilters"])('editor.PostPreview.interstitialMarkup', markup); + targetDocument.write(markup); + targetDocument.title = Object(external_this_wp_i18n_["__"])('Generating preview…'); + targetDocument.close(); +} + +var post_preview_button_PostPreviewButton = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostPreviewButton, _Component); + + function PostPreviewButton() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostPreviewButton); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostPreviewButton).apply(this, arguments)); + _this.openPreviewWindow = _this.openPreviewWindow.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(PostPreviewButton, [{ + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + var previewLink = this.props.previewLink; // This relies on the window being responsible to unset itself when + // navigation occurs or a new preview window is opened, to avoid + // unintentional forceful redirects. + + if (previewLink && !prevProps.previewLink) { + this.setPreviewWindowLink(previewLink); + } + } + /** + * Sets the preview window's location to the given URL, if a preview window + * exists and is not closed. + * + * @param {string} url URL to assign as preview window location. + */ + + }, { + key: "setPreviewWindowLink", + value: function setPreviewWindowLink(url) { + var previewWindow = this.previewWindow; + + if (previewWindow && !previewWindow.closed) { + previewWindow.location = url; + } + } + }, { + key: "getWindowTarget", + value: function getWindowTarget() { + var postId = this.props.postId; + return "wp-preview-".concat(postId); + } + }, { + key: "openPreviewWindow", + value: function openPreviewWindow(event) { + // Our Preview button has its 'href' and 'target' set correctly for a11y + // purposes. Unfortunately, though, we can't rely on the default 'click' + // handler since sometimes it incorrectly opens a new tab instead of reusing + // the existing one. + // https://github.com/WordPress/gutenberg/pull/8330 + event.preventDefault(); // Open up a Preview tab if needed. This is where we'll show the preview. + + if (!this.previewWindow || this.previewWindow.closed) { + this.previewWindow = window.open('', this.getWindowTarget()); + } // Focus the Preview tab. This might not do anything, depending on the browser's + // and user's preferences. + // https://html.spec.whatwg.org/multipage/interaction.html#dom-window-focus + + + this.previewWindow.focus(); // If we don't need to autosave the post before previewing, then we simply + // load the Preview URL in the Preview tab. + + if (!this.props.isAutosaveable) { + this.setPreviewWindowLink(event.target.href); + return; + } // Request an autosave. This happens asynchronously and causes the component + // to update when finished. + + + if (this.props.isDraft) { + this.props.savePost({ + isPreview: true + }); + } else { + this.props.autosave({ + isPreview: true + }); + } // Display a 'Generating preview' message in the Preview tab while we wait for the + // autosave to finish. + + + writeInterstitialMessage(this.previewWindow.document); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + previewLink = _this$props.previewLink, + currentPostLink = _this$props.currentPostLink, + isSaveable = _this$props.isSaveable; // Link to the `?preview=true` URL if we have it, since this lets us see + // changes that were autosaved since the post was last published. Otherwise, + // just link to the post's URL. + + var href = previewLink || currentPostLink; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isLarge: true, + className: "editor-post-preview", + href: href, + target: this.getWindowTarget(), + disabled: !isSaveable, + onClick: this.openPreviewWindow + }, Object(external_this_wp_i18n_["_x"])('Preview', 'imperative verb'), Object(external_this_wp_element_["createElement"])("span", { + className: "screen-reader-text" + }, + /* translators: accessibility text */ + Object(external_this_wp_i18n_["__"])('(opens in a new tab)')), Object(external_this_wp_element_["createElement"])(external_this_wp_nux_["DotTip"], { + tipId: "core/editor.preview" + }, Object(external_this_wp_i18n_["__"])('Click “Preview” to load a preview of this page, so you can make sure you’re happy with your blocks.'))); + } + }]); + + return PostPreviewButton; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_preview_button = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref) { + var forcePreviewLink = _ref.forcePreviewLink, + forceIsAutosaveable = _ref.forceIsAutosaveable; + + var _select = select('core/editor'), + getCurrentPostId = _select.getCurrentPostId, + getCurrentPostAttribute = _select.getCurrentPostAttribute, + getEditedPostAttribute = _select.getEditedPostAttribute, + isEditedPostSaveable = _select.isEditedPostSaveable, + isEditedPostAutosaveable = _select.isEditedPostAutosaveable, + getEditedPostPreviewLink = _select.getEditedPostPreviewLink; + + var _select2 = select('core'), + getPostType = _select2.getPostType; + + var previewLink = getEditedPostPreviewLink(); + var postType = getPostType(getEditedPostAttribute('type')); + return { + postId: getCurrentPostId(), + currentPostLink: getCurrentPostAttribute('link'), + previewLink: forcePreviewLink !== undefined ? forcePreviewLink : previewLink, + isSaveable: isEditedPostSaveable(), + isAutosaveable: forceIsAutosaveable || isEditedPostAutosaveable(), + isViewable: Object(external_lodash_["get"])(postType, ['viewable'], false), + isDraft: ['draft', 'auto-draft'].indexOf(getEditedPostAttribute('status')) !== -1 + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + autosave: dispatch('core/editor').autosave, + savePost: dispatch('core/editor').savePost + }; +}), Object(external_this_wp_compose_["ifCondition"])(function (_ref2) { + var isViewable = _ref2.isViewable; + return isViewable; +})])(post_preview_button_PostPreviewButton)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-locked-modal/index.js + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + + +/** + * Internal dependencies + */ + + + + +var post_locked_modal_PostLockedModal = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostLockedModal, _Component); + + function PostLockedModal() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostLockedModal); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostLockedModal).apply(this, arguments)); + _this.sendPostLock = _this.sendPostLock.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.receivePostLock = _this.receivePostLock.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.releasePostLock = _this.releasePostLock.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(PostLockedModal, [{ + key: "componentDidMount", + value: function componentDidMount() { + var hookName = this.getHookName(); // Details on these events on the Heartbeat API docs + // https://developer.wordpress.org/plugins/javascript/heartbeat-api/ + + Object(external_this_wp_hooks_["addAction"])('heartbeat.send', hookName, this.sendPostLock); + Object(external_this_wp_hooks_["addAction"])('heartbeat.tick', hookName, this.receivePostLock); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + var hookName = this.getHookName(); + Object(external_this_wp_hooks_["removeAction"])('heartbeat.send', hookName); + Object(external_this_wp_hooks_["removeAction"])('heartbeat.tick', hookName); + } + /** + * Returns a `@wordpress/hooks` hook name specific to the instance of the + * component. + * + * @return {string} Hook name prefix. + */ + + }, { + key: "getHookName", + value: function getHookName() { + var instanceId = this.props.instanceId; + return 'core/editor/post-locked-modal-' + instanceId; + } + /** + * Keep the lock refreshed. + * + * When the user does not send a heartbeat in a heartbeat-tick + * the user is no longer editing and another user can start editing. + * + * @param {Object} data Data to send in the heartbeat request. + */ + + }, { + key: "sendPostLock", + value: function sendPostLock(data) { + var _this$props = this.props, + isLocked = _this$props.isLocked, + activePostLock = _this$props.activePostLock, + postId = _this$props.postId; + + if (isLocked) { + return; + } + + data['wp-refresh-post-lock'] = { + lock: activePostLock, + post_id: postId + }; + } + /** + * Refresh post locks: update the lock string or show the dialog if somebody has taken over editing. + * + * @param {Object} data Data received in the heartbeat request + */ + + }, { + key: "receivePostLock", + value: function receivePostLock(data) { + if (!data['wp-refresh-post-lock']) { + return; + } + + var _this$props2 = this.props, + autosave = _this$props2.autosave, + updatePostLock = _this$props2.updatePostLock; + var received = data['wp-refresh-post-lock']; + + if (received.lock_error) { + // Auto save and display the takeover modal. + autosave(); + updatePostLock({ + isLocked: true, + isTakeover: true, + user: { + avatar: received.lock_error.avatar_src + } + }); + } else if (received.new_lock) { + updatePostLock({ + isLocked: false, + activePostLock: received.new_lock + }); + } + } + /** + * Unlock the post before the window is exited. + */ + + }, { + key: "releasePostLock", + value: function releasePostLock() { + var _this$props3 = this.props, + isLocked = _this$props3.isLocked, + activePostLock = _this$props3.activePostLock, + postLockUtils = _this$props3.postLockUtils, + postId = _this$props3.postId; + + if (isLocked || !activePostLock) { + return; + } + + var data = new window.FormData(); + data.append('action', 'wp-remove-post-lock'); + data.append('_wpnonce', postLockUtils.unlockNonce); + data.append('post_ID', postId); + data.append('active_post_lock', activePostLock); + + if (window.navigator.sendBeacon) { + window.navigator.sendBeacon(postLockUtils.ajaxUrl, data); + } else { + var xhr = new window.XMLHttpRequest(); + xhr.open('POST', postLockUtils.ajaxUrl, false); + xhr.send(data); + } + } + }, { + key: "render", + value: function render() { + var _this$props4 = this.props, + user = _this$props4.user, + postId = _this$props4.postId, + isLocked = _this$props4.isLocked, + isTakeover = _this$props4.isTakeover, + postLockUtils = _this$props4.postLockUtils, + postType = _this$props4.postType; + + if (!isLocked) { + return null; + } + + var userDisplayName = user.name; + var userAvatar = user.avatar; + var unlockUrl = Object(external_this_wp_url_["addQueryArgs"])('post.php', { + 'get-post-lock': '1', + lockKey: true, + post: postId, + action: 'edit', + _wpnonce: postLockUtils.nonce + }); + var allPostsUrl = getWPAdminURL('edit.php', { + post_type: Object(external_lodash_["get"])(postType, ['slug']) + }); + + var allPostsLabel = Object(external_this_wp_i18n_["__"])('Exit the Editor'); + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Modal"], { + title: isTakeover ? Object(external_this_wp_i18n_["__"])('Someone else has taken over this post.') : Object(external_this_wp_i18n_["__"])('This post is already being edited.'), + focusOnMount: true, + shouldCloseOnClickOutside: false, + shouldCloseOnEsc: false, + isDismissable: false, + className: "editor-post-locked-modal" + }, !!userAvatar && Object(external_this_wp_element_["createElement"])("img", { + src: userAvatar, + alt: Object(external_this_wp_i18n_["__"])('Avatar'), + className: "editor-post-locked-modal__avatar" + }), !!isTakeover && Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])("div", null, userDisplayName ? Object(external_this_wp_i18n_["sprintf"])( + /* translators: %s: user's display name */ + Object(external_this_wp_i18n_["__"])('%s now has editing control of this post. Don’t worry, your changes up to this moment have been saved.'), userDisplayName) : Object(external_this_wp_i18n_["__"])('Another user now has editing control of this post. Don’t worry, your changes up to this moment have been saved.')), Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-locked-modal__buttons" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isPrimary: true, + isLarge: true, + href: allPostsUrl + }, allPostsLabel))), !isTakeover && Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])("div", null, userDisplayName ? Object(external_this_wp_i18n_["sprintf"])( + /* translators: %s: user's display name */ + Object(external_this_wp_i18n_["__"])('%s is currently working on this post, which means you cannot make changes, unless you take over.'), userDisplayName) : Object(external_this_wp_i18n_["__"])('Another user is currently working on this post, which means you cannot make changes, unless you take over.')), Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-locked-modal__buttons" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isDefault: true, + isLarge: true, + href: allPostsUrl + }, allPostsLabel), Object(external_this_wp_element_["createElement"])(post_preview_button, null), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isPrimary: true, + isLarge: true, + href: unlockUrl + }, Object(external_this_wp_i18n_["__"])('Take Over'))))); + } + }]); + + return PostLockedModal; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var post_locked_modal = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isPostLocked = _select.isPostLocked, + isPostLockTakeover = _select.isPostLockTakeover, + getPostLockUser = _select.getPostLockUser, + getCurrentPostId = _select.getCurrentPostId, + getActivePostLock = _select.getActivePostLock, + getEditedPostAttribute = _select.getEditedPostAttribute, + getEditorSettings = _select.getEditorSettings; + + var _select2 = select('core'), + getPostType = _select2.getPostType; + + return { + isLocked: isPostLocked(), + isTakeover: isPostLockTakeover(), + user: getPostLockUser(), + postId: getCurrentPostId(), + postLockUtils: getEditorSettings().postLockUtils, + activePostLock: getActivePostLock(), + postType: getPostType(getEditedPostAttribute('type')) + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + autosave = _dispatch.autosave, + updatePostLock = _dispatch.updatePostLock; + + return { + autosave: autosave, + updatePostLock: updatePostLock + }; +}), external_this_wp_compose_["withInstanceId"], Object(external_this_wp_compose_["withGlobalEvents"])({ + beforeunload: 'releasePostLock' +}))(post_locked_modal_PostLockedModal)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pending-status/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +function PostPendingStatusCheck(_ref) { + var hasPublishAction = _ref.hasPublishAction, + isPublished = _ref.isPublished, + children = _ref.children; + + if (isPublished || !hasPublishAction) { + return null; + } + + return children; +} +/* harmony default export */ var post_pending_status_check = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isCurrentPostPublished = _select.isCurrentPostPublished, + getCurrentPostType = _select.getCurrentPostType, + getCurrentPost = _select.getCurrentPost; + + return { + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + isPublished: isCurrentPostPublished(), + postType: getCurrentPostType() + }; +}))(PostPendingStatusCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pending-status/index.js + + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + +function PostPendingStatus(_ref) { + var status = _ref.status, + onUpdateStatus = _ref.onUpdateStatus; + + var togglePendingStatus = function togglePendingStatus() { + var updatedStatus = status === 'pending' ? 'draft' : 'pending'; + onUpdateStatus(updatedStatus); + }; + + return Object(external_this_wp_element_["createElement"])(post_pending_status_check, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { + label: Object(external_this_wp_i18n_["__"])('Pending Review'), + checked: status === 'pending', + onChange: togglePendingStatus + })); +} +/* harmony default export */ var post_pending_status = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + return { + status: select('core/editor').getEditedPostAttribute('status') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateStatus: function onUpdateStatus(status) { + dispatch('core/editor').editPost({ + status: status + }); + } + }; +}))(PostPendingStatus)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-pingbacks/index.js + + + +/** + * WordPress dependencies + */ + + + + + +function PostPingbacks(_ref) { + var _ref$pingStatus = _ref.pingStatus, + pingStatus = _ref$pingStatus === void 0 ? 'open' : _ref$pingStatus, + props = Object(objectWithoutProperties["a" /* default */])(_ref, ["pingStatus"]); + + var onTogglePingback = function onTogglePingback() { + return props.editPost({ + ping_status: pingStatus === 'open' ? 'closed' : 'open' + }); + }; + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { + label: Object(external_this_wp_i18n_["__"])('Allow Pingbacks & Trackbacks'), + checked: pingStatus === 'open', + onChange: onTogglePingback + }); +} + +/* harmony default export */ var post_pingbacks = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + pingStatus: select('core/editor').getEditedPostAttribute('ping_status') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + editPost: dispatch('core/editor').editPost + }; +})])(PostPingbacks)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-button/label.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + +function PublishButtonLabel(_ref) { + var isPublished = _ref.isPublished, + isBeingScheduled = _ref.isBeingScheduled, + isSaving = _ref.isSaving, + isPublishing = _ref.isPublishing, + hasPublishAction = _ref.hasPublishAction, + isAutosaving = _ref.isAutosaving; + + if (isPublishing) { + return Object(external_this_wp_i18n_["__"])('Publishing…'); + } else if (isPublished && isSaving && !isAutosaving) { + return Object(external_this_wp_i18n_["__"])('Updating…'); + } else if (isBeingScheduled && isSaving && !isAutosaving) { + return Object(external_this_wp_i18n_["__"])('Scheduling…'); + } + + if (!hasPublishAction) { + return Object(external_this_wp_i18n_["__"])('Submit for Review'); + } else if (isPublished) { + return Object(external_this_wp_i18n_["__"])('Update'); + } else if (isBeingScheduled) { + return Object(external_this_wp_i18n_["__"])('Schedule'); + } + + return Object(external_this_wp_i18n_["__"])('Publish'); +} +/* harmony default export */ var post_publish_button_label = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) { + var forceIsSaving = _ref2.forceIsSaving; + + var _select = select('core/editor'), + isCurrentPostPublished = _select.isCurrentPostPublished, + isEditedPostBeingScheduled = _select.isEditedPostBeingScheduled, + isSavingPost = _select.isSavingPost, + isPublishingPost = _select.isPublishingPost, + getCurrentPost = _select.getCurrentPost, + getCurrentPostType = _select.getCurrentPostType, + isAutosavingPost = _select.isAutosavingPost; + + return { + isPublished: isCurrentPostPublished(), + isBeingScheduled: isEditedPostBeingScheduled(), + isSaving: forceIsSaving || isSavingPost(), + isPublishing: isPublishingPost(), + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + postType: getCurrentPostType(), + isAutosaving: isAutosavingPost() + }; +})])(PublishButtonLabel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-button/index.js + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + +/** + * Internal dependencies + */ + + +var post_publish_button_PostPublishButton = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostPublishButton, _Component); + + function PostPublishButton(props) { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostPublishButton); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostPublishButton).call(this, props)); + _this.buttonNode = Object(external_this_wp_element_["createRef"])(); + return _this; + } + + Object(createClass["a" /* default */])(PostPublishButton, [{ + key: "componentDidMount", + value: function componentDidMount() { + if (this.props.focusOnMount) { + this.buttonNode.current.focus(); + } + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + forceIsDirty = _this$props.forceIsDirty, + forceIsSaving = _this$props.forceIsSaving, + hasPublishAction = _this$props.hasPublishAction, + isBeingScheduled = _this$props.isBeingScheduled, + isOpen = _this$props.isOpen, + isPostSavingLocked = _this$props.isPostSavingLocked, + isPublishable = _this$props.isPublishable, + isPublished = _this$props.isPublished, + isSaveable = _this$props.isSaveable, + isSaving = _this$props.isSaving, + isToggle = _this$props.isToggle, + onSave = _this$props.onSave, + onStatusChange = _this$props.onStatusChange, + _this$props$onSubmit = _this$props.onSubmit, + onSubmit = _this$props$onSubmit === void 0 ? external_lodash_["noop"] : _this$props$onSubmit, + onToggle = _this$props.onToggle, + visibility = _this$props.visibility; + var isButtonDisabled = isSaving || forceIsSaving || !isSaveable || isPostSavingLocked || !isPublishable && !forceIsDirty; + var isToggleDisabled = isPublished || isSaving || forceIsSaving || !isSaveable || !isPublishable && !forceIsDirty; + var publishStatus; + + if (!hasPublishAction) { + publishStatus = 'pending'; + } else if (isBeingScheduled) { + publishStatus = 'future'; + } else if (visibility === 'private') { + publishStatus = 'private'; + } else { + publishStatus = 'publish'; + } + + var onClickButton = function onClickButton() { + if (isButtonDisabled) { + return; + } + + onSubmit(); + onStatusChange(publishStatus); + onSave(); + }; + + var onClickToggle = function onClickToggle() { + if (isToggleDisabled) { + return; + } + + onToggle(); + }; + + var buttonProps = { + 'aria-disabled': isButtonDisabled, + className: 'editor-post-publish-button', + isBusy: isSaving && isPublished, + isPrimary: true, + onClick: onClickButton + }; + var toggleProps = { + 'aria-disabled': isToggleDisabled, + 'aria-expanded': isOpen, + className: 'editor-post-publish-panel__toggle', + isBusy: isSaving && isPublished, + isPrimary: true, + onClick: onClickToggle + }; + var toggleChildren = isBeingScheduled ? Object(external_this_wp_i18n_["__"])('Schedule…') : Object(external_this_wp_i18n_["__"])('Publish…'); + var buttonChildren = Object(external_this_wp_element_["createElement"])(post_publish_button_label, { + forceIsSaving: forceIsSaving + }); + var componentProps = isToggle ? toggleProps : buttonProps; + var componentChildren = isToggle ? toggleChildren : buttonChildren; + return Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], Object(esm_extends["a" /* default */])({ + ref: this.buttonNode + }, componentProps), componentChildren), Object(external_this_wp_element_["createElement"])(external_this_wp_nux_["DotTip"], { + tipId: "core/editor.publish" + }, Object(external_this_wp_i18n_["__"])('Finished writing? That’s great, let’s get this published right now. Just click “Publish” and you’re good to go.'))); + } + }]); + + return PostPublishButton; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_publish_button = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isSavingPost = _select.isSavingPost, + isEditedPostBeingScheduled = _select.isEditedPostBeingScheduled, + getEditedPostVisibility = _select.getEditedPostVisibility, + isCurrentPostPublished = _select.isCurrentPostPublished, + isEditedPostSaveable = _select.isEditedPostSaveable, + isEditedPostPublishable = _select.isEditedPostPublishable, + isPostSavingLocked = _select.isPostSavingLocked, + getCurrentPost = _select.getCurrentPost, + getCurrentPostType = _select.getCurrentPostType; + + return { + isSaving: isSavingPost(), + isBeingScheduled: isEditedPostBeingScheduled(), + visibility: getEditedPostVisibility(), + isSaveable: isEditedPostSaveable(), + isPostSavingLocked: isPostSavingLocked(), + isPublishable: isEditedPostPublishable(), + isPublished: isCurrentPostPublished(), + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + postType: getCurrentPostType() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + editPost = _dispatch.editPost, + savePost = _dispatch.savePost; + + return { + onStatusChange: function onStatusChange(status) { + return editPost({ + status: status + }, { + undoIgnore: true + }); + }, + onSave: savePost + }; +})])(post_publish_button_PostPublishButton)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/utils.js +/** + * WordPress dependencies + */ + +var visibilityOptions = [{ + value: 'public', + label: Object(external_this_wp_i18n_["__"])('Public'), + info: Object(external_this_wp_i18n_["__"])('Visible to everyone.') +}, { + value: 'private', + label: Object(external_this_wp_i18n_["__"])('Private'), + info: Object(external_this_wp_i18n_["__"])('Only visible to site admins and editors.') +}, { + value: 'password', + label: Object(external_this_wp_i18n_["__"])('Password Protected'), + info: Object(external_this_wp_i18n_["__"])('Protected with a password you choose. Only those with the password can view this post.') +}]; + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/index.js + + + + + + + + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + +var post_visibility_PostVisibility = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostVisibility, _Component); + + function PostVisibility(props) { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostVisibility); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostVisibility).apply(this, arguments)); + _this.setPublic = _this.setPublic.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.setPrivate = _this.setPrivate.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.setPasswordProtected = _this.setPasswordProtected.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.updatePassword = _this.updatePassword.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = { + hasPassword: !!props.password + }; + return _this; + } + + Object(createClass["a" /* default */])(PostVisibility, [{ + key: "setPublic", + value: function setPublic() { + var _this$props = this.props, + visibility = _this$props.visibility, + onUpdateVisibility = _this$props.onUpdateVisibility, + status = _this$props.status; + onUpdateVisibility(visibility === 'private' ? 'draft' : status); + this.setState({ + hasPassword: false + }); + } + }, { + key: "setPrivate", + value: function setPrivate() { + if (!window.confirm(Object(external_this_wp_i18n_["__"])('Would you like to privately publish this post now?'))) { + // eslint-disable-line no-alert + return; + } + + var _this$props2 = this.props, + onUpdateVisibility = _this$props2.onUpdateVisibility, + onSave = _this$props2.onSave; + onUpdateVisibility('private'); + this.setState({ + hasPassword: false + }); + onSave(); + } + }, { + key: "setPasswordProtected", + value: function setPasswordProtected() { + var _this$props3 = this.props, + visibility = _this$props3.visibility, + onUpdateVisibility = _this$props3.onUpdateVisibility, + status = _this$props3.status, + password = _this$props3.password; + onUpdateVisibility(visibility === 'private' ? 'draft' : status, password || ''); + this.setState({ + hasPassword: true + }); + } + }, { + key: "updatePassword", + value: function updatePassword(event) { + var _this$props4 = this.props, + status = _this$props4.status, + onUpdateVisibility = _this$props4.onUpdateVisibility; + onUpdateVisibility(status, event.target.value); + } + }, { + key: "render", + value: function render() { + var _this$props5 = this.props, + visibility = _this$props5.visibility, + password = _this$props5.password, + instanceId = _this$props5.instanceId; + var visibilityHandlers = { + public: { + onSelect: this.setPublic, + checked: visibility === 'public' && !this.state.hasPassword + }, + private: { + onSelect: this.setPrivate, + checked: visibility === 'private' + }, + password: { + onSelect: this.setPasswordProtected, + checked: this.state.hasPassword + } + }; + return [Object(external_this_wp_element_["createElement"])("fieldset", { + key: "visibility-selector", + className: "editor-post-visibility__dialog-fieldset" + }, Object(external_this_wp_element_["createElement"])("legend", { + className: "editor-post-visibility__dialog-legend" + }, Object(external_this_wp_i18n_["__"])('Post Visibility')), visibilityOptions.map(function (_ref) { + var value = _ref.value, + label = _ref.label, + info = _ref.info; + return Object(external_this_wp_element_["createElement"])("div", { + key: value, + className: "editor-post-visibility__choice" + }, Object(external_this_wp_element_["createElement"])("input", { + type: "radio", + name: "editor-post-visibility__setting-".concat(instanceId), + value: value, + onChange: visibilityHandlers[value].onSelect, + checked: visibilityHandlers[value].checked, + id: "editor-post-".concat(value, "-").concat(instanceId), + "aria-describedby": "editor-post-".concat(value, "-").concat(instanceId, "-description"), + className: "editor-post-visibility__dialog-radio" + }), Object(external_this_wp_element_["createElement"])("label", { + htmlFor: "editor-post-".concat(value, "-").concat(instanceId), + className: "editor-post-visibility__dialog-label" + }, label), Object(external_this_wp_element_["createElement"])("p", { + id: "editor-post-".concat(value, "-").concat(instanceId, "-description"), + className: "editor-post-visibility__dialog-info" + }, info)); + })), this.state.hasPassword && Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-visibility__dialog-password", + key: "password-selector" + }, Object(external_this_wp_element_["createElement"])("label", { + htmlFor: "editor-post-visibility__dialog-password-input-".concat(instanceId), + className: "screen-reader-text" + }, Object(external_this_wp_i18n_["__"])('Create password')), Object(external_this_wp_element_["createElement"])("input", { + className: "editor-post-visibility__dialog-password-input", + id: "editor-post-visibility__dialog-password-input-".concat(instanceId), + type: "text", + onChange: this.updatePassword, + value: password, + placeholder: Object(external_this_wp_i18n_["__"])('Use a secure password') + }))]; + } + }]); + + return PostVisibility; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_visibility = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + getEditedPostVisibility = _select.getEditedPostVisibility; + + return { + status: getEditedPostAttribute('status'), + visibility: getEditedPostVisibility(), + password: getEditedPostAttribute('password') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + savePost = _dispatch.savePost, + editPost = _dispatch.editPost; + + return { + onSave: savePost, + onUpdateVisibility: function onUpdateVisibility(status) { + var password = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : ''; + editPost({ + status: status, + password: password + }); + } + }; +}), external_this_wp_compose_["withInstanceId"]])(post_visibility_PostVisibility)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/label.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + +/** + * Internal dependencies + */ + + + +function PostVisibilityLabel(_ref) { + var visibility = _ref.visibility; + + var getVisibilityLabel = function getVisibilityLabel() { + return Object(external_lodash_["find"])(visibilityOptions, { + value: visibility + }).label; + }; + + return getVisibilityLabel(visibility); +} + +/* harmony default export */ var post_visibility_label = (Object(external_this_wp_data_["withSelect"])(function (select) { + return { + visibility: select('core/editor').getEditedPostVisibility() + }; +})(PostVisibilityLabel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-schedule/index.js + + +/** + * WordPress dependencies + */ + + + + +function PostSchedule(_ref) { + var date = _ref.date, + onUpdateDate = _ref.onUpdateDate; + + var settings = Object(external_this_wp_date_["__experimentalGetSettings"])(); // To know if the current timezone is a 12 hour time with look for "a" in the time format + // We also make sure this a is not escaped by a "/" + + + var is12HourTime = /a(?!\\)/i.test(settings.formats.time.toLowerCase() // Test only the lower case a + .replace(/\\\\/g, '') // Replace "//" with empty strings + .split('').reverse().join('') // Reverse the string and test for "a" not followed by a slash + ); + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["DateTimePicker"], { + key: "date-time-picker", + currentDate: date, + onChange: onUpdateDate, + is12Hour: is12HourTime + }); +} +/* harmony default export */ var post_schedule = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + date: select('core/editor').getEditedPostAttribute('date') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateDate: function onUpdateDate(date) { + dispatch('core/editor').editPost({ + date: date + }); + } + }; +})])(PostSchedule)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-schedule/label.js +/** + * WordPress dependencies + */ + + + +function PostScheduleLabel(_ref) { + var date = _ref.date, + isFloating = _ref.isFloating; + + var settings = Object(external_this_wp_date_["__experimentalGetSettings"])(); + + return date && !isFloating ? Object(external_this_wp_date_["dateI18n"])("".concat(settings.formats.date, " ").concat(settings.formats.time), date) : Object(external_this_wp_i18n_["__"])('Immediately'); +} +/* harmony default export */ var post_schedule_label = (Object(external_this_wp_data_["withSelect"])(function (select) { + return { + date: select('core/editor').getEditedPostAttribute('date'), + isFloating: select('core/editor').isEditedPostDateFloating() + }; +})(PostScheduleLabel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/flat-term-selector.js + + + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + + +/** + * Module constants + */ + +var DEFAULT_QUERY = { + per_page: -1, + orderby: 'count', + order: 'desc', + _fields: 'id,name' +}; +var MAX_TERMS_SUGGESTIONS = 20; + +var isSameTermName = function isSameTermName(termA, termB) { + return termA.toLowerCase() === termB.toLowerCase(); +}; +/** + * Returns a term object with name unescaped. + * The unescape of the name property is done using lodash unescape function. + * + * @param {Object} term The term object to unescape. + * + * @return {Object} Term object with name property unescaped. + */ + + +var flat_term_selector_unescapeTerm = function unescapeTerm(term) { + return Object(objectSpread["a" /* default */])({}, term, { + name: Object(external_lodash_["unescape"])(term.name) + }); +}; +/** + * Returns an array of term objects with names unescaped. + * The unescape of each term is performed using the unescapeTerm function. + * + * @param {Object[]} terms Array of term objects to unescape. + * + * @return {Object[]} Array of term objects unescaped. + */ + + +var flat_term_selector_unescapeTerms = function unescapeTerms(terms) { + return Object(external_lodash_["map"])(terms, flat_term_selector_unescapeTerm); +}; + +var flat_term_selector_FlatTermSelector = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(FlatTermSelector, _Component); + + function FlatTermSelector() { + var _this; + + Object(classCallCheck["a" /* default */])(this, FlatTermSelector); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(FlatTermSelector).apply(this, arguments)); + _this.onChange = _this.onChange.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.searchTerms = Object(external_lodash_["throttle"])(_this.searchTerms.bind(Object(assertThisInitialized["a" /* default */])(_this)), 500); + _this.findOrCreateTerm = _this.findOrCreateTerm.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = { + loading: !Object(external_lodash_["isEmpty"])(_this.props.terms), + availableTerms: [], + selectedTerms: [] + }; + return _this; + } + + Object(createClass["a" /* default */])(FlatTermSelector, [{ + key: "componentDidMount", + value: function componentDidMount() { + var _this2 = this; + + if (!Object(external_lodash_["isEmpty"])(this.props.terms)) { + this.initRequest = this.fetchTerms({ + include: this.props.terms.join(','), + per_page: -1 + }); + this.initRequest.then(function () { + _this2.setState({ + loading: false + }); + }, function (xhr) { + if (xhr.statusText === 'abort') { + return; + } + + _this2.setState({ + loading: false + }); + }); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + Object(external_lodash_["invoke"])(this.initRequest, ['abort']); + Object(external_lodash_["invoke"])(this.searchRequest, ['abort']); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (prevProps.terms !== this.props.terms) { + this.updateSelectedTerms(this.props.terms); + } + } + }, { + key: "fetchTerms", + value: function fetchTerms() { + var _this3 = this; + + var params = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {}; + var taxonomy = this.props.taxonomy; + + var query = Object(objectSpread["a" /* default */])({}, DEFAULT_QUERY, params); + + var request = external_this_wp_apiFetch_default()({ + path: Object(external_this_wp_url_["addQueryArgs"])("/wp/v2/".concat(taxonomy.rest_base), query) + }); + request.then(flat_term_selector_unescapeTerms).then(function (terms) { + _this3.setState(function (state) { + return { + availableTerms: state.availableTerms.concat(terms.filter(function (term) { + return !Object(external_lodash_["find"])(state.availableTerms, function (availableTerm) { + return availableTerm.id === term.id; + }); + })) + }; + }); + + _this3.updateSelectedTerms(_this3.props.terms); + }); + return request; + } + }, { + key: "updateSelectedTerms", + value: function updateSelectedTerms() { + var _this4 = this; + + var terms = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var selectedTerms = terms.reduce(function (result, termId) { + var termObject = Object(external_lodash_["find"])(_this4.state.availableTerms, function (term) { + return term.id === termId; + }); + + if (termObject) { + result.push(termObject.name); + } + + return result; + }, []); + this.setState({ + selectedTerms: selectedTerms + }); + } + }, { + key: "findOrCreateTerm", + value: function findOrCreateTerm(termName) { + var _this5 = this; + + var taxonomy = this.props.taxonomy; + var termNameEscaped = Object(external_lodash_["escape"])(termName); // Tries to create a term or fetch it if it already exists. + + return external_this_wp_apiFetch_default()({ + path: "/wp/v2/".concat(taxonomy.rest_base), + method: 'POST', + data: { + name: termNameEscaped + } + }).catch(function (error) { + var errorCode = error.code; + + if (errorCode === 'term_exists') { + // If the terms exist, fetch it instead of creating a new one. + _this5.addRequest = external_this_wp_apiFetch_default()({ + path: Object(external_this_wp_url_["addQueryArgs"])("/wp/v2/".concat(taxonomy.rest_base), Object(objectSpread["a" /* default */])({}, DEFAULT_QUERY, { + search: termNameEscaped + })) + }).then(flat_term_selector_unescapeTerms); + return _this5.addRequest.then(function (searchResult) { + return Object(external_lodash_["find"])(searchResult, function (result) { + return isSameTermName(result.name, termName); + }); + }); + } + + return Promise.reject(error); + }).then(flat_term_selector_unescapeTerm); + } + }, { + key: "onChange", + value: function onChange(termNames) { + var _this6 = this; + + var uniqueTerms = Object(external_lodash_["uniqBy"])(termNames, function (term) { + return term.toLowerCase(); + }); + this.setState({ + selectedTerms: uniqueTerms + }); + var newTermNames = uniqueTerms.filter(function (termName) { + return !Object(external_lodash_["find"])(_this6.state.availableTerms, function (term) { + return isSameTermName(term.name, termName); + }); + }); + + var termNamesToIds = function termNamesToIds(names, availableTerms) { + return names.map(function (termName) { + return Object(external_lodash_["find"])(availableTerms, function (term) { + return isSameTermName(term.name, termName); + }).id; + }); + }; + + if (newTermNames.length === 0) { + return this.props.onUpdateTerms(termNamesToIds(uniqueTerms, this.state.availableTerms), this.props.taxonomy.rest_base); + } + + Promise.all(newTermNames.map(this.findOrCreateTerm)).then(function (newTerms) { + var newAvailableTerms = _this6.state.availableTerms.concat(newTerms); + + _this6.setState({ + availableTerms: newAvailableTerms + }); + + return _this6.props.onUpdateTerms(termNamesToIds(uniqueTerms, newAvailableTerms), _this6.props.taxonomy.rest_base); + }); + } + }, { + key: "searchTerms", + value: function searchTerms() { + var search = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ''; + Object(external_lodash_["invoke"])(this.searchRequest, ['abort']); + this.searchRequest = this.fetchTerms({ + search: search + }); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + slug = _this$props.slug, + taxonomy = _this$props.taxonomy, + hasAssignAction = _this$props.hasAssignAction; + + if (!hasAssignAction) { + return null; + } + + var _this$state = this.state, + loading = _this$state.loading, + availableTerms = _this$state.availableTerms, + selectedTerms = _this$state.selectedTerms; + var termNames = availableTerms.map(function (term) { + return term.name; + }); + var newTermLabel = Object(external_lodash_["get"])(taxonomy, ['labels', 'add_new_item'], slug === 'post_tag' ? Object(external_this_wp_i18n_["__"])('Add New Tag') : Object(external_this_wp_i18n_["__"])('Add New Term')); + var singularName = Object(external_lodash_["get"])(taxonomy, ['labels', 'singular_name'], slug === 'post_tag' ? Object(external_this_wp_i18n_["__"])('Tag') : Object(external_this_wp_i18n_["__"])('Term')); + var termAddedLabel = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_x"])('%s added', 'term'), singularName); + var termRemovedLabel = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_x"])('%s removed', 'term'), singularName); + var removeTermLabel = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_x"])('Remove %s', 'term'), singularName); + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["FormTokenField"], { + value: selectedTerms, + suggestions: termNames, + onChange: this.onChange, + onInputChange: this.searchTerms, + maxSuggestions: MAX_TERMS_SUGGESTIONS, + disabled: loading, + label: newTermLabel, + messages: { + added: termAddedLabel, + removed: termRemovedLabel, + remove: removeTermLabel + } + }); + } + }]); + + return FlatTermSelector; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var flat_term_selector = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref) { + var slug = _ref.slug; + + var _select = select('core/editor'), + getCurrentPost = _select.getCurrentPost; + + var _select2 = select('core'), + getTaxonomy = _select2.getTaxonomy; + + var taxonomy = getTaxonomy(slug); + return { + hasCreateAction: taxonomy ? Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-create-' + taxonomy.rest_base], false) : false, + hasAssignAction: taxonomy ? Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-assign-' + taxonomy.rest_base], false) : false, + terms: taxonomy ? select('core/editor').getEditedPostAttribute(taxonomy.rest_base) : [], + taxonomy: taxonomy + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateTerms: function onUpdateTerms(terms, restBase) { + dispatch('core/editor').editPost(Object(defineProperty["a" /* default */])({}, restBase, terms)); + } + }; +}), Object(external_this_wp_components_["withFilters"])('editor.PostTaxonomyType'))(flat_term_selector_FlatTermSelector)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/maybe-tags-panel.js + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +/** + * Internal dependencies + */ + + + +var maybe_tags_panel_TagsPanel = function TagsPanel() { + var panelBodyTitle = [Object(external_this_wp_i18n_["__"])('Suggestion:'), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-publish-panel__link", + key: "label" + }, Object(external_this_wp_i18n_["__"])('Add tags'))]; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], { + initialOpen: false, + title: panelBodyTitle + }, Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('Tags help users and search engines navigate your site and find your content. Add a few keywords to describe your post.')), Object(external_this_wp_element_["createElement"])(flat_term_selector, { + slug: 'post_tag' + })); +}; + +var maybe_tags_panel_MaybeTagsPanel = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(MaybeTagsPanel, _Component); + + function MaybeTagsPanel(props) { + var _this; + + Object(classCallCheck["a" /* default */])(this, MaybeTagsPanel); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(MaybeTagsPanel).call(this, props)); + _this.state = { + hadTagsWhenOpeningThePanel: props.hasTags + }; + return _this; + } + /* + * We only want to show the tag panel if the post didn't have + * any tags when the user hit the Publish button. + * + * We can't use the prop.hasTags because it'll change to true + * if the user adds a new tag within the pre-publish panel. + * This would force a re-render and a new prop.hasTags check, + * hiding this panel and keeping the user from adding + * more than one tag. + */ + + + Object(createClass["a" /* default */])(MaybeTagsPanel, [{ + key: "render", + value: function render() { + if (!this.state.hadTagsWhenOpeningThePanel) { + return Object(external_this_wp_element_["createElement"])(maybe_tags_panel_TagsPanel, null); + } + + return null; + } + }]); + + return MaybeTagsPanel; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var maybe_tags_panel = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + var postType = select('core/editor').getCurrentPostType(); + var tagsTaxonomy = select('core').getTaxonomy('post_tag'); + var tags = tagsTaxonomy && select('core/editor').getEditedPostAttribute(tagsTaxonomy.rest_base); + return { + areTagsFetched: tagsTaxonomy !== undefined, + isPostTypeSupported: tagsTaxonomy && Object(external_lodash_["some"])(tagsTaxonomy.types, function (type) { + return type === postType; + }), + hasTags: tags && tags.length + }; +}), Object(external_this_wp_compose_["ifCondition"])(function (_ref) { + var areTagsFetched = _ref.areTagsFetched, + isPostTypeSupported = _ref.isPostTypeSupported; + return isPostTypeSupported && areTagsFetched; +}))(maybe_tags_panel_MaybeTagsPanel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/maybe-post-format-panel.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + + +var maybe_post_format_panel_PostFormatSuggestion = function PostFormatSuggestion(_ref) { + var suggestedPostFormat = _ref.suggestedPostFormat, + suggestionText = _ref.suggestionText, + onUpdatePostFormat = _ref.onUpdatePostFormat; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isLink: true, + onClick: function onClick() { + return onUpdatePostFormat(suggestedPostFormat); + } + }, suggestionText); +}; + +var maybe_post_format_panel_PostFormatPanel = function PostFormatPanel(_ref2) { + var suggestion = _ref2.suggestion, + onUpdatePostFormat = _ref2.onUpdatePostFormat; + var panelBodyTitle = [Object(external_this_wp_i18n_["__"])('Suggestion:'), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-publish-panel__link", + key: "label" + }, Object(external_this_wp_i18n_["__"])('Use a post format'))]; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], { + initialOpen: false, + title: panelBodyTitle + }, Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('Your theme uses post formats to highlight different kinds of content, like images or videos. Apply a post format to see this special styling.')), Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_element_["createElement"])(maybe_post_format_panel_PostFormatSuggestion, { + onUpdatePostFormat: onUpdatePostFormat, + suggestedPostFormat: suggestion.id, + suggestionText: Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Apply the "%1$s" format.'), suggestion.caption) + }))); +}; + +var maybe_post_format_panel_getSuggestion = function getSuggestion(supportedFormats, suggestedPostFormat) { + var formats = POST_FORMATS.filter(function (format) { + return Object(external_lodash_["includes"])(supportedFormats, format.id); + }); + return Object(external_lodash_["find"])(formats, function (format) { + return format.id === suggestedPostFormat; + }); +}; + +/* harmony default export */ var maybe_post_format_panel = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + getSuggestedPostFormat = _select.getSuggestedPostFormat; + + var supportedFormats = Object(external_lodash_["get"])(select('core').getThemeSupports(), ['formats'], []); + return { + currentPostFormat: getEditedPostAttribute('format'), + suggestion: maybe_post_format_panel_getSuggestion(supportedFormats, getSuggestedPostFormat()) + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdatePostFormat: function onUpdatePostFormat(postFormat) { + dispatch('core/editor').editPost({ + format: postFormat + }); + } + }; +}), Object(external_this_wp_compose_["ifCondition"])(function (_ref3) { + var suggestion = _ref3.suggestion, + currentPostFormat = _ref3.currentPostFormat; + return suggestion && suggestion.id !== currentPostFormat; +}))(maybe_post_format_panel_PostFormatPanel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/prepublish.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + + + + + + + +function PostPublishPanelPrepublish(_ref) { + var hasPublishAction = _ref.hasPublishAction, + isBeingScheduled = _ref.isBeingScheduled, + children = _ref.children; + var prePublishTitle, prePublishBodyText; + + if (!hasPublishAction) { + prePublishTitle = Object(external_this_wp_i18n_["__"])('Are you ready to submit for review?'); + prePublishBodyText = Object(external_this_wp_i18n_["__"])('When you’re ready, submit your work for review, and an Editor will be able to approve it for you.'); + } else if (isBeingScheduled) { + prePublishTitle = Object(external_this_wp_i18n_["__"])('Are you ready to schedule?'); + prePublishBodyText = Object(external_this_wp_i18n_["__"])('Your work will be published at the specified date and time.'); + } else { + prePublishTitle = Object(external_this_wp_i18n_["__"])('Are you ready to publish?'); + prePublishBodyText = Object(external_this_wp_i18n_["__"])('Double-check your settings before publishing.'); + } + + return Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-publish-panel__prepublish" + }, Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])("strong", null, prePublishTitle)), Object(external_this_wp_element_["createElement"])("p", null, prePublishBodyText), hasPublishAction && Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], { + initialOpen: false, + title: [Object(external_this_wp_i18n_["__"])('Visibility:'), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-publish-panel__link", + key: "label" + }, Object(external_this_wp_element_["createElement"])(post_visibility_label, null))] + }, Object(external_this_wp_element_["createElement"])(post_visibility, null)), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], { + initialOpen: false, + title: [Object(external_this_wp_i18n_["__"])('Publish:'), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-publish-panel__link", + key: "label" + }, Object(external_this_wp_element_["createElement"])(post_schedule_label, null))] + }, Object(external_this_wp_element_["createElement"])(post_schedule, null))), Object(external_this_wp_element_["createElement"])(maybe_post_format_panel, null), Object(external_this_wp_element_["createElement"])(maybe_tags_panel, null), children); +} + +/* harmony default export */ var prepublish = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getCurrentPost = _select.getCurrentPost, + isEditedPostBeingScheduled = _select.isEditedPostBeingScheduled; + + return { + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + isBeingScheduled: isEditedPostBeingScheduled() + }; +})(PostPublishPanelPrepublish)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/postpublish.js + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +/** + * Internal dependencies + */ + + + +var postpublish_PostPublishPanelPostpublish = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostPublishPanelPostpublish, _Component); + + function PostPublishPanelPostpublish() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostPublishPanelPostpublish); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostPublishPanelPostpublish).apply(this, arguments)); + _this.state = { + showCopyConfirmation: false + }; + _this.onCopy = _this.onCopy.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onSelectInput = _this.onSelectInput.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.postLink = Object(external_this_wp_element_["createRef"])(); + return _this; + } + + Object(createClass["a" /* default */])(PostPublishPanelPostpublish, [{ + key: "componentDidMount", + value: function componentDidMount() { + if (this.props.focusOnMount) { + this.postLink.current.focus(); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + clearTimeout(this.dismissCopyConfirmation); + } + }, { + key: "onCopy", + value: function onCopy() { + var _this2 = this; + + this.setState({ + showCopyConfirmation: true + }); + clearTimeout(this.dismissCopyConfirmation); + this.dismissCopyConfirmation = setTimeout(function () { + _this2.setState({ + showCopyConfirmation: false + }); + }, 4000); + } + }, { + key: "onSelectInput", + value: function onSelectInput(event) { + event.target.select(); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + children = _this$props.children, + isScheduled = _this$props.isScheduled, + post = _this$props.post, + postType = _this$props.postType; + var postLabel = Object(external_lodash_["get"])(postType, ['labels', 'singular_name']); + var viewPostLabel = Object(external_lodash_["get"])(postType, ['labels', 'view_item']); + var postPublishNonLinkHeader = isScheduled ? Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_i18n_["__"])('is now scheduled. It will go live on'), " ", Object(external_this_wp_element_["createElement"])(post_schedule_label, null), ".") : Object(external_this_wp_i18n_["__"])('is now live.'); + return Object(external_this_wp_element_["createElement"])("div", { + className: "post-publish-panel__postpublish" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], { + className: "post-publish-panel__postpublish-header" + }, Object(external_this_wp_element_["createElement"])("a", { + ref: this.postLink, + href: post.link + }, post.title || Object(external_this_wp_i18n_["__"])('(no title)')), " ", postPublishNonLinkHeader), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], null, Object(external_this_wp_element_["createElement"])("p", { + className: "post-publish-panel__postpublish-subheader" + }, Object(external_this_wp_element_["createElement"])("strong", null, Object(external_this_wp_i18n_["__"])('What’s next?'))), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextControl"], { + className: "post-publish-panel__postpublish-post-address", + readOnly: true, + label: Object(external_this_wp_i18n_["sprintf"])( + /* translators: %s: post type singular name */ + Object(external_this_wp_i18n_["__"])('%s address'), postLabel), + value: Object(external_this_wp_url_["safeDecodeURIComponent"])(post.link), + onFocus: this.onSelectInput + }), Object(external_this_wp_element_["createElement"])("div", { + className: "post-publish-panel__postpublish-buttons" + }, !isScheduled && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isDefault: true, + href: post.link + }, viewPostLabel), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ClipboardButton"], { + isDefault: true, + text: post.link, + onCopy: this.onCopy + }, this.state.showCopyConfirmation ? Object(external_this_wp_i18n_["__"])('Copied!') : Object(external_this_wp_i18n_["__"])('Copy Link')))), children); + } + }]); + + return PostPublishPanelPostpublish; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var postpublish = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + getCurrentPost = _select.getCurrentPost, + isCurrentPostScheduled = _select.isCurrentPostScheduled; + + var _select2 = select('core'), + getPostType = _select2.getPostType; + + return { + post: getCurrentPost(), + postType: getPostType(getEditedPostAttribute('type')), + isScheduled: isCurrentPostScheduled() + }; +})(postpublish_PostPublishPanelPostpublish)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-publish-panel/index.js + + + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +/** + * Internal dependencies + */ + + + + +var post_publish_panel_PostPublishPanel = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostPublishPanel, _Component); + + function PostPublishPanel() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostPublishPanel); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostPublishPanel).apply(this, arguments)); + _this.onSubmit = _this.onSubmit.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(PostPublishPanel, [{ + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + // Automatically collapse the publish sidebar when a post + // is published and the user makes an edit. + if (prevProps.isPublished && !this.props.isSaving && this.props.isDirty) { + this.props.onClose(); + } + } + }, { + key: "onSubmit", + value: function onSubmit() { + var _this$props = this.props, + onClose = _this$props.onClose, + hasPublishAction = _this$props.hasPublishAction, + isPostTypeViewable = _this$props.isPostTypeViewable; + + if (!hasPublishAction || !isPostTypeViewable) { + onClose(); + } + } + }, { + key: "render", + value: function render() { + var _this$props2 = this.props, + forceIsDirty = _this$props2.forceIsDirty, + forceIsSaving = _this$props2.forceIsSaving, + isBeingScheduled = _this$props2.isBeingScheduled, + isPublished = _this$props2.isPublished, + isPublishSidebarEnabled = _this$props2.isPublishSidebarEnabled, + isScheduled = _this$props2.isScheduled, + isSaving = _this$props2.isSaving, + onClose = _this$props2.onClose, + onTogglePublishSidebar = _this$props2.onTogglePublishSidebar, + PostPublishExtension = _this$props2.PostPublishExtension, + PrePublishExtension = _this$props2.PrePublishExtension, + additionalProps = Object(objectWithoutProperties["a" /* default */])(_this$props2, ["forceIsDirty", "forceIsSaving", "isBeingScheduled", "isPublished", "isPublishSidebarEnabled", "isScheduled", "isSaving", "onClose", "onTogglePublishSidebar", "PostPublishExtension", "PrePublishExtension"]); + + var propsForPanel = Object(external_lodash_["omit"])(additionalProps, ['hasPublishAction', 'isDirty', 'isPostTypeViewable']); + var isPublishedOrScheduled = isPublished || isScheduled && isBeingScheduled; + var isPrePublish = !isPublishedOrScheduled && !isSaving; + var isPostPublish = isPublishedOrScheduled && !isSaving; + return Object(external_this_wp_element_["createElement"])("div", Object(esm_extends["a" /* default */])({ + className: "editor-post-publish-panel" + }, propsForPanel), Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-publish-panel__header" + }, isPostPublish ? Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-publish-panel__header-published" + }, isScheduled ? Object(external_this_wp_i18n_["__"])('Scheduled') : Object(external_this_wp_i18n_["__"])('Published')) : Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-publish-panel__header-publish-button" + }, Object(external_this_wp_element_["createElement"])(post_publish_button, { + focusOnMount: true, + onSubmit: this.onSubmit, + forceIsDirty: forceIsDirty, + forceIsSaving: forceIsSaving + }), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-publish-panel__spacer" + })), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], { + "aria-expanded": true, + onClick: onClose, + icon: "no-alt", + label: Object(external_this_wp_i18n_["__"])('Close panel') + })), Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-publish-panel__content" + }, isPrePublish && Object(external_this_wp_element_["createElement"])(prepublish, null, PrePublishExtension && Object(external_this_wp_element_["createElement"])(PrePublishExtension, null)), isPostPublish && Object(external_this_wp_element_["createElement"])(postpublish, { + focusOnMount: true + }, PostPublishExtension && Object(external_this_wp_element_["createElement"])(PostPublishExtension, null)), isSaving && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Spinner"], null)), Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-publish-panel__footer" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { + label: Object(external_this_wp_i18n_["__"])('Always show pre-publish checks.'), + checked: isPublishSidebarEnabled, + onChange: onTogglePublishSidebar + }))); + } + }]); + + return PostPublishPanel; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_publish_panel = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core'), + getPostType = _select.getPostType; + + var _select2 = select('core/editor'), + getCurrentPost = _select2.getCurrentPost, + getEditedPostAttribute = _select2.getEditedPostAttribute, + isCurrentPostPublished = _select2.isCurrentPostPublished, + isCurrentPostScheduled = _select2.isCurrentPostScheduled, + isEditedPostBeingScheduled = _select2.isEditedPostBeingScheduled, + isEditedPostDirty = _select2.isEditedPostDirty, + isSavingPost = _select2.isSavingPost; + + var _select3 = select('core/editor'), + isPublishSidebarEnabled = _select3.isPublishSidebarEnabled; + + var postType = getPostType(getEditedPostAttribute('type')); + return { + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + isPostTypeViewable: Object(external_lodash_["get"])(postType, ['viewable'], false), + isBeingScheduled: isEditedPostBeingScheduled(), + isDirty: isEditedPostDirty(), + isPublished: isCurrentPostPublished(), + isPublishSidebarEnabled: isPublishSidebarEnabled(), + isSaving: isSavingPost(), + isScheduled: isCurrentPostScheduled() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref) { + var isPublishSidebarEnabled = _ref.isPublishSidebarEnabled; + + var _dispatch = dispatch('core/editor'), + disablePublishSidebar = _dispatch.disablePublishSidebar, + enablePublishSidebar = _dispatch.enablePublishSidebar; + + return { + onTogglePublishSidebar: function onTogglePublishSidebar() { + if (isPublishSidebarEnabled) { + disablePublishSidebar(); + } else { + enablePublishSidebar(); + } + } + }; +}), external_this_wp_components_["withFocusReturn"], external_this_wp_components_["withConstrainedTabbing"]])(post_publish_panel_PostPublishPanel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-switch-to-draft-button/index.js + + +/** + * WordPress dependencies + */ + + + + + + +function PostSwitchToDraftButton(_ref) { + var isSaving = _ref.isSaving, + isPublished = _ref.isPublished, + isScheduled = _ref.isScheduled, + onClick = _ref.onClick, + isMobileViewport = _ref.isMobileViewport; + + if (!isPublished && !isScheduled) { + return null; + } + + var onSwitch = function onSwitch() { + var alertMessage; + + if (isPublished) { + alertMessage = Object(external_this_wp_i18n_["__"])('Are you sure you want to unpublish this post?'); + } else if (isScheduled) { + alertMessage = Object(external_this_wp_i18n_["__"])('Are you sure you want to unschedule this post?'); + } // eslint-disable-next-line no-alert + + + if (window.confirm(alertMessage)) { + onClick(); + } + }; + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + className: "editor-post-switch-to-draft", + onClick: onSwitch, + disabled: isSaving, + isTertiary: true + }, isMobileViewport ? Object(external_this_wp_i18n_["__"])('Draft') : Object(external_this_wp_i18n_["__"])('Switch to Draft')); +} + +/* harmony default export */ var post_switch_to_draft_button = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isSavingPost = _select.isSavingPost, + isCurrentPostPublished = _select.isCurrentPostPublished, + isCurrentPostScheduled = _select.isCurrentPostScheduled; + + return { + isSaving: isSavingPost(), + isPublished: isCurrentPostPublished(), + isScheduled: isCurrentPostScheduled() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + editPost = _dispatch.editPost, + savePost = _dispatch.savePost; + + return { + onClick: function onClick() { + editPost({ + status: 'draft' + }); + savePost(); + } + }; +}), Object(external_this_wp_viewport_["withViewportMatch"])({ + isMobileViewport: '< small' +})])(PostSwitchToDraftButton)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-saved-state/index.js + + + + + + + +/** + * External dependencies + */ + + +/** + * WordPress dependencies + */ + + + + + + + + +/** + * Internal dependencies + */ + + +/** + * Component showing whether the post is saved or not and displaying save links. + * + * @param {Object} Props Component Props. + */ + +var post_saved_state_PostSavedState = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostSavedState, _Component); + + function PostSavedState() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostSavedState); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostSavedState).apply(this, arguments)); + _this.state = { + forceSavedMessage: false + }; + return _this; + } + + Object(createClass["a" /* default */])(PostSavedState, [{ + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + var _this2 = this; + + if (prevProps.isSaving && !this.props.isSaving) { + this.setState({ + forceSavedMessage: true + }); + this.props.setTimeout(function () { + _this2.setState({ + forceSavedMessage: false + }); + }, 1000); + } + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + post = _this$props.post, + isNew = _this$props.isNew, + isScheduled = _this$props.isScheduled, + isPublished = _this$props.isPublished, + isDirty = _this$props.isDirty, + isSaving = _this$props.isSaving, + isSaveable = _this$props.isSaveable, + onSave = _this$props.onSave, + isAutosaving = _this$props.isAutosaving, + isPending = _this$props.isPending, + isLargeViewport = _this$props.isLargeViewport; + var forceSavedMessage = this.state.forceSavedMessage; + + if (isSaving) { + // TODO: Classes generation should be common across all return + // paths of this function, including proper naming convention for + // the "Save Draft" button. + var classes = classnames_default()('editor-post-saved-state', 'is-saving', { + 'is-autosaving': isAutosaving + }); + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Animate"], { + type: "loading" + }, function (_ref) { + var animateClassName = _ref.className; + return Object(external_this_wp_element_["createElement"])("span", { + className: classnames_default()(classes, animateClassName) + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dashicon"], { + icon: "cloud" + }), isAutosaving ? Object(external_this_wp_i18n_["__"])('Autosaving') : Object(external_this_wp_i18n_["__"])('Saving')); + }); + } + + if (isPublished || isScheduled) { + return Object(external_this_wp_element_["createElement"])(post_switch_to_draft_button, null); + } + + if (!isSaveable) { + return null; + } + + if (forceSavedMessage || !isNew && !isDirty) { + return Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-saved-state is-saved" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dashicon"], { + icon: "saved" + }), Object(external_this_wp_i18n_["__"])('Saved')); + } // Once the post has been submitted for review this button + // is not needed for the contributor role. + + + var hasPublishAction = Object(external_lodash_["get"])(post, ['_links', 'wp:action-publish'], false); + + if (!hasPublishAction && isPending) { + return null; + } + + var label = isPending ? Object(external_this_wp_i18n_["__"])('Save as Pending') : Object(external_this_wp_i18n_["__"])('Save Draft'); + + if (!isLargeViewport) { + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], { + className: "editor-post-save-draft", + label: label, + onClick: function onClick() { + return onSave(); + }, + shortcut: external_this_wp_keycodes_["displayShortcut"].primary('s'), + icon: "cloud-upload" + }); + } + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + className: "editor-post-save-draft", + onClick: function onClick() { + return onSave(); + }, + shortcut: external_this_wp_keycodes_["displayShortcut"].primary('s'), + isTertiary: true + }, label); + } + }]); + + return PostSavedState; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_saved_state = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) { + var forceIsDirty = _ref2.forceIsDirty, + forceIsSaving = _ref2.forceIsSaving; + + var _select = select('core/editor'), + isEditedPostNew = _select.isEditedPostNew, + isCurrentPostPublished = _select.isCurrentPostPublished, + isCurrentPostScheduled = _select.isCurrentPostScheduled, + isEditedPostDirty = _select.isEditedPostDirty, + isSavingPost = _select.isSavingPost, + isEditedPostSaveable = _select.isEditedPostSaveable, + getCurrentPost = _select.getCurrentPost, + isAutosavingPost = _select.isAutosavingPost, + getEditedPostAttribute = _select.getEditedPostAttribute; + + return { + post: getCurrentPost(), + isNew: isEditedPostNew(), + isPublished: isCurrentPostPublished(), + isScheduled: isCurrentPostScheduled(), + isDirty: forceIsDirty || isEditedPostDirty(), + isSaving: forceIsSaving || isSavingPost(), + isSaveable: isEditedPostSaveable(), + isAutosaving: isAutosavingPost(), + isPending: 'pending' === getEditedPostAttribute('status') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onSave: dispatch('core/editor').savePost + }; +}), external_this_wp_compose_["withSafeTimeout"], Object(external_this_wp_viewport_["withViewportMatch"])({ + isLargeViewport: 'small' +})])(post_saved_state_PostSavedState)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-schedule/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +function PostScheduleCheck(_ref) { + var hasPublishAction = _ref.hasPublishAction, + children = _ref.children; + + if (!hasPublishAction) { + return null; + } + + return children; +} +/* harmony default export */ var post_schedule_check = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getCurrentPost = _select.getCurrentPost, + getCurrentPostType = _select.getCurrentPostType; + + return { + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + postType: getCurrentPostType() + }; +})])(PostScheduleCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-sticky/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +function PostStickyCheck(_ref) { + var hasStickyAction = _ref.hasStickyAction, + postType = _ref.postType, + children = _ref.children; + + if (postType !== 'post' || !hasStickyAction) { + return null; + } + + return children; +} +/* harmony default export */ var post_sticky_check = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var post = select('core/editor').getCurrentPost(); + return { + hasStickyAction: Object(external_lodash_["get"])(post, ['_links', 'wp:action-sticky'], false), + postType: select('core/editor').getCurrentPostType() + }; +})])(PostStickyCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-sticky/index.js + + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + +function PostSticky(_ref) { + var onUpdateSticky = _ref.onUpdateSticky, + _ref$postSticky = _ref.postSticky, + postSticky = _ref$postSticky === void 0 ? false : _ref$postSticky; + return Object(external_this_wp_element_["createElement"])(post_sticky_check, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { + label: Object(external_this_wp_i18n_["__"])('Stick to the top of the blog'), + checked: postSticky, + onChange: function onChange() { + return onUpdateSticky(!postSticky); + } + })); +} +/* harmony default export */ var post_sticky = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + postSticky: select('core/editor').getEditedPostAttribute('sticky') + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateSticky: function onUpdateSticky(postSticky) { + dispatch('core/editor').editPost({ + sticky: postSticky + }); + } + }; +})])(PostSticky)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/hierarchical-term-selector.js + + + + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + + +/** + * Internal dependencies + */ + + +/** + * Module Constants + */ + +var hierarchical_term_selector_DEFAULT_QUERY = { + per_page: -1, + orderby: 'name', + order: 'asc', + _fields: 'id,name,parent' +}; +var MIN_TERMS_COUNT_FOR_FILTER = 8; + +var hierarchical_term_selector_HierarchicalTermSelector = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(HierarchicalTermSelector, _Component); + + function HierarchicalTermSelector() { + var _this; + + Object(classCallCheck["a" /* default */])(this, HierarchicalTermSelector); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(HierarchicalTermSelector).apply(this, arguments)); + _this.findTerm = _this.findTerm.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onChange = _this.onChange.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onChangeFormName = _this.onChangeFormName.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onChangeFormParent = _this.onChangeFormParent.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onAddTerm = _this.onAddTerm.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onToggleForm = _this.onToggleForm.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.setFilterValue = _this.setFilterValue.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.sortBySelected = _this.sortBySelected.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = { + loading: true, + availableTermsTree: [], + availableTerms: [], + adding: false, + formName: '', + formParent: '', + showForm: false, + filterValue: '', + filteredTermsTree: [] + }; + return _this; + } + + Object(createClass["a" /* default */])(HierarchicalTermSelector, [{ + key: "onChange", + value: function onChange(termId) { + var _this$props = this.props, + onUpdateTerms = _this$props.onUpdateTerms, + _this$props$terms = _this$props.terms, + terms = _this$props$terms === void 0 ? [] : _this$props$terms, + taxonomy = _this$props.taxonomy; + var hasTerm = terms.indexOf(termId) !== -1; + var newTerms = hasTerm ? Object(external_lodash_["without"])(terms, termId) : [].concat(Object(toConsumableArray["a" /* default */])(terms), [termId]); + onUpdateTerms(newTerms, taxonomy.rest_base); + } + }, { + key: "onChangeFormName", + value: function onChangeFormName(event) { + var newValue = event.target.value.trim() === '' ? '' : event.target.value; + this.setState({ + formName: newValue + }); + } + }, { + key: "onChangeFormParent", + value: function onChangeFormParent(newParent) { + this.setState({ + formParent: newParent + }); + } + }, { + key: "onToggleForm", + value: function onToggleForm() { + this.setState(function (state) { + return { + showForm: !state.showForm + }; + }); + } + }, { + key: "findTerm", + value: function findTerm(terms, parent, name) { + return Object(external_lodash_["find"])(terms, function (term) { + return (!term.parent && !parent || parseInt(term.parent) === parseInt(parent)) && term.name.toLowerCase() === name.toLowerCase(); + }); + } + }, { + key: "onAddTerm", + value: function onAddTerm(event) { + var _this2 = this; + + event.preventDefault(); + var _this$props2 = this.props, + onUpdateTerms = _this$props2.onUpdateTerms, + taxonomy = _this$props2.taxonomy, + terms = _this$props2.terms, + slug = _this$props2.slug; + var _this$state = this.state, + formName = _this$state.formName, + formParent = _this$state.formParent, + adding = _this$state.adding, + availableTerms = _this$state.availableTerms; + + if (formName === '' || adding) { + return; + } // check if the term we are adding already exists + + + var existingTerm = this.findTerm(availableTerms, formParent, formName); + + if (existingTerm) { + // if the term we are adding exists but is not selected select it + if (!Object(external_lodash_["some"])(terms, function (term) { + return term === existingTerm.id; + })) { + onUpdateTerms([].concat(Object(toConsumableArray["a" /* default */])(terms), [existingTerm.id]), taxonomy.rest_base); + } + + this.setState({ + formName: '', + formParent: '' + }); + return; + } + + this.setState({ + adding: true + }); + this.addRequest = external_this_wp_apiFetch_default()({ + path: "/wp/v2/".concat(taxonomy.rest_base), + method: 'POST', + data: { + name: formName, + parent: formParent ? formParent : undefined + } + }); // Tries to create a term or fetch it if it already exists + + var findOrCreatePromise = this.addRequest.catch(function (error) { + var errorCode = error.code; + + if (errorCode === 'term_exists') { + // search the new category created since last fetch + _this2.addRequest = external_this_wp_apiFetch_default()({ + path: Object(external_this_wp_url_["addQueryArgs"])("/wp/v2/".concat(taxonomy.rest_base), Object(objectSpread["a" /* default */])({}, hierarchical_term_selector_DEFAULT_QUERY, { + parent: formParent || 0, + search: formName + })) + }); + return _this2.addRequest.then(function (searchResult) { + return _this2.findTerm(searchResult, formParent, formName); + }); + } + + return Promise.reject(error); + }); + findOrCreatePromise.then(function (term) { + var hasTerm = !!Object(external_lodash_["find"])(_this2.state.availableTerms, function (availableTerm) { + return availableTerm.id === term.id; + }); + var newAvailableTerms = hasTerm ? _this2.state.availableTerms : [term].concat(Object(toConsumableArray["a" /* default */])(_this2.state.availableTerms)); + var termAddedMessage = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_x"])('%s added', 'term'), Object(external_lodash_["get"])(_this2.props.taxonomy, ['labels', 'singular_name'], slug === 'category' ? Object(external_this_wp_i18n_["__"])('Category') : Object(external_this_wp_i18n_["__"])('Term'))); + + _this2.props.speak(termAddedMessage, 'assertive'); + + _this2.addRequest = null; + + _this2.setState({ + adding: false, + formName: '', + formParent: '', + availableTerms: newAvailableTerms, + availableTermsTree: _this2.sortBySelected(buildTermsTree(newAvailableTerms)) + }); + + onUpdateTerms([].concat(Object(toConsumableArray["a" /* default */])(terms), [term.id]), taxonomy.rest_base); + }, function (xhr) { + if (xhr.statusText === 'abort') { + return; + } + + _this2.addRequest = null; + + _this2.setState({ + adding: false + }); + }); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this.fetchTerms(); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + Object(external_lodash_["invoke"])(this.fetchRequest, ['abort']); + Object(external_lodash_["invoke"])(this.addRequest, ['abort']); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + if (this.props.taxonomy !== prevProps.taxonomy) { + this.fetchTerms(); + } + } + }, { + key: "fetchTerms", + value: function fetchTerms() { + var _this3 = this; + + var taxonomy = this.props.taxonomy; + + if (!taxonomy) { + return; + } + + this.fetchRequest = external_this_wp_apiFetch_default()({ + path: Object(external_this_wp_url_["addQueryArgs"])("/wp/v2/".concat(taxonomy.rest_base), hierarchical_term_selector_DEFAULT_QUERY) + }); + this.fetchRequest.then(function (terms) { + // resolve + var availableTermsTree = _this3.sortBySelected(buildTermsTree(terms)); + + _this3.fetchRequest = null; + + _this3.setState({ + loading: false, + availableTermsTree: availableTermsTree, + availableTerms: terms + }); + }, function (xhr) { + // reject + if (xhr.statusText === 'abort') { + return; + } + + _this3.fetchRequest = null; + + _this3.setState({ + loading: false + }); + }); + } + }, { + key: "sortBySelected", + value: function sortBySelected(termsTree) { + var terms = this.props.terms; + + var treeHasSelection = function treeHasSelection(termTree) { + if (terms.indexOf(termTree.id) !== -1) { + return true; + } + + if (undefined === termTree.children) { + return false; + } + + var anyChildIsSelected = termTree.children.map(treeHasSelection).filter(function (child) { + return child; + }).length > 0; + + if (anyChildIsSelected) { + return true; + } + + return false; + }; + + var termOrChildIsSelected = function termOrChildIsSelected(termA, termB) { + var termASelected = treeHasSelection(termA); + var termBSelected = treeHasSelection(termB); + + if (termASelected === termBSelected) { + return 0; + } + + if (termASelected && !termBSelected) { + return -1; + } + + if (!termASelected && termBSelected) { + return 1; + } + + return 0; + }; + + termsTree.sort(termOrChildIsSelected); + return termsTree; + } + }, { + key: "setFilterValue", + value: function setFilterValue(event) { + var availableTermsTree = this.state.availableTermsTree; + var filterValue = event.target.value; + var filteredTermsTree = availableTermsTree.map(this.getFilterMatcher(filterValue)).filter(function (term) { + return term; + }); + + var getResultCount = function getResultCount(terms) { + var count = 0; + + for (var i = 0; i < terms.length; i++) { + count++; + + if (undefined !== terms[i].children) { + count += getResultCount(terms[i].children); + } + } + + return count; + }; + + this.setState({ + filterValue: filterValue, + filteredTermsTree: filteredTermsTree + }); + var resultCount = getResultCount(filteredTermsTree); + var resultsFoundMessage = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d result found.', '%d results found.', resultCount), resultCount); + this.props.debouncedSpeak(resultsFoundMessage, 'assertive'); + } + }, { + key: "getFilterMatcher", + value: function getFilterMatcher(filterValue) { + var matchTermsForFilter = function matchTermsForFilter(originalTerm) { + if ('' === filterValue) { + return originalTerm; + } // Shallow clone, because we'll be filtering the term's children and + // don't want to modify the original term. + + + var term = Object(objectSpread["a" /* default */])({}, originalTerm); // Map and filter the children, recursive so we deal with grandchildren + // and any deeper levels. + + + if (term.children.length > 0) { + term.children = term.children.map(matchTermsForFilter).filter(function (child) { + return child; + }); + } // If the term's name contains the filterValue, or it has children + // (i.e. some child matched at some point in the tree) then return it. + + + if (-1 !== term.name.toLowerCase().indexOf(filterValue.toLowerCase()) || term.children.length > 0) { + return term; + } // Otherwise, return false. After mapping, the list of terms will need + // to have false values filtered out. + + + return false; + }; + + return matchTermsForFilter; + } + }, { + key: "renderTerms", + value: function renderTerms(renderedTerms) { + var _this4 = this; + + var _this$props$terms2 = this.props.terms, + terms = _this$props$terms2 === void 0 ? [] : _this$props$terms2; + return renderedTerms.map(function (term) { + return Object(external_this_wp_element_["createElement"])("div", { + key: term.id, + className: "editor-post-taxonomies__hierarchical-terms-choice" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["CheckboxControl"], { + checked: terms.indexOf(term.id) !== -1, + onChange: function onChange() { + var termId = parseInt(term.id, 10); + + _this4.onChange(termId); + }, + label: Object(external_lodash_["unescape"])(term.name) + }), !!term.children.length && Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-taxonomies__hierarchical-terms-subchoices" + }, _this4.renderTerms(term.children))); + }); + } + }, { + key: "render", + value: function render() { + var _this$props3 = this.props, + slug = _this$props3.slug, + taxonomy = _this$props3.taxonomy, + instanceId = _this$props3.instanceId, + hasCreateAction = _this$props3.hasCreateAction, + hasAssignAction = _this$props3.hasAssignAction; + + if (!hasAssignAction) { + return null; + } + + var _this$state2 = this.state, + availableTermsTree = _this$state2.availableTermsTree, + availableTerms = _this$state2.availableTerms, + filteredTermsTree = _this$state2.filteredTermsTree, + formName = _this$state2.formName, + formParent = _this$state2.formParent, + loading = _this$state2.loading, + showForm = _this$state2.showForm, + filterValue = _this$state2.filterValue; + + var labelWithFallback = function labelWithFallback(labelProperty, fallbackIsCategory, fallbackIsNotCategory) { + return Object(external_lodash_["get"])(taxonomy, ['labels', labelProperty], slug === 'category' ? fallbackIsCategory : fallbackIsNotCategory); + }; + + var newTermButtonLabel = labelWithFallback('add_new_item', Object(external_this_wp_i18n_["__"])('Add new category'), Object(external_this_wp_i18n_["__"])('Add new term')); + var newTermLabel = labelWithFallback('new_item_name', Object(external_this_wp_i18n_["__"])('Add new category'), Object(external_this_wp_i18n_["__"])('Add new term')); + var parentSelectLabel = labelWithFallback('parent_item', Object(external_this_wp_i18n_["__"])('Parent Category'), Object(external_this_wp_i18n_["__"])('Parent Term')); + var noParentOption = "\u2014 ".concat(parentSelectLabel, " \u2014"); + var newTermSubmitLabel = newTermButtonLabel; + var inputId = "editor-post-taxonomies__hierarchical-terms-input-".concat(instanceId); + var filterInputId = "editor-post-taxonomies__hierarchical-terms-filter-".concat(instanceId); + var filterLabel = Object(external_lodash_["get"])(this.props.taxonomy, ['labels', 'search_items'], Object(external_this_wp_i18n_["__"])('Search Terms')); + var groupLabel = Object(external_lodash_["get"])(this.props.taxonomy, ['name'], Object(external_this_wp_i18n_["__"])('Terms')); + var showFilter = availableTerms.length >= MIN_TERMS_COUNT_FOR_FILTER; + return [showFilter && Object(external_this_wp_element_["createElement"])("label", { + key: "filter-label", + htmlFor: filterInputId + }, filterLabel), showFilter && Object(external_this_wp_element_["createElement"])("input", { + type: "search", + id: filterInputId, + value: filterValue, + onChange: this.setFilterValue, + className: "editor-post-taxonomies__hierarchical-terms-filter", + key: "term-filter-input" + }), Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-taxonomies__hierarchical-terms-list", + key: "term-list", + tabIndex: "0", + role: "group", + "aria-label": groupLabel + }, this.renderTerms('' !== filterValue ? filteredTermsTree : availableTermsTree)), !loading && hasCreateAction && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + key: "term-add-button", + onClick: this.onToggleForm, + className: "editor-post-taxonomies__hierarchical-terms-add", + "aria-expanded": showForm, + isLink: true + }, newTermButtonLabel), showForm && Object(external_this_wp_element_["createElement"])("form", { + onSubmit: this.onAddTerm, + key: "hierarchical-terms-form" + }, Object(external_this_wp_element_["createElement"])("label", { + htmlFor: inputId, + className: "editor-post-taxonomies__hierarchical-terms-label" + }, newTermLabel), Object(external_this_wp_element_["createElement"])("input", { + type: "text", + id: inputId, + className: "editor-post-taxonomies__hierarchical-terms-input", + value: formName, + onChange: this.onChangeFormName, + required: true + }), !!availableTerms.length && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TreeSelect"], { + label: parentSelectLabel, + noOptionLabel: noParentOption, + onChange: this.onChangeFormParent, + selectedId: formParent, + tree: availableTermsTree + }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + isDefault: true, + type: "submit", + className: "editor-post-taxonomies__hierarchical-terms-submit" + }, newTermSubmitLabel))]; + } + }]); + + return HierarchicalTermSelector; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var hierarchical_term_selector = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref) { + var slug = _ref.slug; + + var _select = select('core/editor'), + getCurrentPost = _select.getCurrentPost; + + var _select2 = select('core'), + getTaxonomy = _select2.getTaxonomy; + + var taxonomy = getTaxonomy(slug); + return { + hasCreateAction: taxonomy ? Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-create-' + taxonomy.rest_base], false) : false, + hasAssignAction: taxonomy ? Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-assign-' + taxonomy.rest_base], false) : false, + terms: taxonomy ? select('core/editor').getEditedPostAttribute(taxonomy.rest_base) : [], + taxonomy: taxonomy + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + onUpdateTerms: function onUpdateTerms(terms, restBase) { + dispatch('core/editor').editPost(Object(defineProperty["a" /* default */])({}, restBase, terms)); + } + }; +}), external_this_wp_components_["withSpokenMessages"], external_this_wp_compose_["withInstanceId"], Object(external_this_wp_components_["withFilters"])('editor.PostTaxonomyType')])(hierarchical_term_selector_HierarchicalTermSelector)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/index.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + + +function PostTaxonomies(_ref) { + var postType = _ref.postType, + taxonomies = _ref.taxonomies, + _ref$taxonomyWrapper = _ref.taxonomyWrapper, + taxonomyWrapper = _ref$taxonomyWrapper === void 0 ? external_lodash_["identity"] : _ref$taxonomyWrapper; + var availableTaxonomies = Object(external_lodash_["filter"])(taxonomies, function (taxonomy) { + return Object(external_lodash_["includes"])(taxonomy.types, postType); + }); + var visibleTaxonomies = Object(external_lodash_["filter"])(availableTaxonomies, function (taxonomy) { + return taxonomy.visibility.show_ui; + }); + return visibleTaxonomies.map(function (taxonomy) { + var TaxonomyComponent = taxonomy.hierarchical ? hierarchical_term_selector : flat_term_selector; + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], { + key: "taxonomy-".concat(taxonomy.slug) + }, taxonomyWrapper(Object(external_this_wp_element_["createElement"])(TaxonomyComponent, { + slug: taxonomy.slug + }), taxonomy)); + }); +} +/* harmony default export */ var post_taxonomies = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + postType: select('core/editor').getCurrentPostType(), + taxonomies: select('core').getTaxonomies({ + per_page: -1 + }) + }; +})])(PostTaxonomies)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-taxonomies/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +function PostTaxonomiesCheck(_ref) { + var postType = _ref.postType, + taxonomies = _ref.taxonomies, + children = _ref.children; + var hasTaxonomies = Object(external_lodash_["some"])(taxonomies, function (taxonomy) { + return Object(external_lodash_["includes"])(taxonomy.types, postType); + }); + + if (!hasTaxonomies) { + return null; + } + + return children; +} +/* harmony default export */ var post_taxonomies_check = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + return { + postType: select('core/editor').getCurrentPostType(), + taxonomies: select('core').getTaxonomies({ + per_page: -1 + }) + }; +})])(PostTaxonomiesCheck)); + +// EXTERNAL MODULE: ./node_modules/react-autosize-textarea/lib/index.js +var lib = __webpack_require__(62); +var lib_default = /*#__PURE__*/__webpack_require__.n(lib); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-text-editor/index.js + + + + + + + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +var post_text_editor_PostTextEditor = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostTextEditor, _Component); + + function PostTextEditor() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostTextEditor); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostTextEditor).apply(this, arguments)); + _this.edit = _this.edit.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.stopEditing = _this.stopEditing.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = {}; + return _this; + } + + Object(createClass["a" /* default */])(PostTextEditor, [{ + key: "edit", + + /** + * Handles a textarea change event to notify the onChange prop callback and + * reflect the new value in the component's own state. This marks the start + * of the user's edits, if not already changed, preventing future props + * changes to value from replacing the rendered value. This is expected to + * be followed by a reset to dirty state via `stopEditing`. + * + * @see stopEditing + * + * @param {Event} event Change event. + */ + value: function edit(event) { + var value = event.target.value; + this.props.onChange(value); + this.setState({ + value: value, + isDirty: true + }); + } + /** + * Function called when the user has completed their edits, responsible for + * ensuring that changes, if made, are surfaced to the onPersist prop + * callback and resetting dirty state. + */ + + }, { + key: "stopEditing", + value: function stopEditing() { + if (this.state.isDirty) { + this.props.onPersist(this.state.value); + this.setState({ + isDirty: false + }); + } + } + }, { + key: "render", + value: function render() { + var value = this.state.value; + var instanceId = this.props.instanceId; + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("label", { + htmlFor: "post-content-".concat(instanceId), + className: "screen-reader-text" + }, Object(external_this_wp_i18n_["__"])('Type text or HTML')), Object(external_this_wp_element_["createElement"])(lib_default.a, { + autoComplete: "off", + dir: "auto", + value: value, + onChange: this.edit, + onBlur: this.stopEditing, + className: "editor-post-text-editor", + id: "post-content-".concat(instanceId), + placeholder: Object(external_this_wp_i18n_["__"])('Start writing with text or HTML') + })); + } + }], [{ + key: "getDerivedStateFromProps", + value: function getDerivedStateFromProps(props, state) { + if (state.isDirty) { + return null; + } + + return { + value: props.value, + isDirty: false + }; + } + }]); + + return PostTextEditor; +}(external_this_wp_element_["Component"]); +/* harmony default export */ var post_text_editor = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostContent = _select.getEditedPostContent; + + return { + value: getEditedPostContent() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + editPost = _dispatch.editPost, + resetEditorBlocks = _dispatch.resetEditorBlocks; + + return { + onChange: function onChange(content) { + editPost({ + content: content + }); + }, + onPersist: function onPersist(content) { + var blocks = Object(external_this_wp_blocks_["parse"])(content); + resetEditorBlocks(blocks); + } + }; +}), external_this_wp_compose_["withInstanceId"]])(post_text_editor_PostTextEditor)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-permalink/editor.js + + + + + + + + +/** + * WordPress dependencies + */ + + + + + +/** + * Internal dependencies + */ + + + +var editor_PostPermalinkEditor = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostPermalinkEditor, _Component); + + function PostPermalinkEditor(_ref) { + var _this; + + var permalinkParts = _ref.permalinkParts, + slug = _ref.slug; + + Object(classCallCheck["a" /* default */])(this, PostPermalinkEditor); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostPermalinkEditor).apply(this, arguments)); + _this.state = { + editedPostName: slug || permalinkParts.postName + }; + _this.onSavePermalink = _this.onSavePermalink.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(PostPermalinkEditor, [{ + key: "onSavePermalink", + value: function onSavePermalink(event) { + var postName = cleanForSlug(this.state.editedPostName); + event.preventDefault(); + this.props.onSave(); + + if (postName === this.props.postName) { + return; + } + + this.props.editPost({ + slug: postName + }); + this.setState({ + editedPostName: postName + }); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _this$props$permalink = this.props.permalinkParts, + prefix = _this$props$permalink.prefix, + suffix = _this$props$permalink.suffix; + var editedPostName = this.state.editedPostName; + /* eslint-disable jsx-a11y/no-autofocus */ + // Autofocus is allowed here, as this mini-UI is only loaded when the user clicks to open it. + + return Object(external_this_wp_element_["createElement"])("form", { + className: "editor-post-permalink-editor", + onSubmit: this.onSavePermalink + }, Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-permalink__editor-container" + }, Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-permalink-editor__prefix" + }, prefix), Object(external_this_wp_element_["createElement"])("input", { + className: "editor-post-permalink-editor__edit", + "aria-label": Object(external_this_wp_i18n_["__"])('Edit post permalink'), + value: editedPostName, + onChange: function onChange(event) { + return _this2.setState({ + editedPostName: event.target.value + }); + }, + type: "text", + autoFocus: true + }), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-permalink-editor__suffix" + }, suffix), "\u200E"), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + className: "editor-post-permalink-editor__save", + isLarge: true, + onClick: this.onSavePermalink + }, Object(external_this_wp_i18n_["__"])('Save'))); + /* eslint-enable jsx-a11y/no-autofocus */ + } + }]); + + return PostPermalinkEditor; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var editor = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getPermalinkParts = _select.getPermalinkParts; + + return { + permalinkParts: getPermalinkParts() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + editPost = _dispatch.editPost; + + return { + editPost: editPost + }; +})])(editor_PostPermalinkEditor)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-permalink/index.js + + + + + + + + +/** + * External dependencies + */ + + +/** + * WordPress dependencies + */ + + + + + + + +/** + * Internal dependencies + */ + + + + +var post_permalink_PostPermalink = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostPermalink, _Component); + + function PostPermalink() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostPermalink); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostPermalink).apply(this, arguments)); + _this.addVisibilityCheck = _this.addVisibilityCheck.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onVisibilityChange = _this.onVisibilityChange.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = { + isCopied: false, + isEditingPermalink: false + }; + return _this; + } + + Object(createClass["a" /* default */])(PostPermalink, [{ + key: "addVisibilityCheck", + value: function addVisibilityCheck() { + window.addEventListener('visibilitychange', this.onVisibilityChange); + } + }, { + key: "onVisibilityChange", + value: function onVisibilityChange() { + var _this$props = this.props, + isEditable = _this$props.isEditable, + refreshPost = _this$props.refreshPost; // If the user just returned after having clicked the "Change Permalinks" button, + // fetch a new copy of the post from the server, just in case they enabled permalinks. + + if (!isEditable && 'visible' === document.visibilityState) { + refreshPost(); + } + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps, prevState) { + // If we've just stopped editing the permalink, focus on the new permalink. + if (prevState.isEditingPermalink && !this.state.isEditingPermalink) { + this.linkElement.focus(); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + window.removeEventListener('visibilitychange', this.addVisibilityCheck); + } + }, { + key: "render", + value: function render() { + var _this2 = this; + + var _this$props2 = this.props, + isEditable = _this$props2.isEditable, + isNew = _this$props2.isNew, + isPublished = _this$props2.isPublished, + isViewable = _this$props2.isViewable, + permalinkParts = _this$props2.permalinkParts, + postLink = _this$props2.postLink, + postSlug = _this$props2.postSlug, + postID = _this$props2.postID, + postTitle = _this$props2.postTitle; + + if (isNew || !isViewable || !permalinkParts || !postLink) { + return null; + } + + var _this$state = this.state, + isCopied = _this$state.isCopied, + isEditingPermalink = _this$state.isEditingPermalink; + var ariaLabel = isCopied ? Object(external_this_wp_i18n_["__"])('Permalink copied') : Object(external_this_wp_i18n_["__"])('Copy the permalink'); + var prefix = permalinkParts.prefix, + suffix = permalinkParts.suffix; + var slug = Object(external_this_wp_url_["safeDecodeURIComponent"])(postSlug) || cleanForSlug(postTitle) || postID; + var samplePermalink = isEditable ? prefix + slug + suffix : prefix; + return Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-permalink" + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ClipboardButton"], { + className: classnames_default()('editor-post-permalink__copy', { + 'is-copied': isCopied + }), + text: samplePermalink, + label: ariaLabel, + onCopy: function onCopy() { + return _this2.setState({ + isCopied: true + }); + }, + "aria-disabled": isCopied, + icon: "admin-links" + }), Object(external_this_wp_element_["createElement"])("span", { + className: "editor-post-permalink__label" + }, Object(external_this_wp_i18n_["__"])('Permalink:')), !isEditingPermalink && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ExternalLink"], { + className: "editor-post-permalink__link", + href: !isPublished ? postLink : samplePermalink, + target: "_blank", + ref: function ref(linkElement) { + return _this2.linkElement = linkElement; + } + }, Object(external_this_wp_url_["safeDecodeURI"])(samplePermalink), "\u200E"), isEditingPermalink && Object(external_this_wp_element_["createElement"])(editor, { + slug: slug, + onSave: function onSave() { + return _this2.setState({ + isEditingPermalink: false + }); + } + }), isEditable && !isEditingPermalink && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + className: "editor-post-permalink__edit", + isLarge: true, + onClick: function onClick() { + return _this2.setState({ + isEditingPermalink: true + }); + } + }, Object(external_this_wp_i18n_["__"])('Edit'))); + } + }]); + + return PostPermalink; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var post_permalink = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isEditedPostNew = _select.isEditedPostNew, + isPermalinkEditable = _select.isPermalinkEditable, + getCurrentPost = _select.getCurrentPost, + getPermalinkParts = _select.getPermalinkParts, + getEditedPostAttribute = _select.getEditedPostAttribute, + isCurrentPostPublished = _select.isCurrentPostPublished; + + var _select2 = select('core'), + getPostType = _select2.getPostType; + + var _getCurrentPost = getCurrentPost(), + id = _getCurrentPost.id, + link = _getCurrentPost.link; + + var postTypeName = getEditedPostAttribute('type'); + var postType = getPostType(postTypeName); + return { + isNew: isEditedPostNew(), + postLink: link, + permalinkParts: getPermalinkParts(), + postSlug: getEditedPostAttribute('slug'), + isEditable: isPermalinkEditable(), + isPublished: isCurrentPostPublished(), + postTitle: getEditedPostAttribute('title'), + postID: id, + isViewable: Object(external_lodash_["get"])(postType, ['viewable'], false) + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + refreshPost = _dispatch.refreshPost; + + return { + refreshPost: refreshPost + }; +})])(post_permalink_PostPermalink)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-title/index.js + + + + + + + + +/** + * External dependencies + */ + + + +/** + * WordPress dependencies + */ + + + + + + + + +/** + * Internal dependencies + */ + + + +/** + * Constants + */ + +var REGEXP_NEWLINES = /[\r\n]+/g; + +var post_title_PostTitle = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(PostTitle, _Component); + + function PostTitle() { + var _this; + + Object(classCallCheck["a" /* default */])(this, PostTitle); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(PostTitle).apply(this, arguments)); + _this.onChange = _this.onChange.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onSelect = _this.onSelect.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onUnselect = _this.onUnselect.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.onKeyDown = _this.onKeyDown.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.redirectHistory = _this.redirectHistory.bind(Object(assertThisInitialized["a" /* default */])(_this)); + _this.state = { + isSelected: false + }; + return _this; + } + + Object(createClass["a" /* default */])(PostTitle, [{ + key: "handleFocusOutside", + value: function handleFocusOutside() { + this.onUnselect(); + } + }, { + key: "onSelect", + value: function onSelect() { + this.setState({ + isSelected: true + }); + this.props.clearSelectedBlock(); + } + }, { + key: "onUnselect", + value: function onUnselect() { + this.setState({ + isSelected: false + }); + } + }, { + key: "onChange", + value: function onChange(event) { + var newTitle = event.target.value.replace(REGEXP_NEWLINES, ' '); + this.props.onUpdate(newTitle); + } + }, { + key: "onKeyDown", + value: function onKeyDown(event) { + if (event.keyCode === external_this_wp_keycodes_["ENTER"]) { + event.preventDefault(); + this.props.onEnterPress(); + } + } + /** + * Emulates behavior of an undo or redo on its corresponding key press + * combination. This is a workaround to React's treatment of undo in a + * controlled textarea where characters are updated one at a time. + * Instead, leverage the store's undo handling of title changes. + * + * @see https://github.com/facebook/react/issues/8514 + * + * @param {KeyboardEvent} event Key event. + */ + + }, { + key: "redirectHistory", + value: function redirectHistory(event) { + if (event.shiftKey) { + this.props.onRedo(); + } else { + this.props.onUndo(); + } + + event.preventDefault(); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + hasFixedToolbar = _this$props.hasFixedToolbar, + isCleanNewPost = _this$props.isCleanNewPost, + isFocusMode = _this$props.isFocusMode, + isPostTypeViewable = _this$props.isPostTypeViewable, + instanceId = _this$props.instanceId, + placeholder = _this$props.placeholder, + title = _this$props.title; + var isSelected = this.state.isSelected; // The wp-block className is important for editor styles. + + var className = classnames_default()('wp-block editor-post-title__block', { + 'is-selected': isSelected, + 'is-focus-mode': isFocusMode, + 'has-fixed-toolbar': hasFixedToolbar + }); + var decodedPlaceholder = Object(external_this_wp_htmlEntities_["decodeEntities"])(placeholder); + return Object(external_this_wp_element_["createElement"])(post_type_support_check, { + supportKeys: "title" + }, Object(external_this_wp_element_["createElement"])("div", { + className: "editor-post-title" + }, Object(external_this_wp_element_["createElement"])("div", { + className: className + }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], { + shortcuts: { + 'mod+z': this.redirectHistory, + 'mod+shift+z': this.redirectHistory + } + }, Object(external_this_wp_element_["createElement"])("label", { + htmlFor: "post-title-".concat(instanceId), + className: "screen-reader-text" + }, decodedPlaceholder || Object(external_this_wp_i18n_["__"])('Add title')), Object(external_this_wp_element_["createElement"])(lib_default.a, { + id: "post-title-".concat(instanceId), + className: "editor-post-title__input", + value: title, + onChange: this.onChange, + placeholder: decodedPlaceholder || Object(external_this_wp_i18n_["__"])('Add title'), + onFocus: this.onSelect, + onKeyDown: this.onKeyDown, + onKeyPress: this.onUnselect + /* + Only autofocus the title when the post is entirely empty. + This should only happen for a new post, which means we + focus the title on new post so the author can start typing + right away, without needing to click anything. + */ + + /* eslint-disable jsx-a11y/no-autofocus */ + , + autoFocus: document.body === document.activeElement && isCleanNewPost + /* eslint-enable jsx-a11y/no-autofocus */ + + })), isSelected && isPostTypeViewable && Object(external_this_wp_element_["createElement"])(post_permalink, null)))); + } + }]); + + return PostTitle; +}(external_this_wp_element_["Component"]); + +var post_title_applyWithSelect = Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getEditedPostAttribute = _select.getEditedPostAttribute, + isCleanNewPost = _select.isCleanNewPost; + + var _select2 = select('core/block-editor'), + getSettings = _select2.getSettings; + + var _select3 = select('core'), + getPostType = _select3.getPostType; + + var postType = getPostType(getEditedPostAttribute('type')); + + var _getSettings = getSettings(), + titlePlaceholder = _getSettings.titlePlaceholder, + focusMode = _getSettings.focusMode, + hasFixedToolbar = _getSettings.hasFixedToolbar; + + return { + isCleanNewPost: isCleanNewPost(), + title: getEditedPostAttribute('title'), + isPostTypeViewable: Object(external_lodash_["get"])(postType, ['viewable'], false), + placeholder: titlePlaceholder, + isFocusMode: focusMode, + hasFixedToolbar: hasFixedToolbar + }; +}); +var post_title_applyWithDispatch = Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/block-editor'), + insertDefaultBlock = _dispatch.insertDefaultBlock, + clearSelectedBlock = _dispatch.clearSelectedBlock; + + var _dispatch2 = dispatch('core/editor'), + editPost = _dispatch2.editPost, + undo = _dispatch2.undo, + redo = _dispatch2.redo; + + return { + onEnterPress: function onEnterPress() { + insertDefaultBlock(undefined, undefined, 0); + }, + onUpdate: function onUpdate(title) { + editPost({ + title: title + }); + }, + onUndo: undo, + onRedo: redo, + clearSelectedBlock: clearSelectedBlock + }; +}); +/* harmony default export */ var post_title = (Object(external_this_wp_compose_["compose"])(post_title_applyWithSelect, post_title_applyWithDispatch, external_this_wp_compose_["withInstanceId"], external_this_wp_components_["withFocusOutside"])(post_title_PostTitle)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-trash/index.js + + + +/** + * WordPress dependencies + */ + + + + + +function PostTrash(_ref) { + var isNew = _ref.isNew, + postId = _ref.postId, + postType = _ref.postType, + props = Object(objectWithoutProperties["a" /* default */])(_ref, ["isNew", "postId", "postType"]); + + if (isNew || !postId) { + return null; + } + + var onClick = function onClick() { + return props.trashPost(postId, postType); + }; + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], { + className: "editor-post-trash button-link-delete", + onClick: onClick, + isDefault: true, + isLarge: true + }, Object(external_this_wp_i18n_["__"])('Move to Trash')); +} + +/* harmony default export */ var post_trash = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isEditedPostNew = _select.isEditedPostNew, + getCurrentPostId = _select.getCurrentPostId, + getCurrentPostType = _select.getCurrentPostType; + + return { + isNew: isEditedPostNew(), + postId: getCurrentPostId(), + postType: getCurrentPostType() + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + return { + trashPost: dispatch('core/editor').trashPost + }; +})])(PostTrash)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-trash/check.js +/** + * WordPress dependencies + */ + + +function PostTrashCheck(_ref) { + var isNew = _ref.isNew, + postId = _ref.postId, + children = _ref.children; + + if (isNew || !postId) { + return null; + } + + return children; +} + +/* harmony default export */ var post_trash_check = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + isEditedPostNew = _select.isEditedPostNew, + getCurrentPostId = _select.getCurrentPostId; + + return { + isNew: isEditedPostNew(), + postId: getCurrentPostId() + }; +})(PostTrashCheck)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/post-visibility/check.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +function PostVisibilityCheck(_ref) { + var hasPublishAction = _ref.hasPublishAction, + render = _ref.render; + var canEdit = hasPublishAction; + return render({ + canEdit: canEdit + }); +} +/* harmony default export */ var post_visibility_check = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + getCurrentPost = _select.getCurrentPost, + getCurrentPostType = _select.getCurrentPostType; + + return { + hasPublishAction: Object(external_lodash_["get"])(getCurrentPost(), ['_links', 'wp:action-publish'], false), + postType: getCurrentPostType() + }; +})])(PostVisibilityCheck)); + +// EXTERNAL MODULE: external {"this":["wp","wordcount"]} +var external_this_wp_wordcount_ = __webpack_require__(97); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/word-count/index.js + + +/** + * WordPress dependencies + */ + + + + +function WordCount(_ref) { + var content = _ref.content; + + /* + * translators: If your word count is based on single characters (e.g. East Asian characters), + * enter 'characters_excluding_spaces' or 'characters_including_spaces'. Otherwise, enter 'words'. + * Do not translate into your own language. + */ + var wordCountType = Object(external_this_wp_i18n_["_x"])('words', 'Word count type. Do not translate!'); + + return Object(external_this_wp_element_["createElement"])("span", { + className: "word-count" + }, Object(external_this_wp_wordcount_["count"])(content, wordCountType)); +} + +/* harmony default export */ var word_count = (Object(external_this_wp_data_["withSelect"])(function (select) { + return { + content: select('core/editor').getEditedPostAttribute('content') + }; +})(WordCount)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/table-of-contents/panel.js + + +/** + * WordPress dependencies + */ + + +/** + * Internal dependencies + */ + + + + +function TableOfContentsPanel(_ref) { + var headingCount = _ref.headingCount, + paragraphCount = _ref.paragraphCount, + numberOfBlocks = _ref.numberOfBlocks, + hasOutlineItemsDisabled = _ref.hasOutlineItemsDisabled, + onRequestClose = _ref.onRequestClose; + 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"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("div", { + className: "table-of-contents__wrapper", + role: "note", + "aria-label": Object(external_this_wp_i18n_["__"])('Document Statistics'), + tabIndex: "0" + }, Object(external_this_wp_element_["createElement"])("ul", { + role: "list", + className: "table-of-contents__counts" + }, Object(external_this_wp_element_["createElement"])("li", { + className: "table-of-contents__count" + }, Object(external_this_wp_i18n_["__"])('Words'), Object(external_this_wp_element_["createElement"])(word_count, null)), Object(external_this_wp_element_["createElement"])("li", { + className: "table-of-contents__count" + }, Object(external_this_wp_i18n_["__"])('Headings'), Object(external_this_wp_element_["createElement"])("span", { + className: "table-of-contents__number" + }, headingCount)), Object(external_this_wp_element_["createElement"])("li", { + className: "table-of-contents__count" + }, Object(external_this_wp_i18n_["__"])('Paragraphs'), Object(external_this_wp_element_["createElement"])("span", { + className: "table-of-contents__number" + }, paragraphCount)), Object(external_this_wp_element_["createElement"])("li", { + className: "table-of-contents__count" + }, Object(external_this_wp_i18n_["__"])('Blocks'), Object(external_this_wp_element_["createElement"])("span", { + className: "table-of-contents__number" + }, numberOfBlocks)))), headingCount > 0 && Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("hr", null), Object(external_this_wp_element_["createElement"])("h2", { + className: "table-of-contents__title" + }, Object(external_this_wp_i18n_["__"])('Document Outline')), Object(external_this_wp_element_["createElement"])(document_outline, { + onSelect: onRequestClose, + hasOutlineItemsDisabled: hasOutlineItemsDisabled + }))) + /* eslint-enable jsx-a11y/no-redundant-roles */ + + ); +} + +/* harmony default export */ var panel = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/block-editor'), + getGlobalBlockCount = _select.getGlobalBlockCount; + + return { + headingCount: getGlobalBlockCount('core/heading'), + paragraphCount: getGlobalBlockCount('core/paragraph'), + numberOfBlocks: getGlobalBlockCount() + }; +})(TableOfContentsPanel)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/table-of-contents/index.js + + +/** + * WordPress dependencies + */ + + + +/** + * Internal dependencies + */ + + + +function TableOfContents(_ref) { + var hasBlocks = _ref.hasBlocks, + hasOutlineItemsDisabled = _ref.hasOutlineItemsDisabled; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dropdown"], { + position: "bottom", + className: "table-of-contents", + contentClassName: "table-of-contents__popover", + renderToggle: function renderToggle(_ref2) { + var isOpen = _ref2.isOpen, + onToggle = _ref2.onToggle; + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], { + onClick: hasBlocks ? onToggle : undefined, + icon: "info-outline", + "aria-expanded": isOpen, + label: Object(external_this_wp_i18n_["__"])('Content structure'), + labelPosition: "bottom", + "aria-disabled": !hasBlocks + }); + }, + renderContent: function renderContent(_ref3) { + var onClose = _ref3.onClose; + return Object(external_this_wp_element_["createElement"])(panel, { + onRequestClose: onClose, + hasOutlineItemsDisabled: hasOutlineItemsDisabled + }); + } + }); +} + +/* harmony default export */ var table_of_contents = (Object(external_this_wp_data_["withSelect"])(function (select) { + return { + hasBlocks: !!select('core/block-editor').getBlockCount() + }; +})(TableOfContents)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/unsaved-changes-warning/index.js + + + + + + + +/** + * WordPress dependencies + */ + + + + +var unsaved_changes_warning_UnsavedChangesWarning = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(UnsavedChangesWarning, _Component); + + function UnsavedChangesWarning() { + var _this; + + Object(classCallCheck["a" /* default */])(this, UnsavedChangesWarning); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(UnsavedChangesWarning).apply(this, arguments)); + _this.warnIfUnsavedChanges = _this.warnIfUnsavedChanges.bind(Object(assertThisInitialized["a" /* default */])(_this)); + return _this; + } + + Object(createClass["a" /* default */])(UnsavedChangesWarning, [{ + key: "componentDidMount", + value: function componentDidMount() { + window.addEventListener('beforeunload', this.warnIfUnsavedChanges); + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + window.removeEventListener('beforeunload', this.warnIfUnsavedChanges); + } + /** + * Warns the user if there are unsaved changes before leaving the editor. + * + * @param {Event} event `beforeunload` event. + * + * @return {?string} Warning prompt message, if unsaved changes exist. + */ + + }, { + key: "warnIfUnsavedChanges", + value: function warnIfUnsavedChanges(event) { + var isEditedPostDirty = this.props.isEditedPostDirty; + + if (isEditedPostDirty()) { + event.returnValue = Object(external_this_wp_i18n_["__"])('You have unsaved changes. If you proceed, they will be lost.'); + return event.returnValue; + } + } + }, { + key: "render", + value: function render() { + return null; + } + }]); + + return UnsavedChangesWarning; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var unsaved_changes_warning = (Object(external_this_wp_data_["withSelect"])(function (select) { + return { + // We need to call the selector directly in the listener to avoid race + // conditions with `BrowserURL` where `componentDidUpdate` gets the + // new value of `isEditedPostDirty` before this component does, + // causing this component to incorrectly think a trashed post is still dirty. + isEditedPostDirty: select('core/editor').isEditedPostDirty + }; +})(unsaved_changes_warning_UnsavedChangesWarning)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/provider/with-registry-provider.js + + + + +/** + * WordPress dependencies + */ + + + + +/** + * Internal dependencies + */ + + + +var withRegistryProvider = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (WrappedComponent) { + return Object(external_this_wp_data_["withRegistry"])(function (props) { + var _props$useSubRegistry = props.useSubRegistry, + useSubRegistry = _props$useSubRegistry === void 0 ? true : _props$useSubRegistry, + registry = props.registry, + additionalProps = Object(objectWithoutProperties["a" /* default */])(props, ["useSubRegistry", "registry"]); + + if (!useSubRegistry) { + return Object(external_this_wp_element_["createElement"])(WrappedComponent, additionalProps); + } + + var _useState = Object(external_this_wp_element_["useState"])(null), + _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2), + subRegistry = _useState2[0], + setSubRegistry = _useState2[1]; + + Object(external_this_wp_element_["useEffect"])(function () { + var newRegistry = Object(external_this_wp_data_["createRegistry"])({ + 'core/block-editor': external_this_wp_blockEditor_["storeConfig"] + }, registry); + var store = newRegistry.registerStore('core/editor', storeConfig); // This should be removed after the refactoring of the effects to controls. + + middlewares(store); + setSubRegistry(newRegistry); + }, [registry]); + + if (!subRegistry) { + return null; + } + + return Object(external_this_wp_element_["createElement"])(external_this_wp_data_["RegistryProvider"], { + value: subRegistry + }, Object(external_this_wp_element_["createElement"])(WrappedComponent, additionalProps)); + }); +}, 'withRegistryProvider'); +/* harmony default export */ var with_registry_provider = (withRegistryProvider); + +// EXTERNAL MODULE: external {"this":["wp","mediaUtils"]} +var external_this_wp_mediaUtils_ = __webpack_require__(99); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/media-upload/index.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +/** + * Upload a media file when the file upload button is activated. + * Wrapper around mediaUpload() that injects the current post ID. + * + * @param {Object} $0 Parameters object passed to the function. + * @param {?Object} $0.additionalData Additional data to include in the request. + * @param {string} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed. + * @param {Array} $0.filesList List of files. + * @param {?number} $0.maxUploadFileSize Maximum upload size in bytes allowed for the site. + * @param {Function} $0.onError Function called when an error happens. + * @param {Function} $0.onFileChange Function called each time a file or a temporary representation of the file is available. + */ + +/* harmony default export */ var media_upload = (function (_ref) { + var _ref$additionalData = _ref.additionalData, + additionalData = _ref$additionalData === void 0 ? {} : _ref$additionalData, + allowedTypes = _ref.allowedTypes, + filesList = _ref.filesList, + maxUploadFileSize = _ref.maxUploadFileSize, + _ref$onError = _ref.onError, + _onError = _ref$onError === void 0 ? external_lodash_["noop"] : _ref$onError, + onFileChange = _ref.onFileChange; + + var _select = Object(external_this_wp_data_["select"])('core/editor'), + getCurrentPostId = _select.getCurrentPostId, + getEditorSettings = _select.getEditorSettings; + + var wpAllowedMimeTypes = getEditorSettings().allowedMimeTypes; + maxUploadFileSize = maxUploadFileSize || getEditorSettings().maxUploadFileSize; + Object(external_this_wp_mediaUtils_["uploadMedia"])({ + allowedTypes: allowedTypes, + filesList: filesList, + onFileChange: onFileChange, + additionalData: Object(objectSpread["a" /* default */])({ + post: getCurrentPostId() + }, additionalData), + maxUploadFileSize: maxUploadFileSize, + onError: function onError(_ref2) { + var message = _ref2.message; + return _onError(message); + }, + wpAllowedMimeTypes: wpAllowedMimeTypes + }); +}); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/index.js +/** + * Internal dependencies + */ + + + + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/reusable-blocks-buttons/reusable-block-convert-button.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +function ReusableBlockConvertButton(_ref) { + var isVisible = _ref.isVisible, + isReusable = _ref.isReusable, + onConvertToStatic = _ref.onConvertToStatic, + onConvertToReusable = _ref.onConvertToReusable; + + if (!isVisible) { + return null; + } + + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, !isReusable && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], { + className: "editor-block-settings-menu__control block-editor-block-settings-menu__control", + icon: "controls-repeat", + onClick: onConvertToReusable + }, Object(external_this_wp_i18n_["__"])('Add to Reusable Blocks')), isReusable && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], { + className: "editor-block-settings-menu__control block-editor-block-settings-menu__control", + icon: "controls-repeat", + onClick: onConvertToStatic + }, Object(external_this_wp_i18n_["__"])('Convert to Regular Block'))); +} +/* harmony default export */ var reusable_block_convert_button = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) { + var clientIds = _ref2.clientIds; + + var _select = select('core/block-editor'), + getBlocksByClientId = _select.getBlocksByClientId, + canInsertBlockType = _select.canInsertBlockType; + + var _select2 = select('core/editor'), + getReusableBlock = _select2.__experimentalGetReusableBlock; + + var _select3 = select('core'), + canUser = _select3.canUser; + + var blocks = getBlocksByClientId(clientIds); + var isReusable = blocks.length === 1 && blocks[0] && Object(external_this_wp_blocks_["isReusableBlock"])(blocks[0]) && !!getReusableBlock(blocks[0].attributes.ref); // Show 'Convert to Regular Block' when selected block is a reusable block + + var isVisible = isReusable || // Hide 'Add to Reusable Blocks' when reusable blocks are disabled + canInsertBlockType('core/block') && Object(external_lodash_["every"])(blocks, function (block) { + return (// Guard against the case where a regular block has *just* been converted + !!block && // Hide 'Add to Reusable Blocks' on invalid blocks + block.isValid && // Hide 'Add to Reusable Blocks' when block doesn't support being made reusable + Object(external_this_wp_blocks_["hasBlockSupport"])(block.name, 'reusable', true) + ); + }) && // Hide 'Add to Reusable Blocks' when current doesn't have permission to do that + !!canUser('create', 'blocks'); + return { + isReusable: isReusable, + isVisible: isVisible + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref3) { + var clientIds = _ref3.clientIds, + _ref3$onToggle = _ref3.onToggle, + onToggle = _ref3$onToggle === void 0 ? external_lodash_["noop"] : _ref3$onToggle; + + var _dispatch = dispatch('core/editor'), + convertBlockToReusable = _dispatch.__experimentalConvertBlockToReusable, + convertBlockToStatic = _dispatch.__experimentalConvertBlockToStatic; + + return { + onConvertToStatic: function onConvertToStatic() { + if (clientIds.length !== 1) { + return; + } + + convertBlockToStatic(clientIds[0]); + onToggle(); + }, + onConvertToReusable: function onConvertToReusable() { + convertBlockToReusable(clientIds); + onToggle(); + } + }; +})])(ReusableBlockConvertButton)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/reusable-blocks-buttons/reusable-block-delete-button.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + +function ReusableBlockDeleteButton(_ref) { + var isVisible = _ref.isVisible, + isDisabled = _ref.isDisabled, + onDelete = _ref.onDelete; + + if (!isVisible) { + return null; + } + + return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], { + className: "editor-block-settings-menu__control block-editor-block-settings-menu__control", + icon: "no", + disabled: isDisabled, + onClick: function onClick() { + return onDelete(); + } + }, Object(external_this_wp_i18n_["__"])('Remove from Reusable Blocks')); +} +/* harmony default export */ var reusable_block_delete_button = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) { + var clientId = _ref2.clientId; + + var _select = select('core/block-editor'), + getBlock = _select.getBlock; + + var _select2 = select('core'), + canUser = _select2.canUser; + + var _select3 = select('core/editor'), + getReusableBlock = _select3.__experimentalGetReusableBlock; + + var block = getBlock(clientId); + var reusableBlock = block && Object(external_this_wp_blocks_["isReusableBlock"])(block) ? getReusableBlock(block.attributes.ref) : null; + return { + isVisible: !!reusableBlock && !!canUser('delete', 'blocks', reusableBlock.id), + isDisabled: reusableBlock && reusableBlock.isTemporary + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref3, _ref4) { + var clientId = _ref3.clientId, + _ref3$onToggle = _ref3.onToggle, + onToggle = _ref3$onToggle === void 0 ? external_lodash_["noop"] : _ref3$onToggle; + var select = _ref4.select; + + var _dispatch = dispatch('core/editor'), + deleteReusableBlock = _dispatch.__experimentalDeleteReusableBlock; + + var _select4 = select('core/block-editor'), + getBlock = _select4.getBlock; + + return { + onDelete: function onDelete() { + // TODO: Make this a <Confirm /> component or similar + // eslint-disable-next-line no-alert + var hasConfirmed = window.confirm(Object(external_this_wp_i18n_["__"])('Are you sure you want to delete this Reusable Block?\n\n' + 'It will be permanently removed from all posts and pages that use it.')); + + if (hasConfirmed) { + var block = getBlock(clientId); + deleteReusableBlock(block.attributes.ref); + onToggle(); + } + } + }; +})])(ReusableBlockDeleteButton)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/reusable-blocks-buttons/index.js + + +/** + * WordPress dependencies + */ + + +/** + * Internal dependencies + */ + + + + +function ReusableBlocksButtons(_ref) { + var clientIds = _ref.clientIds; + return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["__experimentalBlockSettingsMenuPluginsExtension"], null, function (_ref2) { + var onClose = _ref2.onClose; + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(reusable_block_convert_button, { + clientIds: clientIds, + onToggle: onClose + }), clientIds.length === 1 && Object(external_this_wp_element_["createElement"])(reusable_block_delete_button, { + clientId: clientIds[0], + onToggle: onClose + })); + }); +} + +/* harmony default export */ var reusable_blocks_buttons = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/block-editor'), + getSelectedBlockClientIds = _select.getSelectedBlockClientIds; + + return { + clientIds: getSelectedBlockClientIds() + }; +})(ReusableBlocksButtons)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/convert-to-group-buttons/icons.js + + +/** + * WordPress dependencies + */ + +var GroupSVG = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], { + width: "20", + height: "20", + viewBox: "0 0 20 20", + xmlns: "http://www.w3.org/2000/svg" +}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M8 5a1 1 0 0 0-1 1v3H6a1 1 0 0 0-1 1v4a1 1 0 0 0 1 1h6a1 1 0 0 0 1-1v-3h1a1 1 0 0 0 1-1V6a1 1 0 0 0-1-1H8zm3 6H7v2h4v-2zM9 9V7h4v2H9z" +}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M1 3a2 2 0 0 0 1 1.732v10.536A2 2 0 1 0 4.732 18h10.536A2 2 0 1 0 18 15.268V4.732A2 2 0 1 0 15.268 2H4.732A2 2 0 0 0 1 3zm14.268 1H4.732A2.01 2.01 0 0 1 4 4.732v10.536c.304.175.557.428.732.732h10.536a2.01 2.01 0 0 1 .732-.732V4.732A2.01 2.01 0 0 1 15.268 4z" +})); +var Group = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { + icon: GroupSVG +}); +var UngroupSVG = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], { + width: "20", + height: "20", + viewBox: "0 0 20 20", + xmlns: "http://www.w3.org/2000/svg" +}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M9 2H15C16.1 2 17 2.9 17 4V7C17 8.1 16.1 9 15 9H9C7.9 9 7 8.1 7 7V4C7 2.9 7.9 2 9 2ZM9 7H15V4H9V7Z" +}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], { + fillRule: "evenodd", + clipRule: "evenodd", + d: "M5 11H11C12.1 11 13 11.9 13 13V16C13 17.1 12.1 18 11 18H5C3.9 18 3 17.1 3 16V13C3 11.9 3.9 11 5 11ZM5 16H11V13H5V16Z" +})); +var Ungroup = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], { + icon: UngroupSVG +}); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/convert-to-group-buttons/convert-button.js + + +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + + + + + +/** + * Internal dependencies + */ + + +function ConvertToGroupButton(_ref) { + var onConvertToGroup = _ref.onConvertToGroup, + onConvertFromGroup = _ref.onConvertFromGroup, + _ref$isGroupable = _ref.isGroupable, + isGroupable = _ref$isGroupable === void 0 ? false : _ref$isGroupable, + _ref$isUngroupable = _ref.isUngroupable, + isUngroupable = _ref$isUngroupable === void 0 ? false : _ref$isUngroupable; + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, isGroupable && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], { + className: "editor-block-settings-menu__control block-editor-block-settings-menu__control", + icon: Group, + onClick: onConvertToGroup + }, Object(external_this_wp_i18n_["_x"])('Group', 'verb')), isUngroupable && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], { + className: "editor-block-settings-menu__control block-editor-block-settings-menu__control", + icon: Ungroup, + onClick: onConvertFromGroup + }, Object(external_this_wp_i18n_["_x"])('Ungroup', 'Ungrouping blocks from within a Group block back into individual blocks within the Editor '))); +} +/* harmony default export */ var convert_button = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) { + var clientIds = _ref2.clientIds; + + var _select = select('core/block-editor'), + getBlockRootClientId = _select.getBlockRootClientId, + getBlocksByClientId = _select.getBlocksByClientId, + canInsertBlockType = _select.canInsertBlockType; + + var _select2 = select('core/blocks'), + getGroupingBlockName = _select2.getGroupingBlockName; + + var groupingBlockName = getGroupingBlockName(); + var rootClientId = clientIds && clientIds.length > 0 ? getBlockRootClientId(clientIds[0]) : undefined; + var groupingBlockAvailable = canInsertBlockType(groupingBlockName, rootClientId); + var blocksSelection = getBlocksByClientId(clientIds); + var isSingleGroupingBlock = blocksSelection.length === 1 && blocksSelection[0] && blocksSelection[0].name === groupingBlockName; // Do we have + // 1. Grouping block available to be inserted? + // 2. One or more blocks selected + // (we allow single Blocks to become groups unless + // they are a soltiary group block themselves) + + var isGroupable = groupingBlockAvailable && blocksSelection.length && !isSingleGroupingBlock; // Do we have a single Group Block selected and does that group have inner blocks? + + var isUngroupable = isSingleGroupingBlock && !!blocksSelection[0].innerBlocks.length; + return { + isGroupable: isGroupable, + isUngroupable: isUngroupable, + blocksSelection: blocksSelection, + groupingBlockName: groupingBlockName + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref3) { + var clientIds = _ref3.clientIds, + _ref3$onToggle = _ref3.onToggle, + onToggle = _ref3$onToggle === void 0 ? external_lodash_["noop"] : _ref3$onToggle, + _ref3$blocksSelection = _ref3.blocksSelection, + blocksSelection = _ref3$blocksSelection === void 0 ? [] : _ref3$blocksSelection, + groupingBlockName = _ref3.groupingBlockName; + + var _dispatch = dispatch('core/block-editor'), + replaceBlocks = _dispatch.replaceBlocks; + + return { + onConvertToGroup: function onConvertToGroup() { + if (!blocksSelection.length) { + return; + } // Activate the `transform` on the Grouping Block which does the conversion + + + var newBlocks = Object(external_this_wp_blocks_["switchToBlockType"])(blocksSelection, groupingBlockName); + + if (newBlocks) { + replaceBlocks(clientIds, newBlocks); + } + + onToggle(); + }, + onConvertFromGroup: function onConvertFromGroup() { + if (!blocksSelection.length) { + return; + } + + var innerBlocks = blocksSelection[0].innerBlocks; + + if (!innerBlocks.length) { + return; + } + + replaceBlocks(clientIds, innerBlocks); + onToggle(); + } + }; +})])(ConvertToGroupButton)); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/convert-to-group-buttons/index.js + + +/** + * WordPress dependencies + */ + + + +/** + * Internal dependencies + */ + + + +function ConvertToGroupButtons(_ref) { + var clientIds = _ref.clientIds; + return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["__experimentalBlockSettingsMenuPluginsExtension"], null, function (_ref2) { + var onClose = _ref2.onClose; + return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(convert_button, { + clientIds: clientIds, + onToggle: onClose + })); + }); +} + +/* harmony default export */ var convert_to_group_buttons = (Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/block-editor'), + getSelectedBlockClientIds = _select.getSelectedBlockClientIds; + + return { + clientIds: getSelectedBlockClientIds() + }; +})(ConvertToGroupButtons)); + +// 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 store_reducer = (Object(external_this_wp_data_["combineReducers"])({ + downloadableBlocks: reducer_downloadableBlocks +})); + +// 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 selectors_getInstalledBlockTypes(state) { + return Object(external_lodash_["get"])(state, ['downloadableBlocks', 'installedBlockTypes'], []); +} + +// CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/controls.js + + + + +var controls_marked = +/*#__PURE__*/ +regenerator_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 regenerator_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(); + } + } + }, controls_marked); +} +var controls_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_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 build_module_store_controls = (controls_controls); + +// CONCATENATED MODULE: ./node_modules/@wordpress/block-directory/build-module/store/actions.js + + +var store_actions_marked = +/*#__PURE__*/ +regenerator_default.a.mark(actions_downloadBlock), + store_actions_marked2 = +/*#__PURE__*/ +regenerator_default.a.mark(actions_installBlock), + actions_marked3 = +/*#__PURE__*/ +regenerator_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 regenerator_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(); + } + } + }, store_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 regenerator_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(); + } + } + }, store_actions_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 regenerator_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(); + } + } + }, actions_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__*/ + regenerator_default.a.mark(function getDownloadableBlocks(filterValue) { + var results, blocks; + return regenerator_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_lodash_["mapKeys"])(result, function (value, key) { + return Object(external_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__*/ + regenerator_default.a.mark(function hasInstallBlocksPermission() { + return regenerator_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 store_storeConfig = { + reducer: store_reducer, + selectors: store_selectors_namespaceObject, + actions: store_actions_namespaceObject, + controls: build_module_store_controls, + resolvers: resolvers +}; +var build_module_store_store = Object(external_this_wp_data_["registerStore"])(MODULE_KEY, store_storeConfig); +/* harmony default export */ var block_directory_build_module_store = (build_module_store_store); + +// 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_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_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_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_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_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_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/index.js +/** + * Internal dependencies + */ + + + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/inserter-menu-downloadable-blocks-panel/index.js + + + +/** + * External dependencies + */ + +/** + * WordPress 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_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/editor/build-module/components/provider/index.js + + + + + + + + + + +/** + * External dependencies + */ + + +/** + * WordPress dependencies + */ + + + + + + + + + + +/** + * Internal dependencies + */ + + + + + + + +var fetchLinkSuggestions = +/*#__PURE__*/ +function () { + var _ref = Object(asyncToGenerator["a" /* default */])( + /*#__PURE__*/ + regenerator_default.a.mark(function _callee(search) { + var posts; + return regenerator_default.a.wrap(function _callee$(_context) { + while (1) { + switch (_context.prev = _context.next) { + case 0: + _context.next = 2; + return external_this_wp_apiFetch_default()({ + path: Object(external_this_wp_url_["addQueryArgs"])('/wp/v2/search', { + search: search, + per_page: 20, + type: 'post' + }) + }); + + case 2: + posts = _context.sent; + return _context.abrupt("return", Object(external_lodash_["map"])(posts, function (post) { + return { + id: post.id, + url: post.url, + title: Object(external_this_wp_htmlEntities_["decodeEntities"])(post.title) || Object(external_this_wp_i18n_["__"])('(no title)') + }; + })); + + case 4: + case "end": + return _context.stop(); + } + } + }, _callee); + })); + + return function fetchLinkSuggestions(_x) { + return _ref.apply(this, arguments); + }; +}(); + +var UNINSTALL_ERROR_NOTICE_ID = 'block-uninstall-error'; + +var provider_EditorProvider = +/*#__PURE__*/ +function (_Component) { + Object(inherits["a" /* default */])(EditorProvider, _Component); + + function EditorProvider(props) { + var _this; + + Object(classCallCheck["a" /* default */])(this, EditorProvider); + + _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(EditorProvider).apply(this, arguments)); + _this.getBlockEditorSettings = memize_default()(_this.getBlockEditorSettings, { + maxSize: 1 + }); // Assume that we don't need to initialize in the case of an error recovery. + + if (props.recovery) { + return Object(possibleConstructorReturn["a" /* default */])(_this); + } + + props.updatePostLock(props.settings.postLock); + props.setupEditor(props.post, props.initialEdits, props.settings.template); + + if (props.settings.autosave) { + props.createWarningNotice(Object(external_this_wp_i18n_["__"])('There is an autosave of this post that is more recent than the version below.'), { + id: 'autosave-exists', + actions: [{ + label: Object(external_this_wp_i18n_["__"])('View the autosave'), + url: props.settings.autosave.editLink + }] + }); + } + + return _this; + } + + Object(createClass["a" /* default */])(EditorProvider, [{ + key: "getBlockEditorSettings", + value: function getBlockEditorSettings(settings, reusableBlocks, hasUploadPermissions, canUserUseUnfilteredHTML) { + return Object(objectSpread["a" /* default */])({}, Object(external_lodash_["pick"])(settings, ['alignWide', 'allowedBlockTypes', '__experimentalPreferredStyleVariations', 'availableLegacyWidgets', 'bodyPlaceholder', 'codeEditingEnabled', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'focusMode', 'fontSizes', 'hasFixedToolbar', 'hasPermissionsToManageWidgets', 'imageSizes', 'isRTL', 'maxWidth', 'styles', 'template', 'templateLock', 'titlePlaceholder', 'onUpdateDefaultBlockStyles', '__experimentalEnableLegacyWidgetBlock', '__experimentalEnableMenuBlock', '__experimentalBlockDirectory', 'showInserterHelpPanel']), { + __experimentalReusableBlocks: reusableBlocks, + __experimentalMediaUpload: hasUploadPermissions ? media_upload : undefined, + __experimentalFetchLinkSuggestions: fetchLinkSuggestions, + __experimentalCanUserUseUnfilteredHTML: canUserUseUnfilteredHTML + }); + } + }, { + key: "componentDidMount", + value: function componentDidMount() { + this.props.updateEditorSettings(this.props.settings); + + if (!this.props.settings.styles) { + return; + } + + var updatedStyles = Object(external_this_wp_blockEditor_["transformStyles"])(this.props.settings.styles, '.editor-styles-wrapper'); + Object(external_lodash_["map"])(updatedStyles, function (updatedCSS) { + if (updatedCSS) { + var node = document.createElement('style'); + node.innerHTML = updatedCSS; + document.body.appendChild(node); + } + }); + } + }, { + key: "componentDidUpdate", + value: function componentDidUpdate(prevProps) { + var _this2 = this; + + if (this.props.settings !== prevProps.settings) { + this.props.updateEditorSettings(this.props.settings); + } // When a block is installed from the inserter and is unused, + // it is removed when saving the post. + // Todo: move this to the edit-post package into a separate component. + + + if (!Object(external_lodash_["isEqual"])(this.props.downloadableBlocksToUninstall, prevProps.downloadableBlocksToUninstall)) { + this.props.downloadableBlocksToUninstall.forEach(function (blockType) { + _this2.props.uninstallBlock(blockType, external_lodash_["noop"], function () { + _this2.props.createWarningNotice(Object(external_this_wp_i18n_["__"])('Block previews can\'t uninstall.'), { + id: UNINSTALL_ERROR_NOTICE_ID + }); + }); + + Object(external_this_wp_blocks_["unregisterBlockType"])(blockType.name); + }); + } + } + }, { + key: "componentWillUnmount", + value: function componentWillUnmount() { + this.props.tearDownEditor(); + } + }, { + key: "render", + value: function render() { + var _this$props = this.props, + canUserUseUnfilteredHTML = _this$props.canUserUseUnfilteredHTML, + children = _this$props.children, + blocks = _this$props.blocks, + resetEditorBlocks = _this$props.resetEditorBlocks, + isReady = _this$props.isReady, + settings = _this$props.settings, + reusableBlocks = _this$props.reusableBlocks, + resetEditorBlocksWithoutUndoLevel = _this$props.resetEditorBlocksWithoutUndoLevel, + hasUploadPermissions = _this$props.hasUploadPermissions; + + if (!isReady) { + return null; + } + + var editorSettings = this.getBlockEditorSettings(settings, reusableBlocks, hasUploadPermissions, canUserUseUnfilteredHTML); + return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockEditorProvider"], { + value: blocks, + onInput: resetEditorBlocksWithoutUndoLevel, + onChange: resetEditorBlocks, + settings: editorSettings, + useSubRegistry: false + }, children, Object(external_this_wp_element_["createElement"])(reusable_blocks_buttons, null), Object(external_this_wp_element_["createElement"])(convert_to_group_buttons, null), editorSettings.__experimentalBlockDirectory && Object(external_this_wp_element_["createElement"])(inserter_menu_downloadable_blocks_panel, null)); + } + }]); + + return EditorProvider; +}(external_this_wp_element_["Component"]); + +/* harmony default export */ var provider = (Object(external_this_wp_compose_["compose"])([with_registry_provider, Object(external_this_wp_data_["withSelect"])(function (select) { + var _select = select('core/editor'), + canUserUseUnfilteredHTML = _select.canUserUseUnfilteredHTML, + isEditorReady = _select.__unstableIsEditorReady, + getEditorBlocks = _select.getEditorBlocks, + __experimentalGetReusableBlocks = _select.__experimentalGetReusableBlocks; + + var _select2 = select('core'), + canUser = _select2.canUser; + + var _select3 = select('core/block-directory'), + getInstalledBlockTypes = _select3.getInstalledBlockTypes; + + var _select4 = select('core/block-editor'), + getBlocks = _select4.getBlocks; + + var downloadableBlocksToUninstall = Object(external_lodash_["differenceBy"])(getInstalledBlockTypes(), getBlocks(), 'name'); + return { + canUserUseUnfilteredHTML: canUserUseUnfilteredHTML(), + isReady: isEditorReady(), + blocks: getEditorBlocks(), + reusableBlocks: __experimentalGetReusableBlocks(), + hasUploadPermissions: Object(external_lodash_["defaultTo"])(canUser('create', 'media'), true), + downloadableBlocksToUninstall: downloadableBlocksToUninstall + }; +}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) { + var _dispatch = dispatch('core/editor'), + setupEditor = _dispatch.setupEditor, + updatePostLock = _dispatch.updatePostLock, + resetEditorBlocks = _dispatch.resetEditorBlocks, + updateEditorSettings = _dispatch.updateEditorSettings, + __experimentalTearDownEditor = _dispatch.__experimentalTearDownEditor; + + var _dispatch2 = dispatch('core/notices'), + createWarningNotice = _dispatch2.createWarningNotice; + + var _dispatch3 = dispatch('core/block-directory'), + uninstallBlock = _dispatch3.uninstallBlock; + + return { + setupEditor: setupEditor, + updatePostLock: updatePostLock, + createWarningNotice: createWarningNotice, + resetEditorBlocks: resetEditorBlocks, + updateEditorSettings: updateEditorSettings, + resetEditorBlocksWithoutUndoLevel: function resetEditorBlocksWithoutUndoLevel(blocks) { + resetEditorBlocks(blocks, { + __unstableShouldCreateUndoLevel: false + }); + }, + tearDownEditor: __experimentalTearDownEditor, + uninstallBlock: uninstallBlock + }; +})])(provider_EditorProvider)); + +// EXTERNAL MODULE: external {"this":["wp","serverSideRender"]} +var external_this_wp_serverSideRender_ = __webpack_require__(58); +var external_this_wp_serverSideRender_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_serverSideRender_); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/deprecated.js + + +// Block Creation Components + +/** + * WordPress dependencies + */ + + + + + +function deprecateComponent(name, Wrapped) { + var staticsToHoist = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : []; + var Component = Object(external_this_wp_element_["forwardRef"])(function (props, ref) { + external_this_wp_deprecated_default()('wp.editor.' + name, { + alternative: 'wp.blockEditor.' + name + }); + return Object(external_this_wp_element_["createElement"])(Wrapped, Object(esm_extends["a" /* default */])({ + ref: ref + }, props)); + }); + staticsToHoist.forEach(function (staticName) { + Component[staticName] = deprecateComponent(name + '.' + staticName, Wrapped[staticName]); + }); + return Component; +} + +function deprecateFunction(name, func) { + return function () { + external_this_wp_deprecated_default()('wp.editor.' + name, { + alternative: 'wp.blockEditor.' + name + }); + return func.apply(void 0, arguments); + }; +} + +var RichText = deprecateComponent('RichText', external_this_wp_blockEditor_["RichText"], ['Content']); +RichText.isEmpty = deprecateFunction('RichText.isEmpty', external_this_wp_blockEditor_["RichText"].isEmpty); + +var Autocomplete = deprecateComponent('Autocomplete', external_this_wp_blockEditor_["Autocomplete"]); +var AlignmentToolbar = deprecateComponent('AlignmentToolbar', external_this_wp_blockEditor_["AlignmentToolbar"]); +var BlockAlignmentToolbar = deprecateComponent('BlockAlignmentToolbar', external_this_wp_blockEditor_["BlockAlignmentToolbar"]); +var BlockControls = deprecateComponent('BlockControls', external_this_wp_blockEditor_["BlockControls"], ['Slot']); +var BlockEdit = deprecateComponent('BlockEdit', external_this_wp_blockEditor_["BlockEdit"]); +var BlockEditorKeyboardShortcuts = deprecateComponent('BlockEditorKeyboardShortcuts', external_this_wp_blockEditor_["BlockEditorKeyboardShortcuts"]); +var BlockFormatControls = deprecateComponent('BlockFormatControls', external_this_wp_blockEditor_["BlockFormatControls"], ['Slot']); +var BlockIcon = deprecateComponent('BlockIcon', external_this_wp_blockEditor_["BlockIcon"]); +var BlockInspector = deprecateComponent('BlockInspector', external_this_wp_blockEditor_["BlockInspector"]); +var BlockList = deprecateComponent('BlockList', external_this_wp_blockEditor_["BlockList"]); +var BlockMover = deprecateComponent('BlockMover', external_this_wp_blockEditor_["BlockMover"]); +var BlockNavigationDropdown = deprecateComponent('BlockNavigationDropdown', external_this_wp_blockEditor_["BlockNavigationDropdown"]); +var BlockSelectionClearer = deprecateComponent('BlockSelectionClearer', external_this_wp_blockEditor_["BlockSelectionClearer"]); +var BlockSettingsMenu = deprecateComponent('BlockSettingsMenu', external_this_wp_blockEditor_["BlockSettingsMenu"]); +var BlockTitle = deprecateComponent('BlockTitle', external_this_wp_blockEditor_["BlockTitle"]); +var BlockToolbar = deprecateComponent('BlockToolbar', external_this_wp_blockEditor_["BlockToolbar"]); +var ColorPalette = deprecateComponent('ColorPalette', external_this_wp_blockEditor_["ColorPalette"]); +var ContrastChecker = deprecateComponent('ContrastChecker', external_this_wp_blockEditor_["ContrastChecker"]); +var CopyHandler = deprecateComponent('CopyHandler', external_this_wp_blockEditor_["CopyHandler"]); +var DefaultBlockAppender = deprecateComponent('DefaultBlockAppender', external_this_wp_blockEditor_["DefaultBlockAppender"]); +var FontSizePicker = deprecateComponent('FontSizePicker', external_this_wp_blockEditor_["FontSizePicker"]); +var Inserter = deprecateComponent('Inserter', external_this_wp_blockEditor_["Inserter"]); +var InnerBlocks = deprecateComponent('InnerBlocks', external_this_wp_blockEditor_["InnerBlocks"], ['ButtonBlockAppender', 'DefaultBlockAppender', 'Content']); +var InspectorAdvancedControls = deprecateComponent('InspectorAdvancedControls', external_this_wp_blockEditor_["InspectorAdvancedControls"], ['Slot']); +var InspectorControls = deprecateComponent('InspectorControls', external_this_wp_blockEditor_["InspectorControls"], ['Slot']); +var PanelColorSettings = deprecateComponent('PanelColorSettings', external_this_wp_blockEditor_["PanelColorSettings"]); +var PlainText = deprecateComponent('PlainText', external_this_wp_blockEditor_["PlainText"]); +var RichTextShortcut = deprecateComponent('RichTextShortcut', external_this_wp_blockEditor_["RichTextShortcut"]); +var RichTextToolbarButton = deprecateComponent('RichTextToolbarButton', external_this_wp_blockEditor_["RichTextToolbarButton"]); +var __unstableRichTextInputEvent = deprecateComponent('__unstableRichTextInputEvent', external_this_wp_blockEditor_["__unstableRichTextInputEvent"]); +var MediaPlaceholder = deprecateComponent('MediaPlaceholder', external_this_wp_blockEditor_["MediaPlaceholder"]); +var MediaUpload = deprecateComponent('MediaUpload', external_this_wp_blockEditor_["MediaUpload"]); +var MediaUploadCheck = deprecateComponent('MediaUploadCheck', external_this_wp_blockEditor_["MediaUploadCheck"]); +var MultiBlocksSwitcher = deprecateComponent('MultiBlocksSwitcher', external_this_wp_blockEditor_["MultiBlocksSwitcher"]); +var MultiSelectScrollIntoView = deprecateComponent('MultiSelectScrollIntoView', external_this_wp_blockEditor_["MultiSelectScrollIntoView"]); +var NavigableToolbar = deprecateComponent('NavigableToolbar', external_this_wp_blockEditor_["NavigableToolbar"]); +var ObserveTyping = deprecateComponent('ObserveTyping', external_this_wp_blockEditor_["ObserveTyping"]); +var PreserveScrollInReorder = deprecateComponent('PreserveScrollInReorder', external_this_wp_blockEditor_["PreserveScrollInReorder"]); +var SkipToSelectedBlock = deprecateComponent('SkipToSelectedBlock', external_this_wp_blockEditor_["SkipToSelectedBlock"]); +var URLInput = deprecateComponent('URLInput', external_this_wp_blockEditor_["URLInput"]); +var URLInputButton = deprecateComponent('URLInputButton', external_this_wp_blockEditor_["URLInputButton"]); +var URLPopover = deprecateComponent('URLPopover', external_this_wp_blockEditor_["URLPopover"]); +var Warning = deprecateComponent('Warning', external_this_wp_blockEditor_["Warning"]); +var WritingFlow = deprecateComponent('WritingFlow', external_this_wp_blockEditor_["WritingFlow"]); +var createCustomColorsHOC = deprecateFunction('createCustomColorsHOC', external_this_wp_blockEditor_["createCustomColorsHOC"]); +var getColorClassName = deprecateFunction('getColorClassName', external_this_wp_blockEditor_["getColorClassName"]); +var getColorObjectByAttributeValues = deprecateFunction('getColorObjectByAttributeValues', external_this_wp_blockEditor_["getColorObjectByAttributeValues"]); +var getColorObjectByColorValue = deprecateFunction('getColorObjectByColorValue', external_this_wp_blockEditor_["getColorObjectByColorValue"]); +var getFontSize = deprecateFunction('getFontSize', external_this_wp_blockEditor_["getFontSize"]); +var getFontSizeClass = deprecateFunction('getFontSizeClass', external_this_wp_blockEditor_["getFontSizeClass"]); +var withColorContext = deprecateFunction('withColorContext', external_this_wp_blockEditor_["withColorContext"]); +var withColors = deprecateFunction('withColors', external_this_wp_blockEditor_["withColors"]); +var withFontSizes = deprecateFunction('withFontSizes', external_this_wp_blockEditor_["withFontSizes"]); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/index.js +// Block Creation Components + // Post Related Components + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + // State Related Components + + + + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/default-autocompleters.js +/** + * External dependencies + */ + +/** + * WordPress dependencies + */ + + + +/** + * Internal dependencies + */ + + + +function setDefaultCompleters() { + var completers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : []; + var blockName = arguments.length > 1 ? arguments[1] : undefined; + // Provide copies so filters may directly modify them. + completers.push(Object(external_lodash_["clone"])(autocompleters_user)); // Add blocks autocompleter for Paragraph block + + if (blockName === Object(external_this_wp_blocks_["getDefaultBlockName"])()) { + completers.push(Object(external_lodash_["clone"])(autocompleters_block)); + } + + return completers; +} + +Object(external_this_wp_hooks_["addFilter"])('editor.Autocomplete.completers', 'editor/autocompleters/set-default-completers', setDefaultCompleters); + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/hooks/index.js +/** + * Internal dependencies + */ + + +// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/index.js +/* concated harmony reexport AutosaveMonitor */__webpack_require__.d(__webpack_exports__, "AutosaveMonitor", function() { return autosave_monitor; }); +/* concated harmony reexport DocumentOutline */__webpack_require__.d(__webpack_exports__, "DocumentOutline", function() { return document_outline; }); +/* concated harmony reexport DocumentOutlineCheck */__webpack_require__.d(__webpack_exports__, "DocumentOutlineCheck", function() { return check; }); +/* concated harmony reexport VisualEditorGlobalKeyboardShortcuts */__webpack_require__.d(__webpack_exports__, "VisualEditorGlobalKeyboardShortcuts", function() { return visual_editor_shortcuts; }); +/* concated harmony reexport EditorGlobalKeyboardShortcuts */__webpack_require__.d(__webpack_exports__, "EditorGlobalKeyboardShortcuts", function() { return EditorGlobalKeyboardShortcuts; }); +/* concated harmony reexport TextEditorGlobalKeyboardShortcuts */__webpack_require__.d(__webpack_exports__, "TextEditorGlobalKeyboardShortcuts", function() { return TextEditorGlobalKeyboardShortcuts; }); +/* concated harmony reexport EditorHistoryRedo */__webpack_require__.d(__webpack_exports__, "EditorHistoryRedo", function() { return editor_history_redo; }); +/* concated harmony reexport EditorHistoryUndo */__webpack_require__.d(__webpack_exports__, "EditorHistoryUndo", function() { return editor_history_undo; }); +/* concated harmony reexport EditorNotices */__webpack_require__.d(__webpack_exports__, "EditorNotices", function() { return editor_notices; }); +/* concated harmony reexport ErrorBoundary */__webpack_require__.d(__webpack_exports__, "ErrorBoundary", function() { return error_boundary; }); +/* concated harmony reexport LocalAutosaveMonitor */__webpack_require__.d(__webpack_exports__, "LocalAutosaveMonitor", function() { return local_autosave_monitor; }); +/* concated harmony reexport PageAttributesCheck */__webpack_require__.d(__webpack_exports__, "PageAttributesCheck", function() { return page_attributes_check; }); +/* concated harmony reexport PageAttributesOrder */__webpack_require__.d(__webpack_exports__, "PageAttributesOrder", function() { return page_attributes_order; }); +/* concated harmony reexport PageAttributesParent */__webpack_require__.d(__webpack_exports__, "PageAttributesParent", function() { return page_attributes_parent; }); +/* concated harmony reexport PageTemplate */__webpack_require__.d(__webpack_exports__, "PageTemplate", function() { return page_attributes_template; }); +/* concated harmony reexport PostAuthor */__webpack_require__.d(__webpack_exports__, "PostAuthor", function() { return post_author; }); +/* concated harmony reexport PostAuthorCheck */__webpack_require__.d(__webpack_exports__, "PostAuthorCheck", function() { return post_author_check; }); +/* concated harmony reexport PostComments */__webpack_require__.d(__webpack_exports__, "PostComments", function() { return post_comments; }); +/* concated harmony reexport PostExcerpt */__webpack_require__.d(__webpack_exports__, "PostExcerpt", function() { return post_excerpt; }); +/* concated harmony reexport PostExcerptCheck */__webpack_require__.d(__webpack_exports__, "PostExcerptCheck", function() { return post_excerpt_check; }); +/* concated harmony reexport PostFeaturedImage */__webpack_require__.d(__webpack_exports__, "PostFeaturedImage", function() { return post_featured_image; }); +/* concated harmony reexport PostFeaturedImageCheck */__webpack_require__.d(__webpack_exports__, "PostFeaturedImageCheck", function() { return post_featured_image_check; }); +/* concated harmony reexport PostFormat */__webpack_require__.d(__webpack_exports__, "PostFormat", function() { return post_format; }); +/* concated harmony reexport PostFormatCheck */__webpack_require__.d(__webpack_exports__, "PostFormatCheck", function() { return post_format_check; }); +/* concated harmony reexport PostLastRevision */__webpack_require__.d(__webpack_exports__, "PostLastRevision", function() { return post_last_revision; }); +/* concated harmony reexport PostLastRevisionCheck */__webpack_require__.d(__webpack_exports__, "PostLastRevisionCheck", function() { return post_last_revision_check; }); +/* concated harmony reexport PostLockedModal */__webpack_require__.d(__webpack_exports__, "PostLockedModal", function() { return post_locked_modal; }); +/* concated harmony reexport PostPendingStatus */__webpack_require__.d(__webpack_exports__, "PostPendingStatus", function() { return post_pending_status; }); +/* concated harmony reexport PostPendingStatusCheck */__webpack_require__.d(__webpack_exports__, "PostPendingStatusCheck", function() { return post_pending_status_check; }); +/* concated harmony reexport PostPingbacks */__webpack_require__.d(__webpack_exports__, "PostPingbacks", function() { return post_pingbacks; }); +/* concated harmony reexport PostPreviewButton */__webpack_require__.d(__webpack_exports__, "PostPreviewButton", function() { return post_preview_button; }); +/* concated harmony reexport PostPublishButton */__webpack_require__.d(__webpack_exports__, "PostPublishButton", function() { return post_publish_button; }); +/* concated harmony reexport PostPublishButtonLabel */__webpack_require__.d(__webpack_exports__, "PostPublishButtonLabel", function() { return post_publish_button_label; }); +/* concated harmony reexport PostPublishPanel */__webpack_require__.d(__webpack_exports__, "PostPublishPanel", function() { return post_publish_panel; }); +/* concated harmony reexport PostSavedState */__webpack_require__.d(__webpack_exports__, "PostSavedState", function() { return post_saved_state; }); +/* concated harmony reexport PostSchedule */__webpack_require__.d(__webpack_exports__, "PostSchedule", function() { return post_schedule; }); +/* concated harmony reexport PostScheduleCheck */__webpack_require__.d(__webpack_exports__, "PostScheduleCheck", function() { return post_schedule_check; }); +/* concated harmony reexport PostScheduleLabel */__webpack_require__.d(__webpack_exports__, "PostScheduleLabel", function() { return post_schedule_label; }); +/* concated harmony reexport PostSticky */__webpack_require__.d(__webpack_exports__, "PostSticky", function() { return post_sticky; }); +/* concated harmony reexport PostStickyCheck */__webpack_require__.d(__webpack_exports__, "PostStickyCheck", function() { return post_sticky_check; }); +/* concated harmony reexport PostSwitchToDraftButton */__webpack_require__.d(__webpack_exports__, "PostSwitchToDraftButton", function() { return post_switch_to_draft_button; }); +/* concated harmony reexport PostTaxonomies */__webpack_require__.d(__webpack_exports__, "PostTaxonomies", function() { return post_taxonomies; }); +/* concated harmony reexport PostTaxonomiesCheck */__webpack_require__.d(__webpack_exports__, "PostTaxonomiesCheck", function() { return post_taxonomies_check; }); +/* concated harmony reexport PostTextEditor */__webpack_require__.d(__webpack_exports__, "PostTextEditor", function() { return post_text_editor; }); +/* concated harmony reexport PostTitle */__webpack_require__.d(__webpack_exports__, "PostTitle", function() { return post_title; }); +/* concated harmony reexport PostTrash */__webpack_require__.d(__webpack_exports__, "PostTrash", function() { return post_trash; }); +/* concated harmony reexport PostTrashCheck */__webpack_require__.d(__webpack_exports__, "PostTrashCheck", function() { return post_trash_check; }); +/* concated harmony reexport PostTypeSupportCheck */__webpack_require__.d(__webpack_exports__, "PostTypeSupportCheck", function() { return post_type_support_check; }); +/* concated harmony reexport PostVisibility */__webpack_require__.d(__webpack_exports__, "PostVisibility", function() { return post_visibility; }); +/* concated harmony reexport PostVisibilityLabel */__webpack_require__.d(__webpack_exports__, "PostVisibilityLabel", function() { return post_visibility_label; }); +/* concated harmony reexport PostVisibilityCheck */__webpack_require__.d(__webpack_exports__, "PostVisibilityCheck", function() { return post_visibility_check; }); +/* concated harmony reexport TableOfContents */__webpack_require__.d(__webpack_exports__, "TableOfContents", function() { return table_of_contents; }); +/* concated harmony reexport UnsavedChangesWarning */__webpack_require__.d(__webpack_exports__, "UnsavedChangesWarning", function() { return unsaved_changes_warning; }); +/* concated harmony reexport WordCount */__webpack_require__.d(__webpack_exports__, "WordCount", function() { return word_count; }); +/* concated harmony reexport EditorProvider */__webpack_require__.d(__webpack_exports__, "EditorProvider", function() { return provider; }); +/* concated harmony reexport blockAutocompleter */__webpack_require__.d(__webpack_exports__, "blockAutocompleter", function() { return autocompleters_block; }); +/* concated harmony reexport userAutocompleter */__webpack_require__.d(__webpack_exports__, "userAutocompleter", function() { return autocompleters_user; }); +/* concated harmony reexport ServerSideRender */__webpack_require__.d(__webpack_exports__, "ServerSideRender", function() { return external_this_wp_serverSideRender_default.a; }); +/* concated harmony reexport RichText */__webpack_require__.d(__webpack_exports__, "RichText", function() { return RichText; }); +/* concated harmony reexport Autocomplete */__webpack_require__.d(__webpack_exports__, "Autocomplete", function() { return Autocomplete; }); +/* concated harmony reexport AlignmentToolbar */__webpack_require__.d(__webpack_exports__, "AlignmentToolbar", function() { return AlignmentToolbar; }); +/* concated harmony reexport BlockAlignmentToolbar */__webpack_require__.d(__webpack_exports__, "BlockAlignmentToolbar", function() { return BlockAlignmentToolbar; }); +/* concated harmony reexport BlockControls */__webpack_require__.d(__webpack_exports__, "BlockControls", function() { return BlockControls; }); +/* concated harmony reexport BlockEdit */__webpack_require__.d(__webpack_exports__, "BlockEdit", function() { return BlockEdit; }); +/* concated harmony reexport BlockEditorKeyboardShortcuts */__webpack_require__.d(__webpack_exports__, "BlockEditorKeyboardShortcuts", function() { return BlockEditorKeyboardShortcuts; }); +/* concated harmony reexport BlockFormatControls */__webpack_require__.d(__webpack_exports__, "BlockFormatControls", function() { return BlockFormatControls; }); +/* concated harmony reexport BlockIcon */__webpack_require__.d(__webpack_exports__, "BlockIcon", function() { return BlockIcon; }); +/* concated harmony reexport BlockInspector */__webpack_require__.d(__webpack_exports__, "BlockInspector", function() { return BlockInspector; }); +/* concated harmony reexport BlockList */__webpack_require__.d(__webpack_exports__, "BlockList", function() { return BlockList; }); +/* concated harmony reexport BlockMover */__webpack_require__.d(__webpack_exports__, "BlockMover", function() { return BlockMover; }); +/* concated harmony reexport BlockNavigationDropdown */__webpack_require__.d(__webpack_exports__, "BlockNavigationDropdown", function() { return BlockNavigationDropdown; }); +/* concated harmony reexport BlockSelectionClearer */__webpack_require__.d(__webpack_exports__, "BlockSelectionClearer", function() { return BlockSelectionClearer; }); +/* concated harmony reexport BlockSettingsMenu */__webpack_require__.d(__webpack_exports__, "BlockSettingsMenu", function() { return BlockSettingsMenu; }); +/* concated harmony reexport BlockTitle */__webpack_require__.d(__webpack_exports__, "BlockTitle", function() { return BlockTitle; }); +/* concated harmony reexport BlockToolbar */__webpack_require__.d(__webpack_exports__, "BlockToolbar", function() { return BlockToolbar; }); +/* concated harmony reexport ColorPalette */__webpack_require__.d(__webpack_exports__, "ColorPalette", function() { return ColorPalette; }); +/* concated harmony reexport ContrastChecker */__webpack_require__.d(__webpack_exports__, "ContrastChecker", function() { return ContrastChecker; }); +/* concated harmony reexport CopyHandler */__webpack_require__.d(__webpack_exports__, "CopyHandler", function() { return CopyHandler; }); +/* concated harmony reexport DefaultBlockAppender */__webpack_require__.d(__webpack_exports__, "DefaultBlockAppender", function() { return DefaultBlockAppender; }); +/* concated harmony reexport FontSizePicker */__webpack_require__.d(__webpack_exports__, "FontSizePicker", function() { return FontSizePicker; }); +/* concated harmony reexport Inserter */__webpack_require__.d(__webpack_exports__, "Inserter", function() { return Inserter; }); +/* concated harmony reexport InnerBlocks */__webpack_require__.d(__webpack_exports__, "InnerBlocks", function() { return InnerBlocks; }); +/* concated harmony reexport InspectorAdvancedControls */__webpack_require__.d(__webpack_exports__, "InspectorAdvancedControls", function() { return InspectorAdvancedControls; }); +/* concated harmony reexport InspectorControls */__webpack_require__.d(__webpack_exports__, "InspectorControls", function() { return InspectorControls; }); +/* concated harmony reexport PanelColorSettings */__webpack_require__.d(__webpack_exports__, "PanelColorSettings", function() { return PanelColorSettings; }); +/* concated harmony reexport PlainText */__webpack_require__.d(__webpack_exports__, "PlainText", function() { return PlainText; }); +/* concated harmony reexport RichTextShortcut */__webpack_require__.d(__webpack_exports__, "RichTextShortcut", function() { return RichTextShortcut; }); +/* concated harmony reexport RichTextToolbarButton */__webpack_require__.d(__webpack_exports__, "RichTextToolbarButton", function() { return RichTextToolbarButton; }); +/* concated harmony reexport __unstableRichTextInputEvent */__webpack_require__.d(__webpack_exports__, "__unstableRichTextInputEvent", function() { return __unstableRichTextInputEvent; }); +/* concated harmony reexport MediaPlaceholder */__webpack_require__.d(__webpack_exports__, "MediaPlaceholder", function() { return MediaPlaceholder; }); +/* concated harmony reexport MediaUpload */__webpack_require__.d(__webpack_exports__, "MediaUpload", function() { return MediaUpload; }); +/* concated harmony reexport MediaUploadCheck */__webpack_require__.d(__webpack_exports__, "MediaUploadCheck", function() { return MediaUploadCheck; }); +/* concated harmony reexport MultiBlocksSwitcher */__webpack_require__.d(__webpack_exports__, "MultiBlocksSwitcher", function() { return MultiBlocksSwitcher; }); +/* concated harmony reexport MultiSelectScrollIntoView */__webpack_require__.d(__webpack_exports__, "MultiSelectScrollIntoView", function() { return MultiSelectScrollIntoView; }); +/* concated harmony reexport NavigableToolbar */__webpack_require__.d(__webpack_exports__, "NavigableToolbar", function() { return NavigableToolbar; }); +/* concated harmony reexport ObserveTyping */__webpack_require__.d(__webpack_exports__, "ObserveTyping", function() { return ObserveTyping; }); +/* concated harmony reexport PreserveScrollInReorder */__webpack_require__.d(__webpack_exports__, "PreserveScrollInReorder", function() { return PreserveScrollInReorder; }); +/* concated harmony reexport SkipToSelectedBlock */__webpack_require__.d(__webpack_exports__, "SkipToSelectedBlock", function() { return SkipToSelectedBlock; }); +/* concated harmony reexport URLInput */__webpack_require__.d(__webpack_exports__, "URLInput", function() { return URLInput; }); +/* concated harmony reexport URLInputButton */__webpack_require__.d(__webpack_exports__, "URLInputButton", function() { return URLInputButton; }); +/* concated harmony reexport URLPopover */__webpack_require__.d(__webpack_exports__, "URLPopover", function() { return URLPopover; }); +/* concated harmony reexport Warning */__webpack_require__.d(__webpack_exports__, "Warning", function() { return Warning; }); +/* concated harmony reexport WritingFlow */__webpack_require__.d(__webpack_exports__, "WritingFlow", function() { return WritingFlow; }); +/* concated harmony reexport createCustomColorsHOC */__webpack_require__.d(__webpack_exports__, "createCustomColorsHOC", function() { return createCustomColorsHOC; }); +/* concated harmony reexport getColorClassName */__webpack_require__.d(__webpack_exports__, "getColorClassName", function() { return getColorClassName; }); +/* concated harmony reexport getColorObjectByAttributeValues */__webpack_require__.d(__webpack_exports__, "getColorObjectByAttributeValues", function() { return getColorObjectByAttributeValues; }); +/* concated harmony reexport getColorObjectByColorValue */__webpack_require__.d(__webpack_exports__, "getColorObjectByColorValue", function() { return getColorObjectByColorValue; }); +/* concated harmony reexport getFontSize */__webpack_require__.d(__webpack_exports__, "getFontSize", function() { return getFontSize; }); +/* concated harmony reexport getFontSizeClass */__webpack_require__.d(__webpack_exports__, "getFontSizeClass", function() { return getFontSizeClass; }); +/* concated harmony reexport withColorContext */__webpack_require__.d(__webpack_exports__, "withColorContext", function() { return withColorContext; }); +/* concated harmony reexport withColors */__webpack_require__.d(__webpack_exports__, "withColors", function() { return withColors; }); +/* concated harmony reexport withFontSizes */__webpack_require__.d(__webpack_exports__, "withFontSizes", function() { return withFontSizes; }); +/* concated harmony reexport mediaUpload */__webpack_require__.d(__webpack_exports__, "mediaUpload", function() { return media_upload; }); +/* concated harmony reexport cleanForSlug */__webpack_require__.d(__webpack_exports__, "cleanForSlug", function() { return cleanForSlug; }); +/* concated harmony reexport storeConfig */__webpack_require__.d(__webpack_exports__, "storeConfig", function() { return storeConfig; }); +/* concated harmony reexport transformStyles */__webpack_require__.d(__webpack_exports__, "transformStyles", function() { return external_this_wp_blockEditor_["transformStyles"]; }); +/** + * WordPress dependencies + */ + + + + + + + +/** + * Internal dependencies + */ + + + + + + +/* + * Backward compatibility + */ + + + + +/***/ }), + +/***/ 36: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; + + +var LEAF_KEY, hasWeakMap; + +/** + * Arbitrary value used as key for referencing cache object in WeakMap tree. + * + * @type {Object} + */ +LEAF_KEY = {}; + +/** + * Whether environment supports WeakMap. + * + * @type {boolean} + */ +hasWeakMap = typeof WeakMap !== 'undefined'; + +/** + * Returns the first argument as the sole entry in an array. + * + * @param {*} value Value to return. + * + * @return {Array} Value returned as entry in array. + */ +function arrayOf( value ) { + return [ value ]; +} + +/** + * Returns true if the value passed is object-like, or false otherwise. A value + * is object-like if it can support property assignment, e.g. object or array. + * + * @param {*} value Value to test. + * + * @return {boolean} Whether value is object-like. + */ +function isObjectLike( value ) { + return !! value && 'object' === typeof value; +} + +/** + * Creates and returns a new cache object. + * + * @return {Object} Cache object. + */ +function createCache() { + var cache = { + clear: function() { + cache.head = null; + }, + }; + + return cache; +} + +/** + * Returns true if entries within the two arrays are strictly equal by + * reference from a starting index. + * + * @param {Array} a First array. + * @param {Array} b Second array. + * @param {number} fromIndex Index from which to start comparison. + * + * @return {boolean} Whether arrays are shallowly equal. + */ +function isShallowEqual( a, b, fromIndex ) { + var i; + + if ( a.length !== b.length ) { + return false; + } + + for ( i = fromIndex; i < a.length; i++ ) { + if ( a[ i ] !== b[ i ] ) { + return false; + } + } + + return true; +} + +/** + * Returns a memoized selector function. The getDependants function argument is + * called before the memoized selector and is expected to return an immutable + * reference or array of references on which the selector depends for computing + * its own return value. The memoize cache is preserved only as long as those + * dependant references remain the same. If getDependants returns a different + * reference(s), the cache is cleared and the selector value regenerated. + * + * @param {Function} selector Selector function. + * @param {Function} getDependants Dependant getter returning an immutable + * reference or array of reference used in + * cache bust consideration. + * + * @return {Function} Memoized selector. + */ +/* harmony default export */ __webpack_exports__["a"] = (function( selector, getDependants ) { + var rootCache, getCache; + + // Use object source as dependant if getter not provided + if ( ! getDependants ) { + getDependants = arrayOf; + } + + /** + * Returns the root cache. If WeakMap is supported, this is assigned to the + * root WeakMap cache set, otherwise it is a shared instance of the default + * cache object. + * + * @return {(WeakMap|Object)} Root cache object. + */ + function getRootCache() { + return rootCache; + } + + /** + * Returns the cache for a given dependants array. When possible, a WeakMap + * will be used to create a unique cache for each set of dependants. This + * is feasible due to the nature of WeakMap in allowing garbage collection + * to occur on entries where the key object is no longer referenced. Since + * WeakMap requires the key to be an object, this is only possible when the + * dependant is object-like. The root cache is created as a hierarchy where + * each top-level key is the first entry in a dependants set, the value a + * WeakMap where each key is the next dependant, and so on. This continues + * so long as the dependants are object-like. If no dependants are object- + * like, then the cache is shared across all invocations. + * + * @see isObjectLike + * + * @param {Array} dependants Selector dependants. + * + * @return {Object} Cache object. + */ + function getWeakMapCache( dependants ) { + var caches = rootCache, + isUniqueByDependants = true, + i, dependant, map, cache; + + for ( i = 0; i < dependants.length; i++ ) { + dependant = dependants[ i ]; + + // Can only compose WeakMap from object-like key. + if ( ! isObjectLike( dependant ) ) { + isUniqueByDependants = false; + break; + } + + // Does current segment of cache already have a WeakMap? + if ( caches.has( dependant ) ) { + // Traverse into nested WeakMap. + caches = caches.get( dependant ); + } else { + // Create, set, and traverse into a new one. + map = new WeakMap(); + caches.set( dependant, map ); + caches = map; + } + } + + // We use an arbitrary (but consistent) object as key for the last item + // in the WeakMap to serve as our running cache. + if ( ! caches.has( LEAF_KEY ) ) { + cache = createCache(); + cache.isUniqueByDependants = isUniqueByDependants; + caches.set( LEAF_KEY, cache ); + } + + return caches.get( LEAF_KEY ); + } + + // Assign cache handler by availability of WeakMap + getCache = hasWeakMap ? getWeakMapCache : getRootCache; + + /** + * Resets root memoization cache. + */ + function clear() { + rootCache = hasWeakMap ? new WeakMap() : createCache(); + } + + // eslint-disable-next-line jsdoc/check-param-names + /** + * The augmented selector call, considering first whether dependants have + * changed before passing it to underlying memoize function. + * + * @param {Object} source Source object for derivation. + * @param {...*} extraArgs Additional arguments to pass to selector. + * + * @return {*} Selector result. + */ + function callSelector( /* source, ...extraArgs */ ) { + var len = arguments.length, + cache, node, i, args, dependants; + + // Create copy of arguments (avoid leaking deoptimization). + args = new Array( len ); + for ( i = 0; i < len; i++ ) { + args[ i ] = arguments[ i ]; + } + + dependants = getDependants.apply( null, args ); + cache = getCache( dependants ); + + // If not guaranteed uniqueness by dependants (primitive type or lack + // of WeakMap support), shallow compare against last dependants and, if + // references have changed, destroy cache to recalculate result. + if ( ! cache.isUniqueByDependants ) { + if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) { + cache.clear(); + } + + cache.lastDependants = dependants; + } + + node = cache.head; + while ( node ) { + // Check whether node arguments match arguments + if ( ! isShallowEqual( node.args, args, 1 ) ) { + node = node.next; + continue; + } + + // At this point we can assume we've found a match + + // Surface matched node to head if not already + if ( node !== cache.head ) { + // Adjust siblings to point to each other. + node.prev.next = node.next; + if ( node.next ) { + node.next.prev = node.prev; + } + + node.next = cache.head; + node.prev = null; + cache.head.prev = node; + cache.head = node; + } + + // Return immediately + return node.val; + } + + // No cached value found. Continue to insertion phase: + + node = { + // Generate the result from original function + val: selector.apply( null, args ), + }; + + // Avoid including the source object in the cache. + args[ 0 ] = null; + node.args = args; + + // Don't need to check whether node is already head, since it would + // have been returned above already if it was + + // Shift existing head down list + if ( cache.head ) { + cache.head.prev = node; + node.next = cache.head; + } + + cache.head = node; + + return node.val; + } + + callSelector.getDependants = getDependants; + callSelector.clear = clear; + clear(); + + return callSelector; +}); + + +/***/ }), + +/***/ 37: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["deprecated"]; }()); + +/***/ }), + +/***/ 38: +/***/ (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; +} + +/***/ }), + +/***/ 39: +/***/ (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"); +} + +/***/ }), + +/***/ 4: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["data"]; }()); + +/***/ }), + +/***/ 41: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["isShallowEqual"]; }()); + +/***/ }), + +/***/ 42: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["viewport"]; }()); + +/***/ }), + +/***/ 43: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _asyncToGenerator; }); +function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { + try { + var info = gen[key](arg); + var value = info.value; + } catch (error) { + reject(error); + return; + } + + if (info.done) { + resolve(value); + } else { + Promise.resolve(value).then(_next, _throw); + } +} + +function _asyncToGenerator(fn) { + return function () { + var self = this, + args = arguments; + return new Promise(function (resolve, reject) { + var gen = fn.apply(self, args); + + function _next(value) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); + } + + function _throw(err) { + asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); + } + + _next(undefined); + }); + }; +} + +/***/ }), + +/***/ 44: +/***/ (function(module, exports, __webpack_require__) { + +module.exports = function memize( fn, options ) { + var size = 0, + maxSize, head, tail; + + if ( options && options.maxSize ) { + maxSize = options.maxSize; + } + + function memoized( /* ...args */ ) { + var node = head, + len = arguments.length, + args, i; + + searchCache: while ( node ) { + // Perform a shallow equality test to confirm that whether the node + // under test is a candidate for the arguments passed. Two arrays + // are shallowly equal if their length matches and each entry is + // strictly equal between the two sets. Avoid abstracting to a + // function which could incur an arguments leaking deoptimization. + + // Check whether node arguments match arguments length + if ( node.args.length !== arguments.length ) { + node = node.next; + continue; + } + + // Check whether node arguments match arguments values + for ( i = 0; i < len; i++ ) { + if ( node.args[ i ] !== arguments[ i ] ) { + node = node.next; + continue searchCache; + } + } + + // At this point we can assume we've found a match + + // Surface matched node to head if not already + if ( node !== head ) { + // As tail, shift to previous. Must only shift if not also + // head, since if both head and tail, there is no previous. + if ( node === tail ) { + tail = node.prev; + } + + // Adjust siblings to point to each other. If node was tail, + // this also handles new tail's empty `next` assignment. + node.prev.next = node.next; + if ( node.next ) { + node.next.prev = node.prev; + } + + node.next = head; + node.prev = null; + head.prev = node; + head = node; + } + + // Return immediately + return node.val; + } + + // No cached value found. Continue to insertion phase: + + // Create a copy of arguments (avoid leaking deoptimization) + args = new Array( len ); + for ( i = 0; i < len; i++ ) { + args[ i ] = arguments[ i ]; + } + + node = { + args: args, + + // Generate the result from original function + val: fn.apply( null, args ) + }; + + // Don't need to check whether node is already head, since it would + // have been returned above already if it was + + // Shift existing head down list + if ( head ) { + head.prev = node; + node.next = head; + } else { + // If no head, follows that there's no tail (at initial or reset) + tail = node; + } + + // Trim tail if we're reached max size and are pending cache insertion + if ( size === maxSize ) { + tail = tail.prev; + tail.next = null; + } else { + size++; + } + + head = node; + + return node.val; + } + + memoized.clear = function() { + head = null; + tail = null; + size = 0; + }; + + if ( false ) {} + + return memoized; +}; + + +/***/ }), + +/***/ 47: +/***/ (function(module, exports, __webpack_require__) { + +/** + * Copyright (c) 2014-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + +var runtime = (function (exports) { + "use strict"; + + var Op = Object.prototype; + var hasOwn = Op.hasOwnProperty; + var undefined; // More compressible than void 0. + var $Symbol = typeof Symbol === "function" ? Symbol : {}; + var iteratorSymbol = $Symbol.iterator || "@@iterator"; + var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator"; + var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag"; + + function wrap(innerFn, outerFn, self, tryLocsList) { + // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator. + var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator; + var generator = Object.create(protoGenerator.prototype); + var context = new Context(tryLocsList || []); + + // The ._invoke method unifies the implementations of the .next, + // .throw, and .return methods. + generator._invoke = makeInvokeMethod(innerFn, self, context); + + return generator; + } + exports.wrap = wrap; + + // Try/catch helper to minimize deoptimizations. Returns a completion + // record like context.tryEntries[i].completion. This interface could + // have been (and was previously) designed to take a closure to be + // invoked without arguments, but in all the cases we care about we + // already have an existing method we want to call, so there's no need + // to create a new function object. We can even get away with assuming + // the method takes exactly one argument, since that happens to be true + // in every case, so we don't have to touch the arguments object. The + // only additional allocation required is the completion record, which + // has a stable shape and so hopefully should be cheap to allocate. + function tryCatch(fn, obj, arg) { + try { + return { type: "normal", arg: fn.call(obj, arg) }; + } catch (err) { + return { type: "throw", arg: err }; + } + } + + var GenStateSuspendedStart = "suspendedStart"; + var GenStateSuspendedYield = "suspendedYield"; + var GenStateExecuting = "executing"; + var GenStateCompleted = "completed"; + + // Returning this object from the innerFn has the same effect as + // breaking out of the dispatch switch statement. + var ContinueSentinel = {}; + + // Dummy constructor functions that we use as the .constructor and + // .constructor.prototype properties for functions that return Generator + // objects. For full spec compliance, you may wish to configure your + // minifier not to mangle the names of these two functions. + function Generator() {} + function GeneratorFunction() {} + function GeneratorFunctionPrototype() {} + + // This is a polyfill for %IteratorPrototype% for environments that + // don't natively support it. + var IteratorPrototype = {}; + IteratorPrototype[iteratorSymbol] = function () { + return this; + }; + + var getProto = Object.getPrototypeOf; + var NativeIteratorPrototype = getProto && getProto(getProto(values([]))); + if (NativeIteratorPrototype && + NativeIteratorPrototype !== Op && + hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) { + // This environment has a native %IteratorPrototype%; use it instead + // of the polyfill. + IteratorPrototype = NativeIteratorPrototype; + } + + var Gp = GeneratorFunctionPrototype.prototype = + Generator.prototype = Object.create(IteratorPrototype); + GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype; + GeneratorFunctionPrototype.constructor = GeneratorFunction; + GeneratorFunctionPrototype[toStringTagSymbol] = + GeneratorFunction.displayName = "GeneratorFunction"; + + // Helper for defining the .next, .throw, and .return methods of the + // Iterator interface in terms of a single ._invoke method. + function defineIteratorMethods(prototype) { + ["next", "throw", "return"].forEach(function(method) { + prototype[method] = function(arg) { + return this._invoke(method, arg); + }; + }); + } + + exports.isGeneratorFunction = function(genFun) { + var ctor = typeof genFun === "function" && genFun.constructor; + return ctor + ? ctor === GeneratorFunction || + // For the native GeneratorFunction constructor, the best we can + // do is to check its .name property. + (ctor.displayName || ctor.name) === "GeneratorFunction" + : false; + }; + + exports.mark = function(genFun) { + if (Object.setPrototypeOf) { + Object.setPrototypeOf(genFun, GeneratorFunctionPrototype); + } else { + genFun.__proto__ = GeneratorFunctionPrototype; + if (!(toStringTagSymbol in genFun)) { + genFun[toStringTagSymbol] = "GeneratorFunction"; + } + } + genFun.prototype = Object.create(Gp); + return genFun; + }; + + // Within the body of any async function, `await x` is transformed to + // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test + // `hasOwn.call(value, "__await")` to determine if the yielded value is + // meant to be awaited. + exports.awrap = function(arg) { + return { __await: arg }; + }; + + function AsyncIterator(generator) { + function invoke(method, arg, resolve, reject) { + var record = tryCatch(generator[method], generator, arg); + if (record.type === "throw") { + reject(record.arg); + } else { + var result = record.arg; + var value = result.value; + if (value && + typeof value === "object" && + hasOwn.call(value, "__await")) { + return Promise.resolve(value.__await).then(function(value) { + invoke("next", value, resolve, reject); + }, function(err) { + invoke("throw", err, resolve, reject); + }); + } + + return Promise.resolve(value).then(function(unwrapped) { + // When a yielded Promise is resolved, its final value becomes + // the .value of the Promise<{value,done}> result for the + // current iteration. + result.value = unwrapped; + resolve(result); + }, function(error) { + // If a rejected Promise was yielded, throw the rejection back + // into the async generator function so it can be handled there. + return invoke("throw", error, resolve, reject); + }); + } + } + + var previousPromise; + + function enqueue(method, arg) { + function callInvokeWithMethodAndArg() { + return new Promise(function(resolve, reject) { + invoke(method, arg, resolve, reject); + }); + } + + return previousPromise = + // If enqueue has been called before, then we want to wait until + // all previous Promises have been resolved before calling invoke, + // so that results are always delivered in the correct order. If + // enqueue has not been called before, then it is important to + // call invoke immediately, without waiting on a callback to fire, + // so that the async generator function has the opportunity to do + // any necessary setup in a predictable way. This predictability + // is why the Promise constructor synchronously invokes its + // executor callback, and why async functions synchronously + // execute code before the first await. Since we implement simple + // async functions in terms of async generators, it is especially + // important to get this right, even though it requires care. + previousPromise ? previousPromise.then( + callInvokeWithMethodAndArg, + // Avoid propagating failures to Promises returned by later + // invocations of the iterator. + callInvokeWithMethodAndArg + ) : callInvokeWithMethodAndArg(); + } + + // Define the unified helper method that is used to implement .next, + // .throw, and .return (see defineIteratorMethods). + this._invoke = enqueue; + } + + defineIteratorMethods(AsyncIterator.prototype); + AsyncIterator.prototype[asyncIteratorSymbol] = function () { + return this; + }; + exports.AsyncIterator = AsyncIterator; + + // Note that simple async functions are implemented on top of + // AsyncIterator objects; they just return a Promise for the value of + // the final result produced by the iterator. + exports.async = function(innerFn, outerFn, self, tryLocsList) { + var iter = new AsyncIterator( + wrap(innerFn, outerFn, self, tryLocsList) + ); + + return exports.isGeneratorFunction(outerFn) + ? iter // If outerFn is a generator, return the full iterator. + : iter.next().then(function(result) { + return result.done ? result.value : iter.next(); + }); + }; + + function makeInvokeMethod(innerFn, self, context) { + var state = GenStateSuspendedStart; + + return function invoke(method, arg) { + if (state === GenStateExecuting) { + throw new Error("Generator is already running"); + } + + if (state === GenStateCompleted) { + if (method === "throw") { + throw arg; + } + + // Be forgiving, per 25.3.3.3.3 of the spec: + // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume + return doneResult(); + } + + context.method = method; + context.arg = arg; + + while (true) { + var delegate = context.delegate; + if (delegate) { + var delegateResult = maybeInvokeDelegate(delegate, context); + if (delegateResult) { + if (delegateResult === ContinueSentinel) continue; + return delegateResult; + } + } + + if (context.method === "next") { + // Setting context._sent for legacy support of Babel's + // function.sent implementation. + context.sent = context._sent = context.arg; + + } else if (context.method === "throw") { + if (state === GenStateSuspendedStart) { + state = GenStateCompleted; + throw context.arg; + } + + context.dispatchException(context.arg); + + } else if (context.method === "return") { + context.abrupt("return", context.arg); + } + + state = GenStateExecuting; + + var record = tryCatch(innerFn, self, context); + if (record.type === "normal") { + // If an exception is thrown from innerFn, we leave state === + // GenStateExecuting and loop back for another invocation. + state = context.done + ? GenStateCompleted + : GenStateSuspendedYield; + + if (record.arg === ContinueSentinel) { + continue; + } + + return { + value: record.arg, + done: context.done + }; + + } else if (record.type === "throw") { + state = GenStateCompleted; + // Dispatch the exception by looping back around to the + // context.dispatchException(context.arg) call above. + context.method = "throw"; + context.arg = record.arg; + } + } + }; + } + + // Call delegate.iterator[context.method](context.arg) and handle the + // result, either by returning a { value, done } result from the + // delegate iterator, or by modifying context.method and context.arg, + // setting context.delegate to null, and returning the ContinueSentinel. + function maybeInvokeDelegate(delegate, context) { + var method = delegate.iterator[context.method]; + if (method === undefined) { + // A .throw or .return when the delegate iterator has no .throw + // method always terminates the yield* loop. + context.delegate = null; + + if (context.method === "throw") { + // Note: ["return"] must be used for ES3 parsing compatibility. + if (delegate.iterator["return"]) { + // If the delegate iterator has a return method, give it a + // chance to clean up. + context.method = "return"; + context.arg = undefined; + maybeInvokeDelegate(delegate, context); + + if (context.method === "throw") { + // If maybeInvokeDelegate(context) changed context.method from + // "return" to "throw", let that override the TypeError below. + return ContinueSentinel; + } + } + + context.method = "throw"; + context.arg = new TypeError( + "The iterator does not provide a 'throw' method"); + } + + return ContinueSentinel; + } + + var record = tryCatch(method, delegate.iterator, context.arg); + + if (record.type === "throw") { + context.method = "throw"; + context.arg = record.arg; + context.delegate = null; + return ContinueSentinel; + } + + var info = record.arg; + + if (! info) { + context.method = "throw"; + context.arg = new TypeError("iterator result is not an object"); + context.delegate = null; + return ContinueSentinel; + } + + if (info.done) { + // Assign the result of the finished delegate to the temporary + // variable specified by delegate.resultName (see delegateYield). + context[delegate.resultName] = info.value; + + // Resume execution at the desired location (see delegateYield). + context.next = delegate.nextLoc; + + // If context.method was "throw" but the delegate handled the + // exception, let the outer generator proceed normally. If + // context.method was "next", forget context.arg since it has been + // "consumed" by the delegate iterator. If context.method was + // "return", allow the original .return call to continue in the + // outer generator. + if (context.method !== "return") { + context.method = "next"; + context.arg = undefined; + } + + } else { + // Re-yield the result returned by the delegate method. + return info; + } + + // The delegate iterator is finished, so forget it and continue with + // the outer generator. + context.delegate = null; + return ContinueSentinel; + } + + // Define Generator.prototype.{next,throw,return} in terms of the + // unified ._invoke helper method. + defineIteratorMethods(Gp); + + Gp[toStringTagSymbol] = "Generator"; + + // A Generator should always return itself as the iterator object when the + // @@iterator function is called on it. Some browsers' implementations of the + // iterator prototype chain incorrectly implement this, causing the Generator + // object to not be returned from this call. This ensures that doesn't happen. + // See https://github.com/facebook/regenerator/issues/274 for more details. + Gp[iteratorSymbol] = function() { + return this; + }; + + Gp.toString = function() { + return "[object Generator]"; + }; + + function pushTryEntry(locs) { + var entry = { tryLoc: locs[0] }; + + if (1 in locs) { + entry.catchLoc = locs[1]; + } + + if (2 in locs) { + entry.finallyLoc = locs[2]; + entry.afterLoc = locs[3]; + } + + this.tryEntries.push(entry); + } + + function resetTryEntry(entry) { + var record = entry.completion || {}; + record.type = "normal"; + delete record.arg; + entry.completion = record; + } + + function Context(tryLocsList) { + // The root entry object (effectively a try statement without a catch + // or a finally block) gives us a place to store values thrown from + // locations where there is no enclosing try statement. + this.tryEntries = [{ tryLoc: "root" }]; + tryLocsList.forEach(pushTryEntry, this); + this.reset(true); + } + + exports.keys = function(object) { + var keys = []; + for (var key in object) { + keys.push(key); + } + keys.reverse(); + + // Rather than returning an object with a next method, we keep + // things simple and return the next function itself. + return function next() { + while (keys.length) { + var key = keys.pop(); + if (key in object) { + next.value = key; + next.done = false; + return next; + } + } + + // To avoid creating an additional object, we just hang the .value + // and .done properties off the next function object itself. This + // also ensures that the minifier will not anonymize the function. + next.done = true; + return next; + }; + }; + + function values(iterable) { + if (iterable) { + var iteratorMethod = iterable[iteratorSymbol]; + if (iteratorMethod) { + return iteratorMethod.call(iterable); + } + + if (typeof iterable.next === "function") { + return iterable; + } + + if (!isNaN(iterable.length)) { + var i = -1, next = function next() { + while (++i < iterable.length) { + if (hasOwn.call(iterable, i)) { + next.value = iterable[i]; + next.done = false; + return next; + } + } + + next.value = undefined; + next.done = true; + + return next; + }; + + return next.next = next; + } + } + + // Return an iterator with no values. + return { next: doneResult }; + } + exports.values = values; + + function doneResult() { + return { value: undefined, done: true }; + } + + Context.prototype = { + constructor: Context, + + reset: function(skipTempReset) { + this.prev = 0; + this.next = 0; + // Resetting context._sent for legacy support of Babel's + // function.sent implementation. + this.sent = this._sent = undefined; + this.done = false; + this.delegate = null; + + this.method = "next"; + this.arg = undefined; + + this.tryEntries.forEach(resetTryEntry); + + if (!skipTempReset) { + for (var name in this) { + // Not sure about the optimal order of these conditions: + if (name.charAt(0) === "t" && + hasOwn.call(this, name) && + !isNaN(+name.slice(1))) { + this[name] = undefined; + } + } + } + }, + + stop: function() { + this.done = true; + + var rootEntry = this.tryEntries[0]; + var rootRecord = rootEntry.completion; + if (rootRecord.type === "throw") { + throw rootRecord.arg; + } + + return this.rval; + }, + + dispatchException: function(exception) { + if (this.done) { + throw exception; + } + + var context = this; + function handle(loc, caught) { + record.type = "throw"; + record.arg = exception; + context.next = loc; + + if (caught) { + // If the dispatched exception was caught by a catch block, + // then let that catch block handle the exception normally. + context.method = "next"; + context.arg = undefined; + } + + return !! caught; + } + + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + var record = entry.completion; + + if (entry.tryLoc === "root") { + // Exception thrown outside of any try block that could handle + // it, so set the completion value of the entire function to + // throw the exception. + return handle("end"); + } + + if (entry.tryLoc <= this.prev) { + var hasCatch = hasOwn.call(entry, "catchLoc"); + var hasFinally = hasOwn.call(entry, "finallyLoc"); + + if (hasCatch && hasFinally) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } else if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else if (hasCatch) { + if (this.prev < entry.catchLoc) { + return handle(entry.catchLoc, true); + } + + } else if (hasFinally) { + if (this.prev < entry.finallyLoc) { + return handle(entry.finallyLoc); + } + + } else { + throw new Error("try statement without catch or finally"); + } + } + } + }, + + abrupt: function(type, arg) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc <= this.prev && + hasOwn.call(entry, "finallyLoc") && + this.prev < entry.finallyLoc) { + var finallyEntry = entry; + break; + } + } + + if (finallyEntry && + (type === "break" || + type === "continue") && + finallyEntry.tryLoc <= arg && + arg <= finallyEntry.finallyLoc) { + // Ignore the finally entry if control is not jumping to a + // location outside the try/catch block. + finallyEntry = null; + } + + var record = finallyEntry ? finallyEntry.completion : {}; + record.type = type; + record.arg = arg; + + if (finallyEntry) { + this.method = "next"; + this.next = finallyEntry.finallyLoc; + return ContinueSentinel; + } + + return this.complete(record); + }, + + complete: function(record, afterLoc) { + if (record.type === "throw") { + throw record.arg; + } + + if (record.type === "break" || + record.type === "continue") { + this.next = record.arg; + } else if (record.type === "return") { + this.rval = this.arg = record.arg; + this.method = "return"; + this.next = "end"; + } else if (record.type === "normal" && afterLoc) { + this.next = afterLoc; + } + + return ContinueSentinel; + }, + + finish: function(finallyLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.finallyLoc === finallyLoc) { + this.complete(entry.completion, entry.afterLoc); + resetTryEntry(entry); + return ContinueSentinel; + } + } + }, + + "catch": function(tryLoc) { + for (var i = this.tryEntries.length - 1; i >= 0; --i) { + var entry = this.tryEntries[i]; + if (entry.tryLoc === tryLoc) { + var record = entry.completion; + if (record.type === "throw") { + var thrown = record.arg; + resetTryEntry(entry); + } + return thrown; + } + } + + // The context.catch method must only be called with a location + // argument that corresponds to a known catch block. + throw new Error("illegal catch attempt"); + }, + + delegateYield: function(iterable, resultName, nextLoc) { + this.delegate = { + iterator: values(iterable), + resultName: resultName, + nextLoc: nextLoc + }; + + if (this.method === "next") { + // Deliberately forget the last sent value so that we don't + // accidentally pass it on to the delegate. + this.arg = undefined; + } + + return ContinueSentinel; + } + }; + + // Regardless of whether this script is executing as a CommonJS module + // or not, return the runtime object so that we can declare the variable + // regeneratorRuntime in the outer scope, which allows this module to be + // injected easily by `bin/regenerator --include-runtime script.js`. + return exports; + +}( + // If this script is executing as a CommonJS module, use module.exports + // as the regeneratorRuntime namespace. Otherwise create a new empty + // object. Either way, the resulting object will be used to initialize + // the regeneratorRuntime variable at the top of this file. + true ? module.exports : undefined +)); + +try { + regeneratorRuntime = runtime; +} catch (accidentalStrictMode) { + // This module should not be running in strict mode, so the above + // assignment should always work unless something is misconfigured. Just + // in case runtime.js accidentally runs in strict mode, we can escape + // strict mode using a global Function call. This could conceivably fail + // if a Content Security Policy forbids using Function, but in that case + // the proper solution is to fix the accidental strict mode problem. If + // you've misconfigured your bundler to force strict mode and applied a + // CSP to forbid Function, and you're not willing to fix either of those + // problems, please detail your unique predicament in a GitHub issue. + Function("r", "regeneratorRuntime = r")(runtime); +} + + +/***/ }), + +/***/ 5: +/***/ (function(module, __webpack_exports__, __webpack_require__) { + +"use strict"; +/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; }); +function _assertThisInitialized(self) { + if (self === void 0) { + throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + } + + return self; +} + +/***/ }), + +/***/ 52: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["htmlEntities"]; }()); + +/***/ }), + +/***/ 53: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["date"]; }()); + +/***/ }), + +/***/ 58: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["serverSideRender"]; }()); + +/***/ }), + +/***/ 6: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["blockEditor"]; }()); + +/***/ }), + +/***/ 61: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["nux"]; }()); + +/***/ }), + +/***/ 62: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + +exports.__esModule = true; +var TextareaAutosize_1 = __webpack_require__(115); +exports["default"] = TextareaAutosize_1["default"]; + + +/***/ }), + +/***/ 69: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["autop"]; }()); + +/***/ }), + +/***/ 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__(10); + +function _objectSpread(target) { + for (var i = 1; i < arguments.length; i++) { + var source = arguments[i] != null ? arguments[i] : {}; + var ownKeys = Object.keys(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; +} + +/***/ }), + +/***/ 72: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; + + +function flattenIntoMap( map, effects ) { + var i; + if ( Array.isArray( effects ) ) { + for ( i = 0; i < effects.length; i++ ) { + flattenIntoMap( map, effects[ i ] ); + } + } else { + for ( i in effects ) { + map[ i ] = ( map[ i ] || [] ).concat( effects[ i ] ); + } + } +} + +function refx( effects ) { + var map = {}, + middleware; + + flattenIntoMap( map, effects ); + + middleware = function( store ) { + return function( next ) { + return function( action ) { + var handlers = map[ action.type ], + result = next( action ), + i, handlerAction; + + if ( handlers ) { + for ( i = 0; i < handlers.length; i++ ) { + handlerAction = handlers[ i ]( action, store ); + if ( handlerAction ) { + store.dispatch( handlerAction ); + } + } + } + + return result; + }; + }; + }; + + middleware.effects = map; + + return middleware; +} + +module.exports = refx; + + +/***/ }), + +/***/ 8: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["compose"]; }()); + +/***/ }), + +/***/ 83: +/***/ (function(module, exports, __webpack_require__) { + +module.exports = __webpack_require__(325); + + +/***/ }), + +/***/ 87: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = __webpack_require__(88); + +function emptyFunction() {} +function emptyFunctionWithReset() {} +emptyFunctionWithReset.resetWarningCache = emptyFunction; + +module.exports = function() { + function shim(props, propName, componentName, location, propFullName, secret) { + if (secret === ReactPropTypesSecret) { + // It is still safe when called from React. + return; + } + var err = new Error( + 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' + + 'Use PropTypes.checkPropTypes() to call them. ' + + 'Read more at http://fb.me/use-check-prop-types' + ); + err.name = 'Invariant Violation'; + throw err; + }; + shim.isRequired = shim; + function getShim() { + return shim; + }; + // Important! + // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`. + var ReactPropTypes = { + array: shim, + bool: shim, + func: shim, + number: shim, + object: shim, + string: shim, + symbol: shim, + + any: shim, + arrayOf: getShim, + element: shim, + elementType: shim, + instanceOf: getShim, + node: shim, + objectOf: getShim, + oneOf: getShim, + oneOfType: getShim, + shape: getShim, + exact: getShim, + + checkPropTypes: emptyFunctionWithReset, + resetWarningCache: emptyFunction + }; + + ReactPropTypes.PropTypes = ReactPropTypes; + + return ReactPropTypes; +}; + + +/***/ }), + +/***/ 88: +/***/ (function(module, exports, __webpack_require__) { + +"use strict"; +/** + * Copyright (c) 2013-present, Facebook, Inc. + * + * This source code is licensed under the MIT license found in the + * LICENSE file in the root directory of this source tree. + */ + + + +var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED'; + +module.exports = ReactPropTypesSecret; + + +/***/ }), + +/***/ 89: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["coreData"]; }()); + +/***/ }), + +/***/ 9: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["blocks"]; }()); + +/***/ }), + +/***/ 97: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["wordcount"]; }()); + +/***/ }), + +/***/ 99: +/***/ (function(module, exports) { + +(function() { module.exports = this["wp"]["mediaUtils"]; }()); + +/***/ }) + +/******/ });
\ No newline at end of file |
