WordPress/wp-includes/js/dist/editor.js
jorgefilipecosta 16571b1bfb Block Editor: Update the WordPress Packages to the ones used in the Gutenberg 6.8 release.
Updated packages:
@wordpress/a11y@2.5.1
@wordpress/annotations@1.7.2
@wordpress/api-fetch@3.6.2
@wordpress/autop@2.5.1
@wordpress/babel-preset-default@4.6.2
@wordpress/blob@2.5.1
@wordpress/block-directory@1.0.2
@wordpress/block-editor@3.2.2
@wordpress/block-library@2.9.2
@wordpress/block-serialization-default-parser@3.4.1
@wordpress/block-serialization-spec-parser@3.3.1
@wordpress/blocks@6.7.2
@wordpress/components@8.3.2
@wordpress/compose@3.7.2
@wordpress/core-data@2.7.2
@wordpress/data-controls@1.3.2
@wordpress/data@4.9.2
@wordpress/deprecated@2.6.1
@wordpress/dom-ready@2.5.1
@wordpress/dom@2.5.2
@wordpress/e2e-test-utils@2.4.2
@wordpress/e2e-tests@1.7.2
@wordpress/edit-post@3.8.2
@wordpress/editor@9.7.2
@wordpress/element@2.8.2
@wordpress/escape-html@1.5.1
@wordpress/format-library@1.9.2
@wordpress/is-shallow-equal@1.6.1
@wordpress/keycodes@2.6.2
@wordpress/list-reusable-blocks@1.8.2
@wordpress/media-utils@1.2.2
@wordpress/notices@1.8.2
@wordpress/nux@3.7.2
@wordpress/plugins@2.7.2
@wordpress/priority-queue@1.3.1
@wordpress/redux-routine@3.6.2
@wordpress/rich-text@3.7.2
@wordpress/scripts@5.1.0
@wordpress/server-side-render@1.3.2
@wordpress/url@2.8.1
@wordpress/viewport@2.8.2
@wordpress/wordcount@2.6.2

Props gziolo, youknowriad.
Fixes: #48310
Built from https://develop.svn.wordpress.org/trunk@46546


git-svn-id: http://core.svn.wordpress.org/trunk@46343 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-10-15 16:17:12 +00:00

16223 lines
540 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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 = '&nbsp;';
// 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 doesnt 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 (lastIsAutosaving.current && !isAutosaving && !didError) {
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 youre 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. Dont 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. Dont 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? Thats great, lets get this published right now. Just click “Publish” and youre 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 youre 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_["__"])('Whats 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 isDirty = this.props.isDirty;
if (isDirty) {
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 {
isDirty: 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 cant 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"]; }());
/***/ })
/******/ });