WordPress/wp-includes/js/dist/editor.js
aduth 3c44f9e15a Block Editor: Upgrade WordPress packages to the latest versions.
Updated packages:

 - @wordpress/annotations@1.2.3
 - @wordpress/block-editor@2.0.2
 - @wordpress/block-library@2.4.5
 - @wordpress/blocks@6.2.5
 - @wordpress/components@7.3.2
 - @wordpress/dom@2.2.5
 - @wordpress/e2e-tests@1.1.5
 - @wordpress/edit-post@3.3.5
 - @wordpress/editor@9.2.5
 - @wordpress/format-library@1.4.5
 - @wordpress/list-reusable-blocks@1.3.5
 - @wordpress/nux@3.2.5
 - @wordpress/rich-text@3.2.3

Props: youknowriad, gwwar, iseulde, tfrommen, gziolo.

Fixes #47284.

Built from https://develop.svn.wordpress.org/trunk@45319


git-svn-id: http://core.svn.wordpress.org/trunk@45130 1a063a9b-81f0-0310-95a4-ce76da25c4cd
2019-05-16 18:08:00 +00:00

17367 lines
554 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 = 358);
/******/ })
/************************************************************************/
/******/ ({
/***/ 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 _classCallCheck; });
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
/***/ }),
/***/ 109:
/***/ (function(module, exports) {
if (typeof Object.create === 'function') {
// implementation from standard node.js 'util' module
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
ctor.prototype = Object.create(superCtor.prototype, {
constructor: {
value: ctor,
enumerable: false,
writable: true,
configurable: true
}
});
};
} else {
// old school shim for old browsers
module.exports = function inherits(ctor, superCtor) {
ctor.super_ = superCtor
var TempCtor = function () {}
TempCtor.prototype = superCtor.prototype
ctor.prototype = new TempCtor()
ctor.prototype.constructor = ctor
}
}
/***/ }),
/***/ 11:
/***/ (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__(32);
/* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(3);
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);
}
/***/ }),
/***/ 111:
/***/ (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__(27);
var PropTypes = __webpack_require__(31);
var autosize = __webpack_require__(112);
var _getLineHeight = __webpack_require__(113);
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;
/***/ }),
/***/ 112:
/***/ (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'];
});
/***/ }),
/***/ 113:
/***/ (function(module, exports, __webpack_require__) {
// Load in dependencies
var computedStyle = __webpack_require__(114);
/**
* 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;
/***/ }),
/***/ 114:
/***/ (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;
/***/ }),
/***/ 117:
/***/ (function(module, exports, __webpack_require__) {
/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.4.1 by @mathias */
;(function(root) {
/** Detect free variables */
var freeExports = true && exports &&
!exports.nodeType && exports;
var freeModule = true && module &&
!module.nodeType && module;
var freeGlobal = typeof global == 'object' && global;
if (
freeGlobal.global === freeGlobal ||
freeGlobal.window === freeGlobal ||
freeGlobal.self === freeGlobal
) {
root = freeGlobal;
}
/**
* The `punycode` object.
* @name punycode
* @type Object
*/
var punycode,
/** Highest positive signed 32-bit float value */
maxInt = 2147483647, // aka. 0x7FFFFFFF or 2^31-1
/** Bootstring parameters */
base = 36,
tMin = 1,
tMax = 26,
skew = 38,
damp = 700,
initialBias = 72,
initialN = 128, // 0x80
delimiter = '-', // '\x2D'
/** Regular expressions */
regexPunycode = /^xn--/,
regexNonASCII = /[^\x20-\x7E]/, // unprintable ASCII chars + non-ASCII chars
regexSeparators = /[\x2E\u3002\uFF0E\uFF61]/g, // RFC 3490 separators
/** Error messages */
errors = {
'overflow': 'Overflow: input needs wider integers to process',
'not-basic': 'Illegal input >= 0x80 (not a basic code point)',
'invalid-input': 'Invalid input'
},
/** Convenience shortcuts */
baseMinusTMin = base - tMin,
floor = Math.floor,
stringFromCharCode = String.fromCharCode,
/** Temporary variable */
key;
/*--------------------------------------------------------------------------*/
/**
* A generic error utility function.
* @private
* @param {String} type The error type.
* @returns {Error} Throws a `RangeError` with the applicable error message.
*/
function error(type) {
throw new RangeError(errors[type]);
}
/**
* A generic `Array#map` utility function.
* @private
* @param {Array} array The array to iterate over.
* @param {Function} callback The function that gets called for every array
* item.
* @returns {Array} A new array of values returned by the callback function.
*/
function map(array, fn) {
var length = array.length;
var result = [];
while (length--) {
result[length] = fn(array[length]);
}
return result;
}
/**
* A simple `Array#map`-like wrapper to work with domain name strings or email
* addresses.
* @private
* @param {String} domain The domain name or email address.
* @param {Function} callback The function that gets called for every
* character.
* @returns {Array} A new string of characters returned by the callback
* function.
*/
function mapDomain(string, fn) {
var parts = string.split('@');
var result = '';
if (parts.length > 1) {
// In email addresses, only the domain name should be punycoded. Leave
// the local part (i.e. everything up to `@`) intact.
result = parts[0] + '@';
string = parts[1];
}
// Avoid `split(regex)` for IE8 compatibility. See #17.
string = string.replace(regexSeparators, '\x2E');
var labels = string.split('.');
var encoded = map(labels, fn).join('.');
return result + encoded;
}
/**
* Creates an array containing the numeric code points of each Unicode
* character in the string. While JavaScript uses UCS-2 internally,
* this function will convert a pair of surrogate halves (each of which
* UCS-2 exposes as separate characters) into a single code point,
* matching UTF-16.
* @see `punycode.ucs2.encode`
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode.ucs2
* @name decode
* @param {String} string The Unicode input string (UCS-2).
* @returns {Array} The new array of code points.
*/
function ucs2decode(string) {
var output = [],
counter = 0,
length = string.length,
value,
extra;
while (counter < length) {
value = string.charCodeAt(counter++);
if (value >= 0xD800 && value <= 0xDBFF && counter < length) {
// high surrogate, and there is a next character
extra = string.charCodeAt(counter++);
if ((extra & 0xFC00) == 0xDC00) { // low surrogate
output.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);
} else {
// unmatched surrogate; only append this code unit, in case the next
// code unit is the high surrogate of a surrogate pair
output.push(value);
counter--;
}
} else {
output.push(value);
}
}
return output;
}
/**
* Creates a string based on an array of numeric code points.
* @see `punycode.ucs2.decode`
* @memberOf punycode.ucs2
* @name encode
* @param {Array} codePoints The array of numeric code points.
* @returns {String} The new Unicode string (UCS-2).
*/
function ucs2encode(array) {
return map(array, function(value) {
var output = '';
if (value > 0xFFFF) {
value -= 0x10000;
output += stringFromCharCode(value >>> 10 & 0x3FF | 0xD800);
value = 0xDC00 | value & 0x3FF;
}
output += stringFromCharCode(value);
return output;
}).join('');
}
/**
* Converts a basic code point into a digit/integer.
* @see `digitToBasic()`
* @private
* @param {Number} codePoint The basic numeric code point value.
* @returns {Number} The numeric value of a basic code point (for use in
* representing integers) in the range `0` to `base - 1`, or `base` if
* the code point does not represent a value.
*/
function basicToDigit(codePoint) {
if (codePoint - 48 < 10) {
return codePoint - 22;
}
if (codePoint - 65 < 26) {
return codePoint - 65;
}
if (codePoint - 97 < 26) {
return codePoint - 97;
}
return base;
}
/**
* Converts a digit/integer into a basic code point.
* @see `basicToDigit()`
* @private
* @param {Number} digit The numeric value of a basic code point.
* @returns {Number} The basic code point whose value (when used for
* representing integers) is `digit`, which needs to be in the range
* `0` to `base - 1`. If `flag` is non-zero, the uppercase form is
* used; else, the lowercase form is used. The behavior is undefined
* if `flag` is non-zero and `digit` has no uppercase form.
*/
function digitToBasic(digit, flag) {
// 0..25 map to ASCII a..z or A..Z
// 26..35 map to ASCII 0..9
return digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);
}
/**
* Bias adaptation function as per section 3.4 of RFC 3492.
* https://tools.ietf.org/html/rfc3492#section-3.4
* @private
*/
function adapt(delta, numPoints, firstTime) {
var k = 0;
delta = firstTime ? floor(delta / damp) : delta >> 1;
delta += floor(delta / numPoints);
for (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {
delta = floor(delta / baseMinusTMin);
}
return floor(k + (baseMinusTMin + 1) * delta / (delta + skew));
}
/**
* Converts a Punycode string of ASCII-only symbols to a string of Unicode
* symbols.
* @memberOf punycode
* @param {String} input The Punycode string of ASCII-only symbols.
* @returns {String} The resulting string of Unicode symbols.
*/
function decode(input) {
// Don't use UCS-2
var output = [],
inputLength = input.length,
out,
i = 0,
n = initialN,
bias = initialBias,
basic,
j,
index,
oldi,
w,
k,
digit,
t,
/** Cached calculation results */
baseMinusT;
// Handle the basic code points: let `basic` be the number of input code
// points before the last delimiter, or `0` if there is none, then copy
// the first basic code points to the output.
basic = input.lastIndexOf(delimiter);
if (basic < 0) {
basic = 0;
}
for (j = 0; j < basic; ++j) {
// if it's not a basic code point
if (input.charCodeAt(j) >= 0x80) {
error('not-basic');
}
output.push(input.charCodeAt(j));
}
// Main decoding loop: start just after the last delimiter if any basic code
// points were copied; start at the beginning otherwise.
for (index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {
// `index` is the index of the next character to be consumed.
// Decode a generalized variable-length integer into `delta`,
// which gets added to `i`. The overflow checking is easier
// if we increase `i` as we go, then subtract off its starting
// value at the end to obtain `delta`.
for (oldi = i, w = 1, k = base; /* no condition */; k += base) {
if (index >= inputLength) {
error('invalid-input');
}
digit = basicToDigit(input.charCodeAt(index++));
if (digit >= base || digit > floor((maxInt - i) / w)) {
error('overflow');
}
i += digit * w;
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (digit < t) {
break;
}
baseMinusT = base - t;
if (w > floor(maxInt / baseMinusT)) {
error('overflow');
}
w *= baseMinusT;
}
out = output.length + 1;
bias = adapt(i - oldi, out, oldi == 0);
// `i` was supposed to wrap around from `out` to `0`,
// incrementing `n` each time, so we'll fix that now:
if (floor(i / out) > maxInt - n) {
error('overflow');
}
n += floor(i / out);
i %= out;
// Insert `n` at position `i` of the output
output.splice(i++, 0, n);
}
return ucs2encode(output);
}
/**
* Converts a string of Unicode symbols (e.g. a domain name label) to a
* Punycode string of ASCII-only symbols.
* @memberOf punycode
* @param {String} input The string of Unicode symbols.
* @returns {String} The resulting Punycode string of ASCII-only symbols.
*/
function encode(input) {
var n,
delta,
handledCPCount,
basicLength,
bias,
j,
m,
q,
k,
t,
currentValue,
output = [],
/** `inputLength` will hold the number of code points in `input`. */
inputLength,
/** Cached calculation results */
handledCPCountPlusOne,
baseMinusT,
qMinusT;
// Convert the input in UCS-2 to Unicode
input = ucs2decode(input);
// Cache the length
inputLength = input.length;
// Initialize the state
n = initialN;
delta = 0;
bias = initialBias;
// Handle the basic code points
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < 0x80) {
output.push(stringFromCharCode(currentValue));
}
}
handledCPCount = basicLength = output.length;
// `handledCPCount` is the number of code points that have been handled;
// `basicLength` is the number of basic code points.
// Finish the basic string - if it is not empty - with a delimiter
if (basicLength) {
output.push(delimiter);
}
// Main encoding loop:
while (handledCPCount < inputLength) {
// All non-basic code points < n have been handled already. Find the next
// larger one:
for (m = maxInt, j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue >= n && currentValue < m) {
m = currentValue;
}
}
// Increase `delta` enough to advance the decoder's <n,i> state to <m,0>,
// but guard against overflow
handledCPCountPlusOne = handledCPCount + 1;
if (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {
error('overflow');
}
delta += (m - n) * handledCPCountPlusOne;
n = m;
for (j = 0; j < inputLength; ++j) {
currentValue = input[j];
if (currentValue < n && ++delta > maxInt) {
error('overflow');
}
if (currentValue == n) {
// Represent delta as a generalized variable-length integer
for (q = delta, k = base; /* no condition */; k += base) {
t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);
if (q < t) {
break;
}
qMinusT = q - t;
baseMinusT = base - t;
output.push(
stringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))
);
q = floor(qMinusT / baseMinusT);
}
output.push(stringFromCharCode(digitToBasic(q, 0)));
bias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);
delta = 0;
++handledCPCount;
}
}
++delta;
++n;
}
return output.join('');
}
/**
* Converts a Punycode string representing a domain name or an email address
* to Unicode. Only the Punycoded parts of the input will be converted, i.e.
* it doesn't matter if you call it on a string that has already been
* converted to Unicode.
* @memberOf punycode
* @param {String} input The Punycoded domain name or email address to
* convert to Unicode.
* @returns {String} The Unicode representation of the given Punycode
* string.
*/
function toUnicode(input) {
return mapDomain(input, function(string) {
return regexPunycode.test(string)
? decode(string.slice(4).toLowerCase())
: string;
});
}
/**
* Converts a Unicode string representing a domain name or an email address to
* Punycode. Only the non-ASCII parts of the domain name will be converted,
* i.e. it doesn't matter if you call it with a domain that's already in
* ASCII.
* @memberOf punycode
* @param {String} input The domain name or email address to convert, as a
* Unicode string.
* @returns {String} The Punycode representation of the given domain name or
* email address.
*/
function toASCII(input) {
return mapDomain(input, function(string) {
return regexNonASCII.test(string)
? 'xn--' + encode(string)
: string;
});
}
/*--------------------------------------------------------------------------*/
/** Define the public API */
punycode = {
/**
* A string representing the current Punycode.js version number.
* @memberOf punycode
* @type String
*/
'version': '1.4.1',
/**
* An object of methods to convert from JavaScript's internal character
* representation (UCS-2) to Unicode code points, and back.
* @see <https://mathiasbynens.be/notes/javascript-encoding>
* @memberOf punycode
* @type Object
*/
'ucs2': {
'decode': ucs2decode,
'encode': ucs2encode
},
'decode': decode,
'encode': encode,
'toASCII': toASCII,
'toUnicode': toUnicode
};
/** Expose `punycode` */
// Some AMD build optimizers, like r.js, check for specific condition patterns
// like the following:
if (
true
) {
!(__WEBPACK_AMD_DEFINE_RESULT__ = (function() {
return punycode;
}).call(exports, __webpack_require__, exports, module),
__WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
} else {}
}(this));
/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(118)(module), __webpack_require__(59)))
/***/ }),
/***/ 118:
/***/ (function(module, exports) {
module.exports = function(module) {
if (!module.webpackPolyfill) {
module.deprecate = function() {};
module.paths = [];
// module.parent = undefined by default
if (!module.children) module.children = [];
Object.defineProperty(module, "loaded", {
enumerable: true,
get: function() {
return module.l;
}
});
Object.defineProperty(module, "id", {
enumerable: true,
get: function() {
return module.i;
}
});
module.webpackPolyfill = 1;
}
return module;
};
/***/ }),
/***/ 119:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
module.exports = {
isString: function(arg) {
return typeof(arg) === 'string';
},
isObject: function(arg) {
return typeof(arg) === 'object' && arg !== null;
},
isNull: function(arg) {
return arg === null;
},
isNullOrUndefined: function(arg) {
return arg == null;
}
};
/***/ }),
/***/ 12:
/***/ (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);
}
/***/ }),
/***/ 120:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.decode = exports.parse = __webpack_require__(121);
exports.encode = exports.stringify = __webpack_require__(122);
/***/ }),
/***/ 121:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
// If obj.hasOwnProperty has been overridden, then calling
// obj.hasOwnProperty(prop) will break.
// See: https://github.com/joyent/node/issues/1707
function hasOwnProperty(obj, prop) {
return Object.prototype.hasOwnProperty.call(obj, prop);
}
module.exports = function(qs, sep, eq, options) {
sep = sep || '&';
eq = eq || '=';
var obj = {};
if (typeof qs !== 'string' || qs.length === 0) {
return obj;
}
var regexp = /\+/g;
qs = qs.split(sep);
var maxKeys = 1000;
if (options && typeof options.maxKeys === 'number') {
maxKeys = options.maxKeys;
}
var len = qs.length;
// maxKeys <= 0 means that we should not limit keys count
if (maxKeys > 0 && len > maxKeys) {
len = maxKeys;
}
for (var i = 0; i < len; ++i) {
var x = qs[i].replace(regexp, '%20'),
idx = x.indexOf(eq),
kstr, vstr, k, v;
if (idx >= 0) {
kstr = x.substr(0, idx);
vstr = x.substr(idx + 1);
} else {
kstr = x;
vstr = '';
}
k = decodeURIComponent(kstr);
v = decodeURIComponent(vstr);
if (!hasOwnProperty(obj, k)) {
obj[k] = v;
} else if (isArray(obj[k])) {
obj[k].push(v);
} else {
obj[k] = [obj[k], v];
}
}
return obj;
};
var isArray = Array.isArray || function (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
/***/ }),
/***/ 122:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var stringifyPrimitive = function(v) {
switch (typeof v) {
case 'string':
return v;
case 'boolean':
return v ? 'true' : 'false';
case 'number':
return isFinite(v) ? v : '';
default:
return '';
}
};
module.exports = function(obj, sep, eq, name) {
sep = sep || '&';
eq = eq || '=';
if (obj === null) {
obj = undefined;
}
if (typeof obj === 'object') {
return map(objectKeys(obj), function(k) {
var ks = encodeURIComponent(stringifyPrimitive(k)) + eq;
if (isArray(obj[k])) {
return map(obj[k], function(v) {
return ks + encodeURIComponent(stringifyPrimitive(v));
}).join(sep);
} else {
return ks + encodeURIComponent(stringifyPrimitive(obj[k]));
}
}).join(sep);
}
if (!name) return '';
return encodeURIComponent(stringifyPrimitive(name)) + eq +
encodeURIComponent(stringifyPrimitive(obj));
};
var isArray = Array.isArray || function (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
function map (xs, f) {
if (xs.map) return xs.map(f);
var res = [];
for (var i = 0; i < xs.length; i++) {
res.push(f(xs[i], i));
}
return res;
}
var objectKeys = Object.keys || function (obj) {
var res = [];
for (var key in obj) {
if (Object.prototype.hasOwnProperty.call(obj, key)) res.push(key);
}
return res;
};
/***/ }),
/***/ 13:
/***/ (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);
}
/***/ }),
/***/ 133:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["notices"]; }());
/***/ }),
/***/ 14:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["blocks"]; }());
/***/ }),
/***/ 15:
/***/ (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;
}
/***/ }),
/***/ 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__(34);
// 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, exports) {
(function() { module.exports = this["wp"]["keycodes"]; }());
/***/ }),
/***/ 19:
/***/ (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);
}
/***/ }),
/***/ 2:
/***/ (function(module, exports) {
(function() { module.exports = this["lodash"]; }());
/***/ }),
/***/ 20:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["richText"]; }());
/***/ }),
/***/ 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;
}
/***/ }),
/***/ 227:
/***/ (function(module, exports) {
var traverse = module.exports = function (obj) {
return new Traverse(obj);
};
function Traverse (obj) {
this.value = obj;
}
Traverse.prototype.get = function (ps) {
var node = this.value;
for (var i = 0; i < ps.length; i ++) {
var key = ps[i];
if (!node || !hasOwnProperty.call(node, key)) {
node = undefined;
break;
}
node = node[key];
}
return node;
};
Traverse.prototype.has = function (ps) {
var node = this.value;
for (var i = 0; i < ps.length; i ++) {
var key = ps[i];
if (!node || !hasOwnProperty.call(node, key)) {
return false;
}
node = node[key];
}
return true;
};
Traverse.prototype.set = function (ps, value) {
var node = this.value;
for (var i = 0; i < ps.length - 1; i ++) {
var key = ps[i];
if (!hasOwnProperty.call(node, key)) node[key] = {};
node = node[key];
}
node[ps[i]] = value;
return value;
};
Traverse.prototype.map = function (cb) {
return walk(this.value, cb, true);
};
Traverse.prototype.forEach = function (cb) {
this.value = walk(this.value, cb, false);
return this.value;
};
Traverse.prototype.reduce = function (cb, init) {
var skip = arguments.length === 1;
var acc = skip ? this.value : init;
this.forEach(function (x) {
if (!this.isRoot || !skip) {
acc = cb.call(this, acc, x);
}
});
return acc;
};
Traverse.prototype.paths = function () {
var acc = [];
this.forEach(function (x) {
acc.push(this.path);
});
return acc;
};
Traverse.prototype.nodes = function () {
var acc = [];
this.forEach(function (x) {
acc.push(this.node);
});
return acc;
};
Traverse.prototype.clone = function () {
var parents = [], nodes = [];
return (function clone (src) {
for (var i = 0; i < parents.length; i++) {
if (parents[i] === src) {
return nodes[i];
}
}
if (typeof src === 'object' && src !== null) {
var dst = copy(src);
parents.push(src);
nodes.push(dst);
forEach(objectKeys(src), function (key) {
dst[key] = clone(src[key]);
});
parents.pop();
nodes.pop();
return dst;
}
else {
return src;
}
})(this.value);
};
function walk (root, cb, immutable) {
var path = [];
var parents = [];
var alive = true;
return (function walker (node_) {
var node = immutable ? copy(node_) : node_;
var modifiers = {};
var keepGoing = true;
var state = {
node : node,
node_ : node_,
path : [].concat(path),
parent : parents[parents.length - 1],
parents : parents,
key : path.slice(-1)[0],
isRoot : path.length === 0,
level : path.length,
circular : null,
update : function (x, stopHere) {
if (!state.isRoot) {
state.parent.node[state.key] = x;
}
state.node = x;
if (stopHere) keepGoing = false;
},
'delete' : function (stopHere) {
delete state.parent.node[state.key];
if (stopHere) keepGoing = false;
},
remove : function (stopHere) {
if (isArray(state.parent.node)) {
state.parent.node.splice(state.key, 1);
}
else {
delete state.parent.node[state.key];
}
if (stopHere) keepGoing = false;
},
keys : null,
before : function (f) { modifiers.before = f },
after : function (f) { modifiers.after = f },
pre : function (f) { modifiers.pre = f },
post : function (f) { modifiers.post = f },
stop : function () { alive = false },
block : function () { keepGoing = false }
};
if (!alive) return state;
function updateState() {
if (typeof state.node === 'object' && state.node !== null) {
if (!state.keys || state.node_ !== state.node) {
state.keys = objectKeys(state.node)
}
state.isLeaf = state.keys.length == 0;
for (var i = 0; i < parents.length; i++) {
if (parents[i].node_ === node_) {
state.circular = parents[i];
break;
}
}
}
else {
state.isLeaf = true;
state.keys = null;
}
state.notLeaf = !state.isLeaf;
state.notRoot = !state.isRoot;
}
updateState();
// use return values to update if defined
var ret = cb.call(state, state.node);
if (ret !== undefined && state.update) state.update(ret);
if (modifiers.before) modifiers.before.call(state, state.node);
if (!keepGoing) return state;
if (typeof state.node == 'object'
&& state.node !== null && !state.circular) {
parents.push(state);
updateState();
forEach(state.keys, function (key, i) {
path.push(key);
if (modifiers.pre) modifiers.pre.call(state, state.node[key], key);
var child = walker(state.node[key]);
if (immutable && hasOwnProperty.call(state.node, key)) {
state.node[key] = child.node;
}
child.isLast = i == state.keys.length - 1;
child.isFirst = i == 0;
if (modifiers.post) modifiers.post.call(state, child);
path.pop();
});
parents.pop();
}
if (modifiers.after) modifiers.after.call(state, state.node);
return state;
})(root).node;
}
function copy (src) {
if (typeof src === 'object' && src !== null) {
var dst;
if (isArray(src)) {
dst = [];
}
else if (isDate(src)) {
dst = new Date(src.getTime ? src.getTime() : src);
}
else if (isRegExp(src)) {
dst = new RegExp(src);
}
else if (isError(src)) {
dst = { message: src.message };
}
else if (isBoolean(src)) {
dst = new Boolean(src);
}
else if (isNumber(src)) {
dst = new Number(src);
}
else if (isString(src)) {
dst = new String(src);
}
else if (Object.create && Object.getPrototypeOf) {
dst = Object.create(Object.getPrototypeOf(src));
}
else if (src.constructor === Object) {
dst = {};
}
else {
var proto =
(src.constructor && src.constructor.prototype)
|| src.__proto__
|| {}
;
var T = function () {};
T.prototype = proto;
dst = new T;
}
forEach(objectKeys(src), function (key) {
dst[key] = src[key];
});
return dst;
}
else return src;
}
var objectKeys = Object.keys || function keys (obj) {
var res = [];
for (var key in obj) res.push(key)
return res;
};
function toS (obj) { return Object.prototype.toString.call(obj) }
function isDate (obj) { return toS(obj) === '[object Date]' }
function isRegExp (obj) { return toS(obj) === '[object RegExp]' }
function isError (obj) { return toS(obj) === '[object Error]' }
function isBoolean (obj) { return toS(obj) === '[object Boolean]' }
function isNumber (obj) { return toS(obj) === '[object Number]' }
function isString (obj) { return toS(obj) === '[object String]' }
var isArray = Array.isArray || function isArray (xs) {
return Object.prototype.toString.call(xs) === '[object Array]';
};
var forEach = function (xs, fn) {
if (xs.forEach) return xs.forEach(fn)
else for (var i = 0; i < xs.length; i++) {
fn(xs[i], i, xs);
}
};
forEach(objectKeys(Traverse.prototype), function (key) {
traverse[key] = function (obj) {
var args = [].slice.call(arguments, 1);
var t = new Traverse(obj);
return t[key].apply(t, args);
};
});
var hasOwnProperty = Object.hasOwnProperty || function (obj, key) {
return key in obj;
};
/***/ }),
/***/ 23:
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(54);
/***/ }),
/***/ 25:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["url"]; }());
/***/ }),
/***/ 26:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["hooks"]; }());
/***/ }),
/***/ 27:
/***/ (function(module, exports) {
(function() { module.exports = this["React"]; }());
/***/ }),
/***/ 28:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
var arrayWithHoles = __webpack_require__(37);
// 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__(38);
// 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 */])();
}
/***/ }),
/***/ 3:
/***/ (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;
}
/***/ }),
/***/ 30:
/***/ (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;
});
/***/ }),
/***/ 31:
/***/ (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, isValidElement, REACT_ELEMENT_TYPE; } else {
// By explicitly using `prop-types` you are opting into new production behavior.
// http://fb.me/prop-types-in-prod
module.exports = __webpack_require__(89)();
}
/***/ }),
/***/ 32:
/***/ (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);
}
/***/ }),
/***/ 33:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["apiFetch"]; }());
/***/ }),
/***/ 34:
/***/ (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);
}
/***/ }),
/***/ 341:
/***/ (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 };
}
}
/***/ }),
/***/ 35:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["blob"]; }());
/***/ }),
/***/ 358:
/***/ (function(module, __webpack_exports__, __webpack_require__) {
"use strict";
__webpack_require__.r(__webpack_exports__);
var actions_namespaceObject = {};
__webpack_require__.r(actions_namespaceObject);
__webpack_require__.d(actions_namespaceObject, "setupEditor", function() { return setupEditor; });
__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, "__experimentalRequestPostUpdateSuccess", function() { return __experimentalRequestPostUpdateSuccess; });
__webpack_require__.d(actions_namespaceObject, "__experimentalRequestPostUpdateFailure", function() { return __experimentalRequestPostUpdateFailure; });
__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, "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, "__experimentalUpdateReusableBlockTitle", function() { return __experimentalUpdateReusableBlockTitle; });
__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 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 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, "getReferenceByDistinctEdits", function() { return getReferenceByDistinctEdits; });
__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 __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, "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 canUserUseUnfilteredHTML; });
__webpack_require__.d(selectors_namespaceObject, "isPublishSidebarEnabled", function() { return selectors_isPublishSidebarEnabled; });
__webpack_require__.d(selectors_namespaceObject, "getEditorBlocks", function() { return 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, "getBlockDependantsCacheBust", function() { return getBlockDependantsCacheBust; });
__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 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 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 selectors_isTyping; });
__webpack_require__.d(selectors_namespaceObject, "isCaretWithinFormattedText", function() { return selectors_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 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; });
// EXTERNAL MODULE: external {"this":["wp","blockEditor"]}
var external_this_wp_blockEditor_ = __webpack_require__(8);
// EXTERNAL MODULE: external {"this":["wp","blocks"]}
var external_this_wp_blocks_ = __webpack_require__(14);
// EXTERNAL MODULE: external {"this":["wp","coreData"]}
var external_this_wp_coreData_ = __webpack_require__(72);
// EXTERNAL MODULE: external {"this":["wp","notices"]}
var external_this_wp_notices_ = __webpack_require__(133);
// EXTERNAL MODULE: external {"this":["wp","nux"]}
var external_this_wp_nux_ = __webpack_require__(60);
// EXTERNAL MODULE: external {"this":["wp","richText"]}
var external_this_wp_richText_ = __webpack_require__(20);
// EXTERNAL MODULE: external {"this":["wp","viewport"]}
var external_this_wp_viewport_ = __webpack_require__(40);
// EXTERNAL MODULE: external {"this":["wp","data"]}
var external_this_wp_data_ = __webpack_require__(5);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
var slicedToArray = __webpack_require__(28);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
var defineProperty = __webpack_require__(15);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread.js
var objectSpread = __webpack_require__(7);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js
var esm_typeof = __webpack_require__(32);
// EXTERNAL MODULE: ./node_modules/redux-optimist/index.js
var redux_optimist = __webpack_require__(62);
var redux_optimist_default = /*#__PURE__*/__webpack_require__.n(redux_optimist);
// EXTERNAL MODULE: external "lodash"
var external_lodash_ = __webpack_require__(2);
// EXTERNAL MODULE: external {"this":["wp","url"]}
var external_this_wp_url_ = __webpack_require__(25);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/defaults.js
/**
* WordPress dependencies
*/
var PREFERENCES_DEFAULTS = {
isPublishSidebarEnabled: true
};
/**
* Default initial edits state.
*
* @type {Object}
*/
var INITIAL_EDITS_DEFAULTS = {};
/**
* The default post editor settings
*
* allowedBlockTypes boolean|Array Allowed block types
* richEditingEnabled boolean Whether rich 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,
enableCustomFields: false
});
// 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;
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/with-change-detection/index.js
/**
* External dependencies
*/
/**
* Higher-order reducer creator for tracking changes to state over time. The
* returned reducer will include a `isDirty` property on the object reflecting
* whether the original reference of the reducer has changed.
*
* @param {?Object} options Optional options.
* @param {?Array} options.ignoreTypes Action types upon which to skip check.
* @param {?Array} options.resetTypes Action types upon which to reset dirty.
*
* @return {Function} Higher-order reducer.
*/
var with_change_detection_withChangeDetection = function withChangeDetection() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function (reducer) {
return function (state, action) {
var nextState = reducer(state, action); // Reset at:
// - Initial state
// - Reset types
var isReset = state === undefined || Object(external_lodash_["includes"])(options.resetTypes, action.type);
var isChanging = state !== nextState; // If not intending to update dirty flag, return early and avoid clone.
if (!isChanging && !isReset) {
return state;
} // Avoid mutating state, unless it's already changing by original
// reducer and not initial.
if (!isChanging || state === undefined) {
nextState = Object(objectSpread["a" /* default */])({}, nextState);
}
var isIgnored = Object(external_lodash_["includes"])(options.ignoreTypes, action.type);
if (isIgnored) {
// Preserve the original value if ignored.
nextState.isDirty = state.isDirty;
} else {
nextState.isDirty = !isReset && isChanging;
}
return nextState;
};
};
};
/* harmony default export */ var with_change_detection = (with_change_detection_withChangeDetection);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules
var toConsumableArray = __webpack_require__(17);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/with-history/index.js
/**
* External dependencies
*/
/**
* Default options for withHistory reducer enhancer. Refer to withHistory
* documentation for options explanation.
*
* @see withHistory
*
* @type {Object}
*/
var DEFAULT_OPTIONS = {
resetTypes: [],
ignoreTypes: [],
shouldOverwriteState: function shouldOverwriteState() {
return false;
}
};
/**
* Higher-order reducer creator which transforms the result of the original
* reducer into an object tracking its own history (past, present, future).
*
* @param {?Object} options Optional options.
* @param {?Array} options.resetTypes Action types upon which to
* clear past.
* @param {?Array} options.ignoreTypes Action types upon which to
* avoid history tracking.
* @param {?Function} options.shouldOverwriteState Function receiving last and
* current actions, returning
* boolean indicating whether
* present should be merged,
* rather than add undo level.
*
* @return {Function} Higher-order reducer.
*/
var with_history_withHistory = function withHistory() {
var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
return function (reducer) {
options = Object(objectSpread["a" /* default */])({}, DEFAULT_OPTIONS, options); // `ignoreTypes` is simply a convenience for `shouldOverwriteState`
options.shouldOverwriteState = Object(external_lodash_["overSome"])([options.shouldOverwriteState, function (action) {
return Object(external_lodash_["includes"])(options.ignoreTypes, action.type);
}]);
var initialState = {
past: [],
present: reducer(undefined, {}),
future: [],
lastAction: null,
shouldCreateUndoLevel: false
};
var _options = options,
_options$resetTypes = _options.resetTypes,
resetTypes = _options$resetTypes === void 0 ? [] : _options$resetTypes,
_options$shouldOverwr = _options.shouldOverwriteState,
shouldOverwriteState = _options$shouldOverwr === void 0 ? function () {
return false;
} : _options$shouldOverwr;
return function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : initialState;
var action = arguments.length > 1 ? arguments[1] : undefined;
var past = state.past,
present = state.present,
future = state.future,
lastAction = state.lastAction,
shouldCreateUndoLevel = state.shouldCreateUndoLevel;
var previousAction = lastAction;
switch (action.type) {
case 'UNDO':
// Can't undo if no past.
if (!past.length) {
return state;
}
return {
past: Object(external_lodash_["dropRight"])(past),
present: Object(external_lodash_["last"])(past),
future: [present].concat(Object(toConsumableArray["a" /* default */])(future)),
lastAction: null,
shouldCreateUndoLevel: false
};
case 'REDO':
// Can't redo if no future.
if (!future.length) {
return state;
}
return {
past: [].concat(Object(toConsumableArray["a" /* default */])(past), [present]),
present: Object(external_lodash_["first"])(future),
future: Object(external_lodash_["drop"])(future),
lastAction: null,
shouldCreateUndoLevel: false
};
case 'CREATE_UNDO_LEVEL':
return Object(objectSpread["a" /* default */])({}, state, {
lastAction: null,
shouldCreateUndoLevel: true
});
}
var nextPresent = reducer(present, action);
if (Object(external_lodash_["includes"])(resetTypes, action.type)) {
return {
past: [],
present: nextPresent,
future: [],
lastAction: null,
shouldCreateUndoLevel: false
};
}
if (present === nextPresent) {
return state;
}
var nextPast = past; // The `lastAction` property is used to compare actions in the
// `shouldOverwriteState` option. If an action should be ignored, do not
// submit that action as the last action, otherwise the ability to
// compare subsequent actions will break.
var lastActionToSubmit = previousAction;
if (shouldCreateUndoLevel || !past.length || !shouldOverwriteState(action, previousAction)) {
nextPast = [].concat(Object(toConsumableArray["a" /* default */])(past), [present]);
lastActionToSubmit = action;
}
return {
past: nextPast,
present: nextPresent,
future: [],
shouldCreateUndoLevel: false,
lastAction: lastActionToSubmit
};
};
};
};
/* harmony default export */ var with_history = (with_history_withHistory);
// 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 an object against which it is safe to perform mutating operations,
* given the original object and its current working copy.
*
* @param {Object} original Original object.
* @param {Object} working Working object.
*
* @return {Object} Mutation-safe object.
*/
function getMutateSafeObject(original, working) {
if (original === working) {
return Object(objectSpread["a" /* default */])({}, original);
}
return working;
}
/**
* 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 reducer_shouldOverwriteState(action, previousAction) {
if (action.type === 'RESET_EDITOR_BLOCKS') {
return !action.shouldCreateUndoLevel;
}
if (!previousAction || action.type !== previousAction.type) {
return false;
}
return isUpdatingSamePostProperty(action, previousAction);
}
/**
* Undoable reducer returning the editor post state, including blocks parsed
* from current HTML markup.
*
* Handles the following state keys:
* - edits: an object describing changes to be made to the current post, in
* the format accepted by the WP REST API
* - blocks: post content blocks
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @returns {Object} Updated state.
*/
var editor = Object(external_lodash_["flow"])([external_this_wp_data_["combineReducers"], with_history({
resetTypes: ['SETUP_EDITOR_STATE'],
ignoreTypes: ['RESET_POST', 'UPDATE_POST'],
shouldOverwriteState: reducer_shouldOverwriteState
})])({
// Track whether changes exist, resetting at each post save. Relies on
// editor initialization firing post reset as an effect.
blocks: with_change_detection({
resetTypes: ['SETUP_EDITOR_STATE', 'REQUEST_POST_UPDATE_START']
})(function () {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
value: []
};
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'RESET_EDITOR_BLOCKS':
if (action.blocks === state.value) {
return state;
}
return {
value: action.blocks
};
}
return state;
}),
edits: function edits() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'EDIT_POST':
return Object(external_lodash_["reduce"])(action.edits, function (result, value, key) {
// Only assign into result if not already same value
if (value !== state[key]) {
result = getMutateSafeObject(state, result);
if (EDIT_MERGE_PROPERTIES.has(key)) {
// Merge properties should assign to current value.
result[key] = Object(objectSpread["a" /* default */])({}, result[key], value);
} else {
// Otherwise override.
result[key] = value;
}
}
return result;
}, state);
case 'UPDATE_POST':
case 'RESET_POST':
var getCanonicalValue = action.type === 'UPDATE_POST' ? function (key) {
return action.edits[key];
} : function (key) {
return getPostRawValue(action.post[key]);
};
return Object(external_lodash_["reduce"])(state, function (result, value, key) {
if (!Object(external_lodash_["isEqual"])(value, getCanonicalValue(key))) {
return result;
}
result = getMutateSafeObject(state, result);
delete result[key];
return result;
}, state);
case 'RESET_EDITOR_BLOCKS':
if ('content' in state) {
return Object(external_lodash_["omit"])(state, 'content');
}
return state;
}
return state;
}
});
/**
* Reducer returning the initial edits state. With matching shape to that of
* `editor.edits`, the initial edits are those applied programmatically, are
* not considered in prompting the user for unsaved changes, and are included
* in (and reset by) the next save payload.
*
* @param {Object} state Current state.
* @param {Object} action Action object.
*
* @return {Object} Next state.
*/
function initialEdits() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : INITIAL_EDITS_DEFAULTS;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'SETUP_EDITOR':
if (!action.edits) {
break;
}
return action.edits;
case 'SETUP_EDITOR_STATE':
if ('content' in state) {
return Object(external_lodash_["omit"])(state, 'content');
}
return state;
case 'UPDATE_POST':
return Object(external_lodash_["reduce"])(action.edits, function (result, value, key) {
if (!result.hasOwnProperty(key)) {
return result;
}
result = getMutateSafeObject(state, result);
delete result[key];
return result;
}, state);
case 'RESET_POST':
return INITIAL_EDITS_DEFAULTS;
}
return state;
}
/**
* Reducer returning the last-known state of the current post, in the format
* returned by the WP REST API.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function currentPost() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'SETUP_EDITOR_STATE':
case 'RESET_POST':
case 'UPDATE_POST':
var post;
if (action.post) {
post = action.post;
} else if (action.edits) {
post = Object(objectSpread["a" /* default */])({}, state, action.edits);
} else {
return state;
}
return Object(external_lodash_["mapValues"])(post, getPostRawValue);
}
return state;
}
/**
* Reducer returning typing state.
*
* @param {boolean} state Current state.
* @param {Object} action Dispatched action.
*
* @return {boolean} Updated state.
*/
function isTyping() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'START_TYPING':
return true;
case 'STOP_TYPING':
return false;
}
return state;
}
/**
* Reducer returning whether the caret is within formatted text.
*
* @param {boolean} state Current state.
* @param {Object} action Dispatched action.
*
* @return {boolean} Updated state.
*/
function isCaretWithinFormattedText() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'ENTER_FORMATTED_TEXT':
return true;
case 'EXIT_FORMATTED_TEXT':
return false;
}
return state;
}
/**
* Reducer returning the block selection's state.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function blockSelection() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {
start: null,
end: null,
isMultiSelecting: false,
isEnabled: true,
initialPosition: null
};
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'CLEAR_SELECTED_BLOCK':
if (state.start === null && state.end === null && !state.isMultiSelecting) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, {
start: null,
end: null,
isMultiSelecting: false,
initialPosition: null
});
case 'START_MULTI_SELECT':
if (state.isMultiSelecting) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, {
isMultiSelecting: true,
initialPosition: null
});
case 'STOP_MULTI_SELECT':
if (!state.isMultiSelecting) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, {
isMultiSelecting: false,
initialPosition: null
});
case 'MULTI_SELECT':
return Object(objectSpread["a" /* default */])({}, state, {
start: action.start,
end: action.end,
initialPosition: null
});
case 'SELECT_BLOCK':
if (action.clientId === state.start && action.clientId === state.end) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, {
start: action.clientId,
end: action.clientId,
initialPosition: action.initialPosition
});
case 'INSERT_BLOCKS':
{
if (action.updateSelection) {
return Object(objectSpread["a" /* default */])({}, state, {
start: action.blocks[0].clientId,
end: action.blocks[0].clientId,
initialPosition: null,
isMultiSelecting: false
});
}
return state;
}
case 'REMOVE_BLOCKS':
if (!action.clientIds || !action.clientIds.length || action.clientIds.indexOf(state.start) === -1) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, {
start: null,
end: null,
initialPosition: null,
isMultiSelecting: false
});
case 'REPLACE_BLOCKS':
if (action.clientIds.indexOf(state.start) === -1) {
return state;
} // If there are replacement blocks, assign last block as the next
// selected block, otherwise set to null.
var lastBlock = Object(external_lodash_["last"])(action.blocks);
var nextSelectedBlockClientId = lastBlock ? lastBlock.clientId : null;
if (nextSelectedBlockClientId === state.start && nextSelectedBlockClientId === state.end) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, {
start: nextSelectedBlockClientId,
end: nextSelectedBlockClientId,
initialPosition: null,
isMultiSelecting: false
});
case 'TOGGLE_SELECTION':
return Object(objectSpread["a" /* default */])({}, state, {
isEnabled: action.isSelectionEnabled
});
}
return state;
}
function blocksMode() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 ? arguments[1] : undefined;
if (action.type === 'TOGGLE_BLOCK_MODE') {
var clientId = action.clientId;
return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, clientId, state[clientId] && state[clientId] === 'html' ? 'visual' : 'html'));
}
return state;
}
/**
* Reducer returning the block insertion point visibility, either null if there
* is not an explicit insertion point assigned, or an object of its `index` and
* `rootClientId`.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function insertionPoint() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'SHOW_INSERTION_POINT':
var rootClientId = action.rootClientId,
index = action.index;
return {
rootClientId: rootClientId,
index: index
};
case 'HIDE_INSERTION_POINT':
return null;
}
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':
return {
requesting: true,
successful: false,
error: null,
options: action.options || {}
};
case 'REQUEST_POST_UPDATE_SUCCESS':
return {
requesting: false,
successful: true,
error: null,
options: action.options || {}
};
case 'REQUEST_POST_UPDATE_FAILURE':
return {
requesting: false,
successful: false,
error: action.error,
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;
}
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(external_lodash_["reduce"])(action.results, function (nextState, result) {
var _result$reusableBlock = result.reusableBlock,
id = _result$reusableBlock.id,
title = _result$reusableBlock.title;
var clientId = result.parsedBlock.clientId;
var value = {
clientId: clientId,
title: title
};
if (!Object(external_lodash_["isEqual"])(nextState[id], value)) {
nextState = getMutateSafeObject(state, nextState);
nextState[id] = value;
}
return nextState;
}, state);
}
case 'UPDATE_REUSABLE_BLOCK_TITLE':
{
var id = action.id,
title = action.title;
if (!state[id] || state[id].title === title) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, id, Object(objectSpread["a" /* default */])({}, state[id], {
title: title
})));
}
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, value));
}
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 an object where each key is a block client ID, its value
* representing the settings for its nested blocks.
*
* @param {Object} state Current state.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
var reducer_blockListSettings = function blockListSettings() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
// Even if the replaced blocks have the same client ID, our logic
// should correct the state.
case 'REPLACE_BLOCKS':
case 'REMOVE_BLOCKS':
{
return Object(external_lodash_["omit"])(state, action.clientIds);
}
case 'UPDATE_BLOCK_LIST_SETTINGS':
{
var clientId = action.clientId;
if (!action.settings) {
if (state.hasOwnProperty(clientId)) {
return Object(external_lodash_["omit"])(state, clientId);
}
return state;
}
if (Object(external_lodash_["isEqual"])(state[clientId], action.settings)) {
return state;
}
return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, clientId, action.settings));
}
}
return state;
};
/**
* Reducer returning the most recent autosave.
*
* @param {Object} state The autosave object.
* @param {Object} action Dispatched action.
*
* @return {Object} Updated state.
*/
function autosave() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'RESET_AUTOSAVE':
var post = action.post;
var _map = ['title', 'excerpt', 'content'].map(function (field) {
return getPostRawValue(post[field]);
}),
_map2 = Object(slicedToArray["a" /* default */])(_map, 3),
title = _map2[0],
excerpt = _map2[1],
content = _map2[2];
return {
title: title,
excerpt: excerpt,
content: content
};
}
return state;
}
/**
* Reducer returning the post preview link.
*
* @param {string?} state The preview link
* @param {Object} action Dispatched action.
*
* @return {string?} Updated state.
*/
function reducer_previewLink() {
var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
var action = arguments.length > 1 ? arguments[1] : undefined;
switch (action.type) {
case 'REQUEST_POST_UPDATE_SUCCESS':
if (action.post.preview_link) {
return action.post.preview_link;
} else if (action.post.link) {
return Object(external_this_wp_url_["addQueryArgs"])(action.post.link, {
preview: true
});
}
return state;
case 'REQUEST_POST_UPDATE_START':
// Invalidate known preview link when autosave starts.
if (state && action.options.isPreview) {
return null;
}
break;
}
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;
}
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 store_reducer = (redux_optimist_default()(Object(external_this_wp_data_["combineReducers"])({
editor: editor,
initialEdits: initialEdits,
currentPost: currentPost,
preferences: preferences,
saving: saving,
postLock: postLock,
reusableBlocks: reducer_reusableBlocks,
template: reducer_template,
autosave: autosave,
previewLink: reducer_previewLink,
postSavingLock: postSavingLock,
isReady: reducer_isReady,
editorSettings: reducer_editorSettings
})));
// EXTERNAL MODULE: ./node_modules/refx/refx.js
var refx = __webpack_require__(70);
var refx_default = /*#__PURE__*/__webpack_require__.n(refx);
// EXTERNAL MODULE: ./node_modules/redux-multi/lib/index.js
var lib = __webpack_require__(97);
var lib_default = /*#__PURE__*/__webpack_require__.n(lib);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/regenerator/index.js
var regenerator = __webpack_require__(23);
var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);
// EXTERNAL MODULE: external {"this":["wp","apiFetch"]}
var external_this_wp_apiFetch_ = __webpack_require__(33);
var external_this_wp_apiFetch_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_apiFetch_);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/controls.js
/**
* WordPress dependencies
*/
/**
* Dispatches a control action for triggering an api fetch call.
*
* @param {Object} request Arguments for the fetch request.
*
* @return {Object} control descriptor.
*/
function apiFetch(request) {
return {
type: 'API_FETCH',
request: request
};
}
/**
* Dispatches a control action for triggering a registry select.
*
* @param {string} storeKey
* @param {string} selectorName
* @param {Array} args Arguments for the select.
*
* @return {Object} control descriptor.
*/
function controls_select(storeKey, 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',
storeKey: storeKey,
selectorName: selectorName,
args: args
};
}
/**
* Dispatches a control action for triggering a registry select that has a
* resolver.
*
* @param {string} storeKey
* @param {string} selectorName
* @param {Array} args Arguments for the select.
*
* @return {Object} control descriptor.
*/
function resolveSelect(storeKey, selectorName) {
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: 'RESOLVE_SELECT',
storeKey: storeKey,
selectorName: selectorName,
args: args
};
}
/**
* Dispatches a control action for triggering a registry dispatch.
*
* @param {string} storeKey
* @param {string} actionName
* @param {Array} args Arguments for the dispatch action.
*
* @return {Object} control descriptor.
*/
function controls_dispatch(storeKey, actionName) {
for (var _len3 = arguments.length, args = new Array(_len3 > 2 ? _len3 - 2 : 0), _key3 = 2; _key3 < _len3; _key3++) {
args[_key3 - 2] = arguments[_key3];
}
return {
type: 'DISPATCH',
storeKey: storeKey,
actionName: actionName,
args: args
};
}
/* harmony default export */ var controls = ({
API_FETCH: function API_FETCH(_ref) {
var request = _ref.request;
return external_this_wp_apiFetch_default()(request);
},
SELECT: Object(external_this_wp_data_["createRegistryControl"])(function (registry) {
return function (_ref2) {
var _registry$select;
var storeKey = _ref2.storeKey,
selectorName = _ref2.selectorName,
args = _ref2.args;
return (_registry$select = registry.select(storeKey))[selectorName].apply(_registry$select, Object(toConsumableArray["a" /* default */])(args));
};
}),
DISPATCH: Object(external_this_wp_data_["createRegistryControl"])(function (registry) {
return function (_ref3) {
var _registry$dispatch;
var storeKey = _ref3.storeKey,
actionName = _ref3.actionName,
args = _ref3.args;
return (_registry$dispatch = registry.dispatch(storeKey))[actionName].apply(_registry$dispatch, Object(toConsumableArray["a" /* default */])(args));
};
}),
RESOLVE_SELECT: Object(external_this_wp_data_["createRegistryControl"])(function (registry) {
return function (_ref4) {
var storeKey = _ref4.storeKey,
selectorName = _ref4.selectorName,
args = _ref4.args;
return new Promise(function (resolve) {
var hasFinished = function hasFinished() {
return registry.select('core/data').hasFinishedResolution(storeKey, selectorName, args);
};
var getResult = function getResult() {
return registry.select(storeKey)[selectorName].apply(null, args);
}; // trigger the selector (to trigger the resolver)
var result = getResult();
if (hasFinished()) {
return resolve(result);
}
var unsubscribe = registry.subscribe(function () {
if (hasFinished()) {
unsubscribe();
resolve(getResult());
}
});
});
};
})
});
// EXTERNAL MODULE: external {"this":["wp","i18n"]}
var external_this_wp_i18n_ = __webpack_require__(1);
// 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,
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');
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
}];
}
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/actions.js
var _marked =
/*#__PURE__*/
regenerator_default.a.mark(savePost),
_marked2 =
/*#__PURE__*/
regenerator_default.a.mark(refreshPost),
_marked3 =
/*#__PURE__*/
regenerator_default.a.mark(trashPost),
_marked4 =
/*#__PURE__*/
regenerator_default.a.mark(actions_autosave);
/**
* External dependencies
*/
/**
* Internal dependencies
*/
/**
* Returns an action object 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.
*
* @return {Object} Action object.
*/
function setupEditor(post, edits, template) {
return {
type: 'SETUP_EDITOR',
post: post,
edits: edits,
template: template
};
}
/**
* 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.
*
* @param {Object} post Autosave post object.
*
* @return {Object} Action object.
*/
function resetAutosave(post) {
return {
type: 'RESET_AUTOSAVE',
post: post
};
}
/**
* Optimistic 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',
optimist: {
type: redux_optimist["BEGIN"],
id: POST_UPDATE_TRANSACTION_ID
},
options: options
};
}
/**
* Optimistic action for indicating that the request post update has completed
* successfully.
*
* @param {Object} data The data for the action.
* @param {Object} data.previousPost The previous post prior to update.
* @param {Object} data.post The new post after update
* @param {boolean} data.isRevision Whether the post is a revision or not.
* @param {Object} data.options Options passed through from the original
* action dispatch.
* @param {Object} data.postType The post type object.
*
* @return {Object} Action object.
*/
function __experimentalRequestPostUpdateSuccess(_ref) {
var previousPost = _ref.previousPost,
post = _ref.post,
isRevision = _ref.isRevision,
options = _ref.options,
postType = _ref.postType;
return {
type: 'REQUEST_POST_UPDATE_SUCCESS',
previousPost: previousPost,
post: post,
optimist: {
// Note: REVERT is not a failure case here. Rather, it
// is simply reversing the assumption that the updates
// were applied to the post proper, such that the post
// treated as having unsaved changes.
type: isRevision ? redux_optimist["REVERT"] : redux_optimist["COMMIT"],
id: POST_UPDATE_TRANSACTION_ID
},
options: options,
postType: postType
};
}
/**
* Optimistic action for indicating that the request post update has completed
* with a failure.
*
* @param {Object} data The data for the action
* @param {Object} data.post The post that failed updating.
* @param {Object} data.edits The fields that were being updated.
* @param {*} data.error The error from the failed call.
* @param {Object} data.options Options passed through from the original
* action dispatch.
* @return {Object} An action object
*/
function __experimentalRequestPostUpdateFailure(_ref2) {
var post = _ref2.post,
edits = _ref2.edits,
error = _ref2.error,
options = _ref2.options;
return {
type: 'REQUEST_POST_UPDATE_FAILURE',
optimist: {
type: redux_optimist["REVERT"],
id: POST_UPDATE_TRANSACTION_ID
},
post: post,
edits: edits,
error: error,
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.
*
* @return {Object} Action object.
*/
function actions_editPost(edits) {
return {
type: 'EDIT_POST',
edits: edits
};
}
/**
* 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,
isEditedPostSaveable,
edits,
isAutosave,
isEditedPostNew,
post,
editedPostContent,
toSend,
currentPostType,
postType,
path,
method,
autoSavePost,
newPost,
resetAction,
notifySuccessArgs,
notifyFailArgs,
_args = arguments;
return regenerator_default.a.wrap(function savePost$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
options = _args.length > 0 && _args[0] !== undefined ? _args[0] : {};
_context.next = 3;
return controls_select(STORE_KEY, 'isEditedPostSaveable');
case 3:
isEditedPostSaveable = _context.sent;
if (isEditedPostSaveable) {
_context.next = 6;
break;
}
return _context.abrupt("return");
case 6:
_context.next = 8;
return controls_select(STORE_KEY, 'getPostEdits');
case 8:
edits = _context.sent;
isAutosave = !!options.isAutosave;
if (isAutosave) {
edits = Object(external_lodash_["pick"])(edits, ['title', 'content', 'excerpt']);
}
_context.next = 13;
return controls_select(STORE_KEY, 'isEditedPostNew');
case 13:
isEditedPostNew = _context.sent;
// New posts (with auto-draft status) must be explicitly assigned draft
// status if there is not already a status assigned in edits (publish).
// Otherwise, they are wrongly left as auto-draft. Status is not always
// respected for autosaves, so it cannot simply be included in the pick
// above. This behavior relies on an assumption that an auto-draft post
// would never be saved by anyone other than the owner of the post, per
// logic within autosaves REST controller to save status field only for
// draft/auto-draft by current user.
//
// See: https://core.trac.wordpress.org/ticket/43316#comment:88
// See: https://core.trac.wordpress.org/ticket/43316#comment:89
if (isEditedPostNew) {
edits = Object(objectSpread["a" /* default */])({
status: 'draft'
}, edits);
}
_context.next = 17;
return controls_select(STORE_KEY, 'getCurrentPost');
case 17:
post = _context.sent;
_context.next = 20;
return controls_select(STORE_KEY, 'getEditedPostContent');
case 20:
editedPostContent = _context.sent;
toSend = Object(objectSpread["a" /* default */])({}, edits, {
content: editedPostContent,
id: post.id
});
_context.next = 24;
return controls_select(STORE_KEY, 'getCurrentPostType');
case 24:
currentPostType = _context.sent;
_context.next = 27;
return resolveSelect('core', 'getPostType', currentPostType);
case 27:
postType = _context.sent;
_context.next = 30;
return controls_dispatch(STORE_KEY, '__experimentalRequestPostUpdateStart', options);
case 30:
_context.next = 32;
return controls_dispatch(STORE_KEY, '__experimentalOptimisticUpdatePost', toSend);
case 32:
path = "/wp/v2/".concat(postType.rest_base, "/").concat(post.id);
method = 'PUT';
if (!isAutosave) {
_context.next = 43;
break;
}
_context.next = 37;
return controls_select(STORE_KEY, 'getAutosave');
case 37:
autoSavePost = _context.sent;
// Ensure autosaves contain all expected fields, using autosave or
// post values as fallback if not otherwise included in edits.
toSend = Object(objectSpread["a" /* default */])({}, Object(external_lodash_["pick"])(post, ['title', 'content', 'excerpt']), autoSavePost, toSend);
path += '/autosaves';
method = 'POST';
_context.next = 47;
break;
case 43:
_context.next = 45;
return controls_dispatch('core/notices', 'removeNotice', SAVE_POST_NOTICE_ID);
case 45:
_context.next = 47;
return controls_dispatch('core/notices', 'removeNotice', 'autosave-exists');
case 47:
_context.prev = 47;
_context.next = 50;
return apiFetch({
path: path,
method: method,
data: toSend
});
case 50:
newPost = _context.sent;
resetAction = isAutosave ? 'resetAutosave' : 'resetPost';
_context.next = 54;
return controls_dispatch(STORE_KEY, resetAction, newPost);
case 54:
_context.next = 56;
return controls_dispatch(STORE_KEY, '__experimentalRequestPostUpdateSuccess', {
previousPost: post,
post: newPost,
options: options,
postType: postType,
// An autosave may be processed by the server as a regular save
// when its update is requested by the author and the post was
// draft or auto-draft.
isRevision: newPost.id !== post.id
});
case 56:
notifySuccessArgs = getNotificationArgumentsForSaveSuccess({
previousPost: post,
post: newPost,
postType: postType,
options: options
});
if (!(notifySuccessArgs.length > 0)) {
_context.next = 60;
break;
}
_context.next = 60;
return controls_dispatch.apply(void 0, ['core/notices', 'createSuccessNotice'].concat(Object(toConsumableArray["a" /* default */])(notifySuccessArgs)));
case 60:
_context.next = 70;
break;
case 62:
_context.prev = 62;
_context.t0 = _context["catch"](47);
_context.next = 66;
return controls_dispatch(STORE_KEY, '__experimentalRequestPostUpdateFailure', {
post: post,
edits: edits,
error: _context.t0,
options: options
});
case 66:
notifyFailArgs = getNotificationArgumentsForSaveFail({
post: post,
edits: edits,
error: _context.t0
});
if (!(notifyFailArgs.length > 0)) {
_context.next = 70;
break;
}
_context.next = 70;
return controls_dispatch.apply(void 0, ['core/notices', 'createErrorNotice'].concat(Object(toConsumableArray["a" /* default */])(notifyFailArgs)));
case 70:
case "end":
return _context.stop();
}
}
}, _marked, this, [[47, 62]]);
}
/**
* Action generator for handling refreshing the current post.
*/
function refreshPost() {
var post, postTypeSlug, postType, newPost;
return regenerator_default.a.wrap(function refreshPost$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_context2.next = 2;
return controls_select(STORE_KEY, 'getCurrentPost');
case 2:
post = _context2.sent;
_context2.next = 5;
return controls_select(STORE_KEY, 'getCurrentPostType');
case 5:
postTypeSlug = _context2.sent;
_context2.next = 8;
return resolveSelect('core', 'getPostType', postTypeSlug);
case 8:
postType = _context2.sent;
_context2.next = 11;
return 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 = _context2.sent;
_context2.next = 14;
return controls_dispatch(STORE_KEY, 'resetPost', newPost);
case 14:
case "end":
return _context2.stop();
}
}
}, _marked2, this);
}
/**
* Action generator for trashing the current post in the editor.
*/
function trashPost() {
var postTypeSlug, postType, post;
return regenerator_default.a.wrap(function trashPost$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
_context3.next = 2;
return controls_select(STORE_KEY, 'getCurrentPostType');
case 2:
postTypeSlug = _context3.sent;
_context3.next = 5;
return resolveSelect('core', 'getPostType', postTypeSlug);
case 5:
postType = _context3.sent;
_context3.next = 8;
return controls_dispatch('core/notices', 'removeNotice', TRASH_POST_NOTICE_ID);
case 8:
_context3.prev = 8;
_context3.next = 11;
return controls_select(STORE_KEY, 'getCurrentPost');
case 11:
post = _context3.sent;
_context3.next = 14;
return apiFetch({
path: "/wp/v2/".concat(postType.rest_base, "/").concat(post.id),
method: 'DELETE'
});
case 14:
_context3.next = 16;
return controls_dispatch(STORE_KEY, 'resetPost', Object(objectSpread["a" /* default */])({}, post, {
status: 'trash'
}));
case 16:
_context3.next = 22;
break;
case 18:
_context3.prev = 18;
_context3.t0 = _context3["catch"](8);
_context3.next = 22;
return controls_dispatch.apply(void 0, ['core/notices', 'createErrorNotice'].concat(Object(toConsumableArray["a" /* default */])(getNotificationArgumentsForTrashFail({
error: _context3.t0
}))));
case 22:
case "end":
return _context3.stop();
}
}
}, _marked3, this, [[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$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_context4.next = 2;
return controls_dispatch(STORE_KEY, 'savePost', Object(objectSpread["a" /* default */])({
isAutosave: true
}, options));
case 2:
case "end":
return _context4.stop();
}
}
}, _marked4, this);
}
/**
* Returns an action object used in signalling that undo history should
* restore last popped state.
*
* @return {Object} Action object.
*/
function actions_redo() {
return {
type: 'REDO'
};
}
/**
* Returns an action object used in signalling that undo history should pop.
*
* @return {Object} Action object.
*/
function actions_undo() {
return {
type: 'UNDO'
};
}
/**
* 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's title is
* to be updated.
*
* @param {number} id The ID of the reusable block to update.
* @param {string} title The new title.
*
* @return {Object} Action object.
*/
function __experimentalUpdateReusableBlockTitle(id, title) {
return {
type: 'UPDATE_REUSABLE_BLOCK_TITLE',
id: id,
title: title
};
}
/**
* 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.
*
* @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.
*
* @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.
*
* @return {Object} Action object
*/
function actions_resetEditorBlocks(blocks) {
var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
return {
type: 'RESET_EDITOR_BLOCKS',
blocks: blocks,
shouldCreateUndoLevel: options.__unstableShouldCreateUndoLevel !== false
};
}
/*
* 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,
_args5 = arguments;
return regenerator_default.a.wrap(function _callee$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
for (_len = _args5.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
args[_key] = _args5[_key];
}
_context5.next = 3;
return controls_dispatch.apply(void 0, ['core/block-editor', name].concat(args));
case 3:
case "end":
return _context5.stop();
}
}
}, _callee, this);
})
);
};
var resetBlocks = actions_getBlockEditorAction('resetBlocks');
var receiveBlocks = actions_getBlockEditorAction('receiveBlocks');
var updateBlock = actions_getBlockEditorAction('updateBlock');
var updateBlockAttributes = actions_getBlockEditorAction('updateBlockAttributes');
var selectBlock = actions_getBlockEditorAction('selectBlock');
var startMultiSelect = actions_getBlockEditorAction('startMultiSelect');
var stopMultiSelect = actions_getBlockEditorAction('stopMultiSelect');
var multiSelect = actions_getBlockEditorAction('multiSelect');
var clearSelectedBlock = actions_getBlockEditorAction('clearSelectedBlock');
var toggleSelection = actions_getBlockEditorAction('toggleSelection');
var replaceBlocks = actions_getBlockEditorAction('replaceBlocks');
var replaceBlock = actions_getBlockEditorAction('replaceBlock');
var moveBlocksDown = actions_getBlockEditorAction('moveBlocksDown');
var moveBlocksUp = actions_getBlockEditorAction('moveBlocksUp');
var moveBlockToPosition = actions_getBlockEditorAction('moveBlockToPosition');
var insertBlock = actions_getBlockEditorAction('insertBlock');
var insertBlocks = actions_getBlockEditorAction('insertBlocks');
var showInsertionPoint = actions_getBlockEditorAction('showInsertionPoint');
var hideInsertionPoint = actions_getBlockEditorAction('hideInsertionPoint');
var setTemplateValidity = actions_getBlockEditorAction('setTemplateValidity');
var synchronizeTemplate = actions_getBlockEditorAction('synchronizeTemplate');
var mergeBlocks = actions_getBlockEditorAction('mergeBlocks');
var removeBlocks = actions_getBlockEditorAction('removeBlocks');
var removeBlock = actions_getBlockEditorAction('removeBlock');
var toggleBlockMode = actions_getBlockEditorAction('toggleBlockMode');
var startTyping = actions_getBlockEditorAction('startTyping');
var stopTyping = actions_getBlockEditorAction('stopTyping');
var enterFormattedText = actions_getBlockEditorAction('enterFormattedText');
var exitFormattedText = actions_getBlockEditorAction('exitFormattedText');
var insertDefaultBlock = actions_getBlockEditorAction('insertDefaultBlock');
var updateBlockListSettings = actions_getBlockEditorAction('updateBlockListSettings');
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js
var asyncToGenerator = __webpack_require__(44);
// EXTERNAL MODULE: ./node_modules/rememo/es/rememo.js
var rememo = __webpack_require__(30);
// EXTERNAL MODULE: external {"this":["wp","date"]}
var external_this_wp_date_ = __webpack_require__(50);
// EXTERNAL MODULE: external {"this":["wp","autop"]}
var external_this_wp_autop_ = __webpack_require__(66);
// 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 = {};
/**
* Returns true if any past editor history snapshots exist, or false otherwise.
*
* @param {Object} state Global application state.
*
* @return {boolean} Whether undo history exists.
*/
function hasEditorUndo(state) {
return state.editor.past.length > 0;
}
/**
* Returns true if any future editor history snapshots exist, or false
* otherwise.
*
* @param {Object} state Global application state.
*
* @return {boolean} Whether redo history exists.
*/
function hasEditorRedo(state) {
return state.editor.future.length > 0;
}
/**
* 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) {
return state.editor.present.blocks.isDirty || // `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 state.editor.present.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.
*/
function selectors_isEditedPostDirty(state) {
if (hasChangedContent(state)) {
return true;
} // 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.
if (Object.keys(state.editor.present.edits).length > 0) {
return true;
} // Edits and change detection are reset at the start of a save, but a post
// is still considered dirty until the point at which the save completes.
// Because the save is performed optimistically, the prior states are held
// until committed. These can be referenced to determine whether there's a
// chance that state may be reverted into one considered dirty.
return inSomeHistory(state, selectors_isEditedPostDirty);
}
/**
* 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.
*/
function selectors_getCurrentPost(state) {
return state.currentPost;
}
/**
* 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.currentPost.type;
}
/**
* 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 selectors_getCurrentPost(state).id || null;
}
/**
* 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(rememo["a" /* default */])(function (state) {
return Object(objectSpread["a" /* default */])({}, state.initialEdits, state.editor.present.edits);
}, function (state) {
return [state.editor.present.edits, state.initialEdits];
});
/**
* Returns a new reference when edited values have changed. This is useful in
* inferring where an edit has been made between states by comparison of the
* return values using strict equality.
*
* @example
*
* ```
* const hasEditOccurred = (
* getReferenceByDistinctEdits( beforeState ) !==
* getReferenceByDistinctEdits( afterState )
* );
* ```
*
* @param {Object} state Editor state.
*
* @return {*} A value whose reference will change only when an edit occurs.
*/
var getReferenceByDistinctEdits = Object(rememo["a" /* default */])(function () {
return [];
}, function (state) {
return [state.editor];
});
/**
* 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) {
var post = selectors_getCurrentPost(state);
if (post.hasOwnProperty(attributeName)) {
return 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 getNestedEditedPostProperty = Object(rememo["a" /* default */])(function (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]);
}, function (state, attributeName) {
return [Object(external_lodash_["get"])(state.editor.present.edits, [attributeName], EMPTY_OBJECT), Object(external_lodash_["get"])(state.currentPost, [attributeName], EMPTY_OBJECT)];
});
/**
* 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 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.
*
* @param {Object} state Global application state.
* @param {string} attributeName Autosave attribute name.
*
* @return {*} Autosave attribute value.
*/
function getAutosaveAttribute(state, attributeName) {
if (!hasAutosave(state)) {
return null;
}
var autosave = getAutosave(state);
if (autosave.hasOwnProperty(attributeName)) {
return 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.
*
* @return {boolean} Whether the post has been published.
*/
function selectors_isCurrentPostPublished(state) {
var post = 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 = state.editor.present.blocks.value;
if (blocks.length && !('content' in getPostEdits(state))) {
// 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.
*
* @return {boolean} Whether the post can be autosaved.
*/
function selectors_isEditedPostAutosaveable(state) {
// A post must contain a title, an excerpt, or non-empty content to be valid for autosaving.
if (!selectors_isEditedPostSaveable(state)) {
return false;
} // If we don't already have an autosave, the post is autosaveable.
if (!hasAutosave(state)) {
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, excerpt or content has changed, the post is autosaveable.
var autosave = getAutosave(state);
return ['title', 'excerpt'].some(function (field) {
return 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).
*
* @param {Object} state Editor state.
*
* @return {?Object} Current autosave, if exists.
*/
function getAutosave(state) {
return state.autosave;
}
/**
* Returns the true if there is an existing autosave, otherwise false.
*
* @param {Object} state Global application state.
*
* @return {boolean} Whether there is an existing autosave.
*/
function hasAutosave(state) {
return !!getAutosave(state);
}
/**
* 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.
*/
function selectors_isSavingPost(state) {
return state.saving.requesting;
}
/**
* 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.
*/
function didPostSaveRequestSucceed(state) {
return state.saving.successful;
}
/**
* 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.
*/
function didPostSaveRequestFail(state) {
return !!state.saving.error;
}
/**
* 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) {
return selectors_isSavingPost(state) && !!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) {
return selectors_isSavingPost(state) && !!state.saving.options.isPreview;
}
/**
* Returns the post preview link
*
* @param {Object} state Global application state.
*
* @return {string?} Preview Link.
*/
function selectors_getEditedPostPreviewLink(state) {
var featuredImageId = selectors_getEditedPostAttribute(state, 'featured_media');
var previewLink = state.previewLink;
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 = state.editor.present.blocks.value;
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.
*
* @param {Object} state Editor state.
*
* @return {WPBlock[]} Filtered set of blocks for save.
*/
function getBlocksForSerialization(state) {
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, preferring raw string edit
* before falling back to serialization of block state.
*
* @param {Object} state Global application state.
*
* @return {string} Post content.
*/
var getEditedPostContent = Object(rememo["a" /* default */])(function (state) {
var edits = getPostEdits(state);
if ('content' in edits) {
return edits.content;
}
var blocks = getBlocksForSerialization(state);
var content = Object(external_this_wp_blocks_["serialize"])(blocks); // For compatibility purposes, treat a post consisting of a single
// freeform block as legacy content and downgrade to a pre-block-editor
// removep'd content format.
var isSingleFreeformBlock = blocks.length === 1 && blocks[0].name === Object(external_this_wp_blocks_["getFreeformContentHandlerName"])();
if (isSingleFreeformBlock) {
return Object(external_this_wp_autop_["removep"])(content);
}
return content;
}, function (state) {
return [state.editor.present.blocks.value, state.editor.present.edits.content, state.initialEdits.content];
});
/**
* 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 __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(stateBeforeRequest);
}
/**
* 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 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 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 getEditorBlocks(state) {
return state.editor.present.blocks.value;
}
/**
* 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;
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);
};
});
}
var getBlockDependantsCacheBust = getBlockEditorSelector('getBlockDependantsCacheBust');
var selectors_getBlockName = getBlockEditorSelector('getBlockName');
var isBlockValid = getBlockEditorSelector('isBlockValid');
var getBlockAttributes = getBlockEditorSelector('getBlockAttributes');
var getBlock = getBlockEditorSelector('getBlock');
var selectors_getBlocks = getBlockEditorSelector('getBlocks');
var __unstableGetBlockWithoutInnerBlocks = getBlockEditorSelector('__unstableGetBlockWithoutInnerBlocks');
var getClientIdsOfDescendants = getBlockEditorSelector('getClientIdsOfDescendants');
var getClientIdsWithDescendants = getBlockEditorSelector('getClientIdsWithDescendants');
var getGlobalBlockCount = getBlockEditorSelector('getGlobalBlockCount');
var getBlocksByClientId = getBlockEditorSelector('getBlocksByClientId');
var getBlockCount = getBlockEditorSelector('getBlockCount');
var getBlockSelectionStart = getBlockEditorSelector('getBlockSelectionStart');
var getBlockSelectionEnd = getBlockEditorSelector('getBlockSelectionEnd');
var getSelectedBlockCount = getBlockEditorSelector('getSelectedBlockCount');
var hasSelectedBlock = getBlockEditorSelector('hasSelectedBlock');
var selectors_getSelectedBlockClientId = getBlockEditorSelector('getSelectedBlockClientId');
var getSelectedBlock = getBlockEditorSelector('getSelectedBlock');
var getBlockRootClientId = getBlockEditorSelector('getBlockRootClientId');
var getBlockHierarchyRootClientId = getBlockEditorSelector('getBlockHierarchyRootClientId');
var getAdjacentBlockClientId = getBlockEditorSelector('getAdjacentBlockClientId');
var getPreviousBlockClientId = getBlockEditorSelector('getPreviousBlockClientId');
var getNextBlockClientId = getBlockEditorSelector('getNextBlockClientId');
var getSelectedBlocksInitialCaretPosition = getBlockEditorSelector('getSelectedBlocksInitialCaretPosition');
var getMultiSelectedBlockClientIds = getBlockEditorSelector('getMultiSelectedBlockClientIds');
var getMultiSelectedBlocks = getBlockEditorSelector('getMultiSelectedBlocks');
var getFirstMultiSelectedBlockClientId = getBlockEditorSelector('getFirstMultiSelectedBlockClientId');
var getLastMultiSelectedBlockClientId = getBlockEditorSelector('getLastMultiSelectedBlockClientId');
var isFirstMultiSelectedBlock = getBlockEditorSelector('isFirstMultiSelectedBlock');
var isBlockMultiSelected = getBlockEditorSelector('isBlockMultiSelected');
var isAncestorMultiSelected = getBlockEditorSelector('isAncestorMultiSelected');
var getMultiSelectedBlocksStartClientId = getBlockEditorSelector('getMultiSelectedBlocksStartClientId');
var getMultiSelectedBlocksEndClientId = getBlockEditorSelector('getMultiSelectedBlocksEndClientId');
var getBlockOrder = getBlockEditorSelector('getBlockOrder');
var getBlockIndex = getBlockEditorSelector('getBlockIndex');
var isBlockSelected = getBlockEditorSelector('isBlockSelected');
var hasSelectedInnerBlock = getBlockEditorSelector('hasSelectedInnerBlock');
var isBlockWithinSelection = getBlockEditorSelector('isBlockWithinSelection');
var hasMultiSelection = getBlockEditorSelector('hasMultiSelection');
var isMultiSelecting = getBlockEditorSelector('isMultiSelecting');
var isSelectionEnabled = getBlockEditorSelector('isSelectionEnabled');
var getBlockMode = getBlockEditorSelector('getBlockMode');
var selectors_isTyping = getBlockEditorSelector('isTyping');
var selectors_isCaretWithinFormattedText = getBlockEditorSelector('isCaretWithinFormattedText');
var getBlockInsertionPoint = getBlockEditorSelector('getBlockInsertionPoint');
var isBlockInsertionPointVisible = getBlockEditorSelector('isBlockInsertionPointVisible');
var isValidTemplate = getBlockEditorSelector('isValidTemplate');
var getTemplate = getBlockEditorSelector('getTemplate');
var getTemplateLock = getBlockEditorSelector('getTemplateLock');
var canInsertBlockType = getBlockEditorSelector('canInsertBlockType');
var selectors_getInserterItems = getBlockEditorSelector('getInserterItems');
var hasInserterItems = getBlockEditorSelector('hasInserterItems');
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;
}
var parsedBlocks = Object(external_this_wp_blocks_["parse"])(post.content.raw);
return {
reusableBlock: {
id: post.id,
title: getPostRawValue(post.title)
},
parsedBlock: parsedBlocks.length === 1 ? parsedBlocks[0] : Object(external_this_wp_blocks_["createBlock"])('core/template', {}, parsedBlocks)
};
}));
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, this, [[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, clientId, title, isTemporary, reusableBlock, content, 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), clientId = _getReusableBlock.clientId, title = _getReusableBlock.title, isTemporary = _getReusableBlock.isTemporary;
reusableBlock = Object(external_this_wp_data_["select"])('core/block-editor').getBlock(clientId);
content = Object(external_this_wp_blocks_["serialize"])(reusableBlock.name === 'core/template' ? reusableBlock.innerBlocks : reusableBlock);
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 = 14;
_context2.next = 17;
return external_this_wp_apiFetch_default()({
path: path,
data: data,
method: method
});
case 17:
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
});
Object(external_this_wp_data_["dispatch"])('core/block-editor').__unstableSaveReusableBlock(id, updatedReusableBlock.id);
_context2.next = 28;
break;
case 24:
_context2.prev = 24;
_context2.t0 = _context2["catch"](14);
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 28:
case "end":
return _context2.stop();
}
}
}, _callee2, this, [[14, 24]]);
}));
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.
Object(external_this_wp_data_["dispatch"])('core/block-editor').removeBlocks([].concat(Object(toConsumableArray["a" /* default */])(associatedBlockClientIds), [reusableBlock.clientId]));
_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
});
_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, this, [[16, 24]]);
}));
return function deleteReusableBlocks(_x5, _x6) {
return _ref3.apply(this, arguments);
};
}();
/**
* Receive Reusable Blocks Effect Handler.
*
* @param {Object} action action object.
*/
var reusable_blocks_receiveReusableBlocks = function receiveReusableBlocks(action) {
Object(external_this_wp_data_["dispatch"])('core/block-editor').receiveBlocks(Object(external_lodash_["map"])(action.results, 'parsedBlock'));
};
/**
* 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 referencedBlock = Object(external_this_wp_data_["select"])('core/block-editor').getBlock(reusableBlock.clientId);
var newBlocks;
if (referencedBlock.name === 'core/template') {
newBlocks = referencedBlock.innerBlocks.map(function (innerBlock) {
return Object(external_this_wp_blocks_["cloneBlock"])(innerBlock);
});
} else {
newBlocks = [Object(external_this_wp_blocks_["cloneBlock"])(referencedBlock)];
}
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 parsedBlock;
if (action.clientIds.length === 1) {
parsedBlock = Object(external_this_wp_data_["select"])('core/block-editor').getBlock(action.clientIds[0]);
} else {
parsedBlock = Object(external_this_wp_blocks_["createBlock"])('core/template', {}, Object(external_this_wp_data_["select"])('core/block-editor').getBlocksByClientId(action.clientIds)); // This shouldn't be necessary but at the moment
// we expect the content of the shared blocks to live in the blocks state.
Object(external_this_wp_data_["dispatch"])('core/block-editor').receiveBlocks([parsedBlock]);
}
var reusableBlock = {
id: Object(external_lodash_["uniqueId"])('reusable'),
clientId: parsedBlock.clientId,
title: Object(external_this_wp_i18n_["__"])('Untitled Reusable Block')
};
dispatch(__experimentalReceiveReusableBlocks([{
reusableBlock: reusableBlock,
parsedBlock: parsedBlock
}]));
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
})); // Re-add the original block to the store, since replaceBlock() will have removed it
Object(external_this_wp_data_["dispatch"])('core/block-editor').receiveBlocks([parsedBlock]);
};
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/effects.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/* harmony default export */ var effects = ({
SETUP_EDITOR: function SETUP_EDITOR(action) {
var post = action.post,
edits = action.edits,
template = action.template; // 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.
var content;
if (Object(external_lodash_["has"])(edits, ['content'])) {
content = edits.content;
} else {
content = post.content.raw;
}
var blocks = Object(external_this_wp_blocks_["parse"])(content); // Apply a template for new posts only, if exists.
var isNewPost = post.status === 'auto-draft';
if (isNewPost && template) {
blocks = Object(external_this_wp_blocks_["synchronizeBlocksWithTemplate"])(blocks, template);
}
return [actions_resetEditorBlocks(blocks), setupEditorState(post)];
},
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);
},
RECEIVE_REUSABLE_BLOCKS: reusable_blocks_receiveReusableBlocks,
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 middlewares = [refx_default()(effects), lib_default.a];
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 chain = [];
var middlewareAPI = {
getState: store.getState,
dispatch: function dispatch() {
return enhancedDispatch.apply(void 0, arguments);
}
};
chain = middlewares.map(function (middleware) {
return middleware(middlewareAPI);
});
enhancedDispatch = external_lodash_["flowRight"].apply(void 0, Object(toConsumableArray["a" /* default */])(chain))(store.dispatch);
store.dispatch = enhancedDispatch;
return store;
}
/* harmony default export */ var store_middlewares = (applyMiddlewares);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/store/index.js
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
var store_store = Object(external_this_wp_data_["registerStore"])(STORE_KEY, {
reducer: store_reducer,
selectors: selectors_namespaceObject,
actions: actions_namespaceObject,
controls: controls,
persist: ['preferences']
});
store_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__(26);
// 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
/**
* 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;
}
/**
* 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() {
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/extends.js
var esm_extends = __webpack_require__(19);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules
var objectWithoutProperties = __webpack_require__(21);
// EXTERNAL MODULE: external {"this":["wp","components"]}
var external_this_wp_components_ = __webpack_require__(4);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/server-side-render/index.js
/**
* WordPress dependencies
*/
/* harmony default export */ var server_side_render = (function (_ref) {
var _ref$urlQueryArgs = _ref.urlQueryArgs,
urlQueryArgs = _ref$urlQueryArgs === void 0 ? {} : _ref$urlQueryArgs,
props = Object(objectWithoutProperties["a" /* default */])(_ref, ["urlQueryArgs"]);
var _select = Object(external_this_wp_data_["select"])('core/editor'),
getCurrentPostId = _select.getCurrentPostId;
urlQueryArgs = Object(objectSpread["a" /* default */])({
post_id: getCurrentPostId()
}, urlQueryArgs);
return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ServerSideRender"], Object(esm_extends["a" /* default */])({
urlQueryArgs: urlQueryArgs
}, props));
});
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
var classCallCheck = __webpack_require__(10);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
var createClass = __webpack_require__(9);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
var possibleConstructorReturn = __webpack_require__(11);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
var getPrototypeOf = __webpack_require__(12);
// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules
var inherits = __webpack_require__(13);
// EXTERNAL MODULE: external {"this":["wp","compose"]}
var external_this_wp_compose_ = __webpack_require__(6);
// 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;
clearTimeout(this.pendingSave);
var autosaveInterval = this.props.autosaveInterval;
if (isPendingSave) {
this.pendingSave = setTimeout(function () {
return _this.props.autosave();
}, autosaveInterval * 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) {
var _select = select('core/editor'),
isEditedPostDirty = _select.isEditedPostDirty,
isEditedPostAutosaveable = _select.isEditedPostAutosaveable,
getReferenceByDistinctEdits = _select.getReferenceByDistinctEdits,
isAutosavingPost = _select.isAutosavingPost;
var _select$getEditorSett = select('core/editor').getEditorSettings(),
autosaveInterval = _select$getEditorSett.autosaveInterval;
return {
isDirty: isEditedPostDirty(),
isAutosaveable: isEditedPostAutosaveable(),
editsReference: getReferenceByDistinctEdits(),
isAutosaving: isAutosavingPost(),
autosaveInterval: autosaveInterval
};
}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
return {
autosave: dispatch('core/editor').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__(3);
// EXTERNAL MODULE: external {"this":["wp","keycodes"]}
var external_this_wp_keycodes_ = __webpack_require__(18);
// EXTERNAL MODULE: external {"this":["wp","deprecated"]}
var external_this_wp_deprecated_ = __webpack_require__(49);
var external_this_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_deprecated_);
// 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 */])(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));
// 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 dismissible = _ref.dismissible,
notices = _ref.notices,
props = Object(objectWithoutProperties["a" /* default */])(_ref, ["dismissible", "notices"]);
if (dismissible !== undefined) {
notices = Object(external_lodash_["filter"])(notices, {
isDismissible: dismissible
});
}
return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NoticeList"], Object(esm_extends["a" /* default */])({
notices: notices
}, props), dismissible !== false && Object(external_this_wp_element_["createElement"])(template_validation_notice, null));
}
/* 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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.getContent = _this.getContent.bind(Object(assertThisInitialized["a" /* default */])(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/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.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));
// 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 */])(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
}, 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));
// 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,
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
}, 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,
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
/* eslint-disable jsx-a11y/no-onchange */
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))));
/* eslint-enable jsx-a11y/no-onchange */
}
/* 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 santize_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) {
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 */])(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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.receivePostLock = _this.receivePostLock.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.releasePostLock = _this.releasePostLock.bind(Object(assertThisInitialized["a" /* default */])(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);
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,
isLarge: true,
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"])(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
});
},
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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.setPrivate = _this.setPrivate.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.setPasswordProtected = _this.setPasswordProtected.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.updatePassword = _this.updatePassword.bind(Object(assertThisInitialized["a" /* default */])(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] : null;
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"])(settings.formats.datetimeAbbreviated, 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 propery 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 therm objects unscaped.
*/
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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.searchTerms = Object(external_lodash_["throttle"])(_this.searchTerms.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this))), 500);
_this.findOrCreateTerm = _this.findOrCreateTerm.bind(Object(assertThisInitialized["a" /* default */])(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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onSelectInput = _this.onSelectInput.bind(Object(assertThisInitialized["a" /* default */])(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 */])(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;
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
}, 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();
}
};
})])(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"])("span", {
className: classes
}, 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: 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: 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, _ref) {
var forceIsDirty = _ref.forceIsDirty,
forceIsSaving = _ref.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: 'medium'
})])(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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onChange = _this.onChange.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onChangeFormName = _this.onChangeFormName.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onChangeFormParent = _this.onChangeFormParent.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onAddTerm = _this.onAddTerm.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onToggleForm = _this.onToggleForm.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.setFilterValue = _this.setFilterValue.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.sortBySelected = _this.sortBySelected.bind(Object(assertThisInitialized["a" /* default */])(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(event) {
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 termId = parseInt(event.target.value, 10);
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) || 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) {
var id = "editor-post-taxonomies-hierarchical-term-".concat(term.id);
return Object(external_this_wp_element_["createElement"])("div", {
key: term.id,
className: "editor-post-taxonomies__hierarchical-terms-choice"
}, Object(external_this_wp_element_["createElement"])("input", {
id: id,
className: "editor-post-taxonomies__hierarchical-terms-input",
type: "checkbox",
checked: terms.indexOf(term.id) !== -1,
value: term.id,
onChange: _this4.onChange
}), Object(external_this_wp_element_["createElement"])("label", {
htmlFor: id
}, 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))];
/* eslint-enable jsx-a11y/no-onchange */
}
}]);
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 react_autosize_textarea_lib = __webpack_require__(61);
var react_autosize_textarea_lib_default = /*#__PURE__*/__webpack_require__.n(react_autosize_textarea_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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.stopEditing = _this.stopEditing.bind(Object(assertThisInitialized["a" /* default */])(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"])(react_autosize_textarea_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));
// EXTERNAL MODULE: external {"this":["wp","htmlEntities"]}
var external_this_wp_htmlEntities_ = __webpack_require__(57);
// 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 */])(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 post_permalink_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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onVisibilityChange = _this.onVisibilityChange.bind(Object(assertThisInitialized["a" /* default */])(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"])(post_permalink_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')), !isEditable && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
className: "editor-post-permalink__change",
isLarge: true,
href: getWPAdminURL('options-permalink.php'),
onClick: this.addVisibilityCheck,
target: "_blank"
}, Object(external_this_wp_i18n_["__"])('Change Permalinks')));
}
}]);
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 */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onSelect = _this.onSelect.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onUnselect = _this.onUnselect.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.onKeyDown = _this.onKeyDown.bind(Object(assertThisInitialized["a" /* default */])(Object(assertThisInitialized["a" /* default */])(_this)));
_this.redirectHistory = _this.redirectHistory.bind(Object(assertThisInitialized["a" /* default */])(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"])(react_autosize_textarea_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: 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__(98);
// 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 Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])("div", {
className: "table-of-contents__counts",
role: "note",
"aria-label": Object(external_this_wp_i18n_["__"])('Document Statistics'),
tabIndex: "0"
}, Object(external_this_wp_element_["createElement"])("div", {
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"])("div", {
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"])("div", {
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"])("div", {
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"])("span", {
className: "table-of-contents__title"
}, Object(external_this_wp_i18n_["__"])('Document Outline')), Object(external_this_wp_element_["createElement"])(document_outline, {
onSelect: onRequestClose,
hasOutlineItemsDisabled: hasOutlineItemsDisabled
})));
}
/* 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 */])(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));
// EXTERNAL MODULE: ./node_modules/memize/index.js
var memize = __webpack_require__(41);
var memize_default = /*#__PURE__*/__webpack_require__.n(memize);
// EXTERNAL MODULE: ./node_modules/traverse/index.js
var traverse = __webpack_require__(227);
var traverse_default = /*#__PURE__*/__webpack_require__.n(traverse);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/ast/parse.js
/* eslint-disable @wordpress/no-unused-vars-before-return */
// Adapted from https://github.com/reworkcss/css
// because we needed to remove source map support.
// http://www.w3.org/TR/CSS21/grammar.htm
// https://github.com/visionmedia/css-parse/pull/49#issuecomment-30088027
var commentre = /\/\*[^*]*\*+([^/*][^*]*\*+)*\//g;
/* harmony default export */ var parse = (function (css, options) {
options = options || {};
/**
* Positional.
*/
var lineno = 1;
var column = 1;
/**
* Update lineno and column based on `str`.
*/
function updatePosition(str) {
var lines = str.match(/\n/g);
if (lines) {
lineno += lines.length;
}
var i = str.lastIndexOf('\n'); // eslint-disable-next-line no-bitwise
column = ~i ? str.length - i : column + str.length;
}
/**
* Mark position and patch `node.position`.
*/
function position() {
var start = {
line: lineno,
column: column
};
return function (node) {
node.position = new Position(start);
whitespace();
return node;
};
}
/**
* Store position information for a node
*/
function Position(start) {
this.start = start;
this.end = {
line: lineno,
column: column
};
this.source = options.source;
}
/**
* Non-enumerable source string
*/
Position.prototype.content = css;
/**
* Error `msg`.
*/
var errorsList = [];
function error(msg) {
var err = new Error(options.source + ':' + lineno + ':' + column + ': ' + msg);
err.reason = msg;
err.filename = options.source;
err.line = lineno;
err.column = column;
err.source = css;
if (options.silent) {
errorsList.push(err);
} else {
throw err;
}
}
/**
* Parse stylesheet.
*/
function stylesheet() {
var rulesList = rules();
return {
type: 'stylesheet',
stylesheet: {
source: options.source,
rules: rulesList,
parsingErrors: errorsList
}
};
}
/**
* Opening brace.
*/
function open() {
return match(/^{\s*/);
}
/**
* Closing brace.
*/
function close() {
return match(/^}/);
}
/**
* Parse ruleset.
*/
function rules() {
var node;
var accumulator = [];
whitespace();
comments(accumulator);
while (css.length && css.charAt(0) !== '}' && (node = atrule() || rule())) {
if (node !== false) {
accumulator.push(node);
comments(accumulator);
}
}
return accumulator;
}
/**
* Match `re` and return captures.
*/
function match(re) {
var m = re.exec(css);
if (!m) {
return;
}
var str = m[0];
updatePosition(str);
css = css.slice(str.length);
return m;
}
/**
* Parse whitespace.
*/
function whitespace() {
match(/^\s*/);
}
/**
* Parse comments;
*/
function comments(accumulator) {
var c;
accumulator = accumulator || []; // eslint-disable-next-line no-cond-assign
while (c = comment()) {
if (c !== false) {
accumulator.push(c);
}
}
return accumulator;
}
/**
* Parse comment.
*/
function comment() {
var pos = position();
if ('/' !== css.charAt(0) || '*' !== css.charAt(1)) {
return;
}
var i = 2;
while ('' !== css.charAt(i) && ('*' !== css.charAt(i) || '/' !== css.charAt(i + 1))) {
++i;
}
i += 2;
if ('' === css.charAt(i - 1)) {
return error('End of comment missing');
}
var str = css.slice(2, i - 2);
column += 2;
updatePosition(str);
css = css.slice(i);
column += 2;
return pos({
type: 'comment',
comment: str
});
}
/**
* Parse selector.
*/
function selector() {
var m = match(/^([^{]+)/);
if (!m) {
return;
}
/* @fix Remove all comments from selectors
* http://ostermiller.org/findcomment.html */
return trim(m[0]).replace(/\/\*([^*]|[\r\n]|(\*+([^*/]|[\r\n])))*\*\/+/g, '').replace(/"(?:\\"|[^"])*"|'(?:\\'|[^'])*'/g, function (matched) {
return matched.replace(/,/g, "\u200C");
}).split(/\s*(?![^(]*\)),\s*/).map(function (s) {
return s.replace(/\u200C/g, ',');
});
}
/**
* Parse declaration.
*/
function declaration() {
var pos = position(); // prop
var prop = match(/^(\*?[-#\/\*\\\w]+(\[[0-9a-z_-]+\])?)\s*/);
if (!prop) {
return;
}
prop = trim(prop[0]); // :
if (!match(/^:\s*/)) {
return error("property missing ':'");
} // val
var val = match(/^((?:'(?:\\'|.)*?'|"(?:\\"|.)*?"|\([^\)]*?\)|[^};])+)/);
var ret = pos({
type: 'declaration',
property: prop.replace(commentre, ''),
value: val ? trim(val[0]).replace(commentre, '') : ''
}); // ;
match(/^[;\s]*/);
return ret;
}
/**
* Parse declarations.
*/
function declarations() {
var decls = [];
if (!open()) {
return error("missing '{'");
}
comments(decls); // declarations
var decl; // eslint-disable-next-line no-cond-assign
while (decl = declaration()) {
if (decl !== false) {
decls.push(decl);
comments(decls);
}
}
if (!close()) {
return error("missing '}'");
}
return decls;
}
/**
* Parse keyframe.
*/
function keyframe() {
var m;
var vals = [];
var pos = position(); // eslint-disable-next-line no-cond-assign
while (m = match(/^((\d+\.\d+|\.\d+|\d+)%?|[a-z]+)\s*/)) {
vals.push(m[1]);
match(/^,\s*/);
}
if (!vals.length) {
return;
}
return pos({
type: 'keyframe',
values: vals,
declarations: declarations()
});
}
/**
* Parse keyframes.
*/
function atkeyframes() {
var pos = position();
var m = match(/^@([-\w]+)?keyframes\s*/);
if (!m) {
return;
}
var vendor = m[1]; // identifier
m = match(/^([-\w]+)\s*/);
if (!m) {
return error('@keyframes missing name');
}
var name = m[1];
if (!open()) {
return error("@keyframes missing '{'");
}
var frame;
var frames = comments(); // eslint-disable-next-line no-cond-assign
while (frame = keyframe()) {
frames.push(frame);
frames = frames.concat(comments());
}
if (!close()) {
return error("@keyframes missing '}'");
}
return pos({
type: 'keyframes',
name: name,
vendor: vendor,
keyframes: frames
});
}
/**
* Parse supports.
*/
function atsupports() {
var pos = position();
var m = match(/^@supports *([^{]+)/);
if (!m) {
return;
}
var supports = trim(m[1]);
if (!open()) {
return error("@supports missing '{'");
}
var style = comments().concat(rules());
if (!close()) {
return error("@supports missing '}'");
}
return pos({
type: 'supports',
supports: supports,
rules: style
});
}
/**
* Parse host.
*/
function athost() {
var pos = position();
var m = match(/^@host\s*/);
if (!m) {
return;
}
if (!open()) {
return error("@host missing '{'");
}
var style = comments().concat(rules());
if (!close()) {
return error("@host missing '}'");
}
return pos({
type: 'host',
rules: style
});
}
/**
* Parse media.
*/
function atmedia() {
var pos = position();
var m = match(/^@media *([^{]+)/);
if (!m) {
return;
}
var media = trim(m[1]);
if (!open()) {
return error("@media missing '{'");
}
var style = comments().concat(rules());
if (!close()) {
return error("@media missing '}'");
}
return pos({
type: 'media',
media: media,
rules: style
});
}
/**
* Parse custom-media.
*/
function atcustommedia() {
var pos = position();
var m = match(/^@custom-media\s+(--[^\s]+)\s*([^{;]+);/);
if (!m) {
return;
}
return pos({
type: 'custom-media',
name: trim(m[1]),
media: trim(m[2])
});
}
/**
* Parse paged media.
*/
function atpage() {
var pos = position();
var m = match(/^@page */);
if (!m) {
return;
}
var sel = selector() || [];
if (!open()) {
return error("@page missing '{'");
}
var decls = comments(); // declarations
var decl; // eslint-disable-next-line no-cond-assign
while (decl = declaration()) {
decls.push(decl);
decls = decls.concat(comments());
}
if (!close()) {
return error("@page missing '}'");
}
return pos({
type: 'page',
selectors: sel,
declarations: decls
});
}
/**
* Parse document.
*/
function atdocument() {
var pos = position();
var m = match(/^@([-\w]+)?document *([^{]+)/);
if (!m) {
return;
}
var vendor = trim(m[1]);
var doc = trim(m[2]);
if (!open()) {
return error("@document missing '{'");
}
var style = comments().concat(rules());
if (!close()) {
return error("@document missing '}'");
}
return pos({
type: 'document',
document: doc,
vendor: vendor,
rules: style
});
}
/**
* Parse font-face.
*/
function atfontface() {
var pos = position();
var m = match(/^@font-face\s*/);
if (!m) {
return;
}
if (!open()) {
return error("@font-face missing '{'");
}
var decls = comments(); // declarations
var decl; // eslint-disable-next-line no-cond-assign
while (decl = declaration()) {
decls.push(decl);
decls = decls.concat(comments());
}
if (!close()) {
return error("@font-face missing '}'");
}
return pos({
type: 'font-face',
declarations: decls
});
}
/**
* Parse import
*/
var atimport = _compileAtrule('import');
/**
* Parse charset
*/
var atcharset = _compileAtrule('charset');
/**
* Parse namespace
*/
var atnamespace = _compileAtrule('namespace');
/**
* Parse non-block at-rules
*/
function _compileAtrule(name) {
var re = new RegExp('^@' + name + '\\s*([^;]+);');
return function () {
var pos = position();
var m = match(re);
if (!m) {
return;
}
var ret = {
type: name
};
ret[name] = m[1].trim();
return pos(ret);
};
}
/**
* Parse at rule.
*/
function atrule() {
if (css[0] !== '@') {
return;
}
return atkeyframes() || atmedia() || atcustommedia() || atsupports() || atimport() || atcharset() || atnamespace() || atdocument() || atpage() || athost() || atfontface();
}
/**
* Parse rule.
*/
function rule() {
var pos = position();
var sel = selector();
if (!sel) {
return error('selector missing');
}
comments();
return pos({
type: 'rule',
selectors: sel,
declarations: declarations()
});
}
return addParent(stylesheet());
});
/**
* Trim `str`.
*/
function trim(str) {
return str ? str.replace(/^\s+|\s+$/g, '') : '';
}
/**
* Adds non-enumerable parent node reference to each node.
*/
function addParent(obj, parent) {
var isNode = obj && typeof obj.type === 'string';
var childParent = isNode ? obj : parent;
for (var k in obj) {
var value = obj[k];
if (Array.isArray(value)) {
value.forEach(function (v) {
addParent(v, childParent);
});
} else if (value && Object(esm_typeof["a" /* default */])(value) === 'object') {
addParent(value, childParent);
}
}
if (isNode) {
Object.defineProperty(obj, 'parent', {
configurable: true,
writable: true,
enumerable: false,
value: parent || null
});
}
return obj;
}
// EXTERNAL MODULE: ./node_modules/inherits/inherits_browser.js
var inherits_browser = __webpack_require__(109);
var inherits_browser_default = /*#__PURE__*/__webpack_require__.n(inherits_browser);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/ast/stringify/compiler.js
// Adapted from https://github.com/reworkcss/css
// because we needed to remove source map support.
/**
* Expose `Compiler`.
*/
/* harmony default export */ var stringify_compiler = (Compiler);
/**
* Initialize a compiler.
*
* @param {Type} name
* @return {Type}
* @api public
*/
function Compiler(opts) {
this.options = opts || {};
}
/**
* Emit `str`
*/
Compiler.prototype.emit = function (str) {
return str;
};
/**
* Visit `node`.
*/
Compiler.prototype.visit = function (node) {
return this[node.type](node);
};
/**
* Map visit over array of `nodes`, optionally using a `delim`
*/
Compiler.prototype.mapVisit = function (nodes, delim) {
var buf = '';
delim = delim || '';
for (var i = 0, length = nodes.length; i < length; i++) {
buf += this.visit(nodes[i]);
if (delim && i < length - 1) {
buf += this.emit(delim);
}
}
return buf;
};
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/ast/stringify/compress.js
// Adapted from https://github.com/reworkcss/css
// because we needed to remove source map support.
/**
* External dependencies
*/
/**
* Internal dependencies
*/
/**
* Expose compiler.
*/
/* harmony default export */ var compress = (compress_Compiler);
/**
* Initialize a new `Compiler`.
*/
function compress_Compiler(options) {
stringify_compiler.call(this, options);
}
/**
* Inherit from `Base.prototype`.
*/
inherits_browser_default()(compress_Compiler, stringify_compiler);
/**
* Compile `node`.
*/
compress_Compiler.prototype.compile = function (node) {
return node.stylesheet.rules.map(this.visit, this).join('');
};
/**
* Visit comment node.
*/
compress_Compiler.prototype.comment = function (node) {
return this.emit('', node.position);
};
/**
* Visit import node.
*/
compress_Compiler.prototype.import = function (node) {
return this.emit('@import ' + node.import + ';', node.position);
};
/**
* Visit media node.
*/
compress_Compiler.prototype.media = function (node) {
return this.emit('@media ' + node.media, node.position) + this.emit('{') + this.mapVisit(node.rules) + this.emit('}');
};
/**
* Visit document node.
*/
compress_Compiler.prototype.document = function (node) {
var doc = '@' + (node.vendor || '') + 'document ' + node.document;
return this.emit(doc, node.position) + this.emit('{') + this.mapVisit(node.rules) + this.emit('}');
};
/**
* Visit charset node.
*/
compress_Compiler.prototype.charset = function (node) {
return this.emit('@charset ' + node.charset + ';', node.position);
};
/**
* Visit namespace node.
*/
compress_Compiler.prototype.namespace = function (node) {
return this.emit('@namespace ' + node.namespace + ';', node.position);
};
/**
* Visit supports node.
*/
compress_Compiler.prototype.supports = function (node) {
return this.emit('@supports ' + node.supports, node.position) + this.emit('{') + this.mapVisit(node.rules) + this.emit('}');
};
/**
* Visit keyframes node.
*/
compress_Compiler.prototype.keyframes = function (node) {
return this.emit('@' + (node.vendor || '') + 'keyframes ' + node.name, node.position) + this.emit('{') + this.mapVisit(node.keyframes) + this.emit('}');
};
/**
* Visit keyframe node.
*/
compress_Compiler.prototype.keyframe = function (node) {
var decls = node.declarations;
return this.emit(node.values.join(','), node.position) + this.emit('{') + this.mapVisit(decls) + this.emit('}');
};
/**
* Visit page node.
*/
compress_Compiler.prototype.page = function (node) {
var sel = node.selectors.length ? node.selectors.join(', ') : '';
return this.emit('@page ' + sel, node.position) + this.emit('{') + this.mapVisit(node.declarations) + this.emit('}');
};
/**
* Visit font-face node.
*/
compress_Compiler.prototype['font-face'] = function (node) {
return this.emit('@font-face', node.position) + this.emit('{') + this.mapVisit(node.declarations) + this.emit('}');
};
/**
* Visit host node.
*/
compress_Compiler.prototype.host = function (node) {
return this.emit('@host', node.position) + this.emit('{') + this.mapVisit(node.rules) + this.emit('}');
};
/**
* Visit custom-media node.
*/
compress_Compiler.prototype['custom-media'] = function (node) {
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
};
/**
* Visit rule node.
*/
compress_Compiler.prototype.rule = function (node) {
var decls = node.declarations;
if (!decls.length) {
return '';
}
return this.emit(node.selectors.join(','), node.position) + this.emit('{') + this.mapVisit(decls) + this.emit('}');
};
/**
* Visit declaration node.
*/
compress_Compiler.prototype.declaration = function (node) {
return this.emit(node.property + ':' + node.value, node.position) + this.emit(';');
};
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/ast/stringify/identity.js
/* eslint-disable @wordpress/no-unused-vars-before-return */
// Adapted from https://github.com/reworkcss/css
// because we needed to remove source map support.
/**
* External dependencies
*/
/**
* Internal dependencies
*/
/**
* Expose compiler.
*/
/* harmony default export */ var identity = (identity_Compiler);
/**
* Initialize a new `Compiler`.
*/
function identity_Compiler(options) {
options = options || {};
stringify_compiler.call(this, options);
this.indentation = options.indent;
}
/**
* Inherit from `Base.prototype`.
*/
inherits_browser_default()(identity_Compiler, stringify_compiler);
/**
* Compile `node`.
*/
identity_Compiler.prototype.compile = function (node) {
return this.stylesheet(node);
};
/**
* Visit stylesheet node.
*/
identity_Compiler.prototype.stylesheet = function (node) {
return this.mapVisit(node.stylesheet.rules, '\n\n');
};
/**
* Visit comment node.
*/
identity_Compiler.prototype.comment = function (node) {
return this.emit(this.indent() + '/*' + node.comment + '*/', node.position);
};
/**
* Visit import node.
*/
identity_Compiler.prototype.import = function (node) {
return this.emit('@import ' + node.import + ';', node.position);
};
/**
* Visit media node.
*/
identity_Compiler.prototype.media = function (node) {
return this.emit('@media ' + node.media, node.position) + this.emit(' {\n' + this.indent(1)) + this.mapVisit(node.rules, '\n\n') + this.emit(this.indent(-1) + '\n}');
};
/**
* Visit document node.
*/
identity_Compiler.prototype.document = function (node) {
var doc = '@' + (node.vendor || '') + 'document ' + node.document;
return this.emit(doc, node.position) + this.emit(' ' + ' {\n' + this.indent(1)) + this.mapVisit(node.rules, '\n\n') + this.emit(this.indent(-1) + '\n}');
};
/**
* Visit charset node.
*/
identity_Compiler.prototype.charset = function (node) {
return this.emit('@charset ' + node.charset + ';', node.position);
};
/**
* Visit namespace node.
*/
identity_Compiler.prototype.namespace = function (node) {
return this.emit('@namespace ' + node.namespace + ';', node.position);
};
/**
* Visit supports node.
*/
identity_Compiler.prototype.supports = function (node) {
return this.emit('@supports ' + node.supports, node.position) + this.emit(' {\n' + this.indent(1)) + this.mapVisit(node.rules, '\n\n') + this.emit(this.indent(-1) + '\n}');
};
/**
* Visit keyframes node.
*/
identity_Compiler.prototype.keyframes = function (node) {
return this.emit('@' + (node.vendor || '') + 'keyframes ' + node.name, node.position) + this.emit(' {\n' + this.indent(1)) + this.mapVisit(node.keyframes, '\n') + this.emit(this.indent(-1) + '}');
};
/**
* Visit keyframe node.
*/
identity_Compiler.prototype.keyframe = function (node) {
var decls = node.declarations;
return this.emit(this.indent()) + this.emit(node.values.join(', '), node.position) + this.emit(' {\n' + this.indent(1)) + this.mapVisit(decls, '\n') + this.emit(this.indent(-1) + '\n' + this.indent() + '}\n');
};
/**
* Visit page node.
*/
identity_Compiler.prototype.page = function (node) {
var sel = node.selectors.length ? node.selectors.join(', ') + ' ' : '';
return this.emit('@page ' + sel, node.position) + this.emit('{\n') + this.emit(this.indent(1)) + this.mapVisit(node.declarations, '\n') + this.emit(this.indent(-1)) + this.emit('\n}');
};
/**
* Visit font-face node.
*/
identity_Compiler.prototype['font-face'] = function (node) {
return this.emit('@font-face ', node.position) + this.emit('{\n') + this.emit(this.indent(1)) + this.mapVisit(node.declarations, '\n') + this.emit(this.indent(-1)) + this.emit('\n}');
};
/**
* Visit host node.
*/
identity_Compiler.prototype.host = function (node) {
return this.emit('@host', node.position) + this.emit(' {\n' + this.indent(1)) + this.mapVisit(node.rules, '\n\n') + this.emit(this.indent(-1) + '\n}');
};
/**
* Visit custom-media node.
*/
identity_Compiler.prototype['custom-media'] = function (node) {
return this.emit('@custom-media ' + node.name + ' ' + node.media + ';', node.position);
};
/**
* Visit rule node.
*/
identity_Compiler.prototype.rule = function (node) {
var indent = this.indent();
var decls = node.declarations;
if (!decls.length) {
return '';
}
return this.emit(node.selectors.map(function (s) {
return indent + s;
}).join(',\n'), node.position) + this.emit(' {\n') + this.emit(this.indent(1)) + this.mapVisit(decls, '\n') + this.emit(this.indent(-1)) + this.emit('\n' + this.indent() + '}');
};
/**
* Visit declaration node.
*/
identity_Compiler.prototype.declaration = function (node) {
return this.emit(this.indent()) + this.emit(node.property + ': ' + node.value, node.position) + this.emit(';');
};
/**
* Increase, decrease or return current indentation.
*/
identity_Compiler.prototype.indent = function (level) {
this.level = this.level || 1;
if (null !== level) {
this.level += level;
return '';
}
return Array(this.level).join(this.indentation || ' ');
};
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/ast/stringify/index.js
// Adapted from https://github.com/reworkcss/css
// because we needed to remove source map support.
/**
* Internal dependencies
*/
/**
* Stringfy the given AST `node`.
*
* Options:
*
* - `compress` space-optimized output
* - `sourcemap` return an object with `.code` and `.map`
*
* @param {Object} node
* @param {Object} [options]
* @return {String}
* @api public
*/
/* harmony default export */ var stringify = (function (node, options) {
options = options || {};
var compiler = options.compress ? new compress(options) : new identity(options);
var code = compiler.compile(node);
return code;
});
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/ast/index.js
// Adapted from https://github.com/reworkcss/css
// because we needed to remove source map support.
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/traverse.js
/**
* External dependencies
*/
/**
* Internal dependencies
*/
function traverseCSS(css, callback) {
try {
var parsed = parse(css);
var updated = traverse_default.a.map(parsed, function (node) {
if (!node) {
return node;
}
var updatedNode = callback(node);
return this.update(updatedNode);
});
return stringify(updated);
} catch (err) {
// eslint-disable-next-line no-console
console.warn('Error while traversing the CSS: ' + err);
return null;
}
}
/* harmony default export */ var editor_styles_traverse = (traverseCSS);
// EXTERNAL MODULE: ./node_modules/url/url.js
var url = __webpack_require__(84);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/transforms/url-rewrite.js
/**
* External dependencies
*/
/**
* Return `true` if the given path is http/https.
*
* @param {string} filePath path
*
* @return {boolean} is remote path.
*/
function isRemotePath(filePath) {
return /^(?:https?:)?\/\//.test(filePath);
}
/**
* Return `true` if the given filePath is an absolute url.
*
* @param {string} filePath path
*
* @return {boolean} is absolute path.
*/
function isAbsolutePath(filePath) {
return /^\/(?!\/)/.test(filePath);
}
/**
* Whether or not the url should be inluded.
*
* @param {Object} meta url meta info
*
* @return {boolean} is valid.
*/
function isValidURL(meta) {
// ignore hashes or data uris
if (meta.value.indexOf('data:') === 0 || meta.value.indexOf('#') === 0) {
return false;
}
if (isAbsolutePath(meta.value)) {
return false;
} // do not handle the http/https urls if `includeRemote` is false
if (isRemotePath(meta.value)) {
return false;
}
return true;
}
/**
* Get the absolute path of the url, relative to the basePath
*
* @param {string} str the url
* @param {string} baseURL base URL
* @param {string} absolutePath the absolute path
*
* @return {string} the full path to the file
*/
function getResourcePath(str, baseURL) {
var pathname = Object(url["parse"])(str).pathname;
var filePath = Object(url["resolve"])(baseURL, pathname);
return filePath;
}
/**
* Process the single `url()` pattern
*
* @param {string} baseURL the base URL for relative URLs
* @return {Promise} the Promise
*/
function processURL(baseURL) {
return function (meta) {
var URL = getResourcePath(meta.value, baseURL);
return Object(objectSpread["a" /* default */])({}, meta, {
newUrl: 'url(' + meta.before + meta.quote + URL + meta.quote + meta.after + ')'
});
};
}
/**
* Get all `url()`s, and return the meta info
*
* @param {string} value decl.value
*
* @return {Array} the urls
*/
function getURLs(value) {
var reg = /url\((\s*)(['"]?)(.+?)\2(\s*)\)/g;
var match;
var URLs = [];
while ((match = reg.exec(value)) !== null) {
var meta = {
source: match[0],
before: match[1],
quote: match[2],
value: match[3],
after: match[4]
};
if (isValidURL(meta)) {
URLs.push(meta);
}
}
return URLs;
}
/**
* Replace the raw value's `url()` segment to the new value
*
* @param {string} raw the raw value
* @param {Array} URLs the URLs to replace
*
* @return {string} the new value
*/
function replaceURLs(raw, URLs) {
URLs.forEach(function (item) {
raw = raw.replace(item.source, item.newUrl);
});
return raw;
}
var url_rewrite_rewrite = function rewrite(rootURL) {
return function (node) {
if (node.type === 'declaration') {
var updatedURLs = getURLs(node.value).map(processURL(rootURL));
return Object(objectSpread["a" /* default */])({}, node, {
value: replaceURLs(node.value, updatedURLs)
});
}
return node;
};
};
/* harmony default export */ var url_rewrite = (url_rewrite_rewrite);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/transforms/wrap.js
/**
* External dependencies
*/
/**
* @const string IS_ROOT_TAG Regex to check if the selector is a root tag selector.
*/
var IS_ROOT_TAG = /^(body|html|:root).*$/;
var wrap_wrap = function wrap(namespace) {
var ignore = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
return function (node) {
var updateSelector = function updateSelector(selector) {
if (Object(external_lodash_["includes"])(ignore, selector.trim())) {
return selector;
} // Anything other than a root tag is always prefixed.
{
if (!selector.match(IS_ROOT_TAG)) {
return namespace + ' ' + selector;
}
} // HTML and Body elements cannot be contained within our container so lets extract their styles.
return selector.replace(/^(body|html|:root)/, namespace);
};
if (node.type === 'rule') {
return Object(objectSpread["a" /* default */])({}, node, {
selectors: node.selectors.map(updateSelector)
});
}
return node;
};
};
/* harmony default export */ var transforms_wrap = (wrap_wrap);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/editor-styles/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/**
* Convert css rules.
*
* @param {Array} styles CSS rules.
* @param {string} wrapperClassName Wrapper Class Name.
* @return {Array} converted rules.
*/
var editor_styles_transformStyles = function transformStyles(styles) {
var wrapperClassName = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
return Object(external_lodash_["map"])(styles, function (_ref) {
var css = _ref.css,
baseURL = _ref.baseURL;
var transforms = [];
if (wrapperClassName) {
transforms.push(transforms_wrap(wrapperClassName));
}
if (baseURL) {
transforms.push(url_rewrite(baseURL));
}
if (transforms.length) {
return editor_styles_traverse(css, Object(external_this_wp_compose_["compose"])(transforms));
}
return css;
});
};
/* harmony default export */ var editor_styles = (editor_styles_transformStyles);
// EXTERNAL MODULE: external {"this":["wp","blob"]}
var external_this_wp_blob_ = __webpack_require__(35);
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/media-upload/media-upload.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Browsers may use unexpected mime types, and they differ from browser to browser.
* This function computes a flexible array of mime types from the mime type structured provided by the server.
* Converts { jpg|jpeg|jpe: "image/jpeg" } into [ "image/jpeg", "image/jpg", "image/jpeg", "image/jpe" ]
* The computation of this array instead of directly using the object,
* solves the problem in chrome where mp3 files have audio/mp3 as mime type instead of audio/mpeg.
* https://bugs.chromium.org/p/chromium/issues/detail?id=227004
*
* @param {?Object} wpMimeTypesObject Mime type object received from the server.
* Extensions are keys separated by '|' and values are mime types associated with an extension.
*
* @return {?Array} An array of mime types or the parameter passed if it was "falsy".
*/
function getMimeTypesArray(wpMimeTypesObject) {
if (!wpMimeTypesObject) {
return wpMimeTypesObject;
}
return Object(external_lodash_["flatMap"])(wpMimeTypesObject, function (mime, extensionsString) {
var _mime$split = mime.split('/'),
_mime$split2 = Object(slicedToArray["a" /* default */])(_mime$split, 1),
type = _mime$split2[0];
var extensions = extensionsString.split('|');
return [mime].concat(Object(toConsumableArray["a" /* default */])(Object(external_lodash_["map"])(extensions, function (extension) {
return "".concat(type, "/").concat(extension);
})));
});
}
/**
* Media Upload is used by audio, image, gallery, video, and file blocks to
* handle uploading a media file when a file upload button is activated.
*
* TODO: future enhancement to add an upload indicator.
*
* @param {Object} $0 Parameters object passed to the function.
* @param {?Array} $0.allowedTypes Array with the types of media that can be uploaded, if unset all types are allowed.
* @param {?Object} $0.additionalData Additional data to include in the request.
* @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.
* @param {?Object} $0.wpAllowedMimeTypes List of allowed mime types and file extensions.
*/
function mediaUpload(_x) {
return _mediaUpload.apply(this, arguments);
}
/**
* @param {File} file Media File to Save.
* @param {?Object} additionalData Additional data to include in the request.
*
* @return {Promise} Media Object Promise.
*/
function _mediaUpload() {
_mediaUpload = Object(asyncToGenerator["a" /* default */])(
/*#__PURE__*/
regenerator_default.a.mark(function _callee(_ref) {
var allowedTypes, _ref$additionalData, additionalData, filesList, maxUploadFileSize, _ref$onError, onError, onFileChange, _ref$wpAllowedMimeTyp, wpAllowedMimeTypes, files, filesSet, setAndUpdateFiles, isAllowedType, allowedMimeTypesForUser, isAllowedMimeTypeForUser, triggerError, validFiles, _iteratorNormalCompletion, _didIteratorError, _iteratorError, _iterator, _step, _mediaFile, idx, mediaFile, savedMedia, mediaObject, message;
return regenerator_default.a.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
allowedTypes = _ref.allowedTypes, _ref$additionalData = _ref.additionalData, additionalData = _ref$additionalData === void 0 ? {} : _ref$additionalData, filesList = _ref.filesList, maxUploadFileSize = _ref.maxUploadFileSize, _ref$onError = _ref.onError, onError = _ref$onError === void 0 ? external_lodash_["noop"] : _ref$onError, onFileChange = _ref.onFileChange, _ref$wpAllowedMimeTyp = _ref.wpAllowedMimeTypes, wpAllowedMimeTypes = _ref$wpAllowedMimeTyp === void 0 ? null : _ref$wpAllowedMimeTyp;
// Cast filesList to array
files = Object(toConsumableArray["a" /* default */])(filesList);
filesSet = [];
setAndUpdateFiles = function setAndUpdateFiles(idx, value) {
Object(external_this_wp_blob_["revokeBlobURL"])(Object(external_lodash_["get"])(filesSet, [idx, 'url']));
filesSet[idx] = value;
onFileChange(Object(external_lodash_["compact"])(filesSet));
}; // Allowed type specified by consumer
isAllowedType = function isAllowedType(fileType) {
if (!allowedTypes) {
return true;
}
return Object(external_lodash_["some"])(allowedTypes, function (allowedType) {
// If a complete mimetype is specified verify if it matches exactly the mime type of the file.
if (Object(external_lodash_["includes"])(allowedType, '/')) {
return allowedType === fileType;
} // Otherwise a general mime type is used and we should verify if the file mimetype starts with it.
return Object(external_lodash_["startsWith"])(fileType, "".concat(allowedType, "/"));
});
}; // Allowed types for the current WP_User
allowedMimeTypesForUser = getMimeTypesArray(wpAllowedMimeTypes);
isAllowedMimeTypeForUser = function isAllowedMimeTypeForUser(fileType) {
return Object(external_lodash_["includes"])(allowedMimeTypesForUser, fileType);
}; // Build the error message including the filename
triggerError = function triggerError(error) {
error.message = [Object(external_this_wp_element_["createElement"])("strong", {
key: "filename"
}, error.file.name), ': ', error.message];
onError(error);
};
validFiles = [];
_iteratorNormalCompletion = true;
_didIteratorError = false;
_iteratorError = undefined;
_context.prev = 12;
_iterator = files[Symbol.iterator]();
case 14:
if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
_context.next = 34;
break;
}
_mediaFile = _step.value;
if (!(allowedMimeTypesForUser && !isAllowedMimeTypeForUser(_mediaFile.type))) {
_context.next = 19;
break;
}
triggerError({
code: 'MIME_TYPE_NOT_ALLOWED_FOR_USER',
message: Object(external_this_wp_i18n_["__"])('Sorry, this file type is not permitted for security reasons.'),
file: _mediaFile
});
return _context.abrupt("continue", 31);
case 19:
if (isAllowedType(_mediaFile.type)) {
_context.next = 22;
break;
}
triggerError({
code: 'MIME_TYPE_NOT_SUPPORTED',
message: Object(external_this_wp_i18n_["__"])('Sorry, this file type is not supported here.'),
file: _mediaFile
});
return _context.abrupt("continue", 31);
case 22:
if (!(maxUploadFileSize && _mediaFile.size > maxUploadFileSize)) {
_context.next = 25;
break;
}
triggerError({
code: 'SIZE_ABOVE_LIMIT',
message: Object(external_this_wp_i18n_["__"])('This file exceeds the maximum upload size for this site.'),
file: _mediaFile
});
return _context.abrupt("continue", 31);
case 25:
if (!(_mediaFile.size <= 0)) {
_context.next = 28;
break;
}
triggerError({
code: 'EMPTY_FILE',
message: Object(external_this_wp_i18n_["__"])('This file is empty.'),
file: _mediaFile
});
return _context.abrupt("continue", 31);
case 28:
validFiles.push(_mediaFile); // Set temporary URL to create placeholder media file, this is replaced
// with final file from media gallery when upload is `done` below
filesSet.push({
url: Object(external_this_wp_blob_["createBlobURL"])(_mediaFile)
});
onFileChange(filesSet);
case 31:
_iteratorNormalCompletion = true;
_context.next = 14;
break;
case 34:
_context.next = 40;
break;
case 36:
_context.prev = 36;
_context.t0 = _context["catch"](12);
_didIteratorError = true;
_iteratorError = _context.t0;
case 40:
_context.prev = 40;
_context.prev = 41;
if (!_iteratorNormalCompletion && _iterator.return != null) {
_iterator.return();
}
case 43:
_context.prev = 43;
if (!_didIteratorError) {
_context.next = 46;
break;
}
throw _iteratorError;
case 46:
return _context.finish(43);
case 47:
return _context.finish(40);
case 48:
idx = 0;
case 49:
if (!(idx < validFiles.length)) {
_context.next = 68;
break;
}
mediaFile = validFiles[idx];
_context.prev = 51;
_context.next = 54;
return createMediaFromFile(mediaFile, additionalData);
case 54:
savedMedia = _context.sent;
mediaObject = Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(savedMedia, ['alt_text', 'source_url']), {
alt: savedMedia.alt_text,
caption: Object(external_lodash_["get"])(savedMedia, ['caption', 'raw'], ''),
title: savedMedia.title.raw,
url: savedMedia.source_url
});
setAndUpdateFiles(idx, mediaObject);
_context.next = 65;
break;
case 59:
_context.prev = 59;
_context.t1 = _context["catch"](51);
// Reset to empty on failure.
setAndUpdateFiles(idx, null);
message = void 0;
if (Object(external_lodash_["has"])(_context.t1, ['message'])) {
message = Object(external_lodash_["get"])(_context.t1, ['message']);
} else {
message = Object(external_this_wp_i18n_["sprintf"])( // translators: %s: file name
Object(external_this_wp_i18n_["__"])('Error while uploading file %s to the media library.'), mediaFile.name);
}
onError({
code: 'GENERAL',
message: message,
file: mediaFile
});
case 65:
++idx;
_context.next = 49;
break;
case 68:
case "end":
return _context.stop();
}
}
}, _callee, this, [[12, 36, 40, 48], [41,, 43, 47], [51, 59]]);
}));
return _mediaUpload.apply(this, arguments);
}
function createMediaFromFile(file, additionalData) {
// Create upload payload
var data = new window.FormData();
data.append('file', file, file.name || file.type.replace('/', '.'));
Object(external_lodash_["forEach"])(additionalData, function (value, key) {
return data.append(key, value);
});
return external_this_wp_apiFetch_default()({
path: '/wp/v2/media',
body: data,
method: 'POST'
});
}
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/utils/media-upload/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal 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;
mediaUpload({
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/provider/index.js
/**
* External dependencies
*/
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
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, meta, onMetaChange, reusableBlocks) {
return Object(objectSpread["a" /* default */])({}, Object(external_lodash_["pick"])(settings, ['alignWide', 'allowedBlockTypes', 'availableLegacyWidgets', 'bodyPlaceholder', 'colors', 'disableCustomColors', 'disableCustomFontSizes', 'focusMode', 'fontSizes', 'hasFixedToolbar', 'hasPermissionsToManageWidgets', 'imageSizes', 'isRTL', 'maxWidth', 'styles', 'templateLock', 'titlePlaceholder']), {
__experimentalMetaSource: {
value: meta,
onChange: onMetaChange
},
__experimentalReusableBlocks: reusableBlocks,
__experimentalMediaUpload: media_upload
});
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
this.props.updateEditorSettings(this.props.settings);
if (!this.props.settings.styles) {
return;
}
var updatedStyles = editor_styles(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) {
if (this.props.settings !== prevProps.settings) {
this.props.updateEditorSettings(this.props.settings);
}
}
}, {
key: "render",
value: function render() {
var _this$props = this.props,
children = _this$props.children,
blocks = _this$props.blocks,
resetEditorBlocks = _this$props.resetEditorBlocks,
isReady = _this$props.isReady,
settings = _this$props.settings,
meta = _this$props.meta,
onMetaChange = _this$props.onMetaChange,
reusableBlocks = _this$props.reusableBlocks,
resetEditorBlocksWithoutUndoLevel = _this$props.resetEditorBlocksWithoutUndoLevel;
if (!isReady) {
return null;
}
var editorSettings = this.getBlockEditorSettings(settings, meta, onMetaChange, reusableBlocks);
return Object(external_this_wp_element_["createElement"])(external_this_wp_blockEditor_["BlockEditorProvider"], {
value: blocks,
onInput: resetEditorBlocksWithoutUndoLevel,
onChange: resetEditorBlocks,
settings: editorSettings
}, children);
}
}]);
return EditorProvider;
}(external_this_wp_element_["Component"]);
/* harmony default export */ var provider = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
var _select = select('core/editor'),
isEditorReady = _select.__unstableIsEditorReady,
getEditorBlocks = _select.getEditorBlocks,
getEditedPostAttribute = _select.getEditedPostAttribute,
__experimentalGetReusableBlocks = _select.__experimentalGetReusableBlocks;
return {
isReady: isEditorReady(),
blocks: getEditorBlocks(),
meta: getEditedPostAttribute('meta'),
reusableBlocks: __experimentalGetReusableBlocks()
};
}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
var _dispatch = dispatch('core/editor'),
setupEditor = _dispatch.setupEditor,
updatePostLock = _dispatch.updatePostLock,
resetEditorBlocks = _dispatch.resetEditorBlocks,
editPost = _dispatch.editPost,
updateEditorSettings = _dispatch.updateEditorSettings;
var _dispatch2 = dispatch('core/notices'),
createWarningNotice = _dispatch2.createWarningNotice;
return {
setupEditor: setupEditor,
updatePostLock: updatePostLock,
createWarningNotice: createWarningNotice,
resetEditorBlocks: resetEditorBlocks,
updateEditorSettings: updateEditorSettings,
resetEditorBlocksWithoutUndoLevel: function resetEditorBlocksWithoutUndoLevel(blocks) {
resetEditorBlocks(blocks, {
__unstableShouldCreateUndoLevel: false
});
},
onMetaChange: function onMetaChange(meta) {
editPost({
meta: meta
});
}
};
})])(provider_EditorProvider));
// CONCATENATED MODULE: ./node_modules/@wordpress/editor/build-module/components/deprecated.js
// Block Creation Components
/**
* WordPress dependencies
*/
// 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
*/
var defaultAutocompleters = [autocompleters_user];
var default_autocompleters_fetchReusableBlocks = Object(external_lodash_["once"])(function () {
return Object(external_this_wp_data_["dispatch"])('core/editor').__experimentalFetchReusableBlocks();
});
function setDefaultCompleters(completers, blockName) {
if (!completers) {
// Provide copies so filters may directly modify them.
completers = defaultAutocompleters.map(external_lodash_["clone"]); // Add blocks autocompleter for Paragraph block
if (blockName === Object(external_this_wp_blocks_["getDefaultBlockName"])()) {
completers.push(Object(external_lodash_["clone"])(autocompleters_block));
/*
* NOTE: This is a hack to help ensure reusable blocks are loaded
* so they may be included in the block completer. It can be removed
* once we have a way for completers to Promise options while
* store-based data dependencies are being resolved.
*/
default_autocompleters_fetchReusableBlocks();
}
}
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 ServerSideRender */__webpack_require__.d(__webpack_exports__, "ServerSideRender", function() { return server_side_render; });
/* 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 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 Autocomplete */__webpack_require__.d(__webpack_exports__, "Autocomplete", function() { return external_this_wp_blockEditor_["Autocomplete"]; });
/* concated harmony reexport AlignmentToolbar */__webpack_require__.d(__webpack_exports__, "AlignmentToolbar", function() { return external_this_wp_blockEditor_["AlignmentToolbar"]; });
/* concated harmony reexport BlockAlignmentToolbar */__webpack_require__.d(__webpack_exports__, "BlockAlignmentToolbar", function() { return external_this_wp_blockEditor_["BlockAlignmentToolbar"]; });
/* concated harmony reexport BlockControls */__webpack_require__.d(__webpack_exports__, "BlockControls", function() { return external_this_wp_blockEditor_["BlockControls"]; });
/* concated harmony reexport BlockEdit */__webpack_require__.d(__webpack_exports__, "BlockEdit", function() { return external_this_wp_blockEditor_["BlockEdit"]; });
/* concated harmony reexport BlockEditorKeyboardShortcuts */__webpack_require__.d(__webpack_exports__, "BlockEditorKeyboardShortcuts", function() { return external_this_wp_blockEditor_["BlockEditorKeyboardShortcuts"]; });
/* concated harmony reexport BlockFormatControls */__webpack_require__.d(__webpack_exports__, "BlockFormatControls", function() { return external_this_wp_blockEditor_["BlockFormatControls"]; });
/* concated harmony reexport BlockIcon */__webpack_require__.d(__webpack_exports__, "BlockIcon", function() { return external_this_wp_blockEditor_["BlockIcon"]; });
/* concated harmony reexport BlockInspector */__webpack_require__.d(__webpack_exports__, "BlockInspector", function() { return external_this_wp_blockEditor_["BlockInspector"]; });
/* concated harmony reexport BlockList */__webpack_require__.d(__webpack_exports__, "BlockList", function() { return external_this_wp_blockEditor_["BlockList"]; });
/* concated harmony reexport BlockMover */__webpack_require__.d(__webpack_exports__, "BlockMover", function() { return external_this_wp_blockEditor_["BlockMover"]; });
/* concated harmony reexport BlockNavigationDropdown */__webpack_require__.d(__webpack_exports__, "BlockNavigationDropdown", function() { return external_this_wp_blockEditor_["BlockNavigationDropdown"]; });
/* concated harmony reexport BlockSelectionClearer */__webpack_require__.d(__webpack_exports__, "BlockSelectionClearer", function() { return external_this_wp_blockEditor_["BlockSelectionClearer"]; });
/* concated harmony reexport BlockSettingsMenu */__webpack_require__.d(__webpack_exports__, "BlockSettingsMenu", function() { return external_this_wp_blockEditor_["BlockSettingsMenu"]; });
/* concated harmony reexport BlockTitle */__webpack_require__.d(__webpack_exports__, "BlockTitle", function() { return external_this_wp_blockEditor_["BlockTitle"]; });
/* concated harmony reexport BlockToolbar */__webpack_require__.d(__webpack_exports__, "BlockToolbar", function() { return external_this_wp_blockEditor_["BlockToolbar"]; });
/* concated harmony reexport ColorPalette */__webpack_require__.d(__webpack_exports__, "ColorPalette", function() { return external_this_wp_blockEditor_["ColorPalette"]; });
/* concated harmony reexport ContrastChecker */__webpack_require__.d(__webpack_exports__, "ContrastChecker", function() { return external_this_wp_blockEditor_["ContrastChecker"]; });
/* concated harmony reexport CopyHandler */__webpack_require__.d(__webpack_exports__, "CopyHandler", function() { return external_this_wp_blockEditor_["CopyHandler"]; });
/* concated harmony reexport createCustomColorsHOC */__webpack_require__.d(__webpack_exports__, "createCustomColorsHOC", function() { return external_this_wp_blockEditor_["createCustomColorsHOC"]; });
/* concated harmony reexport DefaultBlockAppender */__webpack_require__.d(__webpack_exports__, "DefaultBlockAppender", function() { return external_this_wp_blockEditor_["DefaultBlockAppender"]; });
/* concated harmony reexport FontSizePicker */__webpack_require__.d(__webpack_exports__, "FontSizePicker", function() { return external_this_wp_blockEditor_["FontSizePicker"]; });
/* concated harmony reexport getColorClassName */__webpack_require__.d(__webpack_exports__, "getColorClassName", function() { return external_this_wp_blockEditor_["getColorClassName"]; });
/* concated harmony reexport getColorObjectByAttributeValues */__webpack_require__.d(__webpack_exports__, "getColorObjectByAttributeValues", function() { return external_this_wp_blockEditor_["getColorObjectByAttributeValues"]; });
/* concated harmony reexport getColorObjectByColorValue */__webpack_require__.d(__webpack_exports__, "getColorObjectByColorValue", function() { return external_this_wp_blockEditor_["getColorObjectByColorValue"]; });
/* concated harmony reexport getFontSize */__webpack_require__.d(__webpack_exports__, "getFontSize", function() { return external_this_wp_blockEditor_["getFontSize"]; });
/* concated harmony reexport getFontSizeClass */__webpack_require__.d(__webpack_exports__, "getFontSizeClass", function() { return external_this_wp_blockEditor_["getFontSizeClass"]; });
/* concated harmony reexport Inserter */__webpack_require__.d(__webpack_exports__, "Inserter", function() { return external_this_wp_blockEditor_["Inserter"]; });
/* concated harmony reexport InnerBlocks */__webpack_require__.d(__webpack_exports__, "InnerBlocks", function() { return external_this_wp_blockEditor_["InnerBlocks"]; });
/* concated harmony reexport InspectorAdvancedControls */__webpack_require__.d(__webpack_exports__, "InspectorAdvancedControls", function() { return external_this_wp_blockEditor_["InspectorAdvancedControls"]; });
/* concated harmony reexport InspectorControls */__webpack_require__.d(__webpack_exports__, "InspectorControls", function() { return external_this_wp_blockEditor_["InspectorControls"]; });
/* concated harmony reexport PanelColorSettings */__webpack_require__.d(__webpack_exports__, "PanelColorSettings", function() { return external_this_wp_blockEditor_["PanelColorSettings"]; });
/* concated harmony reexport PlainText */__webpack_require__.d(__webpack_exports__, "PlainText", function() { return external_this_wp_blockEditor_["PlainText"]; });
/* concated harmony reexport RichText */__webpack_require__.d(__webpack_exports__, "RichText", function() { return external_this_wp_blockEditor_["RichText"]; });
/* concated harmony reexport RichTextShortcut */__webpack_require__.d(__webpack_exports__, "RichTextShortcut", function() { return external_this_wp_blockEditor_["RichTextShortcut"]; });
/* concated harmony reexport RichTextToolbarButton */__webpack_require__.d(__webpack_exports__, "RichTextToolbarButton", function() { return external_this_wp_blockEditor_["RichTextToolbarButton"]; });
/* concated harmony reexport RichTextInserterItem */__webpack_require__.d(__webpack_exports__, "RichTextInserterItem", function() { return external_this_wp_blockEditor_["RichTextInserterItem"]; });
/* concated harmony reexport UnstableRichTextInputEvent */__webpack_require__.d(__webpack_exports__, "UnstableRichTextInputEvent", function() { return external_this_wp_blockEditor_["UnstableRichTextInputEvent"]; });
/* concated harmony reexport MediaPlaceholder */__webpack_require__.d(__webpack_exports__, "MediaPlaceholder", function() { return external_this_wp_blockEditor_["MediaPlaceholder"]; });
/* concated harmony reexport MediaUpload */__webpack_require__.d(__webpack_exports__, "MediaUpload", function() { return external_this_wp_blockEditor_["MediaUpload"]; });
/* concated harmony reexport MediaUploadCheck */__webpack_require__.d(__webpack_exports__, "MediaUploadCheck", function() { return external_this_wp_blockEditor_["MediaUploadCheck"]; });
/* concated harmony reexport MultiBlocksSwitcher */__webpack_require__.d(__webpack_exports__, "MultiBlocksSwitcher", function() { return external_this_wp_blockEditor_["MultiBlocksSwitcher"]; });
/* concated harmony reexport MultiSelectScrollIntoView */__webpack_require__.d(__webpack_exports__, "MultiSelectScrollIntoView", function() { return external_this_wp_blockEditor_["MultiSelectScrollIntoView"]; });
/* concated harmony reexport NavigableToolbar */__webpack_require__.d(__webpack_exports__, "NavigableToolbar", function() { return external_this_wp_blockEditor_["NavigableToolbar"]; });
/* concated harmony reexport ObserveTyping */__webpack_require__.d(__webpack_exports__, "ObserveTyping", function() { return external_this_wp_blockEditor_["ObserveTyping"]; });
/* concated harmony reexport PreserveScrollInReorder */__webpack_require__.d(__webpack_exports__, "PreserveScrollInReorder", function() { return external_this_wp_blockEditor_["PreserveScrollInReorder"]; });
/* concated harmony reexport SkipToSelectedBlock */__webpack_require__.d(__webpack_exports__, "SkipToSelectedBlock", function() { return external_this_wp_blockEditor_["SkipToSelectedBlock"]; });
/* concated harmony reexport URLInput */__webpack_require__.d(__webpack_exports__, "URLInput", function() { return external_this_wp_blockEditor_["URLInput"]; });
/* concated harmony reexport URLInputButton */__webpack_require__.d(__webpack_exports__, "URLInputButton", function() { return external_this_wp_blockEditor_["URLInputButton"]; });
/* concated harmony reexport URLPopover */__webpack_require__.d(__webpack_exports__, "URLPopover", function() { return external_this_wp_blockEditor_["URLPopover"]; });
/* concated harmony reexport Warning */__webpack_require__.d(__webpack_exports__, "Warning", function() { return external_this_wp_blockEditor_["Warning"]; });
/* concated harmony reexport WritingFlow */__webpack_require__.d(__webpack_exports__, "WritingFlow", function() { return external_this_wp_blockEditor_["WritingFlow"]; });
/* concated harmony reexport withColorContext */__webpack_require__.d(__webpack_exports__, "withColorContext", function() { return external_this_wp_blockEditor_["withColorContext"]; });
/* concated harmony reexport withColors */__webpack_require__.d(__webpack_exports__, "withColors", function() { return external_this_wp_blockEditor_["withColors"]; });
/* concated harmony reexport withFontSizes */__webpack_require__.d(__webpack_exports__, "withFontSizes", function() { return external_this_wp_blockEditor_["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 transformStyles */__webpack_require__.d(__webpack_exports__, "transformStyles", function() { return editor_styles; });
/**
* WordPress dependencies
*/
/**
* Internal dependencies
*/
/***/ }),
/***/ 37:
/***/ (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;
}
/***/ }),
/***/ 38:
/***/ (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"]["components"]; }());
/***/ }),
/***/ 40:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["viewport"]; }());
/***/ }),
/***/ 41:
/***/ (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;
};
/***/ }),
/***/ 44:
/***/ (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);
});
};
}
/***/ }),
/***/ 49:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["deprecated"]; }());
/***/ }),
/***/ 5:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["data"]; }());
/***/ }),
/***/ 50:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["date"]; }());
/***/ }),
/***/ 54:
/***/ (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.
*/
// This method of obtaining a reference to the global object needs to be
// kept identical to the way it is obtained in runtime.js
var g = (function() {
return this || (typeof self === "object" && self);
})() || Function("return this")();
// Use `getOwnPropertyNames` because not all browsers support calling
// `hasOwnProperty` on the global `self` object in a worker. See #183.
var hadRuntime = g.regeneratorRuntime &&
Object.getOwnPropertyNames(g).indexOf("regeneratorRuntime") >= 0;
// Save the old regeneratorRuntime in case it needs to be restored later.
var oldRuntime = hadRuntime && g.regeneratorRuntime;
// Force reevalutation of runtime.js.
g.regeneratorRuntime = undefined;
module.exports = __webpack_require__(55);
if (hadRuntime) {
// Restore the original runtime.
g.regeneratorRuntime = oldRuntime;
} else {
// Remove the global property added by runtime.js.
try {
delete g.regeneratorRuntime;
} catch(e) {
g.regeneratorRuntime = undefined;
}
}
/***/ }),
/***/ 55:
/***/ (function(module, exports) {
/**
* 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.
*/
!(function(global) {
"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";
var inModule = typeof module === "object";
var runtime = global.regeneratorRuntime;
if (runtime) {
if (inModule) {
// If regeneratorRuntime is defined globally and we're in a module,
// make the exports object identical to regeneratorRuntime.
module.exports = runtime;
}
// Don't bother evaluating the rest of this file if the runtime was
// already defined globally.
return;
}
// Define the runtime globally (as expected by generated code) as either
// module.exports (if we're in a module) or a new, empty object.
runtime = global.regeneratorRuntime = inModule ? module.exports : {};
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;
}
runtime.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);
};
});
}
runtime.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;
};
runtime.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.
runtime.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;
};
runtime.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.
runtime.async = function(innerFn, outerFn, self, tryLocsList) {
var iter = new AsyncIterator(
wrap(innerFn, outerFn, self, tryLocsList)
);
return runtime.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") {
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);
}
runtime.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 };
}
runtime.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;
}
};
})(
// In sloppy mode, unbound `this` refers to the global object, fallback to
// Function constructor if we're in global strict mode. That is sadly a form
// of indirect eval which violates Content Security Policy.
(function() {
return this || (typeof self === "object" && self);
})() || Function("return this")()
);
/***/ }),
/***/ 57:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["htmlEntities"]; }());
/***/ }),
/***/ 59:
/***/ (function(module, exports) {
var g;
// This works in non-strict mode
g = (function() {
return this;
})();
try {
// This works if eval is allowed (see CSP)
g = g || new Function("return this")();
} catch (e) {
// This works if the window reference is available
if (typeof window === "object") g = window;
}
// g can still be undefined, but nothing to do about it...
// We return undefined, instead of nothing here, so it's
// easier to handle this case. if(!global) { ...}
module.exports = g;
/***/ }),
/***/ 6:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["compose"]; }());
/***/ }),
/***/ 60:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["nux"]; }());
/***/ }),
/***/ 61:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
exports.__esModule = true;
var TextareaAutosize_1 = __webpack_require__(111);
exports["default"] = TextareaAutosize_1["default"];
/***/ }),
/***/ 62:
/***/ (function(module, exports, __webpack_require__) {
module.exports = __webpack_require__(341);
/***/ }),
/***/ 66:
/***/ (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__(15);
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;
}
/***/ }),
/***/ 70:
/***/ (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;
/***/ }),
/***/ 72:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["coreData"]; }());
/***/ }),
/***/ 8:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["blockEditor"]; }());
/***/ }),
/***/ 84:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
// Copyright Joyent, Inc. and other Node contributors.
//
// Permission is hereby granted, free of charge, to any person obtaining a
// copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to permit
// persons to whom the Software is furnished to do so, subject to the
// following conditions:
//
// The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN
// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE
// USE OR OTHER DEALINGS IN THE SOFTWARE.
var punycode = __webpack_require__(117);
var util = __webpack_require__(119);
exports.parse = urlParse;
exports.resolve = urlResolve;
exports.resolveObject = urlResolveObject;
exports.format = urlFormat;
exports.Url = Url;
function Url() {
this.protocol = null;
this.slashes = null;
this.auth = null;
this.host = null;
this.port = null;
this.hostname = null;
this.hash = null;
this.search = null;
this.query = null;
this.pathname = null;
this.path = null;
this.href = null;
}
// Reference: RFC 3986, RFC 1808, RFC 2396
// define these here so at least they only have to be
// compiled once on the first module load.
var protocolPattern = /^([a-z0-9.+-]+:)/i,
portPattern = /:[0-9]*$/,
// Special case for a simple path URL
simplePathPattern = /^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,
// RFC 2396: characters reserved for delimiting URLs.
// We actually just auto-escape these.
delims = ['<', '>', '"', '`', ' ', '\r', '\n', '\t'],
// RFC 2396: characters not allowed for various reasons.
unwise = ['{', '}', '|', '\\', '^', '`'].concat(delims),
// Allowed by RFCs, but cause of XSS attacks. Always escape these.
autoEscape = ['\''].concat(unwise),
// Characters that are never ever allowed in a hostname.
// Note that any invalid chars are also handled, but these
// are the ones that are *expected* to be seen, so we fast-path
// them.
nonHostChars = ['%', '/', '?', ';', '#'].concat(autoEscape),
hostEndingChars = ['/', '?', '#'],
hostnameMaxLen = 255,
hostnamePartPattern = /^[+a-z0-9A-Z_-]{0,63}$/,
hostnamePartStart = /^([+a-z0-9A-Z_-]{0,63})(.*)$/,
// protocols that can allow "unsafe" and "unwise" chars.
unsafeProtocol = {
'javascript': true,
'javascript:': true
},
// protocols that never have a hostname.
hostlessProtocol = {
'javascript': true,
'javascript:': true
},
// protocols that always contain a // bit.
slashedProtocol = {
'http': true,
'https': true,
'ftp': true,
'gopher': true,
'file': true,
'http:': true,
'https:': true,
'ftp:': true,
'gopher:': true,
'file:': true
},
querystring = __webpack_require__(120);
function urlParse(url, parseQueryString, slashesDenoteHost) {
if (url && util.isObject(url) && url instanceof Url) return url;
var u = new Url;
u.parse(url, parseQueryString, slashesDenoteHost);
return u;
}
Url.prototype.parse = function(url, parseQueryString, slashesDenoteHost) {
if (!util.isString(url)) {
throw new TypeError("Parameter 'url' must be a string, not " + typeof url);
}
// Copy chrome, IE, opera backslash-handling behavior.
// Back slashes before the query string get converted to forward slashes
// See: https://code.google.com/p/chromium/issues/detail?id=25916
var queryIndex = url.indexOf('?'),
splitter =
(queryIndex !== -1 && queryIndex < url.indexOf('#')) ? '?' : '#',
uSplit = url.split(splitter),
slashRegex = /\\/g;
uSplit[0] = uSplit[0].replace(slashRegex, '/');
url = uSplit.join(splitter);
var rest = url;
// trim before proceeding.
// This is to support parse stuff like " http://foo.com \n"
rest = rest.trim();
if (!slashesDenoteHost && url.split('#').length === 1) {
// Try fast path regexp
var simplePath = simplePathPattern.exec(rest);
if (simplePath) {
this.path = rest;
this.href = rest;
this.pathname = simplePath[1];
if (simplePath[2]) {
this.search = simplePath[2];
if (parseQueryString) {
this.query = querystring.parse(this.search.substr(1));
} else {
this.query = this.search.substr(1);
}
} else if (parseQueryString) {
this.search = '';
this.query = {};
}
return this;
}
}
var proto = protocolPattern.exec(rest);
if (proto) {
proto = proto[0];
var lowerProto = proto.toLowerCase();
this.protocol = lowerProto;
rest = rest.substr(proto.length);
}
// figure out if it's got a host
// user@server is *always* interpreted as a hostname, and url
// resolution will treat //foo/bar as host=foo,path=bar because that's
// how the browser resolves relative URLs.
if (slashesDenoteHost || proto || rest.match(/^\/\/[^@\/]+@[^@\/]+/)) {
var slashes = rest.substr(0, 2) === '//';
if (slashes && !(proto && hostlessProtocol[proto])) {
rest = rest.substr(2);
this.slashes = true;
}
}
if (!hostlessProtocol[proto] &&
(slashes || (proto && !slashedProtocol[proto]))) {
// there's a hostname.
// the first instance of /, ?, ;, or # ends the host.
//
// If there is an @ in the hostname, then non-host chars *are* allowed
// to the left of the last @ sign, unless some host-ending character
// comes *before* the @-sign.
// URLs are obnoxious.
//
// ex:
// http://a@b@c/ => user:a@b host:c
// http://a@b?@c => user:a host:c path:/?@c
// v0.12 TODO(isaacs): This is not quite how Chrome does things.
// Review our test case against browsers more comprehensively.
// find the first instance of any hostEndingChars
var hostEnd = -1;
for (var i = 0; i < hostEndingChars.length; i++) {
var hec = rest.indexOf(hostEndingChars[i]);
if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
hostEnd = hec;
}
// at this point, either we have an explicit point where the
// auth portion cannot go past, or the last @ char is the decider.
var auth, atSign;
if (hostEnd === -1) {
// atSign can be anywhere.
atSign = rest.lastIndexOf('@');
} else {
// atSign must be in auth portion.
// http://a@b/c@d => host:b auth:a path:/c@d
atSign = rest.lastIndexOf('@', hostEnd);
}
// Now we have a portion which is definitely the auth.
// Pull that off.
if (atSign !== -1) {
auth = rest.slice(0, atSign);
rest = rest.slice(atSign + 1);
this.auth = decodeURIComponent(auth);
}
// the host is the remaining to the left of the first non-host char
hostEnd = -1;
for (var i = 0; i < nonHostChars.length; i++) {
var hec = rest.indexOf(nonHostChars[i]);
if (hec !== -1 && (hostEnd === -1 || hec < hostEnd))
hostEnd = hec;
}
// if we still have not hit it, then the entire thing is a host.
if (hostEnd === -1)
hostEnd = rest.length;
this.host = rest.slice(0, hostEnd);
rest = rest.slice(hostEnd);
// pull out port.
this.parseHost();
// we've indicated that there is a hostname,
// so even if it's empty, it has to be present.
this.hostname = this.hostname || '';
// if hostname begins with [ and ends with ]
// assume that it's an IPv6 address.
var ipv6Hostname = this.hostname[0] === '[' &&
this.hostname[this.hostname.length - 1] === ']';
// validate a little.
if (!ipv6Hostname) {
var hostparts = this.hostname.split(/\./);
for (var i = 0, l = hostparts.length; i < l; i++) {
var part = hostparts[i];
if (!part) continue;
if (!part.match(hostnamePartPattern)) {
var newpart = '';
for (var j = 0, k = part.length; j < k; j++) {
if (part.charCodeAt(j) > 127) {
// we replace non-ASCII char with a temporary placeholder
// we need this to make sure size of hostname is not
// broken by replacing non-ASCII by nothing
newpart += 'x';
} else {
newpart += part[j];
}
}
// we test again with ASCII char only
if (!newpart.match(hostnamePartPattern)) {
var validParts = hostparts.slice(0, i);
var notHost = hostparts.slice(i + 1);
var bit = part.match(hostnamePartStart);
if (bit) {
validParts.push(bit[1]);
notHost.unshift(bit[2]);
}
if (notHost.length) {
rest = '/' + notHost.join('.') + rest;
}
this.hostname = validParts.join('.');
break;
}
}
}
}
if (this.hostname.length > hostnameMaxLen) {
this.hostname = '';
} else {
// hostnames are always lower case.
this.hostname = this.hostname.toLowerCase();
}
if (!ipv6Hostname) {
// IDNA Support: Returns a punycoded representation of "domain".
// It only converts parts of the domain name that
// have non-ASCII characters, i.e. it doesn't matter if
// you call it with a domain that already is ASCII-only.
this.hostname = punycode.toASCII(this.hostname);
}
var p = this.port ? ':' + this.port : '';
var h = this.hostname || '';
this.host = h + p;
this.href += this.host;
// strip [ and ] from the hostname
// the host field still retains them, though
if (ipv6Hostname) {
this.hostname = this.hostname.substr(1, this.hostname.length - 2);
if (rest[0] !== '/') {
rest = '/' + rest;
}
}
}
// now rest is set to the post-host stuff.
// chop off any delim chars.
if (!unsafeProtocol[lowerProto]) {
// First, make 100% sure that any "autoEscape" chars get
// escaped, even if encodeURIComponent doesn't think they
// need to be.
for (var i = 0, l = autoEscape.length; i < l; i++) {
var ae = autoEscape[i];
if (rest.indexOf(ae) === -1)
continue;
var esc = encodeURIComponent(ae);
if (esc === ae) {
esc = escape(ae);
}
rest = rest.split(ae).join(esc);
}
}
// chop off from the tail first.
var hash = rest.indexOf('#');
if (hash !== -1) {
// got a fragment string.
this.hash = rest.substr(hash);
rest = rest.slice(0, hash);
}
var qm = rest.indexOf('?');
if (qm !== -1) {
this.search = rest.substr(qm);
this.query = rest.substr(qm + 1);
if (parseQueryString) {
this.query = querystring.parse(this.query);
}
rest = rest.slice(0, qm);
} else if (parseQueryString) {
// no query string, but parseQueryString still requested
this.search = '';
this.query = {};
}
if (rest) this.pathname = rest;
if (slashedProtocol[lowerProto] &&
this.hostname && !this.pathname) {
this.pathname = '/';
}
//to support http.request
if (this.pathname || this.search) {
var p = this.pathname || '';
var s = this.search || '';
this.path = p + s;
}
// finally, reconstruct the href based on what has been validated.
this.href = this.format();
return this;
};
// format a parsed object into a url string
function urlFormat(obj) {
// ensure it's an object, and not a string url.
// If it's an obj, this is a no-op.
// this way, you can call url_format() on strings
// to clean up potentially wonky urls.
if (util.isString(obj)) obj = urlParse(obj);
if (!(obj instanceof Url)) return Url.prototype.format.call(obj);
return obj.format();
}
Url.prototype.format = function() {
var auth = this.auth || '';
if (auth) {
auth = encodeURIComponent(auth);
auth = auth.replace(/%3A/i, ':');
auth += '@';
}
var protocol = this.protocol || '',
pathname = this.pathname || '',
hash = this.hash || '',
host = false,
query = '';
if (this.host) {
host = auth + this.host;
} else if (this.hostname) {
host = auth + (this.hostname.indexOf(':') === -1 ?
this.hostname :
'[' + this.hostname + ']');
if (this.port) {
host += ':' + this.port;
}
}
if (this.query &&
util.isObject(this.query) &&
Object.keys(this.query).length) {
query = querystring.stringify(this.query);
}
var search = this.search || (query && ('?' + query)) || '';
if (protocol && protocol.substr(-1) !== ':') protocol += ':';
// only the slashedProtocols get the //. Not mailto:, xmpp:, etc.
// unless they had them to begin with.
if (this.slashes ||
(!protocol || slashedProtocol[protocol]) && host !== false) {
host = '//' + (host || '');
if (pathname && pathname.charAt(0) !== '/') pathname = '/' + pathname;
} else if (!host) {
host = '';
}
if (hash && hash.charAt(0) !== '#') hash = '#' + hash;
if (search && search.charAt(0) !== '?') search = '?' + search;
pathname = pathname.replace(/[?#]/g, function(match) {
return encodeURIComponent(match);
});
search = search.replace('#', '%23');
return protocol + host + pathname + search + hash;
};
function urlResolve(source, relative) {
return urlParse(source, false, true).resolve(relative);
}
Url.prototype.resolve = function(relative) {
return this.resolveObject(urlParse(relative, false, true)).format();
};
function urlResolveObject(source, relative) {
if (!source) return relative;
return urlParse(source, false, true).resolveObject(relative);
}
Url.prototype.resolveObject = function(relative) {
if (util.isString(relative)) {
var rel = new Url();
rel.parse(relative, false, true);
relative = rel;
}
var result = new Url();
var tkeys = Object.keys(this);
for (var tk = 0; tk < tkeys.length; tk++) {
var tkey = tkeys[tk];
result[tkey] = this[tkey];
}
// hash is always overridden, no matter what.
// even href="" will remove it.
result.hash = relative.hash;
// if the relative url is empty, then there's nothing left to do here.
if (relative.href === '') {
result.href = result.format();
return result;
}
// hrefs like //foo/bar always cut to the protocol.
if (relative.slashes && !relative.protocol) {
// take everything except the protocol from relative
var rkeys = Object.keys(relative);
for (var rk = 0; rk < rkeys.length; rk++) {
var rkey = rkeys[rk];
if (rkey !== 'protocol')
result[rkey] = relative[rkey];
}
//urlParse appends trailing / to urls like http://www.example.com
if (slashedProtocol[result.protocol] &&
result.hostname && !result.pathname) {
result.path = result.pathname = '/';
}
result.href = result.format();
return result;
}
if (relative.protocol && relative.protocol !== result.protocol) {
// if it's a known url protocol, then changing
// the protocol does weird things
// first, if it's not file:, then we MUST have a host,
// and if there was a path
// to begin with, then we MUST have a path.
// if it is file:, then the host is dropped,
// because that's known to be hostless.
// anything else is assumed to be absolute.
if (!slashedProtocol[relative.protocol]) {
var keys = Object.keys(relative);
for (var v = 0; v < keys.length; v++) {
var k = keys[v];
result[k] = relative[k];
}
result.href = result.format();
return result;
}
result.protocol = relative.protocol;
if (!relative.host && !hostlessProtocol[relative.protocol]) {
var relPath = (relative.pathname || '').split('/');
while (relPath.length && !(relative.host = relPath.shift()));
if (!relative.host) relative.host = '';
if (!relative.hostname) relative.hostname = '';
if (relPath[0] !== '') relPath.unshift('');
if (relPath.length < 2) relPath.unshift('');
result.pathname = relPath.join('/');
} else {
result.pathname = relative.pathname;
}
result.search = relative.search;
result.query = relative.query;
result.host = relative.host || '';
result.auth = relative.auth;
result.hostname = relative.hostname || relative.host;
result.port = relative.port;
// to support http.request
if (result.pathname || result.search) {
var p = result.pathname || '';
var s = result.search || '';
result.path = p + s;
}
result.slashes = result.slashes || relative.slashes;
result.href = result.format();
return result;
}
var isSourceAbs = (result.pathname && result.pathname.charAt(0) === '/'),
isRelAbs = (
relative.host ||
relative.pathname && relative.pathname.charAt(0) === '/'
),
mustEndAbs = (isRelAbs || isSourceAbs ||
(result.host && relative.pathname)),
removeAllDots = mustEndAbs,
srcPath = result.pathname && result.pathname.split('/') || [],
relPath = relative.pathname && relative.pathname.split('/') || [],
psychotic = result.protocol && !slashedProtocol[result.protocol];
// if the url is a non-slashed url, then relative
// links like ../.. should be able
// to crawl up to the hostname, as well. This is strange.
// result.protocol has already been set by now.
// Later on, put the first path part into the host field.
if (psychotic) {
result.hostname = '';
result.port = null;
if (result.host) {
if (srcPath[0] === '') srcPath[0] = result.host;
else srcPath.unshift(result.host);
}
result.host = '';
if (relative.protocol) {
relative.hostname = null;
relative.port = null;
if (relative.host) {
if (relPath[0] === '') relPath[0] = relative.host;
else relPath.unshift(relative.host);
}
relative.host = null;
}
mustEndAbs = mustEndAbs && (relPath[0] === '' || srcPath[0] === '');
}
if (isRelAbs) {
// it's absolute.
result.host = (relative.host || relative.host === '') ?
relative.host : result.host;
result.hostname = (relative.hostname || relative.hostname === '') ?
relative.hostname : result.hostname;
result.search = relative.search;
result.query = relative.query;
srcPath = relPath;
// fall through to the dot-handling below.
} else if (relPath.length) {
// it's relative
// throw away the existing file, and take the new path instead.
if (!srcPath) srcPath = [];
srcPath.pop();
srcPath = srcPath.concat(relPath);
result.search = relative.search;
result.query = relative.query;
} else if (!util.isNullOrUndefined(relative.search)) {
// just pull out the search.
// like href='?foo'.
// Put this after the other two cases because it simplifies the booleans
if (psychotic) {
result.hostname = result.host = srcPath.shift();
//occationaly the auth can get stuck only in host
//this especially happens in cases like
//url.resolveObject('mailto:local1@domain1', 'local2@domain2')
var authInHost = result.host && result.host.indexOf('@') > 0 ?
result.host.split('@') : false;
if (authInHost) {
result.auth = authInHost.shift();
result.host = result.hostname = authInHost.shift();
}
}
result.search = relative.search;
result.query = relative.query;
//to support http.request
if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
result.path = (result.pathname ? result.pathname : '') +
(result.search ? result.search : '');
}
result.href = result.format();
return result;
}
if (!srcPath.length) {
// no path at all. easy.
// we've already handled the other stuff above.
result.pathname = null;
//to support http.request
if (result.search) {
result.path = '/' + result.search;
} else {
result.path = null;
}
result.href = result.format();
return result;
}
// if a url ENDs in . or .., then it must get a trailing slash.
// however, if it ends in anything else non-slashy,
// then it must NOT get a trailing slash.
var last = srcPath.slice(-1)[0];
var hasTrailingSlash = (
(result.host || relative.host || srcPath.length > 1) &&
(last === '.' || last === '..') || last === '');
// strip single dots, resolve double dots to parent dir
// if the path tries to go above the root, `up` ends up > 0
var up = 0;
for (var i = srcPath.length; i >= 0; i--) {
last = srcPath[i];
if (last === '.') {
srcPath.splice(i, 1);
} else if (last === '..') {
srcPath.splice(i, 1);
up++;
} else if (up) {
srcPath.splice(i, 1);
up--;
}
}
// if the path is allowed to go above the root, restore leading ..s
if (!mustEndAbs && !removeAllDots) {
for (; up--; up) {
srcPath.unshift('..');
}
}
if (mustEndAbs && srcPath[0] !== '' &&
(!srcPath[0] || srcPath[0].charAt(0) !== '/')) {
srcPath.unshift('');
}
if (hasTrailingSlash && (srcPath.join('/').substr(-1) !== '/')) {
srcPath.push('');
}
var isAbsolute = srcPath[0] === '' ||
(srcPath[0] && srcPath[0].charAt(0) === '/');
// put the host back
if (psychotic) {
result.hostname = result.host = isAbsolute ? '' :
srcPath.length ? srcPath.shift() : '';
//occationaly the auth can get stuck only in host
//this especially happens in cases like
//url.resolveObject('mailto:local1@domain1', 'local2@domain2')
var authInHost = result.host && result.host.indexOf('@') > 0 ?
result.host.split('@') : false;
if (authInHost) {
result.auth = authInHost.shift();
result.host = result.hostname = authInHost.shift();
}
}
mustEndAbs = mustEndAbs || (result.host && srcPath.length);
if (mustEndAbs && !isAbsolute) {
srcPath.unshift('');
}
if (!srcPath.length) {
result.pathname = null;
result.path = null;
} else {
result.pathname = srcPath.join('/');
}
//to support request.http
if (!util.isNull(result.pathname) || !util.isNull(result.search)) {
result.path = (result.pathname ? result.pathname : '') +
(result.search ? result.search : '');
}
result.auth = relative.auth || result.auth;
result.slashes = result.slashes || relative.slashes;
result.href = result.format();
return result;
};
Url.prototype.parseHost = function() {
var host = this.host;
var port = portPattern.exec(host);
if (port) {
port = port[0];
if (port !== ':') {
this.port = port.substr(1);
}
host = host.substr(0, host.length - port.length);
}
if (host) this.hostname = host;
};
/***/ }),
/***/ 89:
/***/ (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__(90);
function 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,
instanceOf: getShim,
node: shim,
objectOf: getShim,
oneOf: getShim,
oneOfType: getShim,
shape: getShim,
exact: getShim
};
ReactPropTypes.checkPropTypes = emptyFunction;
ReactPropTypes.PropTypes = ReactPropTypes;
return ReactPropTypes;
};
/***/ }),
/***/ 9:
/***/ (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;
}
/***/ }),
/***/ 90:
/***/ (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;
/***/ }),
/***/ 97:
/***/ (function(module, exports, __webpack_require__) {
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
/**
* Redux dispatch multiple actions
*/
function multi(_ref) {
var dispatch = _ref.dispatch;
return function (next) {
return function (action) {
return Array.isArray(action) ? action.filter(Boolean).map(dispatch) : next(action);
};
};
}
/**
* Exports
*/
exports.default = multi;
/***/ }),
/***/ 98:
/***/ (function(module, exports) {
(function() { module.exports = this["wp"]["wordcount"]; }());
/***/ })
/******/ });