aboutsummaryrefslogtreecommitdiff
path: root/srcs/wordpress/wp-includes/js/dist/block-editor.js
diff options
context:
space:
mode:
authorCharles Cabergs <me@cacharle.xyz>2020-07-27 10:05:23 +0200
committerCharles Cabergs <me@cacharle.xyz>2020-07-27 10:05:23 +0200
commit5bf66662a9bdd62c5bccab15e607cd95cfb8fcab (patch)
tree39a1a4629749056191c05dfd899f931701b7acf3 /srcs/wordpress/wp-includes/js/dist/block-editor.js
parent5afd237bbd22028b85532b8c0b3fcead49a00764 (diff)
downloadft_server-master.tar.gz
ft_server-master.tar.bz2
ft_server-master.zip
Removed wordpress and phpmyadmin, my server doesn't handle it well and it brings shame on my famillyHEADmaster
Diffstat (limited to 'srcs/wordpress/wp-includes/js/dist/block-editor.js')
-rw-r--r--srcs/wordpress/wp-includes/js/dist/block-editor.js28170
1 files changed, 0 insertions, 28170 deletions
diff --git a/srcs/wordpress/wp-includes/js/dist/block-editor.js b/srcs/wordpress/wp-includes/js/dist/block-editor.js
deleted file mode 100644
index 9c456c8..0000000
--- a/srcs/wordpress/wp-includes/js/dist/block-editor.js
+++ /dev/null
@@ -1,28170 +0,0 @@
-this["wp"] = this["wp"] || {}; this["wp"]["blockEditor"] =
-/******/ (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 = 342);
-/******/ })
-/************************************************************************/
-/******/ ({
-
-/***/ 0:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["element"]; }());
-
-/***/ }),
-
-/***/ 1:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["i18n"]; }());
-
-/***/ }),
-
-/***/ 10:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _defineProperty; });
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-/***/ }),
-
-/***/ 11:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _createClass; });
-function _defineProperties(target, props) {
- for (var i = 0; i < props.length; i++) {
- var descriptor = props[i];
- descriptor.enumerable = descriptor.enumerable || false;
- descriptor.configurable = true;
- if ("value" in descriptor) descriptor.writable = true;
- Object.defineProperty(target, descriptor.key, descriptor);
- }
-}
-
-function _createClass(Constructor, protoProps, staticProps) {
- if (protoProps) _defineProperties(Constructor.prototype, protoProps);
- if (staticProps) _defineProperties(Constructor, staticProps);
- return Constructor;
-}
-
-/***/ }),
-
-/***/ 112:
-/***/ (function(module, exports) {
-
-if (typeof Object.create === 'function') {
- // implementation from standard node.js 'util' module
- module.exports = function inherits(ctor, superCtor) {
- if (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) {
- if (superCtor) {
- ctor.super_ = superCtor
- var TempCtor = function () {}
- TempCtor.prototype = superCtor.prototype
- ctor.prototype = new TempCtor()
- ctor.prototype.constructor = ctor
- }
- }
-}
-
-
-/***/ }),
-
-/***/ 113:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-var util = __webpack_require__(114);
-
-function scrollIntoView(elem, container, config) {
- config = config || {};
- // document 归一化到 window
- if (container.nodeType === 9) {
- container = util.getWindow(container);
- }
-
- var allowHorizontalScroll = config.allowHorizontalScroll;
- var onlyScrollIfNeeded = config.onlyScrollIfNeeded;
- var alignWithTop = config.alignWithTop;
- var alignWithLeft = config.alignWithLeft;
- var offsetTop = config.offsetTop || 0;
- var offsetLeft = config.offsetLeft || 0;
- var offsetBottom = config.offsetBottom || 0;
- var offsetRight = config.offsetRight || 0;
-
- allowHorizontalScroll = allowHorizontalScroll === undefined ? true : allowHorizontalScroll;
-
- var isWin = util.isWindow(container);
- var elemOffset = util.offset(elem);
- var eh = util.outerHeight(elem);
- var ew = util.outerWidth(elem);
- var containerOffset = undefined;
- var ch = undefined;
- var cw = undefined;
- var containerScroll = undefined;
- var diffTop = undefined;
- var diffBottom = undefined;
- var win = undefined;
- var winScroll = undefined;
- var ww = undefined;
- var wh = undefined;
-
- if (isWin) {
- win = container;
- wh = util.height(win);
- ww = util.width(win);
- winScroll = {
- left: util.scrollLeft(win),
- top: util.scrollTop(win)
- };
- // elem 相对 container 可视视窗的距离
- diffTop = {
- left: elemOffset.left - winScroll.left - offsetLeft,
- top: elemOffset.top - winScroll.top - offsetTop
- };
- diffBottom = {
- left: elemOffset.left + ew - (winScroll.left + ww) + offsetRight,
- top: elemOffset.top + eh - (winScroll.top + wh) + offsetBottom
- };
- containerScroll = winScroll;
- } else {
- containerOffset = util.offset(container);
- ch = container.clientHeight;
- cw = container.clientWidth;
- containerScroll = {
- left: container.scrollLeft,
- top: container.scrollTop
- };
- // elem 相对 container 可视视窗的距离
- // 注意边框, offset 是边框到根节点
- diffTop = {
- left: elemOffset.left - (containerOffset.left + (parseFloat(util.css(container, 'borderLeftWidth')) || 0)) - offsetLeft,
- top: elemOffset.top - (containerOffset.top + (parseFloat(util.css(container, 'borderTopWidth')) || 0)) - offsetTop
- };
- diffBottom = {
- left: elemOffset.left + ew - (containerOffset.left + cw + (parseFloat(util.css(container, 'borderRightWidth')) || 0)) + offsetRight,
- top: elemOffset.top + eh - (containerOffset.top + ch + (parseFloat(util.css(container, 'borderBottomWidth')) || 0)) + offsetBottom
- };
- }
-
- if (diffTop.top < 0 || diffBottom.top > 0) {
- // 强制向上
- if (alignWithTop === true) {
- util.scrollTop(container, containerScroll.top + diffTop.top);
- } else if (alignWithTop === false) {
- util.scrollTop(container, containerScroll.top + diffBottom.top);
- } else {
- // 自动调整
- if (diffTop.top < 0) {
- util.scrollTop(container, containerScroll.top + diffTop.top);
- } else {
- util.scrollTop(container, containerScroll.top + diffBottom.top);
- }
- }
- } else {
- if (!onlyScrollIfNeeded) {
- alignWithTop = alignWithTop === undefined ? true : !!alignWithTop;
- if (alignWithTop) {
- util.scrollTop(container, containerScroll.top + diffTop.top);
- } else {
- util.scrollTop(container, containerScroll.top + diffBottom.top);
- }
- }
- }
-
- if (allowHorizontalScroll) {
- if (diffTop.left < 0 || diffBottom.left > 0) {
- // 强制向上
- if (alignWithLeft === true) {
- util.scrollLeft(container, containerScroll.left + diffTop.left);
- } else if (alignWithLeft === false) {
- util.scrollLeft(container, containerScroll.left + diffBottom.left);
- } else {
- // 自动调整
- if (diffTop.left < 0) {
- util.scrollLeft(container, containerScroll.left + diffTop.left);
- } else {
- util.scrollLeft(container, containerScroll.left + diffBottom.left);
- }
- }
- } else {
- if (!onlyScrollIfNeeded) {
- alignWithLeft = alignWithLeft === undefined ? true : !!alignWithLeft;
- if (alignWithLeft) {
- util.scrollLeft(container, containerScroll.left + diffTop.left);
- } else {
- util.scrollLeft(container, containerScroll.left + diffBottom.left);
- }
- }
- }
- }
-}
-
-module.exports = scrollIntoView;
-
-/***/ }),
-
-/***/ 114:
-/***/ (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; };
-
-var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol ? "symbol" : typeof obj; };
-
-var RE_NUM = /[\-+]?(?:\d*\.|)\d+(?:[eE][\-+]?\d+|)/.source;
-
-function getClientPosition(elem) {
- var box = undefined;
- var x = undefined;
- var y = undefined;
- var doc = elem.ownerDocument;
- var body = doc.body;
- var docElem = doc && doc.documentElement;
- // 根据 GBS 最新数据,A-Grade Browsers 都已支持 getBoundingClientRect 方法,不用再考虑传统的实现方式
- box = elem.getBoundingClientRect();
-
- // 注:jQuery 还考虑减去 docElem.clientLeft/clientTop
- // 但测试发现,这样反而会导致当 html 和 body 有边距/边框样式时,获取的值不正确
- // 此外,ie6 会忽略 html 的 margin 值,幸运地是没有谁会去设置 html 的 margin
-
- x = box.left;
- y = box.top;
-
- // In IE, most of the time, 2 extra pixels are added to the top and left
- // due to the implicit 2-pixel inset border. In IE6/7 quirks mode and
- // IE6 standards mode, this border can be overridden by setting the
- // document element's border to zero -- thus, we cannot rely on the
- // offset always being 2 pixels.
-
- // In quirks mode, the offset can be determined by querying the body's
- // clientLeft/clientTop, but in standards mode, it is found by querying
- // the document element's clientLeft/clientTop. Since we already called
- // getClientBoundingRect we have already forced a reflow, so it is not
- // too expensive just to query them all.
-
- // ie 下应该减去窗口的边框吧,毕竟默认 absolute 都是相对窗口定位的
- // 窗口边框标准是设 documentElement ,quirks 时设置 body
- // 最好禁止在 body 和 html 上边框 ,但 ie < 9 html 默认有 2px ,减去
- // 但是非 ie 不可能设置窗口边框,body html 也不是窗口 ,ie 可以通过 html,body 设置
- // 标准 ie 下 docElem.clientTop 就是 border-top
- // ie7 html 即窗口边框改变不了。永远为 2
- // 但标准 firefox/chrome/ie9 下 docElem.clientTop 是窗口边框,即使设了 border-top 也为 0
-
- x -= docElem.clientLeft || body.clientLeft || 0;
- y -= docElem.clientTop || body.clientTop || 0;
-
- return {
- left: x,
- top: y
- };
-}
-
-function getScroll(w, top) {
- var ret = w['page' + (top ? 'Y' : 'X') + 'Offset'];
- var method = 'scroll' + (top ? 'Top' : 'Left');
- if (typeof ret !== 'number') {
- var d = w.document;
- // ie6,7,8 standard mode
- ret = d.documentElement[method];
- if (typeof ret !== 'number') {
- // quirks mode
- ret = d.body[method];
- }
- }
- return ret;
-}
-
-function getScrollLeft(w) {
- return getScroll(w);
-}
-
-function getScrollTop(w) {
- return getScroll(w, true);
-}
-
-function getOffset(el) {
- var pos = getClientPosition(el);
- var doc = el.ownerDocument;
- var w = doc.defaultView || doc.parentWindow;
- pos.left += getScrollLeft(w);
- pos.top += getScrollTop(w);
- return pos;
-}
-function _getComputedStyle(elem, name, computedStyle_) {
- var val = '';
- var d = elem.ownerDocument;
- var computedStyle = computedStyle_ || d.defaultView.getComputedStyle(elem, null);
-
- // https://github.com/kissyteam/kissy/issues/61
- if (computedStyle) {
- val = computedStyle.getPropertyValue(name) || computedStyle[name];
- }
-
- return val;
-}
-
-var _RE_NUM_NO_PX = new RegExp('^(' + RE_NUM + ')(?!px)[a-z%]+$', 'i');
-var RE_POS = /^(top|right|bottom|left)$/;
-var CURRENT_STYLE = 'currentStyle';
-var RUNTIME_STYLE = 'runtimeStyle';
-var LEFT = 'left';
-var PX = 'px';
-
-function _getComputedStyleIE(elem, name) {
- // currentStyle maybe null
- // http://msdn.microsoft.com/en-us/library/ms535231.aspx
- var ret = elem[CURRENT_STYLE] && elem[CURRENT_STYLE][name];
-
- // 当 width/height 设置为百分比时,通过 pixelLeft 方式转换的 width/height 值
- // 一开始就处理了! CUSTOM_STYLE.height,CUSTOM_STYLE.width ,cssHook 解决@2011-08-19
- // 在 ie 下不对,需要直接用 offset 方式
- // borderWidth 等值也有问题,但考虑到 borderWidth 设为百分比的概率很小,这里就不考虑了
-
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- // exclude left right for relativity
- if (_RE_NUM_NO_PX.test(ret) && !RE_POS.test(name)) {
- // Remember the original values
- var style = elem.style;
- var left = style[LEFT];
- var rsLeft = elem[RUNTIME_STYLE][LEFT];
-
- // prevent flashing of content
- elem[RUNTIME_STYLE][LEFT] = elem[CURRENT_STYLE][LEFT];
-
- // Put in the new values to get a computed value out
- style[LEFT] = name === 'fontSize' ? '1em' : ret || 0;
- ret = style.pixelLeft + PX;
-
- // Revert the changed values
- style[LEFT] = left;
-
- elem[RUNTIME_STYLE][LEFT] = rsLeft;
- }
- return ret === '' ? 'auto' : ret;
-}
-
-var getComputedStyleX = undefined;
-if (typeof window !== 'undefined') {
- getComputedStyleX = window.getComputedStyle ? _getComputedStyle : _getComputedStyleIE;
-}
-
-function each(arr, fn) {
- for (var i = 0; i < arr.length; i++) {
- fn(arr[i]);
- }
-}
-
-function isBorderBoxFn(elem) {
- return getComputedStyleX(elem, 'boxSizing') === 'border-box';
-}
-
-var BOX_MODELS = ['margin', 'border', 'padding'];
-var CONTENT_INDEX = -1;
-var PADDING_INDEX = 2;
-var BORDER_INDEX = 1;
-var MARGIN_INDEX = 0;
-
-function swap(elem, options, callback) {
- var old = {};
- var style = elem.style;
- var name = undefined;
-
- // Remember the old values, and insert the new ones
- for (name in options) {
- if (options.hasOwnProperty(name)) {
- old[name] = style[name];
- style[name] = options[name];
- }
- }
-
- callback.call(elem);
-
- // Revert the old values
- for (name in options) {
- if (options.hasOwnProperty(name)) {
- style[name] = old[name];
- }
- }
-}
-
-function getPBMWidth(elem, props, which) {
- var value = 0;
- var prop = undefined;
- var j = undefined;
- var i = undefined;
- for (j = 0; j < props.length; j++) {
- prop = props[j];
- if (prop) {
- for (i = 0; i < which.length; i++) {
- var cssProp = undefined;
- if (prop === 'border') {
- cssProp = prop + which[i] + 'Width';
- } else {
- cssProp = prop + which[i];
- }
- value += parseFloat(getComputedStyleX(elem, cssProp)) || 0;
- }
- }
- }
- return value;
-}
-
-/**
- * A crude way of determining if an object is a window
- * @member util
- */
-function isWindow(obj) {
- // must use == for ie8
- /* eslint eqeqeq:0 */
- return obj != null && obj == obj.window;
-}
-
-var domUtils = {};
-
-each(['Width', 'Height'], function (name) {
- domUtils['doc' + name] = function (refWin) {
- var d = refWin.document;
- return Math.max(
- // firefox chrome documentElement.scrollHeight< body.scrollHeight
- // ie standard mode : documentElement.scrollHeight> body.scrollHeight
- d.documentElement['scroll' + name],
- // quirks : documentElement.scrollHeight 最大等于可视窗口多一点?
- d.body['scroll' + name], domUtils['viewport' + name](d));
- };
-
- domUtils['viewport' + name] = function (win) {
- // pc browser includes scrollbar in window.innerWidth
- var prop = 'client' + name;
- var doc = win.document;
- var body = doc.body;
- var documentElement = doc.documentElement;
- var documentElementProp = documentElement[prop];
- // 标准模式取 documentElement
- // backcompat 取 body
- return doc.compatMode === 'CSS1Compat' && documentElementProp || body && body[prop] || documentElementProp;
- };
-});
-
-/*
- 得到元素的大小信息
- @param elem
- @param name
- @param {String} [extra] 'padding' : (css width) + padding
- 'border' : (css width) + padding + border
- 'margin' : (css width) + padding + border + margin
- */
-function getWH(elem, name, extra) {
- if (isWindow(elem)) {
- return name === 'width' ? domUtils.viewportWidth(elem) : domUtils.viewportHeight(elem);
- } else if (elem.nodeType === 9) {
- return name === 'width' ? domUtils.docWidth(elem) : domUtils.docHeight(elem);
- }
- var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
- var borderBoxValue = name === 'width' ? elem.offsetWidth : elem.offsetHeight;
- var computedStyle = getComputedStyleX(elem);
- var isBorderBox = isBorderBoxFn(elem, computedStyle);
- var cssBoxValue = 0;
- if (borderBoxValue == null || borderBoxValue <= 0) {
- borderBoxValue = undefined;
- // Fall back to computed then un computed css if necessary
- cssBoxValue = getComputedStyleX(elem, name);
- if (cssBoxValue == null || Number(cssBoxValue) < 0) {
- cssBoxValue = elem.style[name] || 0;
- }
- // Normalize '', auto, and prepare for extra
- cssBoxValue = parseFloat(cssBoxValue) || 0;
- }
- if (extra === undefined) {
- extra = isBorderBox ? BORDER_INDEX : CONTENT_INDEX;
- }
- var borderBoxValueOrIsBorderBox = borderBoxValue !== undefined || isBorderBox;
- var val = borderBoxValue || cssBoxValue;
- if (extra === CONTENT_INDEX) {
- if (borderBoxValueOrIsBorderBox) {
- return val - getPBMWidth(elem, ['border', 'padding'], which, computedStyle);
- }
- return cssBoxValue;
- }
- if (borderBoxValueOrIsBorderBox) {
- var padding = extra === PADDING_INDEX ? -getPBMWidth(elem, ['border'], which, computedStyle) : getPBMWidth(elem, ['margin'], which, computedStyle);
- return val + (extra === BORDER_INDEX ? 0 : padding);
- }
- return cssBoxValue + getPBMWidth(elem, BOX_MODELS.slice(extra), which, computedStyle);
-}
-
-var cssShow = {
- position: 'absolute',
- visibility: 'hidden',
- display: 'block'
-};
-
-// fix #119 : https://github.com/kissyteam/kissy/issues/119
-function getWHIgnoreDisplay(elem) {
- var val = undefined;
- var args = arguments;
- // in case elem is window
- // elem.offsetWidth === undefined
- if (elem.offsetWidth !== 0) {
- val = getWH.apply(undefined, args);
- } else {
- swap(elem, cssShow, function () {
- val = getWH.apply(undefined, args);
- });
- }
- return val;
-}
-
-function css(el, name, v) {
- var value = v;
- if ((typeof name === 'undefined' ? 'undefined' : _typeof(name)) === 'object') {
- for (var i in name) {
- if (name.hasOwnProperty(i)) {
- css(el, i, name[i]);
- }
- }
- return undefined;
- }
- if (typeof value !== 'undefined') {
- if (typeof value === 'number') {
- value += 'px';
- }
- el.style[name] = value;
- return undefined;
- }
- return getComputedStyleX(el, name);
-}
-
-each(['width', 'height'], function (name) {
- var first = name.charAt(0).toUpperCase() + name.slice(1);
- domUtils['outer' + first] = function (el, includeMargin) {
- return el && getWHIgnoreDisplay(el, name, includeMargin ? MARGIN_INDEX : BORDER_INDEX);
- };
- var which = name === 'width' ? ['Left', 'Right'] : ['Top', 'Bottom'];
-
- domUtils[name] = function (elem, val) {
- if (val !== undefined) {
- if (elem) {
- var computedStyle = getComputedStyleX(elem);
- var isBorderBox = isBorderBoxFn(elem);
- if (isBorderBox) {
- val += getPBMWidth(elem, ['padding', 'border'], which, computedStyle);
- }
- return css(elem, name, val);
- }
- return undefined;
- }
- return elem && getWHIgnoreDisplay(elem, name, CONTENT_INDEX);
- };
-});
-
-// 设置 elem 相对 elem.ownerDocument 的坐标
-function setOffset(elem, offset) {
- // set position first, in-case top/left are set even on static elem
- if (css(elem, 'position') === 'static') {
- elem.style.position = 'relative';
- }
-
- var old = getOffset(elem);
- var ret = {};
- var current = undefined;
- var key = undefined;
-
- for (key in offset) {
- if (offset.hasOwnProperty(key)) {
- current = parseFloat(css(elem, key)) || 0;
- ret[key] = current + offset[key] - old[key];
- }
- }
- css(elem, ret);
-}
-
-module.exports = _extends({
- getWindow: function getWindow(node) {
- var doc = node.ownerDocument || node;
- return doc.defaultView || doc.parentWindow;
- },
- offset: function offset(el, value) {
- if (typeof value !== 'undefined') {
- setOffset(el, value);
- } else {
- return getOffset(el);
- }
- },
-
- isWindow: isWindow,
- each: each,
- css: css,
- clone: function clone(obj) {
- var ret = {};
- for (var i in obj) {
- if (obj.hasOwnProperty(i)) {
- ret[i] = obj[i];
- }
- }
- var overflow = obj.overflow;
- if (overflow) {
- for (var i in obj) {
- if (obj.hasOwnProperty(i)) {
- ret.overflow[i] = obj.overflow[i];
- }
- }
- }
- return ret;
- },
- scrollLeft: function scrollLeft(w, v) {
- if (isWindow(w)) {
- if (v === undefined) {
- return getScrollLeft(w);
- }
- window.scrollTo(v, getScrollTop(w));
- } else {
- if (v === undefined) {
- return w.scrollLeft;
- }
- w.scrollLeft = v;
- }
- },
- scrollTop: function scrollTop(w, v) {
- if (isWindow(w)) {
- if (v === undefined) {
- return getScrollTop(w);
- }
- window.scrollTo(getScrollLeft(w), v);
- } else {
- if (v === undefined) {
- return w.scrollTop;
- }
- w.scrollTop = v;
- }
- },
-
- viewportWidth: 0,
- viewportHeight: 0
-}, domUtils);
-
-/***/ }),
-
-/***/ 115:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-var __extends = (this && this.__extends) || (function () {
- var extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };
- return function (d, b) {
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
- };
-})();
-var __assign = (this && this.__assign) || Object.assign || function(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))
- t[p] = s[p];
- }
- return t;
-};
-var __rest = (this && this.__rest) || function (s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) if (e.indexOf(p[i]) < 0)
- t[p[i]] = s[p[i]];
- return t;
-};
-exports.__esModule = true;
-var React = __webpack_require__(28);
-var PropTypes = __webpack_require__(33);
-var autosize = __webpack_require__(116);
-var _getLineHeight = __webpack_require__(117);
-var getLineHeight = _getLineHeight;
-var UPDATE = 'autosize:update';
-var DESTROY = 'autosize:destroy';
-var RESIZED = 'autosize:resized';
-/**
- * A light replacement for built-in textarea component
- * which automaticaly adjusts its height to match the content
- */
-var TextareaAutosize = /** @class */ (function (_super) {
- __extends(TextareaAutosize, _super);
- function TextareaAutosize() {
- var _this = _super !== null && _super.apply(this, arguments) || this;
- _this.state = {
- lineHeight: null
- };
- _this.dispatchEvent = function (EVENT_TYPE) {
- var event = document.createEvent('Event');
- event.initEvent(EVENT_TYPE, true, false);
- _this.textarea.dispatchEvent(event);
- };
- _this.updateLineHeight = function () {
- _this.setState({
- lineHeight: getLineHeight(_this.textarea)
- });
- };
- _this.onChange = function (e) {
- var onChange = _this.props.onChange;
- _this.currentValue = e.currentTarget.value;
- onChange && onChange(e);
- };
- _this.saveDOMNodeRef = function (ref) {
- var innerRef = _this.props.innerRef;
- if (innerRef) {
- innerRef(ref);
- }
- _this.textarea = ref;
- };
- _this.getLocals = function () {
- var _a = _this, _b = _a.props, onResize = _b.onResize, maxRows = _b.maxRows, onChange = _b.onChange, style = _b.style, innerRef = _b.innerRef, props = __rest(_b, ["onResize", "maxRows", "onChange", "style", "innerRef"]), lineHeight = _a.state.lineHeight, saveDOMNodeRef = _a.saveDOMNodeRef;
- var maxHeight = maxRows && lineHeight ? lineHeight * maxRows : null;
- return __assign({}, props, { saveDOMNodeRef: saveDOMNodeRef, style: maxHeight ? __assign({}, style, { maxHeight: maxHeight }) : style, onChange: _this.onChange });
- };
- return _this;
- }
- TextareaAutosize.prototype.componentDidMount = function () {
- var _this = this;
- var _a = this.props, onResize = _a.onResize, maxRows = _a.maxRows;
- if (typeof maxRows === 'number') {
- this.updateLineHeight();
- }
- /*
- the defer is needed to:
- - force "autosize" to activate the scrollbar when this.props.maxRows is passed
- - support StyledComponents (see #71)
- */
- setTimeout(function () { return autosize(_this.textarea); });
- if (onResize) {
- this.textarea.addEventListener(RESIZED, onResize);
- }
- };
- TextareaAutosize.prototype.componentWillUnmount = function () {
- var onResize = this.props.onResize;
- if (onResize) {
- this.textarea.removeEventListener(RESIZED, onResize);
- }
- this.dispatchEvent(DESTROY);
- };
- TextareaAutosize.prototype.render = function () {
- var _a = this.getLocals(), children = _a.children, saveDOMNodeRef = _a.saveDOMNodeRef, locals = __rest(_a, ["children", "saveDOMNodeRef"]);
- return (React.createElement("textarea", __assign({}, locals, { ref: saveDOMNodeRef }), children));
- };
- TextareaAutosize.prototype.componentDidUpdate = function (prevProps) {
- if (this.props.value !== this.currentValue || this.props.rows !== prevProps.rows) {
- this.dispatchEvent(UPDATE);
- }
- };
- TextareaAutosize.defaultProps = {
- rows: 1
- };
- TextareaAutosize.propTypes = {
- rows: PropTypes.number,
- maxRows: PropTypes.number,
- onResize: PropTypes.func,
- innerRef: PropTypes.func
- };
- return TextareaAutosize;
-}(React.Component));
-exports["default"] = TextareaAutosize;
-
-
-/***/ }),
-
-/***/ 116:
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
- autosize 4.0.2
- license: MIT
- http://www.jacklmoore.com/autosize
-*/
-(function (global, factory) {
- if (true) {
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [module, exports], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
- __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
- (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else { var mod; }
-})(this, function (module, exports) {
- 'use strict';
-
- var map = typeof Map === "function" ? new Map() : function () {
- var keys = [];
- var values = [];
-
- return {
- has: function has(key) {
- return keys.indexOf(key) > -1;
- },
- get: function get(key) {
- return values[keys.indexOf(key)];
- },
- set: function set(key, value) {
- if (keys.indexOf(key) === -1) {
- keys.push(key);
- values.push(value);
- }
- },
- delete: function _delete(key) {
- var index = keys.indexOf(key);
- if (index > -1) {
- keys.splice(index, 1);
- values.splice(index, 1);
- }
- }
- };
- }();
-
- var createEvent = function createEvent(name) {
- return new Event(name, { bubbles: true });
- };
- try {
- new Event('test');
- } catch (e) {
- // IE does not support `new Event()`
- createEvent = function createEvent(name) {
- var evt = document.createEvent('Event');
- evt.initEvent(name, true, false);
- return evt;
- };
- }
-
- function assign(ta) {
- if (!ta || !ta.nodeName || ta.nodeName !== 'TEXTAREA' || map.has(ta)) return;
-
- var heightOffset = null;
- var clientWidth = null;
- var cachedHeight = null;
-
- function init() {
- var style = window.getComputedStyle(ta, null);
-
- if (style.resize === 'vertical') {
- ta.style.resize = 'none';
- } else if (style.resize === 'both') {
- ta.style.resize = 'horizontal';
- }
-
- if (style.boxSizing === 'content-box') {
- heightOffset = -(parseFloat(style.paddingTop) + parseFloat(style.paddingBottom));
- } else {
- heightOffset = parseFloat(style.borderTopWidth) + parseFloat(style.borderBottomWidth);
- }
- // Fix when a textarea is not on document body and heightOffset is Not a Number
- if (isNaN(heightOffset)) {
- heightOffset = 0;
- }
-
- update();
- }
-
- function changeOverflow(value) {
- {
- // Chrome/Safari-specific fix:
- // When the textarea y-overflow is hidden, Chrome/Safari do not reflow the text to account for the space
- // made available by removing the scrollbar. The following forces the necessary text reflow.
- var width = ta.style.width;
- ta.style.width = '0px';
- // Force reflow:
- /* jshint ignore:start */
- ta.offsetWidth;
- /* jshint ignore:end */
- ta.style.width = width;
- }
-
- ta.style.overflowY = value;
- }
-
- function getParentOverflows(el) {
- var arr = [];
-
- while (el && el.parentNode && el.parentNode instanceof Element) {
- if (el.parentNode.scrollTop) {
- arr.push({
- node: el.parentNode,
- scrollTop: el.parentNode.scrollTop
- });
- }
- el = el.parentNode;
- }
-
- return arr;
- }
-
- function resize() {
- if (ta.scrollHeight === 0) {
- // If the scrollHeight is 0, then the element probably has display:none or is detached from the DOM.
- return;
- }
-
- var overflows = getParentOverflows(ta);
- var docTop = document.documentElement && document.documentElement.scrollTop; // Needed for Mobile IE (ticket #240)
-
- ta.style.height = '';
- ta.style.height = ta.scrollHeight + heightOffset + 'px';
-
- // used to check if an update is actually necessary on window.resize
- clientWidth = ta.clientWidth;
-
- // prevents scroll-position jumping
- overflows.forEach(function (el) {
- el.node.scrollTop = el.scrollTop;
- });
-
- if (docTop) {
- document.documentElement.scrollTop = docTop;
- }
- }
-
- function update() {
- resize();
-
- var styleHeight = Math.round(parseFloat(ta.style.height));
- var computed = window.getComputedStyle(ta, null);
-
- // Using offsetHeight as a replacement for computed.height in IE, because IE does not account use of border-box
- var actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(computed.height)) : ta.offsetHeight;
-
- // The actual height not matching the style height (set via the resize method) indicates that
- // the max-height has been exceeded, in which case the overflow should be allowed.
- if (actualHeight < styleHeight) {
- if (computed.overflowY === 'hidden') {
- changeOverflow('scroll');
- resize();
- actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
- }
- } else {
- // Normally keep overflow set to hidden, to avoid flash of scrollbar as the textarea expands.
- if (computed.overflowY !== 'hidden') {
- changeOverflow('hidden');
- resize();
- actualHeight = computed.boxSizing === 'content-box' ? Math.round(parseFloat(window.getComputedStyle(ta, null).height)) : ta.offsetHeight;
- }
- }
-
- if (cachedHeight !== actualHeight) {
- cachedHeight = actualHeight;
- var evt = createEvent('autosize:resized');
- try {
- ta.dispatchEvent(evt);
- } catch (err) {
- // Firefox will throw an error on dispatchEvent for a detached element
- // https://bugzilla.mozilla.org/show_bug.cgi?id=889376
- }
- }
- }
-
- var pageResize = function pageResize() {
- if (ta.clientWidth !== clientWidth) {
- update();
- }
- };
-
- var destroy = function (style) {
- window.removeEventListener('resize', pageResize, false);
- ta.removeEventListener('input', update, false);
- ta.removeEventListener('keyup', update, false);
- ta.removeEventListener('autosize:destroy', destroy, false);
- ta.removeEventListener('autosize:update', update, false);
-
- Object.keys(style).forEach(function (key) {
- ta.style[key] = style[key];
- });
-
- map.delete(ta);
- }.bind(ta, {
- height: ta.style.height,
- resize: ta.style.resize,
- overflowY: ta.style.overflowY,
- overflowX: ta.style.overflowX,
- wordWrap: ta.style.wordWrap
- });
-
- ta.addEventListener('autosize:destroy', destroy, false);
-
- // IE9 does not fire onpropertychange or oninput for deletions,
- // so binding to onkeyup to catch most of those events.
- // There is no way that I know of to detect something like 'cut' in IE9.
- if ('onpropertychange' in ta && 'oninput' in ta) {
- ta.addEventListener('keyup', update, false);
- }
-
- window.addEventListener('resize', pageResize, false);
- ta.addEventListener('input', update, false);
- ta.addEventListener('autosize:update', update, false);
- ta.style.overflowX = 'hidden';
- ta.style.wordWrap = 'break-word';
-
- map.set(ta, {
- destroy: destroy,
- update: update
- });
-
- init();
- }
-
- function destroy(ta) {
- var methods = map.get(ta);
- if (methods) {
- methods.destroy();
- }
- }
-
- function update(ta) {
- var methods = map.get(ta);
- if (methods) {
- methods.update();
- }
- }
-
- var autosize = null;
-
- // Do nothing in Node.js environment and IE8 (or lower)
- if (typeof window === 'undefined' || typeof window.getComputedStyle !== 'function') {
- autosize = function autosize(el) {
- return el;
- };
- autosize.destroy = function (el) {
- return el;
- };
- autosize.update = function (el) {
- return el;
- };
- } else {
- autosize = function autosize(el, options) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], function (x) {
- return assign(x, options);
- });
- }
- return el;
- };
- autosize.destroy = function (el) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], destroy);
- }
- return el;
- };
- autosize.update = function (el) {
- if (el) {
- Array.prototype.forEach.call(el.length ? el : [el], update);
- }
- return el;
- };
- }
-
- exports.default = autosize;
- module.exports = exports['default'];
-});
-
-/***/ }),
-
-/***/ 117:
-/***/ (function(module, exports, __webpack_require__) {
-
-// Load in dependencies
-var computedStyle = __webpack_require__(118);
-
-/**
- * Calculate the `line-height` of a given node
- * @param {HTMLElement} node Element to calculate line height of. Must be in the DOM.
- * @returns {Number} `line-height` of the element in pixels
- */
-function lineHeight(node) {
- // Grab the line-height via style
- var lnHeightStr = computedStyle(node, 'line-height');
- var lnHeight = parseFloat(lnHeightStr, 10);
-
- // If the lineHeight did not contain a unit (i.e. it was numeric), convert it to ems (e.g. '2.3' === '2.3em')
- if (lnHeightStr === lnHeight + '') {
- // Save the old lineHeight style and update the em unit to the element
- var _lnHeightStyle = node.style.lineHeight;
- node.style.lineHeight = lnHeightStr + 'em';
-
- // Calculate the em based height
- lnHeightStr = computedStyle(node, 'line-height');
- lnHeight = parseFloat(lnHeightStr, 10);
-
- // Revert the lineHeight style
- if (_lnHeightStyle) {
- node.style.lineHeight = _lnHeightStyle;
- } else {
- delete node.style.lineHeight;
- }
- }
-
- // If the lineHeight is in `pt`, convert it to pixels (4px for 3pt)
- // DEV: `em` units are converted to `pt` in IE6
- // Conversion ratio from https://developer.mozilla.org/en-US/docs/Web/CSS/length
- if (lnHeightStr.indexOf('pt') !== -1) {
- lnHeight *= 4;
- lnHeight /= 3;
- // Otherwise, if the lineHeight is in `mm`, convert it to pixels (96px for 25.4mm)
- } else if (lnHeightStr.indexOf('mm') !== -1) {
- lnHeight *= 96;
- lnHeight /= 25.4;
- // Otherwise, if the lineHeight is in `cm`, convert it to pixels (96px for 2.54cm)
- } else if (lnHeightStr.indexOf('cm') !== -1) {
- lnHeight *= 96;
- lnHeight /= 2.54;
- // Otherwise, if the lineHeight is in `in`, convert it to pixels (96px for 1in)
- } else if (lnHeightStr.indexOf('in') !== -1) {
- lnHeight *= 96;
- // Otherwise, if the lineHeight is in `pc`, convert it to pixels (12pt for 1pc)
- } else if (lnHeightStr.indexOf('pc') !== -1) {
- lnHeight *= 16;
- }
-
- // Continue our computation
- lnHeight = Math.round(lnHeight);
-
- // If the line-height is "normal", calculate by font-size
- if (lnHeightStr === 'normal') {
- // Create a temporary node
- var nodeName = node.nodeName;
- var _node = document.createElement(nodeName);
- _node.innerHTML = '&nbsp;';
-
- // If we have a text area, reset it to only 1 row
- // https://github.com/twolfson/line-height/issues/4
- if (nodeName.toUpperCase() === 'TEXTAREA') {
- _node.setAttribute('rows', '1');
- }
-
- // Set the font-size of the element
- var fontSizeStr = computedStyle(node, 'font-size');
- _node.style.fontSize = fontSizeStr;
-
- // Remove default padding/border which can affect offset height
- // https://github.com/twolfson/line-height/issues/4
- // https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/offsetHeight
- _node.style.padding = '0px';
- _node.style.border = '0px';
-
- // Append it to the body
- var body = document.body;
- body.appendChild(_node);
-
- // Assume the line height of the element is the height
- var height = _node.offsetHeight;
- lnHeight = height;
-
- // Remove our child from the DOM
- body.removeChild(_node);
- }
-
- // Return the calculated height
- return lnHeight;
-}
-
-// Export lineHeight
-module.exports = lineHeight;
-
-
-/***/ }),
-
-/***/ 118:
-/***/ (function(module, exports) {
-
-// This code has been refactored for 140 bytes
-// You can see the original here: https://github.com/twolfson/computedStyle/blob/04cd1da2e30fa45844f95f5cb1ac898e9b9ef050/lib/computedStyle.js
-var computedStyle = function (el, prop, getComputedStyle) {
- getComputedStyle = window.getComputedStyle;
-
- // In one fell swoop
- return (
- // If we have getComputedStyle
- getComputedStyle ?
- // Query it
- // TODO: From CSS-Query notes, we might need (node, null) for FF
- getComputedStyle(el) :
-
- // Otherwise, we are in IE and use currentStyle
- el.currentStyle
- )[
- // Switch to camelCase for CSSOM
- // DEV: Grabbed from jQuery
- // https://github.com/jquery/jquery/blob/1.9-stable/src/css.js#L191-L194
- // https://github.com/jquery/jquery/blob/1.9-stable/src/core.js#L593-L597
- prop.replace(/-(\w)/gi, function (word, letter) {
- return letter.toUpperCase();
- })
- ];
-};
-
-module.exports = computedStyle;
-
-
-/***/ }),
-
-/***/ 119:
-/***/ (function(module, exports) {
-
-function _extends() {
- module.exports = _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);
-}
-
-module.exports = _extends;
-
-/***/ }),
-
-/***/ 12:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _classCallCheck; });
-function _classCallCheck(instance, Constructor) {
- if (!(instance instanceof Constructor)) {
- throw new TypeError("Cannot call a class as a function");
- }
-}
-
-/***/ }),
-
-/***/ 120:
-/***/ (function(module, exports) {
-
-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;
-}
-
-module.exports = _objectWithoutPropertiesLoose;
-
-/***/ }),
-
-/***/ 121:
-/***/ (function(module, exports) {
-
-function _inheritsLoose(subClass, superClass) {
- subClass.prototype = Object.create(superClass.prototype);
- subClass.prototype.constructor = subClass;
- subClass.__proto__ = superClass;
-}
-
-module.exports = _inheritsLoose;
-
-/***/ }),
-
-/***/ 122:
-/***/ (function(module, exports) {
-
-function _assertThisInitialized(self) {
- if (self === void 0) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- }
-
- return self;
-}
-
-module.exports = _assertThisInitialized;
-
-/***/ }),
-
-/***/ 123:
-/***/ (function(module, exports, __webpack_require__) {
-
-/* WEBPACK VAR INJECTION */(function(module, global) {var __WEBPACK_AMD_DEFINE_RESULT__;/*! https://mths.be/punycode v1.3.2 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 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.
- * http://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.3.2',
- /**
- * 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__(124)(module), __webpack_require__(65)))
-
-/***/ }),
-
-/***/ 124:
-/***/ (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;
-};
-
-
-/***/ }),
-
-/***/ 125:
-/***/ (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;
- }
-};
-
-
-/***/ }),
-
-/***/ 126:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-exports.decode = exports.parse = __webpack_require__(127);
-exports.encode = exports.stringify = __webpack_require__(128);
-
-
-/***/ }),
-
-/***/ 127:
-/***/ (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]';
-};
-
-
-/***/ }),
-
-/***/ 128:
-/***/ (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";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _possibleConstructorReturn; });
-/* harmony import */ var _helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(31);
-/* harmony import */ var _assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(5);
-
-
-function _possibleConstructorReturn(self, call) {
- if (call && (Object(_helpers_esm_typeof__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(call) === "object" || typeof call === "function")) {
- return call;
- }
-
- return Object(_assertThisInitialized__WEBPACK_IMPORTED_MODULE_1__[/* default */ "a"])(self);
-}
-
-/***/ }),
-
-/***/ 14:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _getPrototypeOf; });
-function _getPrototypeOf(o) {
- _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {
- return o.__proto__ || Object.getPrototypeOf(o);
- };
- return _getPrototypeOf(o);
-}
-
-/***/ }),
-
-/***/ 143:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["tokenList"]; }());
-
-/***/ }),
-
-/***/ 15:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js
-function _setPrototypeOf(o, p) {
- _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {
- o.__proto__ = p;
- return o;
- };
-
- return _setPrototypeOf(o, p);
-}
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _inherits; });
-
-function _inherits(subClass, superClass) {
- if (typeof superClass !== "function" && superClass !== null) {
- throw new TypeError("Super expression must either be null or a function");
- }
-
- subClass.prototype = Object.create(superClass && superClass.prototype, {
- constructor: {
- value: subClass,
- writable: true,
- configurable: true
- }
- });
- if (superClass) _setPrototypeOf(subClass, superClass);
-}
-
-/***/ }),
-
-/***/ 16:
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
- Copyright (c) 2017 Jed Watson.
- Licensed under the MIT License (MIT), see
- http://jedwatson.github.io/classnames
-*/
-/* global define */
-
-(function () {
- 'use strict';
-
- var hasOwn = {}.hasOwnProperty;
-
- function classNames () {
- var classes = [];
-
- for (var i = 0; i < arguments.length; i++) {
- var arg = arguments[i];
- if (!arg) continue;
-
- var argType = typeof arg;
-
- if (argType === 'string' || argType === 'number') {
- classes.push(arg);
- } else if (Array.isArray(arg) && arg.length) {
- var inner = classNames.apply(null, arg);
- if (inner) {
- classes.push(inner);
- }
- } else if (argType === 'object') {
- for (var key in arg) {
- if (hasOwn.call(arg, key) && arg[key]) {
- classes.push(key);
- }
- }
- }
- }
-
- return classes.join(' ');
- }
-
- if ( true && module.exports) {
- classNames.default = classNames;
- module.exports = classNames;
- } else if (true) {
- // register as 'classnames', consistent with npm package name
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
- return classNames;
- }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
- } else {}
-}());
-
-
-/***/ }),
-
-/***/ 17:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js
-function _arrayWithoutHoles(arr) {
- if (Array.isArray(arr)) {
- for (var i = 0, arr2 = new Array(arr.length); i < arr.length; i++) {
- arr2[i] = arr[i];
- }
-
- return arr2;
- }
-}
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArray.js
-var iterableToArray = __webpack_require__(30);
-
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js
-function _nonIterableSpread() {
- throw new TypeError("Invalid attempt to spread non-iterable instance");
-}
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _toConsumableArray; });
-
-
-
-function _toConsumableArray(arr) {
- return _arrayWithoutHoles(arr) || Object(iterableToArray["a" /* default */])(arr) || _nonIterableSpread();
-}
-
-/***/ }),
-
-/***/ 18:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _extends; });
-function _extends() {
- _extends = Object.assign || function (target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i];
-
- for (var key in source) {
- if (Object.prototype.hasOwnProperty.call(source, key)) {
- target[key] = source[key];
- }
- }
- }
-
- return target;
- };
-
- return _extends.apply(this, arguments);
-}
-
-/***/ }),
-
-/***/ 19:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["keycodes"]; }());
-
-/***/ }),
-
-/***/ 2:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["lodash"]; }());
-
-/***/ }),
-
-/***/ 20:
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = __webpack_require__(47);
-
-
-/***/ }),
-
-/***/ 21:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js
-function _objectWithoutPropertiesLoose(source, excluded) {
- if (source == null) return {};
- var target = {};
- var sourceKeys = Object.keys(source);
- var key, i;
-
- for (i = 0; i < sourceKeys.length; i++) {
- key = sourceKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- target[key] = source[key];
- }
-
- return target;
-}
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectWithoutProperties; });
-
-function _objectWithoutProperties(source, excluded) {
- if (source == null) return {};
- var target = _objectWithoutPropertiesLoose(source, excluded);
- var key, i;
-
- if (Object.getOwnPropertySymbols) {
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
-
- for (i = 0; i < sourceSymbolKeys.length; i++) {
- key = sourceSymbolKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
- target[key] = source[key];
- }
- }
-
- return target;
-}
-
-/***/ }),
-
-/***/ 218:
-/***/ (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;
-
-/***/ }),
-
-/***/ 219:
-/***/ (function(module, exports, __webpack_require__) {
-
-/*!
-
- diff v3.5.0
-
-Software License Agreement (BSD License)
-
-Copyright (c) 2009-2015, Kevin Decker <kpdecker@gmail.com>
-
-All rights reserved.
-
-Redistribution and use of this software in source and binary forms, with or without modification,
-are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above
- copyright notice, this list of conditions and the
- following disclaimer.
-
-* Redistributions in binary form must reproduce the above
- copyright notice, this list of conditions and the
- following disclaimer in the documentation and/or other
- materials provided with the distribution.
-
-* Neither the name of Kevin Decker nor the names of its
- contributors may be used to endorse or promote products
- derived from this software without specific prior
- written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR
-IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
-FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
-CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
-IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
-OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-@license
-*/
-(function webpackUniversalModuleDefinition(root, factory) {
- if(true)
- module.exports = factory();
- else {}
-})(this, function() {
-return /******/ (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] = {
-/******/ exports: {},
-/******/ id: moduleId,
-/******/ loaded: false
-/******/ };
-
-/******/ // Execute the module function
-/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
-
-/******/ // Flag the module as loaded
-/******/ module.loaded = 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;
-
-/******/ // __webpack_public_path__
-/******/ __webpack_require__.p = "";
-
-/******/ // Load entry module and return exports
-/******/ return __webpack_require__(0);
-/******/ })
-/************************************************************************/
-/******/ ([
-/* 0 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.canonicalize = exports.convertChangesToXML = exports.convertChangesToDMP = exports.merge = exports.parsePatch = exports.applyPatches = exports.applyPatch = exports.createPatch = exports.createTwoFilesPatch = exports.structuredPatch = exports.diffArrays = exports.diffJson = exports.diffCss = exports.diffSentences = exports.diffTrimmedLines = exports.diffLines = exports.diffWordsWithSpace = exports.diffWords = exports.diffChars = exports.Diff = undefined;
-
- /*istanbul ignore end*/var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- /*istanbul ignore end*/var /*istanbul ignore start*/_character = __webpack_require__(2) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_word = __webpack_require__(3) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_sentence = __webpack_require__(6) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_css = __webpack_require__(7) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_json = __webpack_require__(8) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_array = __webpack_require__(9) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_apply = __webpack_require__(10) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_merge = __webpack_require__(13) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_dmp = __webpack_require__(16) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_xml = __webpack_require__(17) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /* See LICENSE file for terms of use */
-
- /*
- * Text diff implementation.
- *
- * This library supports the following APIS:
- * JsDiff.diffChars: Character by character diff
- * JsDiff.diffWords: Word (as defined by \b regex) diff which ignores whitespace
- * JsDiff.diffLines: Line based diff
- *
- * JsDiff.diffCss: Diff targeted at CSS content
- *
- * These methods are based on the implementation proposed in
- * "An O(ND) Difference Algorithm and its Variations" (Myers, 1986).
- * http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.4.6927
- */
- exports. /*istanbul ignore end*/Diff = _base2['default'];
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffChars = _character.diffChars;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWords = _word.diffWords;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = _word.diffWordsWithSpace;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffLines = _line.diffLines;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = _line.diffTrimmedLines;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffSentences = _sentence.diffSentences;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffCss = _css.diffCss;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffJson = _json.diffJson;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffArrays = _array.diffArrays;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/structuredPatch = _create.structuredPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = _create.createTwoFilesPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = _create.createPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatch = _apply.applyPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = _apply.applyPatches;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/parsePatch = _parse.parsePatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = _merge.merge;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToDMP = _dmp.convertChangesToDMP;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/convertChangesToXML = _xml.convertChangesToXML;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = _json.canonicalize;
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uL3NyYy9pbmRleC5qcyJdLCJuYW1lcyI6WyJEaWZmIiwiZGlmZkNoYXJzIiwiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImRpZmZTZW50ZW5jZXMiLCJkaWZmQ3NzIiwiZGlmZkpzb24iLCJkaWZmQXJyYXlzIiwic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwiYXBwbHlQYXRjaCIsImFwcGx5UGF0Y2hlcyIsInBhcnNlUGF0Y2giLCJtZXJnZSIsImNvbnZlcnRDaGFuZ2VzVG9ETVAiLCJjb252ZXJ0Q2hhbmdlc1RvWE1MIiwiY2Fub25pY2FsaXplIl0sIm1hcHBpbmdzIjoiOzs7Ozt1QkFnQkE7Ozs7dUJBQ0E7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7O0FBRUE7O0FBRUE7O0FBQ0E7O0FBQ0E7O0FBQ0E7O0FBRUE7O0FBQ0E7Ozs7QUFqQ0E7O0FBRUE7Ozs7Ozs7Ozs7Ozs7O2dDQWtDRUEsSTt5REFFQUMsUzt5REFDQUMsUzt5REFDQUMsa0I7eURBQ0FDLFM7eURBQ0FDLGdCO3lEQUNBQyxhO3lEQUVBQyxPO3lEQUNBQyxRO3lEQUVBQyxVO3lEQUVBQyxlO3lEQUNBQyxtQjt5REFDQUMsVzt5REFDQUMsVTt5REFDQUMsWTt5REFDQUMsVTt5REFDQUMsSzt5REFDQUMsbUI7eURBQ0FDLG1CO3lEQUNBQyxZIiwiZmlsZSI6ImluZGV4LmpzIiwic291cmNlc0NvbnRlbnQiOlsiLyogU2VlIExJQ0VOU0UgZmlsZSBmb3IgdGVybXMgb2YgdXNlICovXG5cbi8qXG4gKiBUZXh0IGRpZmYgaW1wbGVtZW50YXRpb24uXG4gKlxuICogVGhpcyBsaWJyYXJ5IHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgQVBJUzpcbiAqIEpzRGlmZi5kaWZmQ2hhcnM6IENoYXJhY3RlciBieSBjaGFyYWN0ZXIgZGlmZlxuICogSnNEaWZmLmRpZmZXb3JkczogV29yZCAoYXMgZGVmaW5lZCBieSBcXGIgcmVnZXgpIGRpZmYgd2hpY2ggaWdub3JlcyB3aGl0ZXNwYWNlXG4gKiBKc0RpZmYuZGlmZkxpbmVzOiBMaW5lIGJhc2VkIGRpZmZcbiAqXG4gKiBKc0RpZmYuZGlmZkNzczogRGlmZiB0YXJnZXRlZCBhdCBDU1MgY29udGVudFxuICpcbiAqIFRoZXNlIG1ldGhvZHMgYXJlIGJhc2VkIG9uIHRoZSBpbXBsZW1lbnRhdGlvbiBwcm9wb3NlZCBpblxuICogXCJBbiBPKE5EKSBEaWZmZXJlbmNlIEFsZ29yaXRobSBhbmQgaXRzIFZhcmlhdGlvbnNcIiAoTXllcnMsIDE5ODYpLlxuICogaHR0cDovL2NpdGVzZWVyeC5pc3QucHN1LmVkdS92aWV3ZG9jL3N1bW1hcnk/ZG9pPTEwLjEuMS40LjY5MjdcbiAqL1xuaW1wb3J0IERpZmYgZnJvbSAnLi9kaWZmL2Jhc2UnO1xuaW1wb3J0IHtkaWZmQ2hhcnN9IGZyb20gJy4vZGlmZi9jaGFyYWN0ZXInO1xuaW1wb3J0IHtkaWZmV29yZHMsIGRpZmZXb3Jkc1dpdGhTcGFjZX0gZnJvbSAnLi9kaWZmL3dvcmQnO1xuaW1wb3J0IHtkaWZmTGluZXMsIGRpZmZUcmltbWVkTGluZXN9IGZyb20gJy4vZGlmZi9saW5lJztcbmltcG9ydCB7ZGlmZlNlbnRlbmNlc30gZnJvbSAnLi9kaWZmL3NlbnRlbmNlJztcblxuaW1wb3J0IHtkaWZmQ3NzfSBmcm9tICcuL2RpZmYvY3NzJztcbmltcG9ydCB7ZGlmZkpzb24sIGNhbm9uaWNhbGl6ZX0gZnJvbSAnLi9kaWZmL2pzb24nO1xuXG5pbXBvcnQge2RpZmZBcnJheXN9IGZyb20gJy4vZGlmZi9hcnJheSc7XG5cbmltcG9ydCB7YXBwbHlQYXRjaCwgYXBwbHlQYXRjaGVzfSBmcm9tICcuL3BhdGNoL2FwcGx5JztcbmltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXRjaC9wYXJzZSc7XG5pbXBvcnQge21lcmdlfSBmcm9tICcuL3BhdGNoL21lcmdlJztcbmltcG9ydCB7c3RydWN0dXJlZFBhdGNoLCBjcmVhdGVUd29GaWxlc1BhdGNoLCBjcmVhdGVQYXRjaH0gZnJvbSAnLi9wYXRjaC9jcmVhdGUnO1xuXG5pbXBvcnQge2NvbnZlcnRDaGFuZ2VzVG9ETVB9IGZyb20gJy4vY29udmVydC9kbXAnO1xuaW1wb3J0IHtjb252ZXJ0Q2hhbmdlc1RvWE1MfSBmcm9tICcuL2NvbnZlcnQveG1sJztcblxuZXhwb3J0IHtcbiAgRGlmZixcblxuICBkaWZmQ2hhcnMsXG4gIGRpZmZXb3JkcyxcbiAgZGlmZldvcmRzV2l0aFNwYWNlLFxuICBkaWZmTGluZXMsXG4gIGRpZmZUcmltbWVkTGluZXMsXG4gIGRpZmZTZW50ZW5jZXMsXG5cbiAgZGlmZkNzcyxcbiAgZGlmZkpzb24sXG5cbiAgZGlmZkFycmF5cyxcblxuICBzdHJ1Y3R1cmVkUGF0Y2gsXG4gIGNyZWF0ZVR3b0ZpbGVzUGF0Y2gsXG4gIGNyZWF0ZVBhdGNoLFxuICBhcHBseVBhdGNoLFxuICBhcHBseVBhdGNoZXMsXG4gIHBhcnNlUGF0Y2gsXG4gIG1lcmdlLFxuICBjb252ZXJ0Q2hhbmdlc1RvRE1QLFxuICBjb252ZXJ0Q2hhbmdlc1RvWE1MLFxuICBjYW5vbmljYWxpemVcbn07XG4iXX0=
-
-
-/***/ }),
-/* 1 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports['default'] = /*istanbul ignore end*/Diff;
- function Diff() {}
-
- Diff.prototype = {
- /*istanbul ignore start*/ /*istanbul ignore end*/diff: function diff(oldString, newString) {
- /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- var callback = options.callback;
- if (typeof options === 'function') {
- callback = options;
- options = {};
- }
- this.options = options;
-
- var self = this;
-
- function done(value) {
- if (callback) {
- setTimeout(function () {
- callback(undefined, value);
- }, 0);
- return true;
- } else {
- return value;
- }
- }
-
- // Allow subclasses to massage the input prior to running
- oldString = this.castInput(oldString);
- newString = this.castInput(newString);
-
- oldString = this.removeEmpty(this.tokenize(oldString));
- newString = this.removeEmpty(this.tokenize(newString));
-
- var newLen = newString.length,
- oldLen = oldString.length;
- var editLength = 1;
- var maxEditLength = newLen + oldLen;
- var bestPath = [{ newPos: -1, components: [] }];
-
- // Seed editLength = 0, i.e. the content starts with the same values
- var oldPos = this.extractCommon(bestPath[0], newString, oldString, 0);
- if (bestPath[0].newPos + 1 >= newLen && oldPos + 1 >= oldLen) {
- // Identity per the equality and tokenizer
- return done([{ value: this.join(newString), count: newString.length }]);
- }
-
- // Main worker method. checks all permutations of a given edit length for acceptance.
- function execEditLength() {
- for (var diagonalPath = -1 * editLength; diagonalPath <= editLength; diagonalPath += 2) {
- var basePath = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
- var addPath = bestPath[diagonalPath - 1],
- removePath = bestPath[diagonalPath + 1],
- _oldPos = (removePath ? removePath.newPos : 0) - diagonalPath;
- if (addPath) {
- // No one else is going to attempt to use this value, clear it
- bestPath[diagonalPath - 1] = undefined;
- }
-
- var canAdd = addPath && addPath.newPos + 1 < newLen,
- canRemove = removePath && 0 <= _oldPos && _oldPos < oldLen;
- if (!canAdd && !canRemove) {
- // If this path is a terminal then prune
- bestPath[diagonalPath] = undefined;
- continue;
- }
-
- // Select the diagonal that we want to branch from. We select the prior
- // path whose position in the new string is the farthest from the origin
- // and does not pass the bounds of the diff graph
- if (!canAdd || canRemove && addPath.newPos < removePath.newPos) {
- basePath = clonePath(removePath);
- self.pushComponent(basePath.components, undefined, true);
- } else {
- basePath = addPath; // No need to clone, we've pulled it from the list
- basePath.newPos++;
- self.pushComponent(basePath.components, true, undefined);
- }
-
- _oldPos = self.extractCommon(basePath, newString, oldString, diagonalPath);
-
- // If we have hit the end of both strings, then we are done
- if (basePath.newPos + 1 >= newLen && _oldPos + 1 >= oldLen) {
- return done(buildValues(self, basePath.components, newString, oldString, self.useLongestToken));
- } else {
- // Otherwise track this path as a potential candidate and continue.
- bestPath[diagonalPath] = basePath;
- }
- }
-
- editLength++;
- }
-
- // Performs the length of edit iteration. Is a bit fugly as this has to support the
- // sync and async mode which is never fun. Loops over execEditLength until a value
- // is produced.
- if (callback) {
- (function exec() {
- setTimeout(function () {
- // This should not happen, but we want to be safe.
- /* istanbul ignore next */
- if (editLength > maxEditLength) {
- return callback();
- }
-
- if (!execEditLength()) {
- exec();
- }
- }, 0);
- })();
- } else {
- while (editLength <= maxEditLength) {
- var ret = execEditLength();
- if (ret) {
- return ret;
- }
- }
- }
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/pushComponent: function pushComponent(components, added, removed) {
- var last = components[components.length - 1];
- if (last && last.added === added && last.removed === removed) {
- // We need to clone here as the component clone operation is just
- // as shallow array clone
- components[components.length - 1] = { count: last.count + 1, added: added, removed: removed };
- } else {
- components.push({ count: 1, added: added, removed: removed });
- }
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/extractCommon: function extractCommon(basePath, newString, oldString, diagonalPath) {
- var newLen = newString.length,
- oldLen = oldString.length,
- newPos = basePath.newPos,
- oldPos = newPos - diagonalPath,
- commonCount = 0;
- while (newPos + 1 < newLen && oldPos + 1 < oldLen && this.equals(newString[newPos + 1], oldString[oldPos + 1])) {
- newPos++;
- oldPos++;
- commonCount++;
- }
-
- if (commonCount) {
- basePath.components.push({ count: commonCount });
- }
-
- basePath.newPos = newPos;
- return oldPos;
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/equals: function equals(left, right) {
- if (this.options.comparator) {
- return this.options.comparator(left, right);
- } else {
- return left === right || this.options.ignoreCase && left.toLowerCase() === right.toLowerCase();
- }
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/removeEmpty: function removeEmpty(array) {
- var ret = [];
- for (var i = 0; i < array.length; i++) {
- if (array[i]) {
- ret.push(array[i]);
- }
- }
- return ret;
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/castInput: function castInput(value) {
- return value;
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/tokenize: function tokenize(value) {
- return value.split('');
- },
- /*istanbul ignore start*/ /*istanbul ignore end*/join: function join(chars) {
- return chars.join('');
- }
- };
-
- function buildValues(diff, components, newString, oldString, useLongestToken) {
- var componentPos = 0,
- componentLen = components.length,
- newPos = 0,
- oldPos = 0;
-
- for (; componentPos < componentLen; componentPos++) {
- var component = components[componentPos];
- if (!component.removed) {
- if (!component.added && useLongestToken) {
- var value = newString.slice(newPos, newPos + component.count);
- value = value.map(function (value, i) {
- var oldValue = oldString[oldPos + i];
- return oldValue.length > value.length ? oldValue : value;
- });
-
- component.value = diff.join(value);
- } else {
- component.value = diff.join(newString.slice(newPos, newPos + component.count));
- }
- newPos += component.count;
-
- // Common case
- if (!component.added) {
- oldPos += component.count;
- }
- } else {
- component.value = diff.join(oldString.slice(oldPos, oldPos + component.count));
- oldPos += component.count;
-
- // Reverse add and remove so removes are output first to match common convention
- // The diffing algorithm is tied to add then remove output and this is the simplest
- // route to get the desired output with minimal overhead.
- if (componentPos && components[componentPos - 1].added) {
- var tmp = components[componentPos - 1];
- components[componentPos - 1] = components[componentPos];
- components[componentPos] = tmp;
- }
- }
- }
-
- // Special case handle for when one terminal is ignored (i.e. whitespace).
- // For this case we merge the terminal into the prior string and drop the change.
- // This is only available for string mode.
- var lastComponent = components[componentLen - 1];
- if (componentLen > 1 && typeof lastComponent.value === 'string' && (lastComponent.added || lastComponent.removed) && diff.equals('', lastComponent.value)) {
- components[componentLen - 2].value += lastComponent.value;
- components.pop();
- }
-
- return components;
- }
-
- function clonePath(path) {
- return { newPos: path.newPos, components: path.components.slice(0) };
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Jhc2UuanMiXSwibmFtZXMiOlsiRGlmZiIsInByb3RvdHlwZSIsImRpZmYiLCJvbGRTdHJpbmciLCJuZXdTdHJpbmciLCJvcHRpb25zIiwiY2FsbGJhY2siLCJzZWxmIiwiZG9uZSIsInZhbHVlIiwic2V0VGltZW91dCIsInVuZGVmaW5lZCIsImNhc3RJbnB1dCIsInJlbW92ZUVtcHR5IiwidG9rZW5pemUiLCJuZXdMZW4iLCJsZW5ndGgiLCJvbGRMZW4iLCJlZGl0TGVuZ3RoIiwibWF4RWRpdExlbmd0aCIsImJlc3RQYXRoIiwibmV3UG9zIiwiY29tcG9uZW50cyIsIm9sZFBvcyIsImV4dHJhY3RDb21tb24iLCJqb2luIiwiY291bnQiLCJleGVjRWRpdExlbmd0aCIsImRpYWdvbmFsUGF0aCIsImJhc2VQYXRoIiwiYWRkUGF0aCIsInJlbW92ZVBhdGgiLCJjYW5BZGQiLCJjYW5SZW1vdmUiLCJjbG9uZVBhdGgiLCJwdXNoQ29tcG9uZW50IiwiYnVpbGRWYWx1ZXMiLCJ1c2VMb25nZXN0VG9rZW4iLCJleGVjIiwicmV0IiwiYWRkZWQiLCJyZW1vdmVkIiwibGFzdCIsInB1c2giLCJjb21tb25Db3VudCIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsImNvbXBhcmF0b3IiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJhcnJheSIsImkiLCJzcGxpdCIsImNoYXJzIiwiY29tcG9uZW50UG9zIiwiY29tcG9uZW50TGVuIiwiY29tcG9uZW50Iiwic2xpY2UiLCJtYXAiLCJvbGRWYWx1ZSIsInRtcCIsImxhc3RDb21wb25lbnQiLCJwb3AiLCJwYXRoIl0sIm1hcHBpbmdzIjoiOzs7NENBQXdCQSxJO0FBQVQsU0FBU0EsSUFBVCxHQUFnQixDQUFFOztBQUVqQ0EsS0FBS0MsU0FBTCxHQUFpQjtBQUFBLG1EQUNmQyxJQURlLGdCQUNWQyxTQURVLEVBQ0NDLFNBREQsRUFDMEI7QUFBQSx3REFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUN2QyxRQUFJQyxXQUFXRCxRQUFRQyxRQUF2QjtBQUNBLFFBQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsaUJBQVdELE9BQVg7QUFDQUEsZ0JBQVUsRUFBVjtBQUNEO0FBQ0QsU0FBS0EsT0FBTCxHQUFlQSxPQUFmOztBQUVBLFFBQUlFLE9BQU8sSUFBWDs7QUFFQSxhQUFTQyxJQUFULENBQWNDLEtBQWQsRUFBcUI7QUFDbkIsVUFBSUgsUUFBSixFQUFjO0FBQ1pJLG1CQUFXLFlBQVc7QUFBRUosbUJBQVNLLFNBQVQsRUFBb0JGLEtBQXBCO0FBQTZCLFNBQXJELEVBQXVELENBQXZEO0FBQ0EsZUFBTyxJQUFQO0FBQ0QsT0FIRCxNQUdPO0FBQ0wsZUFBT0EsS0FBUDtBQUNEO0FBQ0Y7O0FBRUQ7QUFDQU4sZ0JBQVksS0FBS1MsU0FBTCxDQUFlVCxTQUFmLENBQVo7QUFDQUMsZ0JBQVksS0FBS1EsU0FBTCxDQUFlUixTQUFmLENBQVo7O0FBRUFELGdCQUFZLEtBQUtVLFdBQUwsQ0FBaUIsS0FBS0MsUUFBTCxDQUFjWCxTQUFkLENBQWpCLENBQVo7QUFDQUMsZ0JBQVksS0FBS1MsV0FBTCxDQUFpQixLQUFLQyxRQUFMLENBQWNWLFNBQWQsQ0FBakIsQ0FBWjs7QUFFQSxRQUFJVyxTQUFTWCxVQUFVWSxNQUF2QjtBQUFBLFFBQStCQyxTQUFTZCxVQUFVYSxNQUFsRDtBQUNBLFFBQUlFLGFBQWEsQ0FBakI7QUFDQSxRQUFJQyxnQkFBZ0JKLFNBQVNFLE1BQTdCO0FBQ0EsUUFBSUcsV0FBVyxDQUFDLEVBQUVDLFFBQVEsQ0FBQyxDQUFYLEVBQWNDLFlBQVksRUFBMUIsRUFBRCxDQUFmOztBQUVBO0FBQ0EsUUFBSUMsU0FBUyxLQUFLQyxhQUFMLENBQW1CSixTQUFTLENBQVQsQ0FBbkIsRUFBZ0NoQixTQUFoQyxFQUEyQ0QsU0FBM0MsRUFBc0QsQ0FBdEQsQ0FBYjtBQUNBLFFBQUlpQixTQUFTLENBQVQsRUFBWUMsTUFBWixHQUFxQixDQUFyQixJQUEwQk4sTUFBMUIsSUFBb0NRLFNBQVMsQ0FBVCxJQUFjTixNQUF0RCxFQUE4RDtBQUM1RDtBQUNBLGFBQU9ULEtBQUssQ0FBQyxFQUFDQyxPQUFPLEtBQUtnQixJQUFMLENBQVVyQixTQUFWLENBQVIsRUFBOEJzQixPQUFPdEIsVUFBVVksTUFBL0MsRUFBRCxDQUFMLENBQVA7QUFDRDs7QUFFRDtBQUNBLGFBQVNXLGNBQVQsR0FBMEI7QUFDeEIsV0FBSyxJQUFJQyxlQUFlLENBQUMsQ0FBRCxHQUFLVixVQUE3QixFQUF5Q1UsZ0JBQWdCVixVQUF6RCxFQUFxRVUsZ0JBQWdCLENBQXJGLEVBQXdGO0FBQ3RGLFlBQUlDLDBDQUFKO0FBQ0EsWUFBSUMsVUFBVVYsU0FBU1EsZUFBZSxDQUF4QixDQUFkO0FBQUEsWUFDSUcsYUFBYVgsU0FBU1EsZUFBZSxDQUF4QixDQURqQjtBQUFBLFlBRUlMLFVBQVMsQ0FBQ1EsYUFBYUEsV0FBV1YsTUFBeEIsR0FBaUMsQ0FBbEMsSUFBdUNPLFlBRnBEO0FBR0EsWUFBSUUsT0FBSixFQUFhO0FBQ1g7QUFDQVYsbUJBQVNRLGVBQWUsQ0FBeEIsSUFBNkJqQixTQUE3QjtBQUNEOztBQUVELFlBQUlxQixTQUFTRixXQUFXQSxRQUFRVCxNQUFSLEdBQWlCLENBQWpCLEdBQXFCTixNQUE3QztBQUFBLFlBQ0lrQixZQUFZRixjQUFjLEtBQUtSLE9BQW5CLElBQTZCQSxVQUFTTixNQUR0RDtBQUVBLFlBQUksQ0FBQ2UsTUFBRCxJQUFXLENBQUNDLFNBQWhCLEVBQTJCO0FBQ3pCO0FBQ0FiLG1CQUFTUSxZQUFULElBQXlCakIsU0FBekI7QUFDQTtBQUNEOztBQUVEO0FBQ0E7QUFDQTtBQUNBLFlBQUksQ0FBQ3FCLE1BQUQsSUFBWUMsYUFBYUgsUUFBUVQsTUFBUixHQUFpQlUsV0FBV1YsTUFBekQsRUFBa0U7QUFDaEVRLHFCQUFXSyxVQUFVSCxVQUFWLENBQVg7QUFDQXhCLGVBQUs0QixhQUFMLENBQW1CTixTQUFTUCxVQUE1QixFQUF3Q1gsU0FBeEMsRUFBbUQsSUFBbkQ7QUFDRCxTQUhELE1BR087QUFDTGtCLHFCQUFXQyxPQUFYLENBREssQ0FDaUI7QUFDdEJELG1CQUFTUixNQUFUO0FBQ0FkLGVBQUs0QixhQUFMLENBQW1CTixTQUFTUCxVQUE1QixFQUF3QyxJQUF4QyxFQUE4Q1gsU0FBOUM7QUFDRDs7QUFFRFksa0JBQVNoQixLQUFLaUIsYUFBTCxDQUFtQkssUUFBbkIsRUFBNkJ6QixTQUE3QixFQUF3Q0QsU0FBeEMsRUFBbUR5QixZQUFuRCxDQUFUOztBQUVBO0FBQ0EsWUFBSUMsU0FBU1IsTUFBVCxHQUFrQixDQUFsQixJQUF1Qk4sTUFBdkIsSUFBaUNRLFVBQVMsQ0FBVCxJQUFjTixNQUFuRCxFQUEyRDtBQUN6RCxpQkFBT1QsS0FBSzRCLFlBQVk3QixJQUFaLEVBQWtCc0IsU0FBU1AsVUFBM0IsRUFBdUNsQixTQUF2QyxFQUFrREQsU0FBbEQsRUFBNkRJLEtBQUs4QixlQUFsRSxDQUFMLENBQVA7QUFDRCxTQUZELE1BRU87QUFDTDtBQUNBakIsbUJBQVNRLFlBQVQsSUFBeUJDLFFBQXpCO0FBQ0Q7QUFDRjs7QUFFRFg7QUFDRDs7QUFFRDtBQUNBO0FBQ0E7QUFDQSxRQUFJWixRQUFKLEVBQWM7QUFDWCxnQkFBU2dDLElBQVQsR0FBZ0I7QUFDZjVCLG1CQUFXLFlBQVc7QUFDcEI7QUFDQTtBQUNBLGNBQUlRLGFBQWFDLGFBQWpCLEVBQWdDO0FBQzlCLG1CQUFPYixVQUFQO0FBQ0Q7O0FBRUQsY0FBSSxDQUFDcUIsZ0JBQUwsRUFBdUI7QUFDckJXO0FBQ0Q7QUFDRixTQVZELEVBVUcsQ0FWSDtBQVdELE9BWkEsR0FBRDtBQWFELEtBZEQsTUFjTztBQUNMLGFBQU9wQixjQUFjQyxhQUFyQixFQUFvQztBQUNsQyxZQUFJb0IsTUFBTVosZ0JBQVY7QUFDQSxZQUFJWSxHQUFKLEVBQVM7QUFDUCxpQkFBT0EsR0FBUDtBQUNEO0FBQ0Y7QUFDRjtBQUNGLEdBOUdjO0FBQUEsbURBZ0hmSixhQWhIZSx5QkFnSERiLFVBaEhDLEVBZ0hXa0IsS0FoSFgsRUFnSGtCQyxPQWhIbEIsRUFnSDJCO0FBQ3hDLFFBQUlDLE9BQU9wQixXQUFXQSxXQUFXTixNQUFYLEdBQW9CLENBQS9CLENBQVg7QUFDQSxRQUFJMEIsUUFBUUEsS0FBS0YsS0FBTCxLQUFlQSxLQUF2QixJQUFnQ0UsS0FBS0QsT0FBTCxLQUFpQkEsT0FBckQsRUFBOEQ7QUFDNUQ7QUFDQTtBQUNBbkIsaUJBQVdBLFdBQVdOLE1BQVgsR0FBb0IsQ0FBL0IsSUFBb0MsRUFBQ1UsT0FBT2dCLEtBQUtoQixLQUFMLEdBQWEsQ0FBckIsRUFBd0JjLE9BQU9BLEtBQS9CLEVBQXNDQyxTQUFTQSxPQUEvQyxFQUFwQztBQUNELEtBSkQsTUFJTztBQUNMbkIsaUJBQVdxQixJQUFYLENBQWdCLEVBQUNqQixPQUFPLENBQVIsRUFBV2MsT0FBT0EsS0FBbEIsRUFBeUJDLFNBQVNBLE9BQWxDLEVBQWhCO0FBQ0Q7QUFDRixHQXpIYztBQUFBLG1EQTBIZmpCLGFBMUhlLHlCQTBIREssUUExSEMsRUEwSFN6QixTQTFIVCxFQTBIb0JELFNBMUhwQixFQTBIK0J5QixZQTFIL0IsRUEwSDZDO0FBQzFELFFBQUliLFNBQVNYLFVBQVVZLE1BQXZCO0FBQUEsUUFDSUMsU0FBU2QsVUFBVWEsTUFEdkI7QUFBQSxRQUVJSyxTQUFTUSxTQUFTUixNQUZ0QjtBQUFBLFFBR0lFLFNBQVNGLFNBQVNPLFlBSHRCO0FBQUEsUUFLSWdCLGNBQWMsQ0FMbEI7QUFNQSxXQUFPdkIsU0FBUyxDQUFULEdBQWFOLE1BQWIsSUFBdUJRLFNBQVMsQ0FBVCxHQUFhTixNQUFwQyxJQUE4QyxLQUFLNEIsTUFBTCxDQUFZekMsVUFBVWlCLFNBQVMsQ0FBbkIsQ0FBWixFQUFtQ2xCLFVBQVVvQixTQUFTLENBQW5CLENBQW5DLENBQXJELEVBQWdIO0FBQzlHRjtBQUNBRTtBQUNBcUI7QUFDRDs7QUFFRCxRQUFJQSxXQUFKLEVBQWlCO0FBQ2ZmLGVBQVNQLFVBQVQsQ0FBb0JxQixJQUFwQixDQUF5QixFQUFDakIsT0FBT2tCLFdBQVIsRUFBekI7QUFDRDs7QUFFRGYsYUFBU1IsTUFBVCxHQUFrQkEsTUFBbEI7QUFDQSxXQUFPRSxNQUFQO0FBQ0QsR0E3SWM7QUFBQSxtREErSWZzQixNQS9JZSxrQkErSVJDLElBL0lRLEVBK0lGQyxLQS9JRSxFQStJSztBQUNsQixRQUFJLEtBQUsxQyxPQUFMLENBQWEyQyxVQUFqQixFQUE2QjtBQUMzQixhQUFPLEtBQUszQyxPQUFMLENBQWEyQyxVQUFiLENBQXdCRixJQUF4QixFQUE4QkMsS0FBOUIsQ0FBUDtBQUNELEtBRkQsTUFFTztBQUNMLGFBQU9ELFNBQVNDLEtBQVQsSUFDRCxLQUFLMUMsT0FBTCxDQUFhNEMsVUFBYixJQUEyQkgsS0FBS0ksV0FBTCxPQUF1QkgsTUFBTUcsV0FBTixFQUR4RDtBQUVEO0FBQ0YsR0F0SmM7QUFBQSxtREF1SmZyQyxXQXZKZSx1QkF1SkhzQyxLQXZKRyxFQXVKSTtBQUNqQixRQUFJWixNQUFNLEVBQVY7QUFDQSxTQUFLLElBQUlhLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTW5DLE1BQTFCLEVBQWtDb0MsR0FBbEMsRUFBdUM7QUFDckMsVUFBSUQsTUFBTUMsQ0FBTixDQUFKLEVBQWM7QUFDWmIsWUFBSUksSUFBSixDQUFTUSxNQUFNQyxDQUFOLENBQVQ7QUFDRDtBQUNGO0FBQ0QsV0FBT2IsR0FBUDtBQUNELEdBL0pjO0FBQUEsbURBZ0tmM0IsU0FoS2UscUJBZ0tMSCxLQWhLSyxFQWdLRTtBQUNmLFdBQU9BLEtBQVA7QUFDRCxHQWxLYztBQUFBLG1EQW1LZkssUUFuS2Usb0JBbUtOTCxLQW5LTSxFQW1LQztBQUNkLFdBQU9BLE1BQU00QyxLQUFOLENBQVksRUFBWixDQUFQO0FBQ0QsR0FyS2M7QUFBQSxtREFzS2Y1QixJQXRLZSxnQkFzS1Y2QixLQXRLVSxFQXNLSDtBQUNWLFdBQU9BLE1BQU03QixJQUFOLENBQVcsRUFBWCxDQUFQO0FBQ0Q7QUF4S2MsQ0FBakI7O0FBMktBLFNBQVNXLFdBQVQsQ0FBcUJsQyxJQUFyQixFQUEyQm9CLFVBQTNCLEVBQXVDbEIsU0FBdkMsRUFBa0RELFNBQWxELEVBQTZEa0MsZUFBN0QsRUFBOEU7QUFDNUUsTUFBSWtCLGVBQWUsQ0FBbkI7QUFBQSxNQUNJQyxlQUFlbEMsV0FBV04sTUFEOUI7QUFBQSxNQUVJSyxTQUFTLENBRmI7QUFBQSxNQUdJRSxTQUFTLENBSGI7O0FBS0EsU0FBT2dDLGVBQWVDLFlBQXRCLEVBQW9DRCxjQUFwQyxFQUFvRDtBQUNsRCxRQUFJRSxZQUFZbkMsV0FBV2lDLFlBQVgsQ0FBaEI7QUFDQSxRQUFJLENBQUNFLFVBQVVoQixPQUFmLEVBQXdCO0FBQ3RCLFVBQUksQ0FBQ2dCLFVBQVVqQixLQUFYLElBQW9CSCxlQUF4QixFQUF5QztBQUN2QyxZQUFJNUIsUUFBUUwsVUFBVXNELEtBQVYsQ0FBZ0JyQyxNQUFoQixFQUF3QkEsU0FBU29DLFVBQVUvQixLQUEzQyxDQUFaO0FBQ0FqQixnQkFBUUEsTUFBTWtELEdBQU4sQ0FBVSxVQUFTbEQsS0FBVCxFQUFnQjJDLENBQWhCLEVBQW1CO0FBQ25DLGNBQUlRLFdBQVd6RCxVQUFVb0IsU0FBUzZCLENBQW5CLENBQWY7QUFDQSxpQkFBT1EsU0FBUzVDLE1BQVQsR0FBa0JQLE1BQU1PLE1BQXhCLEdBQWlDNEMsUUFBakMsR0FBNENuRCxLQUFuRDtBQUNELFNBSE8sQ0FBUjs7QUFLQWdELGtCQUFVaEQsS0FBVixHQUFrQlAsS0FBS3VCLElBQUwsQ0FBVWhCLEtBQVYsQ0FBbEI7QUFDRCxPQVJELE1BUU87QUFDTGdELGtCQUFVaEQsS0FBVixHQUFrQlAsS0FBS3VCLElBQUwsQ0FBVXJCLFVBQVVzRCxLQUFWLENBQWdCckMsTUFBaEIsRUFBd0JBLFNBQVNvQyxVQUFVL0IsS0FBM0MsQ0FBVixDQUFsQjtBQUNEO0FBQ0RMLGdCQUFVb0MsVUFBVS9CLEtBQXBCOztBQUVBO0FBQ0EsVUFBSSxDQUFDK0IsVUFBVWpCLEtBQWYsRUFBc0I7QUFDcEJqQixrQkFBVWtDLFVBQVUvQixLQUFwQjtBQUNEO0FBQ0YsS0FsQkQsTUFrQk87QUFDTCtCLGdCQUFVaEQsS0FBVixHQUFrQlAsS0FBS3VCLElBQUwsQ0FBVXRCLFVBQVV1RCxLQUFWLENBQWdCbkMsTUFBaEIsRUFBd0JBLFNBQVNrQyxVQUFVL0IsS0FBM0MsQ0FBVixDQUFsQjtBQUNBSCxnQkFBVWtDLFVBQVUvQixLQUFwQjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxVQUFJNkIsZ0JBQWdCakMsV0FBV2lDLGVBQWUsQ0FBMUIsRUFBNkJmLEtBQWpELEVBQXdEO0FBQ3RELFlBQUlxQixNQUFNdkMsV0FBV2lDLGVBQWUsQ0FBMUIsQ0FBVjtBQUNBakMsbUJBQVdpQyxlQUFlLENBQTFCLElBQStCakMsV0FBV2lDLFlBQVgsQ0FBL0I7QUFDQWpDLG1CQUFXaUMsWUFBWCxJQUEyQk0sR0FBM0I7QUFDRDtBQUNGO0FBQ0Y7O0FBRUQ7QUFDQTtBQUNBO0FBQ0EsTUFBSUMsZ0JBQWdCeEMsV0FBV2tDLGVBQWUsQ0FBMUIsQ0FBcEI7QUFDQSxNQUFJQSxlQUFlLENBQWYsSUFDRyxPQUFPTSxjQUFjckQsS0FBckIsS0FBK0IsUUFEbEMsS0FFSXFELGNBQWN0QixLQUFkLElBQXVCc0IsY0FBY3JCLE9BRnpDLEtBR0d2QyxLQUFLMkMsTUFBTCxDQUFZLEVBQVosRUFBZ0JpQixjQUFjckQsS0FBOUIsQ0FIUCxFQUc2QztBQUMzQ2EsZUFBV2tDLGVBQWUsQ0FBMUIsRUFBNkIvQyxLQUE3QixJQUFzQ3FELGNBQWNyRCxLQUFwRDtBQUNBYSxlQUFXeUMsR0FBWDtBQUNEOztBQUVELFNBQU96QyxVQUFQO0FBQ0Q7O0FBRUQsU0FBU1ksU0FBVCxDQUFtQjhCLElBQW5CLEVBQXlCO0FBQ3ZCLFNBQU8sRUFBRTNDLFFBQVEyQyxLQUFLM0MsTUFBZixFQUF1QkMsWUFBWTBDLEtBQUsxQyxVQUFMLENBQWdCb0MsS0FBaEIsQ0FBc0IsQ0FBdEIsQ0FBbkMsRUFBUDtBQUNEIiwiZmlsZSI6ImJhc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBEaWZmKCkge31cblxuRGlmZi5wcm90b3R5cGUgPSB7XG4gIGRpZmYob2xkU3RyaW5nLCBuZXdTdHJpbmcsIG9wdGlvbnMgPSB7fSkge1xuICAgIGxldCBjYWxsYmFjayA9IG9wdGlvbnMuY2FsbGJhY2s7XG4gICAgaWYgKHR5cGVvZiBvcHRpb25zID09PSAnZnVuY3Rpb24nKSB7XG4gICAgICBjYWxsYmFjayA9IG9wdGlvbnM7XG4gICAgICBvcHRpb25zID0ge307XG4gICAgfVxuICAgIHRoaXMub3B0aW9ucyA9IG9wdGlvbnM7XG5cbiAgICBsZXQgc2VsZiA9IHRoaXM7XG5cbiAgICBmdW5jdGlvbiBkb25lKHZhbHVlKSB7XG4gICAgICBpZiAoY2FsbGJhY2spIHtcbiAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsgY2FsbGJhY2sodW5kZWZpbmVkLCB2YWx1ZSk7IH0sIDApO1xuICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIHJldHVybiB2YWx1ZTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICAvLyBBbGxvdyBzdWJjbGFzc2VzIHRvIG1hc3NhZ2UgdGhlIGlucHV0IHByaW9yIHRvIHJ1bm5pbmdcbiAgICBvbGRTdHJpbmcgPSB0aGlzLmNhc3RJbnB1dChvbGRTdHJpbmcpO1xuICAgIG5ld1N0cmluZyA9IHRoaXMuY2FzdElucHV0KG5ld1N0cmluZyk7XG5cbiAgICBvbGRTdHJpbmcgPSB0aGlzLnJlbW92ZUVtcHR5KHRoaXMudG9rZW5pemUob2xkU3RyaW5nKSk7XG4gICAgbmV3U3RyaW5nID0gdGhpcy5yZW1vdmVFbXB0eSh0aGlzLnRva2VuaXplKG5ld1N0cmluZykpO1xuXG4gICAgbGV0IG5ld0xlbiA9IG5ld1N0cmluZy5sZW5ndGgsIG9sZExlbiA9IG9sZFN0cmluZy5sZW5ndGg7XG4gICAgbGV0IGVkaXRMZW5ndGggPSAxO1xuICAgIGxldCBtYXhFZGl0TGVuZ3RoID0gbmV3TGVuICsgb2xkTGVuO1xuICAgIGxldCBiZXN0UGF0aCA9IFt7IG5ld1BvczogLTEsIGNvbXBvbmVudHM6IFtdIH1dO1xuXG4gICAgLy8gU2VlZCBlZGl0TGVuZ3RoID0gMCwgaS5lLiB0aGUgY29udGVudCBzdGFydHMgd2l0aCB0aGUgc2FtZSB2YWx1ZXNcbiAgICBsZXQgb2xkUG9zID0gdGhpcy5leHRyYWN0Q29tbW9uKGJlc3RQYXRoWzBdLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgMCk7XG4gICAgaWYgKGJlc3RQYXRoWzBdLm5ld1BvcyArIDEgPj0gbmV3TGVuICYmIG9sZFBvcyArIDEgPj0gb2xkTGVuKSB7XG4gICAgICAvLyBJZGVudGl0eSBwZXIgdGhlIGVxdWFsaXR5IGFuZCB0b2tlbml6ZXJcbiAgICAgIHJldHVybiBkb25lKFt7dmFsdWU6IHRoaXMuam9pbihuZXdTdHJpbmcpLCBjb3VudDogbmV3U3RyaW5nLmxlbmd0aH1dKTtcbiAgICB9XG5cbiAgICAvLyBNYWluIHdvcmtlciBtZXRob2QuIGNoZWNrcyBhbGwgcGVybXV0YXRpb25zIG9mIGEgZ2l2ZW4gZWRpdCBsZW5ndGggZm9yIGFjY2VwdGFuY2UuXG4gICAgZnVuY3Rpb24gZXhlY0VkaXRMZW5ndGgoKSB7XG4gICAgICBmb3IgKGxldCBkaWFnb25hbFBhdGggPSAtMSAqIGVkaXRMZW5ndGg7IGRpYWdvbmFsUGF0aCA8PSBlZGl0TGVuZ3RoOyBkaWFnb25hbFBhdGggKz0gMikge1xuICAgICAgICBsZXQgYmFzZVBhdGg7XG4gICAgICAgIGxldCBhZGRQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoIC0gMV0sXG4gICAgICAgICAgICByZW1vdmVQYXRoID0gYmVzdFBhdGhbZGlhZ29uYWxQYXRoICsgMV0sXG4gICAgICAgICAgICBvbGRQb3MgPSAocmVtb3ZlUGF0aCA/IHJlbW92ZVBhdGgubmV3UG9zIDogMCkgLSBkaWFnb25hbFBhdGg7XG4gICAgICAgIGlmIChhZGRQYXRoKSB7XG4gICAgICAgICAgLy8gTm8gb25lIGVsc2UgaXMgZ29pbmcgdG8gYXR0ZW1wdCB0byB1c2UgdGhpcyB2YWx1ZSwgY2xlYXIgaXRcbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGggLSAxXSA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuXG4gICAgICAgIGxldCBjYW5BZGQgPSBhZGRQYXRoICYmIGFkZFBhdGgubmV3UG9zICsgMSA8IG5ld0xlbixcbiAgICAgICAgICAgIGNhblJlbW92ZSA9IHJlbW92ZVBhdGggJiYgMCA8PSBvbGRQb3MgJiYgb2xkUG9zIDwgb2xkTGVuO1xuICAgICAgICBpZiAoIWNhbkFkZCAmJiAhY2FuUmVtb3ZlKSB7XG4gICAgICAgICAgLy8gSWYgdGhpcyBwYXRoIGlzIGEgdGVybWluYWwgdGhlbiBwcnVuZVxuICAgICAgICAgIGJlc3RQYXRoW2RpYWdvbmFsUGF0aF0gPSB1bmRlZmluZWQ7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICAvLyBTZWxlY3QgdGhlIGRpYWdvbmFsIHRoYXQgd2Ugd2FudCB0byBicmFuY2ggZnJvbS4gV2Ugc2VsZWN0IHRoZSBwcmlvclxuICAgICAgICAvLyBwYXRoIHdob3NlIHBvc2l0aW9uIGluIHRoZSBuZXcgc3RyaW5nIGlzIHRoZSBmYXJ0aGVzdCBmcm9tIHRoZSBvcmlnaW5cbiAgICAgICAgLy8gYW5kIGRvZXMgbm90IHBhc3MgdGhlIGJvdW5kcyBvZiB0aGUgZGlmZiBncmFwaFxuICAgICAgICBpZiAoIWNhbkFkZCB8fCAoY2FuUmVtb3ZlICYmIGFkZFBhdGgubmV3UG9zIDwgcmVtb3ZlUGF0aC5uZXdQb3MpKSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBjbG9uZVBhdGgocmVtb3ZlUGF0aCk7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHVuZGVmaW5lZCwgdHJ1ZSk7XG4gICAgICAgIH0gZWxzZSB7XG4gICAgICAgICAgYmFzZVBhdGggPSBhZGRQYXRoOyAgIC8vIE5vIG5lZWQgdG8gY2xvbmUsIHdlJ3ZlIHB1bGxlZCBpdCBmcm9tIHRoZSBsaXN0XG4gICAgICAgICAgYmFzZVBhdGgubmV3UG9zKys7XG4gICAgICAgICAgc2VsZi5wdXNoQ29tcG9uZW50KGJhc2VQYXRoLmNvbXBvbmVudHMsIHRydWUsIHVuZGVmaW5lZCk7XG4gICAgICAgIH1cblxuICAgICAgICBvbGRQb3MgPSBzZWxmLmV4dHJhY3RDb21tb24oYmFzZVBhdGgsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBkaWFnb25hbFBhdGgpO1xuXG4gICAgICAgIC8vIElmIHdlIGhhdmUgaGl0IHRoZSBlbmQgb2YgYm90aCBzdHJpbmdzLCB0aGVuIHdlIGFyZSBkb25lXG4gICAgICAgIGlmIChiYXNlUGF0aC5uZXdQb3MgKyAxID49IG5ld0xlbiAmJiBvbGRQb3MgKyAxID49IG9sZExlbikge1xuICAgICAgICAgIHJldHVybiBkb25lKGJ1aWxkVmFsdWVzKHNlbGYsIGJhc2VQYXRoLmNvbXBvbmVudHMsIG5ld1N0cmluZywgb2xkU3RyaW5nLCBzZWxmLnVzZUxvbmdlc3RUb2tlbikpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIE90aGVyd2lzZSB0cmFjayB0aGlzIHBhdGggYXMgYSBwb3RlbnRpYWwgY2FuZGlkYXRlIGFuZCBjb250aW51ZS5cbiAgICAgICAgICBiZXN0UGF0aFtkaWFnb25hbFBhdGhdID0gYmFzZVBhdGg7XG4gICAgICAgIH1cbiAgICAgIH1cblxuICAgICAgZWRpdExlbmd0aCsrO1xuICAgIH1cblxuICAgIC8vIFBlcmZvcm1zIHRoZSBsZW5ndGggb2YgZWRpdCBpdGVyYXRpb24uIElzIGEgYml0IGZ1Z2x5IGFzIHRoaXMgaGFzIHRvIHN1cHBvcnQgdGhlXG4gICAgLy8gc3luYyBhbmQgYXN5bmMgbW9kZSB3aGljaCBpcyBuZXZlciBmdW4uIExvb3BzIG92ZXIgZXhlY0VkaXRMZW5ndGggdW50aWwgYSB2YWx1ZVxuICAgIC8vIGlzIHByb2R1Y2VkLlxuICAgIGlmIChjYWxsYmFjaykge1xuICAgICAgKGZ1bmN0aW9uIGV4ZWMoKSB7XG4gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7XG4gICAgICAgICAgLy8gVGhpcyBzaG91bGQgbm90IGhhcHBlbiwgYnV0IHdlIHdhbnQgdG8gYmUgc2FmZS5cbiAgICAgICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgbmV4dCAqL1xuICAgICAgICAgIGlmIChlZGl0TGVuZ3RoID4gbWF4RWRpdExlbmd0aCkge1xuICAgICAgICAgICAgcmV0dXJuIGNhbGxiYWNrKCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgaWYgKCFleGVjRWRpdExlbmd0aCgpKSB7XG4gICAgICAgICAgICBleGVjKCk7XG4gICAgICAgICAgfVxuICAgICAgICB9LCAwKTtcbiAgICAgIH0oKSk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdoaWxlIChlZGl0TGVuZ3RoIDw9IG1heEVkaXRMZW5ndGgpIHtcbiAgICAgICAgbGV0IHJldCA9IGV4ZWNFZGl0TGVuZ3RoKCk7XG4gICAgICAgIGlmIChyZXQpIHtcbiAgICAgICAgICByZXR1cm4gcmV0O1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9LFxuXG4gIHB1c2hDb21wb25lbnQoY29tcG9uZW50cywgYWRkZWQsIHJlbW92ZWQpIHtcbiAgICBsZXQgbGFzdCA9IGNvbXBvbmVudHNbY29tcG9uZW50cy5sZW5ndGggLSAxXTtcbiAgICBpZiAobGFzdCAmJiBsYXN0LmFkZGVkID09PSBhZGRlZCAmJiBsYXN0LnJlbW92ZWQgPT09IHJlbW92ZWQpIHtcbiAgICAgIC8vIFdlIG5lZWQgdG8gY2xvbmUgaGVyZSBhcyB0aGUgY29tcG9uZW50IGNsb25lIG9wZXJhdGlvbiBpcyBqdXN0XG4gICAgICAvLyBhcyBzaGFsbG93IGFycmF5IGNsb25lXG4gICAgICBjb21wb25lbnRzW2NvbXBvbmVudHMubGVuZ3RoIC0gMV0gPSB7Y291bnQ6IGxhc3QuY291bnQgKyAxLCBhZGRlZDogYWRkZWQsIHJlbW92ZWQ6IHJlbW92ZWQgfTtcbiAgICB9IGVsc2Uge1xuICAgICAgY29tcG9uZW50cy5wdXNoKHtjb3VudDogMSwgYWRkZWQ6IGFkZGVkLCByZW1vdmVkOiByZW1vdmVkIH0pO1xuICAgIH1cbiAgfSxcbiAgZXh0cmFjdENvbW1vbihiYXNlUGF0aCwgbmV3U3RyaW5nLCBvbGRTdHJpbmcsIGRpYWdvbmFsUGF0aCkge1xuICAgIGxldCBuZXdMZW4gPSBuZXdTdHJpbmcubGVuZ3RoLFxuICAgICAgICBvbGRMZW4gPSBvbGRTdHJpbmcubGVuZ3RoLFxuICAgICAgICBuZXdQb3MgPSBiYXNlUGF0aC5uZXdQb3MsXG4gICAgICAgIG9sZFBvcyA9IG5ld1BvcyAtIGRpYWdvbmFsUGF0aCxcblxuICAgICAgICBjb21tb25Db3VudCA9IDA7XG4gICAgd2hpbGUgKG5ld1BvcyArIDEgPCBuZXdMZW4gJiYgb2xkUG9zICsgMSA8IG9sZExlbiAmJiB0aGlzLmVxdWFscyhuZXdTdHJpbmdbbmV3UG9zICsgMV0sIG9sZFN0cmluZ1tvbGRQb3MgKyAxXSkpIHtcbiAgICAgIG5ld1BvcysrO1xuICAgICAgb2xkUG9zKys7XG4gICAgICBjb21tb25Db3VudCsrO1xuICAgIH1cblxuICAgIGlmIChjb21tb25Db3VudCkge1xuICAgICAgYmFzZVBhdGguY29tcG9uZW50cy5wdXNoKHtjb3VudDogY29tbW9uQ291bnR9KTtcbiAgICB9XG5cbiAgICBiYXNlUGF0aC5uZXdQb3MgPSBuZXdQb3M7XG4gICAgcmV0dXJuIG9sZFBvcztcbiAgfSxcblxuICBlcXVhbHMobGVmdCwgcmlnaHQpIHtcbiAgICBpZiAodGhpcy5vcHRpb25zLmNvbXBhcmF0b3IpIHtcbiAgICAgIHJldHVybiB0aGlzLm9wdGlvbnMuY29tcGFyYXRvcihsZWZ0LCByaWdodCk7XG4gICAgfSBlbHNlIHtcbiAgICAgIHJldHVybiBsZWZ0ID09PSByaWdodFxuICAgICAgICB8fCAodGhpcy5vcHRpb25zLmlnbm9yZUNhc2UgJiYgbGVmdC50b0xvd2VyQ2FzZSgpID09PSByaWdodC50b0xvd2VyQ2FzZSgpKTtcbiAgICB9XG4gIH0sXG4gIHJlbW92ZUVtcHR5KGFycmF5KSB7XG4gICAgbGV0IHJldCA9IFtdO1xuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgYXJyYXkubGVuZ3RoOyBpKyspIHtcbiAgICAgIGlmIChhcnJheVtpXSkge1xuICAgICAgICByZXQucHVzaChhcnJheVtpXSk7XG4gICAgICB9XG4gICAgfVxuICAgIHJldHVybiByZXQ7XG4gIH0sXG4gIGNhc3RJbnB1dCh2YWx1ZSkge1xuICAgIHJldHVybiB2YWx1ZTtcbiAgfSxcbiAgdG9rZW5pemUodmFsdWUpIHtcbiAgICByZXR1cm4gdmFsdWUuc3BsaXQoJycpO1xuICB9LFxuICBqb2luKGNoYXJzKSB7XG4gICAgcmV0dXJuIGNoYXJzLmpvaW4oJycpO1xuICB9XG59O1xuXG5mdW5jdGlvbiBidWlsZFZhbHVlcyhkaWZmLCBjb21wb25lbnRzLCBuZXdTdHJpbmcsIG9sZFN0cmluZywgdXNlTG9uZ2VzdFRva2VuKSB7XG4gIGxldCBjb21wb25lbnRQb3MgPSAwLFxuICAgICAgY29tcG9uZW50TGVuID0gY29tcG9uZW50cy5sZW5ndGgsXG4gICAgICBuZXdQb3MgPSAwLFxuICAgICAgb2xkUG9zID0gMDtcblxuICBmb3IgKDsgY29tcG9uZW50UG9zIDwgY29tcG9uZW50TGVuOyBjb21wb25lbnRQb3MrKykge1xuICAgIGxldCBjb21wb25lbnQgPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgaWYgKCFjb21wb25lbnQucmVtb3ZlZCkge1xuICAgICAgaWYgKCFjb21wb25lbnQuYWRkZWQgJiYgdXNlTG9uZ2VzdFRva2VuKSB7XG4gICAgICAgIGxldCB2YWx1ZSA9IG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCk7XG4gICAgICAgIHZhbHVlID0gdmFsdWUubWFwKGZ1bmN0aW9uKHZhbHVlLCBpKSB7XG4gICAgICAgICAgbGV0IG9sZFZhbHVlID0gb2xkU3RyaW5nW29sZFBvcyArIGldO1xuICAgICAgICAgIHJldHVybiBvbGRWYWx1ZS5sZW5ndGggPiB2YWx1ZS5sZW5ndGggPyBvbGRWYWx1ZSA6IHZhbHVlO1xuICAgICAgICB9KTtcblxuICAgICAgICBjb21wb25lbnQudmFsdWUgPSBkaWZmLmpvaW4odmFsdWUpO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgY29tcG9uZW50LnZhbHVlID0gZGlmZi5qb2luKG5ld1N0cmluZy5zbGljZShuZXdQb3MsIG5ld1BvcyArIGNvbXBvbmVudC5jb3VudCkpO1xuICAgICAgfVxuICAgICAgbmV3UG9zICs9IGNvbXBvbmVudC5jb3VudDtcblxuICAgICAgLy8gQ29tbW9uIGNhc2VcbiAgICAgIGlmICghY29tcG9uZW50LmFkZGVkKSB7XG4gICAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG4gICAgICB9XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbXBvbmVudC52YWx1ZSA9IGRpZmYuam9pbihvbGRTdHJpbmcuc2xpY2Uob2xkUG9zLCBvbGRQb3MgKyBjb21wb25lbnQuY291bnQpKTtcbiAgICAgIG9sZFBvcyArPSBjb21wb25lbnQuY291bnQ7XG5cbiAgICAgIC8vIFJldmVyc2UgYWRkIGFuZCByZW1vdmUgc28gcmVtb3ZlcyBhcmUgb3V0cHV0IGZpcnN0IHRvIG1hdGNoIGNvbW1vbiBjb252ZW50aW9uXG4gICAgICAvLyBUaGUgZGlmZmluZyBhbGdvcml0aG0gaXMgdGllZCB0byBhZGQgdGhlbiByZW1vdmUgb3V0cHV0IGFuZCB0aGlzIGlzIHRoZSBzaW1wbGVzdFxuICAgICAgLy8gcm91dGUgdG8gZ2V0IHRoZSBkZXNpcmVkIG91dHB1dCB3aXRoIG1pbmltYWwgb3ZlcmhlYWQuXG4gICAgICBpZiAoY29tcG9uZW50UG9zICYmIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0uYWRkZWQpIHtcbiAgICAgICAgbGV0IHRtcCA9IGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV07XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zIC0gMV0gPSBjb21wb25lbnRzW2NvbXBvbmVudFBvc107XG4gICAgICAgIGNvbXBvbmVudHNbY29tcG9uZW50UG9zXSA9IHRtcDtcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBTcGVjaWFsIGNhc2UgaGFuZGxlIGZvciB3aGVuIG9uZSB0ZXJtaW5hbCBpcyBpZ25vcmVkIChpLmUuIHdoaXRlc3BhY2UpLlxuICAvLyBGb3IgdGhpcyBjYXNlIHdlIG1lcmdlIHRoZSB0ZXJtaW5hbCBpbnRvIHRoZSBwcmlvciBzdHJpbmcgYW5kIGRyb3AgdGhlIGNoYW5nZS5cbiAgLy8gVGhpcyBpcyBvbmx5IGF2YWlsYWJsZSBmb3Igc3RyaW5nIG1vZGUuXG4gIGxldCBsYXN0Q29tcG9uZW50ID0gY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAxXTtcbiAgaWYgKGNvbXBvbmVudExlbiA+IDFcbiAgICAgICYmIHR5cGVvZiBsYXN0Q29tcG9uZW50LnZhbHVlID09PSAnc3RyaW5nJ1xuICAgICAgJiYgKGxhc3RDb21wb25lbnQuYWRkZWQgfHwgbGFzdENvbXBvbmVudC5yZW1vdmVkKVxuICAgICAgJiYgZGlmZi5lcXVhbHMoJycsIGxhc3RDb21wb25lbnQudmFsdWUpKSB7XG4gICAgY29tcG9uZW50c1tjb21wb25lbnRMZW4gLSAyXS52YWx1ZSArPSBsYXN0Q29tcG9uZW50LnZhbHVlO1xuICAgIGNvbXBvbmVudHMucG9wKCk7XG4gIH1cblxuICByZXR1cm4gY29tcG9uZW50cztcbn1cblxuZnVuY3Rpb24gY2xvbmVQYXRoKHBhdGgpIHtcbiAgcmV0dXJuIHsgbmV3UG9zOiBwYXRoLm5ld1BvcywgY29tcG9uZW50czogcGF0aC5jb21wb25lbnRzLnNsaWNlKDApIH07XG59XG4iXX0=
-
-
-/***/ }),
-/* 2 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.characterDiff = undefined;
- exports. /*istanbul ignore end*/diffChars = diffChars;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/var characterDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/characterDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- function diffChars(oldStr, newStr, options) {
- return characterDiff.diff(oldStr, newStr, options);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2NoYXJhY3Rlci5qcyJdLCJuYW1lcyI6WyJkaWZmQ2hhcnMiLCJjaGFyYWN0ZXJEaWZmIiwib2xkU3RyIiwibmV3U3RyIiwib3B0aW9ucyIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBR2dCQSxTLEdBQUFBLFM7O0FBSGhCOzs7Ozs7dUJBRU8sSUFBTUMseUZBQWdCLHdFQUF0QjtBQUNBLFNBQVNELFNBQVQsQ0FBbUJFLE1BQW5CLEVBQTJCQyxNQUEzQixFQUFtQ0MsT0FBbkMsRUFBNEM7QUFBRSxTQUFPSCxjQUFjSSxJQUFkLENBQW1CSCxNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNDLE9BQW5DLENBQVA7QUFBcUQiLCJmaWxlIjoiY2hhcmFjdGVyLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcblxuZXhwb3J0IGNvbnN0IGNoYXJhY3RlckRpZmYgPSBuZXcgRGlmZigpO1xuZXhwb3J0IGZ1bmN0aW9uIGRpZmZDaGFycyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykgeyByZXR1cm4gY2hhcmFjdGVyRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTsgfVxuIl19
-
-
-/***/ }),
-/* 3 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.wordDiff = undefined;
- exports. /*istanbul ignore end*/diffWords = diffWords;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffWordsWithSpace = diffWordsWithSpace;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/ // Based on https://en.wikipedia.org/wiki/Latin_script_in_Unicode
- //
- // Ranges and exceptions:
- // Latin-1 Supplement, 0080–00FF
- // - U+00D7 × Multiplication sign
- // - U+00F7 ÷ Division sign
- // Latin Extended-A, 0100–017F
- // Latin Extended-B, 0180–024F
- // IPA Extensions, 0250–02AF
- // Spacing Modifier Letters, 02B0–02FF
- // - U+02C7 ˇ &#711; Caron
- // - U+02D8 ˘ &#728; Breve
- // - U+02D9 ˙ &#729; Dot Above
- // - U+02DA ˚ &#730; Ring Above
- // - U+02DB ˛ &#731; Ogonek
- // - U+02DC ˜ &#732; Small Tilde
- // - U+02DD ˝ &#733; Double Acute Accent
- // Latin Extended Additional, 1E00–1EFF
- var extendedWordChars = /^[A-Za-z\xC0-\u02C6\u02C8-\u02D7\u02DE-\u02FF\u1E00-\u1EFF]+$/;
-
- var reWhitespace = /\S/;
-
- var wordDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/wordDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- wordDiff.equals = function (left, right) {
- if (this.options.ignoreCase) {
- left = left.toLowerCase();
- right = right.toLowerCase();
- }
- return left === right || this.options.ignoreWhitespace && !reWhitespace.test(left) && !reWhitespace.test(right);
- };
- wordDiff.tokenize = function (value) {
- var tokens = value.split(/(\s+|\b)/);
-
- // Join the boundary splits that we do not consider to be boundaries. This is primarily the extended Latin character set.
- for (var i = 0; i < tokens.length - 1; i++) {
- // If we have an empty string in the next field and we have only word chars before and after, merge
- if (!tokens[i + 1] && tokens[i + 2] && extendedWordChars.test(tokens[i]) && extendedWordChars.test(tokens[i + 2])) {
- tokens[i] += tokens[i + 2];
- tokens.splice(i + 1, 2);
- i--;
- }
- }
-
- return tokens;
- };
-
- function diffWords(oldStr, newStr, options) {
- options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(options, { ignoreWhitespace: true });
- return wordDiff.diff(oldStr, newStr, options);
- }
-
- function diffWordsWithSpace(oldStr, newStr, options) {
- return wordDiff.diff(oldStr, newStr, options);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3dvcmQuanMiXSwibmFtZXMiOlsiZGlmZldvcmRzIiwiZGlmZldvcmRzV2l0aFNwYWNlIiwiZXh0ZW5kZWRXb3JkQ2hhcnMiLCJyZVdoaXRlc3BhY2UiLCJ3b3JkRGlmZiIsImVxdWFscyIsImxlZnQiLCJyaWdodCIsIm9wdGlvbnMiLCJpZ25vcmVDYXNlIiwidG9Mb3dlckNhc2UiLCJpZ25vcmVXaGl0ZXNwYWNlIiwidGVzdCIsInRva2VuaXplIiwidmFsdWUiLCJ0b2tlbnMiLCJzcGxpdCIsImkiLCJsZW5ndGgiLCJzcGxpY2UiLCJvbGRTdHIiLCJuZXdTdHIiLCJkaWZmIl0sIm1hcHBpbmdzIjoiOzs7O2dDQW1EZ0JBLFMsR0FBQUEsUzt5REFLQUMsa0IsR0FBQUEsa0I7O0FBeERoQjs7Ozt1QkFDQTs7Ozt3QkFFQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxJQUFNQyxvQkFBb0IsK0RBQTFCOztBQUVBLElBQU1DLGVBQWUsSUFBckI7O0FBRU8sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1BBLFNBQVNDLE1BQVQsR0FBa0IsVUFBU0MsSUFBVCxFQUFlQyxLQUFmLEVBQXNCO0FBQ3RDLE1BQUksS0FBS0MsT0FBTCxDQUFhQyxVQUFqQixFQUE2QjtBQUMzQkgsV0FBT0EsS0FBS0ksV0FBTCxFQUFQO0FBQ0FILFlBQVFBLE1BQU1HLFdBQU4sRUFBUjtBQUNEO0FBQ0QsU0FBT0osU0FBU0MsS0FBVCxJQUFtQixLQUFLQyxPQUFMLENBQWFHLGdCQUFiLElBQWlDLENBQUNSLGFBQWFTLElBQWIsQ0FBa0JOLElBQWxCLENBQWxDLElBQTZELENBQUNILGFBQWFTLElBQWIsQ0FBa0JMLEtBQWxCLENBQXhGO0FBQ0QsQ0FORDtBQU9BSCxTQUFTUyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsU0FBU0QsTUFBTUUsS0FBTixDQUFZLFVBQVosQ0FBYjs7QUFFQTtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJRixPQUFPRyxNQUFQLEdBQWdCLENBQXBDLEVBQXVDRCxHQUF2QyxFQUE0QztBQUMxQztBQUNBLFFBQUksQ0FBQ0YsT0FBT0UsSUFBSSxDQUFYLENBQUQsSUFBa0JGLE9BQU9FLElBQUksQ0FBWCxDQUFsQixJQUNLZixrQkFBa0JVLElBQWxCLENBQXVCRyxPQUFPRSxDQUFQLENBQXZCLENBREwsSUFFS2Ysa0JBQWtCVSxJQUFsQixDQUF1QkcsT0FBT0UsSUFBSSxDQUFYLENBQXZCLENBRlQsRUFFZ0Q7QUFDOUNGLGFBQU9FLENBQVAsS0FBYUYsT0FBT0UsSUFBSSxDQUFYLENBQWI7QUFDQUYsYUFBT0ksTUFBUCxDQUFjRixJQUFJLENBQWxCLEVBQXFCLENBQXJCO0FBQ0FBO0FBQ0Q7QUFDRjs7QUFFRCxTQUFPRixNQUFQO0FBQ0QsQ0FoQkQ7O0FBa0JPLFNBQVNmLFNBQVQsQ0FBbUJvQixNQUFuQixFQUEyQkMsTUFBM0IsRUFBbUNiLE9BQW5DLEVBQTRDO0FBQ2pEQSxZQUFVLDhFQUFnQkEsT0FBaEIsRUFBeUIsRUFBQ0csa0JBQWtCLElBQW5CLEVBQXpCLENBQVY7QUFDQSxTQUFPUCxTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEOztBQUVNLFNBQVNQLGtCQUFULENBQTRCbUIsTUFBNUIsRUFBb0NDLE1BQXBDLEVBQTRDYixPQUE1QyxFQUFxRDtBQUMxRCxTQUFPSixTQUFTa0IsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUNEIiwiZmlsZSI6IndvcmQuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgRGlmZiBmcm9tICcuL2Jhc2UnO1xuaW1wb3J0IHtnZW5lcmF0ZU9wdGlvbnN9IGZyb20gJy4uL3V0aWwvcGFyYW1zJztcblxuLy8gQmFzZWQgb24gaHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvTGF0aW5fc2NyaXB0X2luX1VuaWNvZGVcbi8vXG4vLyBSYW5nZXMgYW5kIGV4Y2VwdGlvbnM6XG4vLyBMYXRpbi0xIFN1cHBsZW1lbnQsIDAwODDigJMwMEZGXG4vLyAgLSBVKzAwRDcgIMOXIE11bHRpcGxpY2F0aW9uIHNpZ25cbi8vICAtIFUrMDBGNyAgw7cgRGl2aXNpb24gc2lnblxuLy8gTGF0aW4gRXh0ZW5kZWQtQSwgMDEwMOKAkzAxN0Zcbi8vIExhdGluIEV4dGVuZGVkLUIsIDAxODDigJMwMjRGXG4vLyBJUEEgRXh0ZW5zaW9ucywgMDI1MOKAkzAyQUZcbi8vIFNwYWNpbmcgTW9kaWZpZXIgTGV0dGVycywgMDJCMOKAkzAyRkZcbi8vICAtIFUrMDJDNyAgy4cgJiM3MTE7ICBDYXJvblxuLy8gIC0gVSswMkQ4ICDLmCAmIzcyODsgIEJyZXZlXG4vLyAgLSBVKzAyRDkgIMuZICYjNzI5OyAgRG90IEFib3ZlXG4vLyAgLSBVKzAyREEgIMuaICYjNzMwOyAgUmluZyBBYm92ZVxuLy8gIC0gVSswMkRCICDLmyAmIzczMTsgIE9nb25la1xuLy8gIC0gVSswMkRDICDLnCAmIzczMjsgIFNtYWxsIFRpbGRlXG4vLyAgLSBVKzAyREQgIMudICYjNzMzOyAgRG91YmxlIEFjdXRlIEFjY2VudFxuLy8gTGF0aW4gRXh0ZW5kZWQgQWRkaXRpb25hbCwgMUUwMOKAkzFFRkZcbmNvbnN0IGV4dGVuZGVkV29yZENoYXJzID0gL15bYS16QS1aXFx1e0MwfS1cXHV7RkZ9XFx1e0Q4fS1cXHV7RjZ9XFx1e0Y4fS1cXHV7MkM2fVxcdXsyQzh9LVxcdXsyRDd9XFx1ezJERX0tXFx1ezJGRn1cXHV7MUUwMH0tXFx1ezFFRkZ9XSskL3U7XG5cbmNvbnN0IHJlV2hpdGVzcGFjZSA9IC9cXFMvO1xuXG5leHBvcnQgY29uc3Qgd29yZERpZmYgPSBuZXcgRGlmZigpO1xud29yZERpZmYuZXF1YWxzID0gZnVuY3Rpb24obGVmdCwgcmlnaHQpIHtcbiAgaWYgKHRoaXMub3B0aW9ucy5pZ25vcmVDYXNlKSB7XG4gICAgbGVmdCA9IGxlZnQudG9Mb3dlckNhc2UoKTtcbiAgICByaWdodCA9IHJpZ2h0LnRvTG93ZXJDYXNlKCk7XG4gIH1cbiAgcmV0dXJuIGxlZnQgPT09IHJpZ2h0IHx8ICh0aGlzLm9wdGlvbnMuaWdub3JlV2hpdGVzcGFjZSAmJiAhcmVXaGl0ZXNwYWNlLnRlc3QobGVmdCkgJiYgIXJlV2hpdGVzcGFjZS50ZXN0KHJpZ2h0KSk7XG59O1xud29yZERpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgdG9rZW5zID0gdmFsdWUuc3BsaXQoLyhcXHMrfFxcYikvKTtcblxuICAvLyBKb2luIHRoZSBib3VuZGFyeSBzcGxpdHMgdGhhdCB3ZSBkbyBub3QgY29uc2lkZXIgdG8gYmUgYm91bmRhcmllcy4gVGhpcyBpcyBwcmltYXJpbHkgdGhlIGV4dGVuZGVkIExhdGluIGNoYXJhY3RlciBzZXQuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgdG9rZW5zLmxlbmd0aCAtIDE7IGkrKykge1xuICAgIC8vIElmIHdlIGhhdmUgYW4gZW1wdHkgc3RyaW5nIGluIHRoZSBuZXh0IGZpZWxkIGFuZCB3ZSBoYXZlIG9ubHkgd29yZCBjaGFycyBiZWZvcmUgYW5kIGFmdGVyLCBtZXJnZVxuICAgIGlmICghdG9rZW5zW2kgKyAxXSAmJiB0b2tlbnNbaSArIDJdXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaV0pXG4gICAgICAgICAgJiYgZXh0ZW5kZWRXb3JkQ2hhcnMudGVzdCh0b2tlbnNbaSArIDJdKSkge1xuICAgICAgdG9rZW5zW2ldICs9IHRva2Vuc1tpICsgMl07XG4gICAgICB0b2tlbnMuc3BsaWNlKGkgKyAxLCAyKTtcbiAgICAgIGktLTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdG9rZW5zO1xufTtcblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3JkcyhvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICBvcHRpb25zID0gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiB3b3JkRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGRpZmZXb3Jkc1dpdGhTcGFjZShvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucykge1xuICByZXR1cm4gd29yZERpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgb3B0aW9ucyk7XG59XG4iXX0=
-
-
-/***/ }),
-/* 4 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/generateOptions = generateOptions;
- function generateOptions(options, defaults) {
- if (typeof options === 'function') {
- defaults.callback = options;
- } else if (options) {
- for (var name in options) {
- /* istanbul ignore else */
- if (options.hasOwnProperty(name)) {
- defaults[name] = options[name];
- }
- }
- }
- return defaults;
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL3BhcmFtcy5qcyJdLCJuYW1lcyI6WyJnZW5lcmF0ZU9wdGlvbnMiLCJvcHRpb25zIiwiZGVmYXVsdHMiLCJjYWxsYmFjayIsIm5hbWUiLCJoYXNPd25Qcm9wZXJ0eSJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsZSxHQUFBQSxlO0FBQVQsU0FBU0EsZUFBVCxDQUF5QkMsT0FBekIsRUFBa0NDLFFBQWxDLEVBQTRDO0FBQ2pELE1BQUksT0FBT0QsT0FBUCxLQUFtQixVQUF2QixFQUFtQztBQUNqQ0MsYUFBU0MsUUFBVCxHQUFvQkYsT0FBcEI7QUFDRCxHQUZELE1BRU8sSUFBSUEsT0FBSixFQUFhO0FBQ2xCLFNBQUssSUFBSUcsSUFBVCxJQUFpQkgsT0FBakIsRUFBMEI7QUFDeEI7QUFDQSxVQUFJQSxRQUFRSSxjQUFSLENBQXVCRCxJQUF2QixDQUFKLEVBQWtDO0FBQ2hDRixpQkFBU0UsSUFBVCxJQUFpQkgsUUFBUUcsSUFBUixDQUFqQjtBQUNEO0FBQ0Y7QUFDRjtBQUNELFNBQU9GLFFBQVA7QUFDRCIsImZpbGUiOiJwYXJhbXMuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gZ2VuZXJhdGVPcHRpb25zKG9wdGlvbnMsIGRlZmF1bHRzKSB7XG4gIGlmICh0eXBlb2Ygb3B0aW9ucyA9PT0gJ2Z1bmN0aW9uJykge1xuICAgIGRlZmF1bHRzLmNhbGxiYWNrID0gb3B0aW9ucztcbiAgfSBlbHNlIGlmIChvcHRpb25zKSB7XG4gICAgZm9yIChsZXQgbmFtZSBpbiBvcHRpb25zKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9wdGlvbnMuaGFzT3duUHJvcGVydHkobmFtZSkpIHtcbiAgICAgICAgZGVmYXVsdHNbbmFtZV0gPSBvcHRpb25zW25hbWVdO1xuICAgICAgfVxuICAgIH1cbiAgfVxuICByZXR1cm4gZGVmYXVsdHM7XG59XG4iXX0=
-
-
-/***/ }),
-/* 5 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.lineDiff = undefined;
- exports. /*istanbul ignore end*/diffLines = diffLines;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/diffTrimmedLines = diffTrimmedLines;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- /*istanbul ignore end*/var /*istanbul ignore start*/_params = __webpack_require__(4) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/var lineDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/lineDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- lineDiff.tokenize = function (value) {
- var retLines = [],
- linesAndNewlines = value.split(/(\n|\r\n)/);
-
- // Ignore the final empty token that occurs if the string ends with a new line
- if (!linesAndNewlines[linesAndNewlines.length - 1]) {
- linesAndNewlines.pop();
- }
-
- // Merge the content and line separators into single tokens
- for (var i = 0; i < linesAndNewlines.length; i++) {
- var line = linesAndNewlines[i];
-
- if (i % 2 && !this.options.newlineIsToken) {
- retLines[retLines.length - 1] += line;
- } else {
- if (this.options.ignoreWhitespace) {
- line = line.trim();
- }
- retLines.push(line);
- }
- }
-
- return retLines;
- };
-
- function diffLines(oldStr, newStr, callback) {
- return lineDiff.diff(oldStr, newStr, callback);
- }
- function diffTrimmedLines(oldStr, newStr, callback) {
- var options = /*istanbul ignore start*/(0, _params.generateOptions) /*istanbul ignore end*/(callback, { ignoreWhitespace: true });
- return lineDiff.diff(oldStr, newStr, options);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2xpbmUuanMiXSwibmFtZXMiOlsiZGlmZkxpbmVzIiwiZGlmZlRyaW1tZWRMaW5lcyIsImxpbmVEaWZmIiwidG9rZW5pemUiLCJ2YWx1ZSIsInJldExpbmVzIiwibGluZXNBbmROZXdsaW5lcyIsInNwbGl0IiwibGVuZ3RoIiwicG9wIiwiaSIsImxpbmUiLCJvcHRpb25zIiwibmV3bGluZUlzVG9rZW4iLCJpZ25vcmVXaGl0ZXNwYWNlIiwidHJpbSIsInB1c2giLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBOEJnQkEsUyxHQUFBQSxTO3lEQUNBQyxnQixHQUFBQSxnQjs7QUEvQmhCOzs7O3VCQUNBOzs7O3VCQUVPLElBQU1DLCtFQUFXLHdFQUFqQjtBQUNQQSxTQUFTQyxRQUFULEdBQW9CLFVBQVNDLEtBQVQsRUFBZ0I7QUFDbEMsTUFBSUMsV0FBVyxFQUFmO0FBQUEsTUFDSUMsbUJBQW1CRixNQUFNRyxLQUFOLENBQVksV0FBWixDQUR2Qjs7QUFHQTtBQUNBLE1BQUksQ0FBQ0QsaUJBQWlCQSxpQkFBaUJFLE1BQWpCLEdBQTBCLENBQTNDLENBQUwsRUFBb0Q7QUFDbERGLHFCQUFpQkcsR0FBakI7QUFDRDs7QUFFRDtBQUNBLE9BQUssSUFBSUMsSUFBSSxDQUFiLEVBQWdCQSxJQUFJSixpQkFBaUJFLE1BQXJDLEVBQTZDRSxHQUE3QyxFQUFrRDtBQUNoRCxRQUFJQyxPQUFPTCxpQkFBaUJJLENBQWpCLENBQVg7O0FBRUEsUUFBSUEsSUFBSSxDQUFKLElBQVMsQ0FBQyxLQUFLRSxPQUFMLENBQWFDLGNBQTNCLEVBQTJDO0FBQ3pDUixlQUFTQSxTQUFTRyxNQUFULEdBQWtCLENBQTNCLEtBQWlDRyxJQUFqQztBQUNELEtBRkQsTUFFTztBQUNMLFVBQUksS0FBS0MsT0FBTCxDQUFhRSxnQkFBakIsRUFBbUM7QUFDakNILGVBQU9BLEtBQUtJLElBQUwsRUFBUDtBQUNEO0FBQ0RWLGVBQVNXLElBQVQsQ0FBY0wsSUFBZDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT04sUUFBUDtBQUNELENBeEJEOztBQTBCTyxTQUFTTCxTQUFULENBQW1CaUIsTUFBbkIsRUFBMkJDLE1BQTNCLEVBQW1DQyxRQUFuQyxFQUE2QztBQUFFLFNBQU9qQixTQUFTa0IsSUFBVCxDQUFjSCxNQUFkLEVBQXNCQyxNQUF0QixFQUE4QkMsUUFBOUIsQ0FBUDtBQUFpRDtBQUNoRyxTQUFTbEIsZ0JBQVQsQ0FBMEJnQixNQUExQixFQUFrQ0MsTUFBbEMsRUFBMENDLFFBQTFDLEVBQW9EO0FBQ3pELE1BQUlQLFVBQVUsOEVBQWdCTyxRQUFoQixFQUEwQixFQUFDTCxrQkFBa0IsSUFBbkIsRUFBMUIsQ0FBZDtBQUNBLFNBQU9aLFNBQVNrQixJQUFULENBQWNILE1BQWQsRUFBc0JDLE1BQXRCLEVBQThCTixPQUE5QixDQUFQO0FBQ0QiLCJmaWxlIjoibGluZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5pbXBvcnQge2dlbmVyYXRlT3B0aW9uc30gZnJvbSAnLi4vdXRpbC9wYXJhbXMnO1xuXG5leHBvcnQgY29uc3QgbGluZURpZmYgPSBuZXcgRGlmZigpO1xubGluZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICBsZXQgcmV0TGluZXMgPSBbXSxcbiAgICAgIGxpbmVzQW5kTmV3bGluZXMgPSB2YWx1ZS5zcGxpdCgvKFxcbnxcXHJcXG4pLyk7XG5cbiAgLy8gSWdub3JlIHRoZSBmaW5hbCBlbXB0eSB0b2tlbiB0aGF0IG9jY3VycyBpZiB0aGUgc3RyaW5nIGVuZHMgd2l0aCBhIG5ldyBsaW5lXG4gIGlmICghbGluZXNBbmROZXdsaW5lc1tsaW5lc0FuZE5ld2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgbGluZXNBbmROZXdsaW5lcy5wb3AoKTtcbiAgfVxuXG4gIC8vIE1lcmdlIHRoZSBjb250ZW50IGFuZCBsaW5lIHNlcGFyYXRvcnMgaW50byBzaW5nbGUgdG9rZW5zXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgbGluZXNBbmROZXdsaW5lcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBsaW5lID0gbGluZXNBbmROZXdsaW5lc1tpXTtcblxuICAgIGlmIChpICUgMiAmJiAhdGhpcy5vcHRpb25zLm5ld2xpbmVJc1Rva2VuKSB7XG4gICAgICByZXRMaW5lc1tyZXRMaW5lcy5sZW5ndGggLSAxXSArPSBsaW5lO1xuICAgIH0gZWxzZSB7XG4gICAgICBpZiAodGhpcy5vcHRpb25zLmlnbm9yZVdoaXRlc3BhY2UpIHtcbiAgICAgICAgbGluZSA9IGxpbmUudHJpbSgpO1xuICAgICAgfVxuICAgICAgcmV0TGluZXMucHVzaChsaW5lKTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0TGluZXM7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjaykgeyByZXR1cm4gbGluZURpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG5leHBvcnQgZnVuY3Rpb24gZGlmZlRyaW1tZWRMaW5lcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHtcbiAgbGV0IG9wdGlvbnMgPSBnZW5lcmF0ZU9wdGlvbnMoY2FsbGJhY2ssIHtpZ25vcmVXaGl0ZXNwYWNlOiB0cnVlfSk7XG4gIHJldHVybiBsaW5lRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbn1cbiJdfQ==
-
-
-/***/ }),
-/* 6 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.sentenceDiff = undefined;
- exports. /*istanbul ignore end*/diffSentences = diffSentences;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/var sentenceDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/sentenceDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- sentenceDiff.tokenize = function (value) {
- return value.split(/(\S.+?[.!?])(?=\s+|$)/);
- };
-
- function diffSentences(oldStr, newStr, callback) {
- return sentenceDiff.diff(oldStr, newStr, callback);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL3NlbnRlbmNlLmpzIl0sIm5hbWVzIjpbImRpZmZTZW50ZW5jZXMiLCJzZW50ZW5jZURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic3BsaXQiLCJvbGRTdHIiLCJuZXdTdHIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBUWdCQSxhLEdBQUFBLGE7O0FBUmhCOzs7Ozs7dUJBR08sSUFBTUMsdUZBQWUsd0VBQXJCO0FBQ1BBLGFBQWFDLFFBQWIsR0FBd0IsVUFBU0MsS0FBVCxFQUFnQjtBQUN0QyxTQUFPQSxNQUFNQyxLQUFOLENBQVksdUJBQVosQ0FBUDtBQUNELENBRkQ7O0FBSU8sU0FBU0osYUFBVCxDQUF1QkssTUFBdkIsRUFBK0JDLE1BQS9CLEVBQXVDQyxRQUF2QyxFQUFpRDtBQUFFLFNBQU9OLGFBQWFPLElBQWIsQ0FBa0JILE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ0MsUUFBbEMsQ0FBUDtBQUFxRCIsImZpbGUiOiJzZW50ZW5jZS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cblxuZXhwb3J0IGNvbnN0IHNlbnRlbmNlRGlmZiA9IG5ldyBEaWZmKCk7XG5zZW50ZW5jZURpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhcXFMuKz9bLiE/XSkoPz1cXHMrfCQpLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZlNlbnRlbmNlcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIHNlbnRlbmNlRGlmZi5kaWZmKG9sZFN0ciwgbmV3U3RyLCBjYWxsYmFjayk7IH1cbiJdfQ==
-
-
-/***/ }),
-/* 7 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.cssDiff = undefined;
- exports. /*istanbul ignore end*/diffCss = diffCss;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/var cssDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/cssDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- cssDiff.tokenize = function (value) {
- return value.split(/([{}:;,]|\s+)/);
- };
-
- function diffCss(oldStr, newStr, callback) {
- return cssDiff.diff(oldStr, newStr, callback);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2Nzcy5qcyJdLCJuYW1lcyI6WyJkaWZmQ3NzIiwiY3NzRGlmZiIsInRva2VuaXplIiwidmFsdWUiLCJzcGxpdCIsIm9sZFN0ciIsIm5ld1N0ciIsImNhbGxiYWNrIiwiZGlmZiJdLCJtYXBwaW5ncyI6Ijs7OztnQ0FPZ0JBLE8sR0FBQUEsTzs7QUFQaEI7Ozs7Ozt1QkFFTyxJQUFNQyw2RUFBVSx3RUFBaEI7QUFDUEEsUUFBUUMsUUFBUixHQUFtQixVQUFTQyxLQUFULEVBQWdCO0FBQ2pDLFNBQU9BLE1BQU1DLEtBQU4sQ0FBWSxlQUFaLENBQVA7QUFDRCxDQUZEOztBQUlPLFNBQVNKLE9BQVQsQ0FBaUJLLE1BQWpCLEVBQXlCQyxNQUF6QixFQUFpQ0MsUUFBakMsRUFBMkM7QUFBRSxTQUFPTixRQUFRTyxJQUFSLENBQWFILE1BQWIsRUFBcUJDLE1BQXJCLEVBQTZCQyxRQUE3QixDQUFQO0FBQWdEIiwiZmlsZSI6ImNzcy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBjc3NEaWZmID0gbmV3IERpZmYoKTtcbmNzc0RpZmYudG9rZW5pemUgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWUuc3BsaXQoLyhbe306OyxdfFxccyspLyk7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkNzcyhvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spIHsgcmV0dXJuIGNzc0RpZmYuZGlmZihvbGRTdHIsIG5ld1N0ciwgY2FsbGJhY2spOyB9XG4iXX0=
-
-
-/***/ }),
-/* 8 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.jsonDiff = undefined;
-
- var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
-
- exports. /*istanbul ignore end*/diffJson = diffJson;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/canonicalize = canonicalize;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- /*istanbul ignore end*/var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/var objectPrototypeToString = Object.prototype.toString;
-
- var jsonDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/jsonDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- // Discriminate between two lines of pretty-printed, serialized JSON where one of them has a
- // dangling comma and the other doesn't. Turns out including the dangling comma yields the nicest output:
- jsonDiff.useLongestToken = true;
-
- jsonDiff.tokenize = /*istanbul ignore start*/_line.lineDiff /*istanbul ignore end*/.tokenize;
- jsonDiff.castInput = function (value) {
- /*istanbul ignore start*/var _options = /*istanbul ignore end*/this.options,
- undefinedReplacement = _options.undefinedReplacement,
- _options$stringifyRep = _options.stringifyReplacer,
- stringifyReplacer = _options$stringifyRep === undefined ? function (k, v) /*istanbul ignore start*/{
- return (/*istanbul ignore end*/typeof v === 'undefined' ? undefinedReplacement : v
- );
- } : _options$stringifyRep;
-
-
- return typeof value === 'string' ? value : JSON.stringify(canonicalize(value, null, null, stringifyReplacer), stringifyReplacer, ' ');
- };
- jsonDiff.equals = function (left, right) {
- return (/*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/.prototype.equals.call(jsonDiff, left.replace(/,([\r\n])/g, '$1'), right.replace(/,([\r\n])/g, '$1'))
- );
- };
-
- function diffJson(oldObj, newObj, options) {
- return jsonDiff.diff(oldObj, newObj, options);
- }
-
- // This function handles the presence of circular references by bailing out when encountering an
- // object that is already on the "stack" of items being processed. Accepts an optional replacer
- function canonicalize(obj, stack, replacementStack, replacer, key) {
- stack = stack || [];
- replacementStack = replacementStack || [];
-
- if (replacer) {
- obj = replacer(key, obj);
- }
-
- var i = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
-
- for (i = 0; i < stack.length; i += 1) {
- if (stack[i] === obj) {
- return replacementStack[i];
- }
- }
-
- var canonicalizedObj = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
-
- if ('[object Array]' === objectPrototypeToString.call(obj)) {
- stack.push(obj);
- canonicalizedObj = new Array(obj.length);
- replacementStack.push(canonicalizedObj);
- for (i = 0; i < obj.length; i += 1) {
- canonicalizedObj[i] = canonicalize(obj[i], stack, replacementStack, replacer, key);
- }
- stack.pop();
- replacementStack.pop();
- return canonicalizedObj;
- }
-
- if (obj && obj.toJSON) {
- obj = obj.toJSON();
- }
-
- if ( /*istanbul ignore start*/(typeof /*istanbul ignore end*/obj === 'undefined' ? 'undefined' : _typeof(obj)) === 'object' && obj !== null) {
- stack.push(obj);
- canonicalizedObj = {};
- replacementStack.push(canonicalizedObj);
- var sortedKeys = [],
- _key = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
- for (_key in obj) {
- /* istanbul ignore else */
- if (obj.hasOwnProperty(_key)) {
- sortedKeys.push(_key);
- }
- }
- sortedKeys.sort();
- for (i = 0; i < sortedKeys.length; i += 1) {
- _key = sortedKeys[i];
- canonicalizedObj[_key] = canonicalize(obj[_key], stack, replacementStack, replacer, _key);
- }
- stack.pop();
- replacementStack.pop();
- } else {
- canonicalizedObj = obj;
- }
- return canonicalizedObj;
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2pzb24uanMiXSwibmFtZXMiOlsiZGlmZkpzb24iLCJjYW5vbmljYWxpemUiLCJvYmplY3RQcm90b3R5cGVUb1N0cmluZyIsIk9iamVjdCIsInByb3RvdHlwZSIsInRvU3RyaW5nIiwianNvbkRpZmYiLCJ1c2VMb25nZXN0VG9rZW4iLCJ0b2tlbml6ZSIsImNhc3RJbnB1dCIsInZhbHVlIiwib3B0aW9ucyIsInVuZGVmaW5lZFJlcGxhY2VtZW50Iiwic3RyaW5naWZ5UmVwbGFjZXIiLCJrIiwidiIsIkpTT04iLCJzdHJpbmdpZnkiLCJlcXVhbHMiLCJsZWZ0IiwicmlnaHQiLCJjYWxsIiwicmVwbGFjZSIsIm9sZE9iaiIsIm5ld09iaiIsImRpZmYiLCJvYmoiLCJzdGFjayIsInJlcGxhY2VtZW50U3RhY2siLCJyZXBsYWNlciIsImtleSIsImkiLCJsZW5ndGgiLCJjYW5vbmljYWxpemVkT2JqIiwicHVzaCIsIkFycmF5IiwicG9wIiwidG9KU09OIiwic29ydGVkS2V5cyIsImhhc093blByb3BlcnR5Iiwic29ydCJdLCJtYXBwaW5ncyI6Ijs7Ozs7OztnQ0FxQmdCQSxRLEdBQUFBLFE7eURBSUFDLFksR0FBQUEsWTs7QUF6QmhCOzs7O3VCQUNBOzs7O3VCQUVBLElBQU1DLDBCQUEwQkMsT0FBT0MsU0FBUCxDQUFpQkMsUUFBakQ7O0FBR08sSUFBTUMsK0VBQVcsd0VBQWpCO0FBQ1A7QUFDQTtBQUNBQSxTQUFTQyxlQUFULEdBQTJCLElBQTNCOztBQUVBRCxTQUFTRSxRQUFULEdBQW9CLGdFQUFTQSxRQUE3QjtBQUNBRixTQUFTRyxTQUFULEdBQXFCLFVBQVNDLEtBQVQsRUFBZ0I7QUFBQSxpRUFDK0UsS0FBS0MsT0FEcEY7QUFBQSxNQUM1QkMsb0JBRDRCLFlBQzVCQSxvQkFENEI7QUFBQSx1Q0FDTkMsaUJBRE07QUFBQSxNQUNOQSxpQkFETSx5Q0FDYyxVQUFDQyxDQUFELEVBQUlDLENBQUo7QUFBQSxtQ0FBVSxPQUFPQSxDQUFQLEtBQWEsV0FBYixHQUEyQkgsb0JBQTNCLEdBQWtERztBQUE1RDtBQUFBLEdBRGQ7OztBQUduQyxTQUFPLE9BQU9MLEtBQVAsS0FBaUIsUUFBakIsR0FBNEJBLEtBQTVCLEdBQW9DTSxLQUFLQyxTQUFMLENBQWVoQixhQUFhUyxLQUFiLEVBQW9CLElBQXBCLEVBQTBCLElBQTFCLEVBQWdDRyxpQkFBaEMsQ0FBZixFQUFtRUEsaUJBQW5FLEVBQXNGLElBQXRGLENBQTNDO0FBQ0QsQ0FKRDtBQUtBUCxTQUFTWSxNQUFULEdBQWtCLFVBQVNDLElBQVQsRUFBZUMsS0FBZixFQUFzQjtBQUN0QyxTQUFPLG9FQUFLaEIsU0FBTCxDQUFlYyxNQUFmLENBQXNCRyxJQUF0QixDQUEyQmYsUUFBM0IsRUFBcUNhLEtBQUtHLE9BQUwsQ0FBYSxZQUFiLEVBQTJCLElBQTNCLENBQXJDLEVBQXVFRixNQUFNRSxPQUFOLENBQWMsWUFBZCxFQUE0QixJQUE1QixDQUF2RTtBQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTdEIsUUFBVCxDQUFrQnVCLE1BQWxCLEVBQTBCQyxNQUExQixFQUFrQ2IsT0FBbEMsRUFBMkM7QUFBRSxTQUFPTCxTQUFTbUIsSUFBVCxDQUFjRixNQUFkLEVBQXNCQyxNQUF0QixFQUE4QmIsT0FBOUIsQ0FBUDtBQUFnRDs7QUFFcEc7QUFDQTtBQUNPLFNBQVNWLFlBQVQsQ0FBc0J5QixHQUF0QixFQUEyQkMsS0FBM0IsRUFBa0NDLGdCQUFsQyxFQUFvREMsUUFBcEQsRUFBOERDLEdBQTlELEVBQW1FO0FBQ3hFSCxVQUFRQSxTQUFTLEVBQWpCO0FBQ0FDLHFCQUFtQkEsb0JBQW9CLEVBQXZDOztBQUVBLE1BQUlDLFFBQUosRUFBYztBQUNaSCxVQUFNRyxTQUFTQyxHQUFULEVBQWNKLEdBQWQsQ0FBTjtBQUNEOztBQUVELE1BQUlLLG1DQUFKOztBQUVBLE9BQUtBLElBQUksQ0FBVCxFQUFZQSxJQUFJSixNQUFNSyxNQUF0QixFQUE4QkQsS0FBSyxDQUFuQyxFQUFzQztBQUNwQyxRQUFJSixNQUFNSSxDQUFOLE1BQWFMLEdBQWpCLEVBQXNCO0FBQ3BCLGFBQU9FLGlCQUFpQkcsQ0FBakIsQ0FBUDtBQUNEO0FBQ0Y7O0FBRUQsTUFBSUUsa0RBQUo7O0FBRUEsTUFBSSxxQkFBcUIvQix3QkFBd0JtQixJQUF4QixDQUE2QkssR0FBN0IsQ0FBekIsRUFBNEQ7QUFDMURDLFVBQU1PLElBQU4sQ0FBV1IsR0FBWDtBQUNBTyx1QkFBbUIsSUFBSUUsS0FBSixDQUFVVCxJQUFJTSxNQUFkLENBQW5CO0FBQ0FKLHFCQUFpQk0sSUFBakIsQ0FBc0JELGdCQUF0QjtBQUNBLFNBQUtGLElBQUksQ0FBVCxFQUFZQSxJQUFJTCxJQUFJTSxNQUFwQixFQUE0QkQsS0FBSyxDQUFqQyxFQUFvQztBQUNsQ0UsdUJBQWlCRixDQUFqQixJQUFzQjlCLGFBQWF5QixJQUFJSyxDQUFKLENBQWIsRUFBcUJKLEtBQXJCLEVBQTRCQyxnQkFBNUIsRUFBOENDLFFBQTlDLEVBQXdEQyxHQUF4RCxDQUF0QjtBQUNEO0FBQ0RILFVBQU1TLEdBQU47QUFDQVIscUJBQWlCUSxHQUFqQjtBQUNBLFdBQU9ILGdCQUFQO0FBQ0Q7O0FBRUQsTUFBSVAsT0FBT0EsSUFBSVcsTUFBZixFQUF1QjtBQUNyQlgsVUFBTUEsSUFBSVcsTUFBSixFQUFOO0FBQ0Q7O0FBRUQsTUFBSSx5REFBT1gsR0FBUCx5Q0FBT0EsR0FBUCxPQUFlLFFBQWYsSUFBMkJBLFFBQVEsSUFBdkMsRUFBNkM7QUFDM0NDLFVBQU1PLElBQU4sQ0FBV1IsR0FBWDtBQUNBTyx1QkFBbUIsRUFBbkI7QUFDQUwscUJBQWlCTSxJQUFqQixDQUFzQkQsZ0JBQXRCO0FBQ0EsUUFBSUssYUFBYSxFQUFqQjtBQUFBLFFBQ0lSLHNDQURKO0FBRUEsU0FBS0EsSUFBTCxJQUFZSixHQUFaLEVBQWlCO0FBQ2Y7QUFDQSxVQUFJQSxJQUFJYSxjQUFKLENBQW1CVCxJQUFuQixDQUFKLEVBQTZCO0FBQzNCUSxtQkFBV0osSUFBWCxDQUFnQkosSUFBaEI7QUFDRDtBQUNGO0FBQ0RRLGVBQVdFLElBQVg7QUFDQSxTQUFLVCxJQUFJLENBQVQsRUFBWUEsSUFBSU8sV0FBV04sTUFBM0IsRUFBbUNELEtBQUssQ0FBeEMsRUFBMkM7QUFDekNELGFBQU1RLFdBQVdQLENBQVgsQ0FBTjtBQUNBRSx1QkFBaUJILElBQWpCLElBQXdCN0IsYUFBYXlCLElBQUlJLElBQUosQ0FBYixFQUF1QkgsS0FBdkIsRUFBOEJDLGdCQUE5QixFQUFnREMsUUFBaEQsRUFBMERDLElBQTFELENBQXhCO0FBQ0Q7QUFDREgsVUFBTVMsR0FBTjtBQUNBUixxQkFBaUJRLEdBQWpCO0FBQ0QsR0FuQkQsTUFtQk87QUFDTEgsdUJBQW1CUCxHQUFuQjtBQUNEO0FBQ0QsU0FBT08sZ0JBQVA7QUFDRCIsImZpbGUiOiJqc29uLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IERpZmYgZnJvbSAnLi9iYXNlJztcbmltcG9ydCB7bGluZURpZmZ9IGZyb20gJy4vbGluZSc7XG5cbmNvbnN0IG9iamVjdFByb3RvdHlwZVRvU3RyaW5nID0gT2JqZWN0LnByb3RvdHlwZS50b1N0cmluZztcblxuXG5leHBvcnQgY29uc3QganNvbkRpZmYgPSBuZXcgRGlmZigpO1xuLy8gRGlzY3JpbWluYXRlIGJldHdlZW4gdHdvIGxpbmVzIG9mIHByZXR0eS1wcmludGVkLCBzZXJpYWxpemVkIEpTT04gd2hlcmUgb25lIG9mIHRoZW0gaGFzIGFcbi8vIGRhbmdsaW5nIGNvbW1hIGFuZCB0aGUgb3RoZXIgZG9lc24ndC4gVHVybnMgb3V0IGluY2x1ZGluZyB0aGUgZGFuZ2xpbmcgY29tbWEgeWllbGRzIHRoZSBuaWNlc3Qgb3V0cHV0OlxuanNvbkRpZmYudXNlTG9uZ2VzdFRva2VuID0gdHJ1ZTtcblxuanNvbkRpZmYudG9rZW5pemUgPSBsaW5lRGlmZi50b2tlbml6ZTtcbmpzb25EaWZmLmNhc3RJbnB1dCA9IGZ1bmN0aW9uKHZhbHVlKSB7XG4gIGNvbnN0IHt1bmRlZmluZWRSZXBsYWNlbWVudCwgc3RyaW5naWZ5UmVwbGFjZXIgPSAoaywgdikgPT4gdHlwZW9mIHYgPT09ICd1bmRlZmluZWQnID8gdW5kZWZpbmVkUmVwbGFjZW1lbnQgOiB2fSA9IHRoaXMub3B0aW9ucztcblxuICByZXR1cm4gdHlwZW9mIHZhbHVlID09PSAnc3RyaW5nJyA/IHZhbHVlIDogSlNPTi5zdHJpbmdpZnkoY2Fub25pY2FsaXplKHZhbHVlLCBudWxsLCBudWxsLCBzdHJpbmdpZnlSZXBsYWNlciksIHN0cmluZ2lmeVJlcGxhY2VyLCAnICAnKTtcbn07XG5qc29uRGlmZi5lcXVhbHMgPSBmdW5jdGlvbihsZWZ0LCByaWdodCkge1xuICByZXR1cm4gRGlmZi5wcm90b3R5cGUuZXF1YWxzLmNhbGwoanNvbkRpZmYsIGxlZnQucmVwbGFjZSgvLChbXFxyXFxuXSkvZywgJyQxJyksIHJpZ2h0LnJlcGxhY2UoLywoW1xcclxcbl0pL2csICckMScpKTtcbn07XG5cbmV4cG9ydCBmdW5jdGlvbiBkaWZmSnNvbihvbGRPYmosIG5ld09iaiwgb3B0aW9ucykgeyByZXR1cm4ganNvbkRpZmYuZGlmZihvbGRPYmosIG5ld09iaiwgb3B0aW9ucyk7IH1cblxuLy8gVGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBwcmVzZW5jZSBvZiBjaXJjdWxhciByZWZlcmVuY2VzIGJ5IGJhaWxpbmcgb3V0IHdoZW4gZW5jb3VudGVyaW5nIGFuXG4vLyBvYmplY3QgdGhhdCBpcyBhbHJlYWR5IG9uIHRoZSBcInN0YWNrXCIgb2YgaXRlbXMgYmVpbmcgcHJvY2Vzc2VkLiBBY2NlcHRzIGFuIG9wdGlvbmFsIHJlcGxhY2VyXG5leHBvcnQgZnVuY3Rpb24gY2Fub25pY2FsaXplKG9iaiwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpIHtcbiAgc3RhY2sgPSBzdGFjayB8fCBbXTtcbiAgcmVwbGFjZW1lbnRTdGFjayA9IHJlcGxhY2VtZW50U3RhY2sgfHwgW107XG5cbiAgaWYgKHJlcGxhY2VyKSB7XG4gICAgb2JqID0gcmVwbGFjZXIoa2V5LCBvYmopO1xuICB9XG5cbiAgbGV0IGk7XG5cbiAgZm9yIChpID0gMDsgaSA8IHN0YWNrLmxlbmd0aDsgaSArPSAxKSB7XG4gICAgaWYgKHN0YWNrW2ldID09PSBvYmopIHtcbiAgICAgIHJldHVybiByZXBsYWNlbWVudFN0YWNrW2ldO1xuICAgIH1cbiAgfVxuXG4gIGxldCBjYW5vbmljYWxpemVkT2JqO1xuXG4gIGlmICgnW29iamVjdCBBcnJheV0nID09PSBvYmplY3RQcm90b3R5cGVUb1N0cmluZy5jYWxsKG9iaikpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IG5ldyBBcnJheShvYmoubGVuZ3RoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnB1c2goY2Fub25pY2FsaXplZE9iaik7XG4gICAgZm9yIChpID0gMDsgaSA8IG9iai5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAgY2Fub25pY2FsaXplZE9ialtpXSA9IGNhbm9uaWNhbGl6ZShvYmpbaV0sIHN0YWNrLCByZXBsYWNlbWVudFN0YWNrLCByZXBsYWNlciwga2V5KTtcbiAgICB9XG4gICAgc3RhY2sucG9wKCk7XG4gICAgcmVwbGFjZW1lbnRTdGFjay5wb3AoKTtcbiAgICByZXR1cm4gY2Fub25pY2FsaXplZE9iajtcbiAgfVxuXG4gIGlmIChvYmogJiYgb2JqLnRvSlNPTikge1xuICAgIG9iaiA9IG9iai50b0pTT04oKTtcbiAgfVxuXG4gIGlmICh0eXBlb2Ygb2JqID09PSAnb2JqZWN0JyAmJiBvYmogIT09IG51bGwpIHtcbiAgICBzdGFjay5wdXNoKG9iaik7XG4gICAgY2Fub25pY2FsaXplZE9iaiA9IHt9O1xuICAgIHJlcGxhY2VtZW50U3RhY2sucHVzaChjYW5vbmljYWxpemVkT2JqKTtcbiAgICBsZXQgc29ydGVkS2V5cyA9IFtdLFxuICAgICAgICBrZXk7XG4gICAgZm9yIChrZXkgaW4gb2JqKSB7XG4gICAgICAvKiBpc3RhbmJ1bCBpZ25vcmUgZWxzZSAqL1xuICAgICAgaWYgKG9iai5oYXNPd25Qcm9wZXJ0eShrZXkpKSB7XG4gICAgICAgIHNvcnRlZEtleXMucHVzaChrZXkpO1xuICAgICAgfVxuICAgIH1cbiAgICBzb3J0ZWRLZXlzLnNvcnQoKTtcbiAgICBmb3IgKGkgPSAwOyBpIDwgc29ydGVkS2V5cy5sZW5ndGg7IGkgKz0gMSkge1xuICAgICAga2V5ID0gc29ydGVkS2V5c1tpXTtcbiAgICAgIGNhbm9uaWNhbGl6ZWRPYmpba2V5XSA9IGNhbm9uaWNhbGl6ZShvYmpba2V5XSwgc3RhY2ssIHJlcGxhY2VtZW50U3RhY2ssIHJlcGxhY2VyLCBrZXkpO1xuICAgIH1cbiAgICBzdGFjay5wb3AoKTtcbiAgICByZXBsYWNlbWVudFN0YWNrLnBvcCgpO1xuICB9IGVsc2Uge1xuICAgIGNhbm9uaWNhbGl6ZWRPYmogPSBvYmo7XG4gIH1cbiAgcmV0dXJuIGNhbm9uaWNhbGl6ZWRPYmo7XG59XG4iXX0=
-
-
-/***/ }),
-/* 9 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports.arrayDiff = undefined;
- exports. /*istanbul ignore end*/diffArrays = diffArrays;
-
- var /*istanbul ignore start*/_base = __webpack_require__(1) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _base2 = _interopRequireDefault(_base);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/var arrayDiff = /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayDiff = new /*istanbul ignore start*/_base2['default'] /*istanbul ignore end*/();
- arrayDiff.tokenize = function (value) {
- return value.slice();
- };
- arrayDiff.join = arrayDiff.removeEmpty = function (value) {
- return value;
- };
-
- function diffArrays(oldArr, newArr, callback) {
- return arrayDiff.diff(oldArr, newArr, callback);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9kaWZmL2FycmF5LmpzIl0sIm5hbWVzIjpbImRpZmZBcnJheXMiLCJhcnJheURpZmYiLCJ0b2tlbml6ZSIsInZhbHVlIiwic2xpY2UiLCJqb2luIiwicmVtb3ZlRW1wdHkiLCJvbGRBcnIiLCJuZXdBcnIiLCJjYWxsYmFjayIsImRpZmYiXSwibWFwcGluZ3MiOiI7Ozs7Z0NBVWdCQSxVLEdBQUFBLFU7O0FBVmhCOzs7Ozs7dUJBRU8sSUFBTUMsaUZBQVksd0VBQWxCO0FBQ1BBLFVBQVVDLFFBQVYsR0FBcUIsVUFBU0MsS0FBVCxFQUFnQjtBQUNuQyxTQUFPQSxNQUFNQyxLQUFOLEVBQVA7QUFDRCxDQUZEO0FBR0FILFVBQVVJLElBQVYsR0FBaUJKLFVBQVVLLFdBQVYsR0FBd0IsVUFBU0gsS0FBVCxFQUFnQjtBQUN2RCxTQUFPQSxLQUFQO0FBQ0QsQ0FGRDs7QUFJTyxTQUFTSCxVQUFULENBQW9CTyxNQUFwQixFQUE0QkMsTUFBNUIsRUFBb0NDLFFBQXBDLEVBQThDO0FBQUUsU0FBT1IsVUFBVVMsSUFBVixDQUFlSCxNQUFmLEVBQXVCQyxNQUF2QixFQUErQkMsUUFBL0IsQ0FBUDtBQUFrRCIsImZpbGUiOiJhcnJheS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBEaWZmIGZyb20gJy4vYmFzZSc7XG5cbmV4cG9ydCBjb25zdCBhcnJheURpZmYgPSBuZXcgRGlmZigpO1xuYXJyYXlEaWZmLnRva2VuaXplID0gZnVuY3Rpb24odmFsdWUpIHtcbiAgcmV0dXJuIHZhbHVlLnNsaWNlKCk7XG59O1xuYXJyYXlEaWZmLmpvaW4gPSBhcnJheURpZmYucmVtb3ZlRW1wdHkgPSBmdW5jdGlvbih2YWx1ZSkge1xuICByZXR1cm4gdmFsdWU7XG59O1xuXG5leHBvcnQgZnVuY3Rpb24gZGlmZkFycmF5cyhvbGRBcnIsIG5ld0FyciwgY2FsbGJhY2spIHsgcmV0dXJuIGFycmF5RGlmZi5kaWZmKG9sZEFyciwgbmV3QXJyLCBjYWxsYmFjayk7IH1cbiJdfQ==
-
-
-/***/ }),
-/* 10 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/applyPatch = applyPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/applyPatches = applyPatches;
-
- var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_distanceIterator = __webpack_require__(12) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/var _distanceIterator2 = _interopRequireDefault(_distanceIterator);
-
- function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { 'default': obj }; }
-
- /*istanbul ignore end*/function applyPatch(source, uniDiff) {
- /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};
-
- if (typeof uniDiff === 'string') {
- uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
- }
-
- if (Array.isArray(uniDiff)) {
- if (uniDiff.length > 1) {
- throw new Error('applyPatch only works with a single input.');
- }
-
- uniDiff = uniDiff[0];
- }
-
- // Apply the diff to the input
- var lines = source.split(/\r\n|[\n\v\f\r\x85]/),
- delimiters = source.match(/\r\n|[\n\v\f\r\x85]/g) || [],
- hunks = uniDiff.hunks,
- compareLine = options.compareLine || function (lineNumber, line, operation, patchContent) /*istanbul ignore start*/{
- return (/*istanbul ignore end*/line === patchContent
- );
- },
- errorCount = 0,
- fuzzFactor = options.fuzzFactor || 0,
- minLine = 0,
- offset = 0,
- removeEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
- addEOFNL = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
-
- /**
- * Checks if the hunk exactly fits on the provided location
- */
- function hunkFits(hunk, toPos) {
- for (var j = 0; j < hunk.lines.length; j++) {
- var line = hunk.lines[j],
- operation = line.length > 0 ? line[0] : ' ',
- content = line.length > 0 ? line.substr(1) : line;
-
- if (operation === ' ' || operation === '-') {
- // Context sanity check
- if (!compareLine(toPos + 1, lines[toPos], operation, content)) {
- errorCount++;
-
- if (errorCount > fuzzFactor) {
- return false;
- }
- }
- toPos++;
- }
- }
-
- return true;
- }
-
- // Search best fit offsets for each hunk based on the previous ones
- for (var i = 0; i < hunks.length; i++) {
- var hunk = hunks[i],
- maxLine = lines.length - hunk.oldLines,
- localOffset = 0,
- toPos = offset + hunk.oldStart - 1;
-
- var iterator = /*istanbul ignore start*/(0, _distanceIterator2['default']) /*istanbul ignore end*/(toPos, minLine, maxLine);
-
- for (; localOffset !== undefined; localOffset = iterator()) {
- if (hunkFits(hunk, toPos + localOffset)) {
- hunk.offset = offset += localOffset;
- break;
- }
- }
-
- if (localOffset === undefined) {
- return false;
- }
-
- // Set lower text limit to end of the current hunk, so next ones don't try
- // to fit over already patched text
- minLine = hunk.offset + hunk.oldStart + hunk.oldLines;
- }
-
- // Apply patch hunks
- var diffOffset = 0;
- for (var _i = 0; _i < hunks.length; _i++) {
- var _hunk = hunks[_i],
- _toPos = _hunk.oldStart + _hunk.offset + diffOffset - 1;
- diffOffset += _hunk.newLines - _hunk.oldLines;
-
- if (_toPos < 0) {
- // Creating a new file
- _toPos = 0;
- }
-
- for (var j = 0; j < _hunk.lines.length; j++) {
- var line = _hunk.lines[j],
- operation = line.length > 0 ? line[0] : ' ',
- content = line.length > 0 ? line.substr(1) : line,
- delimiter = _hunk.linedelimiters[j];
-
- if (operation === ' ') {
- _toPos++;
- } else if (operation === '-') {
- lines.splice(_toPos, 1);
- delimiters.splice(_toPos, 1);
- /* istanbul ignore else */
- } else if (operation === '+') {
- lines.splice(_toPos, 0, content);
- delimiters.splice(_toPos, 0, delimiter);
- _toPos++;
- } else if (operation === '\\') {
- var previousOperation = _hunk.lines[j - 1] ? _hunk.lines[j - 1][0] : null;
- if (previousOperation === '+') {
- removeEOFNL = true;
- } else if (previousOperation === '-') {
- addEOFNL = true;
- }
- }
- }
- }
-
- // Handle EOFNL insertion/removal
- if (removeEOFNL) {
- while (!lines[lines.length - 1]) {
- lines.pop();
- delimiters.pop();
- }
- } else if (addEOFNL) {
- lines.push('');
- delimiters.push('\n');
- }
- for (var _k = 0; _k < lines.length - 1; _k++) {
- lines[_k] = lines[_k] + delimiters[_k];
- }
- return lines.join('');
- }
-
- // Wrapper that supports multiple file patches via callbacks.
- function applyPatches(uniDiff, options) {
- if (typeof uniDiff === 'string') {
- uniDiff = /*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(uniDiff);
- }
-
- var currentIndex = 0;
- function processIndex() {
- var index = uniDiff[currentIndex++];
- if (!index) {
- return options.complete();
- }
-
- options.loadFile(index, function (err, data) {
- if (err) {
- return options.complete(err);
- }
-
- var updatedContent = applyPatch(data, index, options);
- options.patched(index, updatedContent, function (err) {
- if (err) {
- return options.complete(err);
- }
-
- processIndex();
- });
- });
- }
- processIndex();
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9hcHBseS5qcyJdLCJuYW1lcyI6WyJhcHBseVBhdGNoIiwiYXBwbHlQYXRjaGVzIiwic291cmNlIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJBcnJheSIsImlzQXJyYXkiLCJsZW5ndGgiLCJFcnJvciIsImxpbmVzIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJodW5rcyIsImNvbXBhcmVMaW5lIiwibGluZU51bWJlciIsImxpbmUiLCJvcGVyYXRpb24iLCJwYXRjaENvbnRlbnQiLCJlcnJvckNvdW50IiwiZnV6ekZhY3RvciIsIm1pbkxpbmUiLCJvZmZzZXQiLCJyZW1vdmVFT0ZOTCIsImFkZEVPRk5MIiwiaHVua0ZpdHMiLCJodW5rIiwidG9Qb3MiLCJqIiwiY29udGVudCIsInN1YnN0ciIsImkiLCJtYXhMaW5lIiwib2xkTGluZXMiLCJsb2NhbE9mZnNldCIsIm9sZFN0YXJ0IiwiaXRlcmF0b3IiLCJ1bmRlZmluZWQiLCJkaWZmT2Zmc2V0IiwibmV3TGluZXMiLCJkZWxpbWl0ZXIiLCJsaW5lZGVsaW1pdGVycyIsInNwbGljZSIsInByZXZpb3VzT3BlcmF0aW9uIiwicG9wIiwicHVzaCIsIl9rIiwiam9pbiIsImN1cnJlbnRJbmRleCIsInByb2Nlc3NJbmRleCIsImluZGV4IiwiY29tcGxldGUiLCJsb2FkRmlsZSIsImVyciIsImRhdGEiLCJ1cGRhdGVkQ29udGVudCIsInBhdGNoZWQiXSwibWFwcGluZ3MiOiI7OztnQ0FHZ0JBLFUsR0FBQUEsVTt5REFvSUFDLFksR0FBQUEsWTs7QUF2SWhCOztBQUNBOzs7Ozs7dUJBRU8sU0FBU0QsVUFBVCxDQUFvQkUsTUFBcEIsRUFBNEJDLE9BQTVCLEVBQW1EO0FBQUEsc0RBQWRDLE9BQWMsdUVBQUosRUFBSTs7QUFDeEQsTUFBSSxPQUFPRCxPQUFQLEtBQW1CLFFBQXZCLEVBQWlDO0FBQy9CQSxjQUFVLHdFQUFXQSxPQUFYLENBQVY7QUFDRDs7QUFFRCxNQUFJRSxNQUFNQyxPQUFOLENBQWNILE9BQWQsQ0FBSixFQUE0QjtBQUMxQixRQUFJQSxRQUFRSSxNQUFSLEdBQWlCLENBQXJCLEVBQXdCO0FBQ3RCLFlBQU0sSUFBSUMsS0FBSixDQUFVLDRDQUFWLENBQU47QUFDRDs7QUFFREwsY0FBVUEsUUFBUSxDQUFSLENBQVY7QUFDRDs7QUFFRDtBQUNBLE1BQUlNLFFBQVFQLE9BQU9RLEtBQVAsQ0FBYSxxQkFBYixDQUFaO0FBQUEsTUFDSUMsYUFBYVQsT0FBT1UsS0FBUCxDQUFhLHNCQUFiLEtBQXdDLEVBRHpEO0FBQUEsTUFFSUMsUUFBUVYsUUFBUVUsS0FGcEI7QUFBQSxNQUlJQyxjQUFjVixRQUFRVSxXQUFSLElBQXdCLFVBQUNDLFVBQUQsRUFBYUMsSUFBYixFQUFtQkMsU0FBbkIsRUFBOEJDLFlBQTlCO0FBQUEsbUNBQStDRixTQUFTRTtBQUF4RDtBQUFBLEdBSjFDO0FBQUEsTUFLSUMsYUFBYSxDQUxqQjtBQUFBLE1BTUlDLGFBQWFoQixRQUFRZ0IsVUFBUixJQUFzQixDQU52QztBQUFBLE1BT0lDLFVBQVUsQ0FQZDtBQUFBLE1BUUlDLFNBQVMsQ0FSYjtBQUFBLE1BVUlDLDZDQVZKO0FBQUEsTUFXSUMsMENBWEo7O0FBYUE7OztBQUdBLFdBQVNDLFFBQVQsQ0FBa0JDLElBQWxCLEVBQXdCQyxLQUF4QixFQUErQjtBQUM3QixTQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUYsS0FBS2pCLEtBQUwsQ0FBV0YsTUFBL0IsRUFBdUNxQixHQUF2QyxFQUE0QztBQUMxQyxVQUFJWixPQUFPVSxLQUFLakIsS0FBTCxDQUFXbUIsQ0FBWCxDQUFYO0FBQUEsVUFDSVgsWUFBYUQsS0FBS1QsTUFBTCxHQUFjLENBQWQsR0FBa0JTLEtBQUssQ0FBTCxDQUFsQixHQUE0QixHQUQ3QztBQUFBLFVBRUlhLFVBQVdiLEtBQUtULE1BQUwsR0FBYyxDQUFkLEdBQWtCUyxLQUFLYyxNQUFMLENBQVksQ0FBWixDQUFsQixHQUFtQ2QsSUFGbEQ7O0FBSUEsVUFBSUMsY0FBYyxHQUFkLElBQXFCQSxjQUFjLEdBQXZDLEVBQTRDO0FBQzFDO0FBQ0EsWUFBSSxDQUFDSCxZQUFZYSxRQUFRLENBQXBCLEVBQXVCbEIsTUFBTWtCLEtBQU4sQ0FBdkIsRUFBcUNWLFNBQXJDLEVBQWdEWSxPQUFoRCxDQUFMLEVBQStEO0FBQzdEVjs7QUFFQSxjQUFJQSxhQUFhQyxVQUFqQixFQUE2QjtBQUMzQixtQkFBTyxLQUFQO0FBQ0Q7QUFDRjtBQUNETztBQUNEO0FBQ0Y7O0FBRUQsV0FBTyxJQUFQO0FBQ0Q7O0FBRUQ7QUFDQSxPQUFLLElBQUlJLElBQUksQ0FBYixFQUFnQkEsSUFBSWxCLE1BQU1OLE1BQTFCLEVBQWtDd0IsR0FBbEMsRUFBdUM7QUFDckMsUUFBSUwsT0FBT2IsTUFBTWtCLENBQU4sQ0FBWDtBQUFBLFFBQ0lDLFVBQVV2QixNQUFNRixNQUFOLEdBQWVtQixLQUFLTyxRQURsQztBQUFBLFFBRUlDLGNBQWMsQ0FGbEI7QUFBQSxRQUdJUCxRQUFRTCxTQUFTSSxLQUFLUyxRQUFkLEdBQXlCLENBSHJDOztBQUtBLFFBQUlDLFdBQVcsb0ZBQWlCVCxLQUFqQixFQUF3Qk4sT0FBeEIsRUFBaUNXLE9BQWpDLENBQWY7O0FBRUEsV0FBT0UsZ0JBQWdCRyxTQUF2QixFQUFrQ0gsY0FBY0UsVUFBaEQsRUFBNEQ7QUFDMUQsVUFBSVgsU0FBU0MsSUFBVCxFQUFlQyxRQUFRTyxXQUF2QixDQUFKLEVBQXlDO0FBQ3ZDUixhQUFLSixNQUFMLEdBQWNBLFVBQVVZLFdBQXhCO0FBQ0E7QUFDRDtBQUNGOztBQUVELFFBQUlBLGdCQUFnQkcsU0FBcEIsRUFBK0I7QUFDN0IsYUFBTyxLQUFQO0FBQ0Q7O0FBRUQ7QUFDQTtBQUNBaEIsY0FBVUssS0FBS0osTUFBTCxHQUFjSSxLQUFLUyxRQUFuQixHQUE4QlQsS0FBS08sUUFBN0M7QUFDRDs7QUFFRDtBQUNBLE1BQUlLLGFBQWEsQ0FBakI7QUFDQSxPQUFLLElBQUlQLEtBQUksQ0FBYixFQUFnQkEsS0FBSWxCLE1BQU1OLE1BQTFCLEVBQWtDd0IsSUFBbEMsRUFBdUM7QUFDckMsUUFBSUwsUUFBT2IsTUFBTWtCLEVBQU4sQ0FBWDtBQUFBLFFBQ0lKLFNBQVFELE1BQUtTLFFBQUwsR0FBZ0JULE1BQUtKLE1BQXJCLEdBQThCZ0IsVUFBOUIsR0FBMkMsQ0FEdkQ7QUFFQUEsa0JBQWNaLE1BQUthLFFBQUwsR0FBZ0JiLE1BQUtPLFFBQW5DOztBQUVBLFFBQUlOLFNBQVEsQ0FBWixFQUFlO0FBQUU7QUFDZkEsZUFBUSxDQUFSO0FBQ0Q7O0FBRUQsU0FBSyxJQUFJQyxJQUFJLENBQWIsRUFBZ0JBLElBQUlGLE1BQUtqQixLQUFMLENBQVdGLE1BQS9CLEVBQXVDcUIsR0FBdkMsRUFBNEM7QUFDMUMsVUFBSVosT0FBT1UsTUFBS2pCLEtBQUwsQ0FBV21CLENBQVgsQ0FBWDtBQUFBLFVBQ0lYLFlBQWFELEtBQUtULE1BQUwsR0FBYyxDQUFkLEdBQWtCUyxLQUFLLENBQUwsQ0FBbEIsR0FBNEIsR0FEN0M7QUFBQSxVQUVJYSxVQUFXYixLQUFLVCxNQUFMLEdBQWMsQ0FBZCxHQUFrQlMsS0FBS2MsTUFBTCxDQUFZLENBQVosQ0FBbEIsR0FBbUNkLElBRmxEO0FBQUEsVUFHSXdCLFlBQVlkLE1BQUtlLGNBQUwsQ0FBb0JiLENBQXBCLENBSGhCOztBQUtBLFVBQUlYLGNBQWMsR0FBbEIsRUFBdUI7QUFDckJVO0FBQ0QsT0FGRCxNQUVPLElBQUlWLGNBQWMsR0FBbEIsRUFBdUI7QUFDNUJSLGNBQU1pQyxNQUFOLENBQWFmLE1BQWIsRUFBb0IsQ0FBcEI7QUFDQWhCLG1CQUFXK0IsTUFBWCxDQUFrQmYsTUFBbEIsRUFBeUIsQ0FBekI7QUFDRjtBQUNDLE9BSk0sTUFJQSxJQUFJVixjQUFjLEdBQWxCLEVBQXVCO0FBQzVCUixjQUFNaUMsTUFBTixDQUFhZixNQUFiLEVBQW9CLENBQXBCLEVBQXVCRSxPQUF2QjtBQUNBbEIsbUJBQVcrQixNQUFYLENBQWtCZixNQUFsQixFQUF5QixDQUF6QixFQUE0QmEsU0FBNUI7QUFDQWI7QUFDRCxPQUpNLE1BSUEsSUFBSVYsY0FBYyxJQUFsQixFQUF3QjtBQUM3QixZQUFJMEIsb0JBQW9CakIsTUFBS2pCLEtBQUwsQ0FBV21CLElBQUksQ0FBZixJQUFvQkYsTUFBS2pCLEtBQUwsQ0FBV21CLElBQUksQ0FBZixFQUFrQixDQUFsQixDQUFwQixHQUEyQyxJQUFuRTtBQUNBLFlBQUllLHNCQUFzQixHQUExQixFQUErQjtBQUM3QnBCLHdCQUFjLElBQWQ7QUFDRCxTQUZELE1BRU8sSUFBSW9CLHNCQUFzQixHQUExQixFQUErQjtBQUNwQ25CLHFCQUFXLElBQVg7QUFDRDtBQUNGO0FBQ0Y7QUFDRjs7QUFFRDtBQUNBLE1BQUlELFdBQUosRUFBaUI7QUFDZixXQUFPLENBQUNkLE1BQU1BLE1BQU1GLE1BQU4sR0FBZSxDQUFyQixDQUFSLEVBQWlDO0FBQy9CRSxZQUFNbUMsR0FBTjtBQUNBakMsaUJBQVdpQyxHQUFYO0FBQ0Q7QUFDRixHQUxELE1BS08sSUFBSXBCLFFBQUosRUFBYztBQUNuQmYsVUFBTW9DLElBQU4sQ0FBVyxFQUFYO0FBQ0FsQyxlQUFXa0MsSUFBWCxDQUFnQixJQUFoQjtBQUNEO0FBQ0QsT0FBSyxJQUFJQyxLQUFLLENBQWQsRUFBaUJBLEtBQUtyQyxNQUFNRixNQUFOLEdBQWUsQ0FBckMsRUFBd0N1QyxJQUF4QyxFQUE4QztBQUM1Q3JDLFVBQU1xQyxFQUFOLElBQVlyQyxNQUFNcUMsRUFBTixJQUFZbkMsV0FBV21DLEVBQVgsQ0FBeEI7QUFDRDtBQUNELFNBQU9yQyxNQUFNc0MsSUFBTixDQUFXLEVBQVgsQ0FBUDtBQUNEOztBQUVEO0FBQ08sU0FBUzlDLFlBQVQsQ0FBc0JFLE9BQXRCLEVBQStCQyxPQUEvQixFQUF3QztBQUM3QyxNQUFJLE9BQU9ELE9BQVAsS0FBbUIsUUFBdkIsRUFBaUM7QUFDL0JBLGNBQVUsd0VBQVdBLE9BQVgsQ0FBVjtBQUNEOztBQUVELE1BQUk2QyxlQUFlLENBQW5CO0FBQ0EsV0FBU0MsWUFBVCxHQUF3QjtBQUN0QixRQUFJQyxRQUFRL0MsUUFBUTZDLGNBQVIsQ0FBWjtBQUNBLFFBQUksQ0FBQ0UsS0FBTCxFQUFZO0FBQ1YsYUFBTzlDLFFBQVErQyxRQUFSLEVBQVA7QUFDRDs7QUFFRC9DLFlBQVFnRCxRQUFSLENBQWlCRixLQUFqQixFQUF3QixVQUFTRyxHQUFULEVBQWNDLElBQWQsRUFBb0I7QUFDMUMsVUFBSUQsR0FBSixFQUFTO0FBQ1AsZUFBT2pELFFBQVErQyxRQUFSLENBQWlCRSxHQUFqQixDQUFQO0FBQ0Q7O0FBRUQsVUFBSUUsaUJBQWlCdkQsV0FBV3NELElBQVgsRUFBaUJKLEtBQWpCLEVBQXdCOUMsT0FBeEIsQ0FBckI7QUFDQUEsY0FBUW9ELE9BQVIsQ0FBZ0JOLEtBQWhCLEVBQXVCSyxjQUF2QixFQUF1QyxVQUFTRixHQUFULEVBQWM7QUFDbkQsWUFBSUEsR0FBSixFQUFTO0FBQ1AsaUJBQU9qRCxRQUFRK0MsUUFBUixDQUFpQkUsR0FBakIsQ0FBUDtBQUNEOztBQUVESjtBQUNELE9BTkQ7QUFPRCxLQWJEO0FBY0Q7QUFDREE7QUFDRCIsImZpbGUiOiJhcHBseS5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7cGFyc2VQYXRjaH0gZnJvbSAnLi9wYXJzZSc7XG5pbXBvcnQgZGlzdGFuY2VJdGVyYXRvciBmcm9tICcuLi91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yJztcblxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2goc291cmNlLCB1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgaWYgKHR5cGVvZiB1bmlEaWZmID09PSAnc3RyaW5nJykge1xuICAgIHVuaURpZmYgPSBwYXJzZVBhdGNoKHVuaURpZmYpO1xuICB9XG5cbiAgaWYgKEFycmF5LmlzQXJyYXkodW5pRGlmZikpIHtcbiAgICBpZiAodW5pRGlmZi5sZW5ndGggPiAxKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoJ2FwcGx5UGF0Y2ggb25seSB3b3JrcyB3aXRoIGEgc2luZ2xlIGlucHV0LicpO1xuICAgIH1cblxuICAgIHVuaURpZmYgPSB1bmlEaWZmWzBdO1xuICB9XG5cbiAgLy8gQXBwbHkgdGhlIGRpZmYgdG8gdGhlIGlucHV0XG4gIGxldCBsaW5lcyA9IHNvdXJjZS5zcGxpdCgvXFxyXFxufFtcXG5cXHZcXGZcXHJcXHg4NV0vKSxcbiAgICAgIGRlbGltaXRlcnMgPSBzb3VyY2UubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgaHVua3MgPSB1bmlEaWZmLmh1bmtzLFxuXG4gICAgICBjb21wYXJlTGluZSA9IG9wdGlvbnMuY29tcGFyZUxpbmUgfHwgKChsaW5lTnVtYmVyLCBsaW5lLCBvcGVyYXRpb24sIHBhdGNoQ29udGVudCkgPT4gbGluZSA9PT0gcGF0Y2hDb250ZW50KSxcbiAgICAgIGVycm9yQ291bnQgPSAwLFxuICAgICAgZnV6ekZhY3RvciA9IG9wdGlvbnMuZnV6ekZhY3RvciB8fCAwLFxuICAgICAgbWluTGluZSA9IDAsXG4gICAgICBvZmZzZXQgPSAwLFxuXG4gICAgICByZW1vdmVFT0ZOTCxcbiAgICAgIGFkZEVPRk5MO1xuXG4gIC8qKlxuICAgKiBDaGVja3MgaWYgdGhlIGh1bmsgZXhhY3RseSBmaXRzIG9uIHRoZSBwcm92aWRlZCBsb2NhdGlvblxuICAgKi9cbiAgZnVuY3Rpb24gaHVua0ZpdHMoaHVuaywgdG9Qb3MpIHtcbiAgICBmb3IgKGxldCBqID0gMDsgaiA8IGh1bmsubGluZXMubGVuZ3RoOyBqKyspIHtcbiAgICAgIGxldCBsaW5lID0gaHVuay5saW5lc1tqXSxcbiAgICAgICAgICBvcGVyYXRpb24gPSAobGluZS5sZW5ndGggPiAwID8gbGluZVswXSA6ICcgJyksXG4gICAgICAgICAgY29udGVudCA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lLnN1YnN0cigxKSA6IGxpbmUpO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnLScpIHtcbiAgICAgICAgLy8gQ29udGV4dCBzYW5pdHkgY2hlY2tcbiAgICAgICAgaWYgKCFjb21wYXJlTGluZSh0b1BvcyArIDEsIGxpbmVzW3RvUG9zXSwgb3BlcmF0aW9uLCBjb250ZW50KSkge1xuICAgICAgICAgIGVycm9yQ291bnQrKztcblxuICAgICAgICAgIGlmIChlcnJvckNvdW50ID4gZnV6ekZhY3Rvcikge1xuICAgICAgICAgICAgcmV0dXJuIGZhbHNlO1xuICAgICAgICAgIH1cbiAgICAgICAgfVxuICAgICAgICB0b1BvcysrO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiB0cnVlO1xuICB9XG5cbiAgLy8gU2VhcmNoIGJlc3QgZml0IG9mZnNldHMgZm9yIGVhY2ggaHVuayBiYXNlZCBvbiB0aGUgcHJldmlvdXMgb25lc1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGh1bmtzLmxlbmd0aDsgaSsrKSB7XG4gICAgbGV0IGh1bmsgPSBodW5rc1tpXSxcbiAgICAgICAgbWF4TGluZSA9IGxpbmVzLmxlbmd0aCAtIGh1bmsub2xkTGluZXMsXG4gICAgICAgIGxvY2FsT2Zmc2V0ID0gMCxcbiAgICAgICAgdG9Qb3MgPSBvZmZzZXQgKyBodW5rLm9sZFN0YXJ0IC0gMTtcblxuICAgIGxldCBpdGVyYXRvciA9IGRpc3RhbmNlSXRlcmF0b3IodG9Qb3MsIG1pbkxpbmUsIG1heExpbmUpO1xuXG4gICAgZm9yICg7IGxvY2FsT2Zmc2V0ICE9PSB1bmRlZmluZWQ7IGxvY2FsT2Zmc2V0ID0gaXRlcmF0b3IoKSkge1xuICAgICAgaWYgKGh1bmtGaXRzKGh1bmssIHRvUG9zICsgbG9jYWxPZmZzZXQpKSB7XG4gICAgICAgIGh1bmsub2Zmc2V0ID0gb2Zmc2V0ICs9IGxvY2FsT2Zmc2V0O1xuICAgICAgICBicmVhaztcbiAgICAgIH1cbiAgICB9XG5cbiAgICBpZiAobG9jYWxPZmZzZXQgPT09IHVuZGVmaW5lZCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cblxuICAgIC8vIFNldCBsb3dlciB0ZXh0IGxpbWl0IHRvIGVuZCBvZiB0aGUgY3VycmVudCBodW5rLCBzbyBuZXh0IG9uZXMgZG9uJ3QgdHJ5XG4gICAgLy8gdG8gZml0IG92ZXIgYWxyZWFkeSBwYXRjaGVkIHRleHRcbiAgICBtaW5MaW5lID0gaHVuay5vZmZzZXQgKyBodW5rLm9sZFN0YXJ0ICsgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIC8vIEFwcGx5IHBhdGNoIGh1bmtzXG4gIGxldCBkaWZmT2Zmc2V0ID0gMDtcbiAgZm9yIChsZXQgaSA9IDA7IGkgPCBodW5rcy5sZW5ndGg7IGkrKykge1xuICAgIGxldCBodW5rID0gaHVua3NbaV0sXG4gICAgICAgIHRvUG9zID0gaHVuay5vbGRTdGFydCArIGh1bmsub2Zmc2V0ICsgZGlmZk9mZnNldCAtIDE7XG4gICAgZGlmZk9mZnNldCArPSBodW5rLm5ld0xpbmVzIC0gaHVuay5vbGRMaW5lcztcblxuICAgIGlmICh0b1BvcyA8IDApIHsgLy8gQ3JlYXRpbmcgYSBuZXcgZmlsZVxuICAgICAgdG9Qb3MgPSAwO1xuICAgIH1cblxuICAgIGZvciAobGV0IGogPSAwOyBqIDwgaHVuay5saW5lcy5sZW5ndGg7IGorKykge1xuICAgICAgbGV0IGxpbmUgPSBodW5rLmxpbmVzW2pdLFxuICAgICAgICAgIG9wZXJhdGlvbiA9IChsaW5lLmxlbmd0aCA+IDAgPyBsaW5lWzBdIDogJyAnKSxcbiAgICAgICAgICBjb250ZW50ID0gKGxpbmUubGVuZ3RoID4gMCA/IGxpbmUuc3Vic3RyKDEpIDogbGluZSksXG4gICAgICAgICAgZGVsaW1pdGVyID0gaHVuay5saW5lZGVsaW1pdGVyc1tqXTtcblxuICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJyAnKSB7XG4gICAgICAgIHRvUG9zKys7XG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJy0nKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMSk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAxKTtcbiAgICAgIC8qIGlzdGFuYnVsIGlnbm9yZSBlbHNlICovXG4gICAgICB9IGVsc2UgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgIGxpbmVzLnNwbGljZSh0b1BvcywgMCwgY29udGVudCk7XG4gICAgICAgIGRlbGltaXRlcnMuc3BsaWNlKHRvUG9zLCAwLCBkZWxpbWl0ZXIpO1xuICAgICAgICB0b1BvcysrO1xuICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICdcXFxcJykge1xuICAgICAgICBsZXQgcHJldmlvdXNPcGVyYXRpb24gPSBodW5rLmxpbmVzW2ogLSAxXSA/IGh1bmsubGluZXNbaiAtIDFdWzBdIDogbnVsbDtcbiAgICAgICAgaWYgKHByZXZpb3VzT3BlcmF0aW9uID09PSAnKycpIHtcbiAgICAgICAgICByZW1vdmVFT0ZOTCA9IHRydWU7XG4gICAgICAgIH0gZWxzZSBpZiAocHJldmlvdXNPcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIGFkZEVPRk5MID0gdHJ1ZTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC8vIEhhbmRsZSBFT0ZOTCBpbnNlcnRpb24vcmVtb3ZhbFxuICBpZiAocmVtb3ZlRU9GTkwpIHtcbiAgICB3aGlsZSAoIWxpbmVzW2xpbmVzLmxlbmd0aCAtIDFdKSB7XG4gICAgICBsaW5lcy5wb3AoKTtcbiAgICAgIGRlbGltaXRlcnMucG9wKCk7XG4gICAgfVxuICB9IGVsc2UgaWYgKGFkZEVPRk5MKSB7XG4gICAgbGluZXMucHVzaCgnJyk7XG4gICAgZGVsaW1pdGVycy5wdXNoKCdcXG4nKTtcbiAgfVxuICBmb3IgKGxldCBfayA9IDA7IF9rIDwgbGluZXMubGVuZ3RoIC0gMTsgX2srKykge1xuICAgIGxpbmVzW19rXSA9IGxpbmVzW19rXSArIGRlbGltaXRlcnNbX2tdO1xuICB9XG4gIHJldHVybiBsaW5lcy5qb2luKCcnKTtcbn1cblxuLy8gV3JhcHBlciB0aGF0IHN1cHBvcnRzIG11bHRpcGxlIGZpbGUgcGF0Y2hlcyB2aWEgY2FsbGJhY2tzLlxuZXhwb3J0IGZ1bmN0aW9uIGFwcGx5UGF0Y2hlcyh1bmlEaWZmLCBvcHRpb25zKSB7XG4gIGlmICh0eXBlb2YgdW5pRGlmZiA9PT0gJ3N0cmluZycpIHtcbiAgICB1bmlEaWZmID0gcGFyc2VQYXRjaCh1bmlEaWZmKTtcbiAgfVxuXG4gIGxldCBjdXJyZW50SW5kZXggPSAwO1xuICBmdW5jdGlvbiBwcm9jZXNzSW5kZXgoKSB7XG4gICAgbGV0IGluZGV4ID0gdW5pRGlmZltjdXJyZW50SW5kZXgrK107XG4gICAgaWYgKCFpbmRleCkge1xuICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoKTtcbiAgICB9XG5cbiAgICBvcHRpb25zLmxvYWRGaWxlKGluZGV4LCBmdW5jdGlvbihlcnIsIGRhdGEpIHtcbiAgICAgIGlmIChlcnIpIHtcbiAgICAgICAgcmV0dXJuIG9wdGlvbnMuY29tcGxldGUoZXJyKTtcbiAgICAgIH1cblxuICAgICAgbGV0IHVwZGF0ZWRDb250ZW50ID0gYXBwbHlQYXRjaChkYXRhLCBpbmRleCwgb3B0aW9ucyk7XG4gICAgICBvcHRpb25zLnBhdGNoZWQoaW5kZXgsIHVwZGF0ZWRDb250ZW50LCBmdW5jdGlvbihlcnIpIHtcbiAgICAgICAgaWYgKGVycikge1xuICAgICAgICAgIHJldHVybiBvcHRpb25zLmNvbXBsZXRlKGVycik7XG4gICAgICAgIH1cblxuICAgICAgICBwcm9jZXNzSW5kZXgoKTtcbiAgICAgIH0pO1xuICAgIH0pO1xuICB9XG4gIHByb2Nlc3NJbmRleCgpO1xufVxuIl19
-
-
-/***/ }),
-/* 11 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/parsePatch = parsePatch;
- function parsePatch(uniDiff) {
- /*istanbul ignore start*/var /*istanbul ignore end*/options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
-
- var diffstr = uniDiff.split(/\r\n|[\n\v\f\r\x85]/),
- delimiters = uniDiff.match(/\r\n|[\n\v\f\r\x85]/g) || [],
- list = [],
- i = 0;
-
- function parseIndex() {
- var index = {};
- list.push(index);
-
- // Parse diff metadata
- while (i < diffstr.length) {
- var line = diffstr[i];
-
- // File header found, end parsing diff metadata
- if (/^(\-\-\-|\+\+\+|@@)\s/.test(line)) {
- break;
- }
-
- // Diff index
- var header = /^(?:Index:|diff(?: -r \w+)+)\s+(.+?)\s*$/.exec(line);
- if (header) {
- index.index = header[1];
- }
-
- i++;
- }
-
- // Parse file headers if they are defined. Unified diff requires them, but
- // there's no technical issues to have an isolated hunk without file header
- parseFileHeader(index);
- parseFileHeader(index);
-
- // Parse hunks
- index.hunks = [];
-
- while (i < diffstr.length) {
- var _line = diffstr[i];
-
- if (/^(Index:|diff|\-\-\-|\+\+\+)\s/.test(_line)) {
- break;
- } else if (/^@@/.test(_line)) {
- index.hunks.push(parseHunk());
- } else if (_line && options.strict) {
- // Ignore unexpected content unless in strict mode
- throw new Error('Unknown line ' + (i + 1) + ' ' + JSON.stringify(_line));
- } else {
- i++;
- }
- }
- }
-
- // Parses the --- and +++ headers, if none are found, no lines
- // are consumed.
- function parseFileHeader(index) {
- var fileHeader = /^(---|\+\+\+)\s+(.*)$/.exec(diffstr[i]);
- if (fileHeader) {
- var keyPrefix = fileHeader[1] === '---' ? 'old' : 'new';
- var data = fileHeader[2].split('\t', 2);
- var fileName = data[0].replace(/\\\\/g, '\\');
- if (/^".*"$/.test(fileName)) {
- fileName = fileName.substr(1, fileName.length - 2);
- }
- index[keyPrefix + 'FileName'] = fileName;
- index[keyPrefix + 'Header'] = (data[1] || '').trim();
-
- i++;
- }
- }
-
- // Parses a hunk
- // This assumes that we are at the start of a hunk.
- function parseHunk() {
- var chunkHeaderIndex = i,
- chunkHeaderLine = diffstr[i++],
- chunkHeader = chunkHeaderLine.split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/);
-
- var hunk = {
- oldStart: +chunkHeader[1],
- oldLines: +chunkHeader[2] || 1,
- newStart: +chunkHeader[3],
- newLines: +chunkHeader[4] || 1,
- lines: [],
- linedelimiters: []
- };
-
- var addCount = 0,
- removeCount = 0;
- for (; i < diffstr.length; i++) {
- // Lines starting with '---' could be mistaken for the "remove line" operation
- // But they could be the header for the next file. Therefore prune such cases out.
- if (diffstr[i].indexOf('--- ') === 0 && i + 2 < diffstr.length && diffstr[i + 1].indexOf('+++ ') === 0 && diffstr[i + 2].indexOf('@@') === 0) {
- break;
- }
- var operation = diffstr[i].length == 0 && i != diffstr.length - 1 ? ' ' : diffstr[i][0];
-
- if (operation === '+' || operation === '-' || operation === ' ' || operation === '\\') {
- hunk.lines.push(diffstr[i]);
- hunk.linedelimiters.push(delimiters[i] || '\n');
-
- if (operation === '+') {
- addCount++;
- } else if (operation === '-') {
- removeCount++;
- } else if (operation === ' ') {
- addCount++;
- removeCount++;
- }
- } else {
- break;
- }
- }
-
- // Handle the empty block count case
- if (!addCount && hunk.newLines === 1) {
- hunk.newLines = 0;
- }
- if (!removeCount && hunk.oldLines === 1) {
- hunk.oldLines = 0;
- }
-
- // Perform optional sanity checking
- if (options.strict) {
- if (addCount !== hunk.newLines) {
- throw new Error('Added line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
- }
- if (removeCount !== hunk.oldLines) {
- throw new Error('Removed line count did not match for hunk at line ' + (chunkHeaderIndex + 1));
- }
- }
-
- return hunk;
- }
-
- while (i < diffstr.length) {
- parseIndex();
- }
-
- return list;
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9wYXJzZS5qcyJdLCJuYW1lcyI6WyJwYXJzZVBhdGNoIiwidW5pRGlmZiIsIm9wdGlvbnMiLCJkaWZmc3RyIiwic3BsaXQiLCJkZWxpbWl0ZXJzIiwibWF0Y2giLCJsaXN0IiwiaSIsInBhcnNlSW5kZXgiLCJpbmRleCIsInB1c2giLCJsZW5ndGgiLCJsaW5lIiwidGVzdCIsImhlYWRlciIsImV4ZWMiLCJwYXJzZUZpbGVIZWFkZXIiLCJodW5rcyIsInBhcnNlSHVuayIsInN0cmljdCIsIkVycm9yIiwiSlNPTiIsInN0cmluZ2lmeSIsImZpbGVIZWFkZXIiLCJrZXlQcmVmaXgiLCJkYXRhIiwiZmlsZU5hbWUiLCJyZXBsYWNlIiwic3Vic3RyIiwidHJpbSIsImNodW5rSGVhZGVySW5kZXgiLCJjaHVua0hlYWRlckxpbmUiLCJjaHVua0hlYWRlciIsImh1bmsiLCJvbGRTdGFydCIsIm9sZExpbmVzIiwibmV3U3RhcnQiLCJuZXdMaW5lcyIsImxpbmVzIiwibGluZWRlbGltaXRlcnMiLCJhZGRDb3VudCIsInJlbW92ZUNvdW50IiwiaW5kZXhPZiIsIm9wZXJhdGlvbiJdLCJtYXBwaW5ncyI6Ijs7O2dDQUFnQkEsVSxHQUFBQSxVO0FBQVQsU0FBU0EsVUFBVCxDQUFvQkMsT0FBcEIsRUFBMkM7QUFBQSxzREFBZEMsT0FBYyx1RUFBSixFQUFJOztBQUNoRCxNQUFJQyxVQUFVRixRQUFRRyxLQUFSLENBQWMscUJBQWQsQ0FBZDtBQUFBLE1BQ0lDLGFBQWFKLFFBQVFLLEtBQVIsQ0FBYyxzQkFBZCxLQUF5QyxFQUQxRDtBQUFBLE1BRUlDLE9BQU8sRUFGWDtBQUFBLE1BR0lDLElBQUksQ0FIUjs7QUFLQSxXQUFTQyxVQUFULEdBQXNCO0FBQ3BCLFFBQUlDLFFBQVEsRUFBWjtBQUNBSCxTQUFLSSxJQUFMLENBQVVELEtBQVY7O0FBRUE7QUFDQSxXQUFPRixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6QixVQUFJQyxPQUFPVixRQUFRSyxDQUFSLENBQVg7O0FBRUE7QUFDQSxVQUFJLHdCQUF3Qk0sSUFBeEIsQ0FBNkJELElBQTdCLENBQUosRUFBd0M7QUFDdEM7QUFDRDs7QUFFRDtBQUNBLFVBQUlFLFNBQVUsMENBQUQsQ0FBNkNDLElBQTdDLENBQWtESCxJQUFsRCxDQUFiO0FBQ0EsVUFBSUUsTUFBSixFQUFZO0FBQ1ZMLGNBQU1BLEtBQU4sR0FBY0ssT0FBTyxDQUFQLENBQWQ7QUFDRDs7QUFFRFA7QUFDRDs7QUFFRDtBQUNBO0FBQ0FTLG9CQUFnQlAsS0FBaEI7QUFDQU8sb0JBQWdCUCxLQUFoQjs7QUFFQTtBQUNBQSxVQUFNUSxLQUFOLEdBQWMsRUFBZDs7QUFFQSxXQUFPVixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6QixVQUFJQyxRQUFPVixRQUFRSyxDQUFSLENBQVg7O0FBRUEsVUFBSSxpQ0FBaUNNLElBQWpDLENBQXNDRCxLQUF0QyxDQUFKLEVBQWlEO0FBQy9DO0FBQ0QsT0FGRCxNQUVPLElBQUksTUFBTUMsSUFBTixDQUFXRCxLQUFYLENBQUosRUFBc0I7QUFDM0JILGNBQU1RLEtBQU4sQ0FBWVAsSUFBWixDQUFpQlEsV0FBakI7QUFDRCxPQUZNLE1BRUEsSUFBSU4sU0FBUVgsUUFBUWtCLE1BQXBCLEVBQTRCO0FBQ2pDO0FBQ0EsY0FBTSxJQUFJQyxLQUFKLENBQVUsbUJBQW1CYixJQUFJLENBQXZCLElBQTRCLEdBQTVCLEdBQWtDYyxLQUFLQyxTQUFMLENBQWVWLEtBQWYsQ0FBNUMsQ0FBTjtBQUNELE9BSE0sTUFHQTtBQUNMTDtBQUNEO0FBQ0Y7QUFDRjs7QUFFRDtBQUNBO0FBQ0EsV0FBU1MsZUFBVCxDQUF5QlAsS0FBekIsRUFBZ0M7QUFDOUIsUUFBTWMsYUFBYyx1QkFBRCxDQUEwQlIsSUFBMUIsQ0FBK0JiLFFBQVFLLENBQVIsQ0FBL0IsQ0FBbkI7QUFDQSxRQUFJZ0IsVUFBSixFQUFnQjtBQUNkLFVBQUlDLFlBQVlELFdBQVcsQ0FBWCxNQUFrQixLQUFsQixHQUEwQixLQUExQixHQUFrQyxLQUFsRDtBQUNBLFVBQU1FLE9BQU9GLFdBQVcsQ0FBWCxFQUFjcEIsS0FBZCxDQUFvQixJQUFwQixFQUEwQixDQUExQixDQUFiO0FBQ0EsVUFBSXVCLFdBQVdELEtBQUssQ0FBTCxFQUFRRSxPQUFSLENBQWdCLE9BQWhCLEVBQXlCLElBQXpCLENBQWY7QUFDQSxVQUFJLFNBQVNkLElBQVQsQ0FBY2EsUUFBZCxDQUFKLEVBQTZCO0FBQzNCQSxtQkFBV0EsU0FBU0UsTUFBVCxDQUFnQixDQUFoQixFQUFtQkYsU0FBU2YsTUFBVCxHQUFrQixDQUFyQyxDQUFYO0FBQ0Q7QUFDREYsWUFBTWUsWUFBWSxVQUFsQixJQUFnQ0UsUUFBaEM7QUFDQWpCLFlBQU1lLFlBQVksUUFBbEIsSUFBOEIsQ0FBQ0MsS0FBSyxDQUFMLEtBQVcsRUFBWixFQUFnQkksSUFBaEIsRUFBOUI7O0FBRUF0QjtBQUNEO0FBQ0Y7O0FBRUQ7QUFDQTtBQUNBLFdBQVNXLFNBQVQsR0FBcUI7QUFDbkIsUUFBSVksbUJBQW1CdkIsQ0FBdkI7QUFBQSxRQUNJd0Isa0JBQWtCN0IsUUFBUUssR0FBUixDQUR0QjtBQUFBLFFBRUl5QixjQUFjRCxnQkFBZ0I1QixLQUFoQixDQUFzQiw0Q0FBdEIsQ0FGbEI7O0FBSUEsUUFBSThCLE9BQU87QUFDVEMsZ0JBQVUsQ0FBQ0YsWUFBWSxDQUFaLENBREY7QUFFVEcsZ0JBQVUsQ0FBQ0gsWUFBWSxDQUFaLENBQUQsSUFBbUIsQ0FGcEI7QUFHVEksZ0JBQVUsQ0FBQ0osWUFBWSxDQUFaLENBSEY7QUFJVEssZ0JBQVUsQ0FBQ0wsWUFBWSxDQUFaLENBQUQsSUFBbUIsQ0FKcEI7QUFLVE0sYUFBTyxFQUxFO0FBTVRDLHNCQUFnQjtBQU5QLEtBQVg7O0FBU0EsUUFBSUMsV0FBVyxDQUFmO0FBQUEsUUFDSUMsY0FBYyxDQURsQjtBQUVBLFdBQU9sQyxJQUFJTCxRQUFRUyxNQUFuQixFQUEyQkosR0FBM0IsRUFBZ0M7QUFDOUI7QUFDQTtBQUNBLFVBQUlMLFFBQVFLLENBQVIsRUFBV21DLE9BQVgsQ0FBbUIsTUFBbkIsTUFBK0IsQ0FBL0IsSUFDTW5DLElBQUksQ0FBSixHQUFRTCxRQUFRUyxNQUR0QixJQUVLVCxRQUFRSyxJQUFJLENBQVosRUFBZW1DLE9BQWYsQ0FBdUIsTUFBdkIsTUFBbUMsQ0FGeEMsSUFHS3hDLFFBQVFLLElBQUksQ0FBWixFQUFlbUMsT0FBZixDQUF1QixJQUF2QixNQUFpQyxDQUgxQyxFQUc2QztBQUN6QztBQUNIO0FBQ0QsVUFBSUMsWUFBYXpDLFFBQVFLLENBQVIsRUFBV0ksTUFBWCxJQUFxQixDQUFyQixJQUEwQkosS0FBTUwsUUFBUVMsTUFBUixHQUFpQixDQUFsRCxHQUF3RCxHQUF4RCxHQUE4RFQsUUFBUUssQ0FBUixFQUFXLENBQVgsQ0FBOUU7O0FBRUEsVUFBSW9DLGNBQWMsR0FBZCxJQUFxQkEsY0FBYyxHQUFuQyxJQUEwQ0EsY0FBYyxHQUF4RCxJQUErREEsY0FBYyxJQUFqRixFQUF1RjtBQUNyRlYsYUFBS0ssS0FBTCxDQUFXNUIsSUFBWCxDQUFnQlIsUUFBUUssQ0FBUixDQUFoQjtBQUNBMEIsYUFBS00sY0FBTCxDQUFvQjdCLElBQXBCLENBQXlCTixXQUFXRyxDQUFYLEtBQWlCLElBQTFDOztBQUVBLFlBQUlvQyxjQUFjLEdBQWxCLEVBQXVCO0FBQ3JCSDtBQUNELFNBRkQsTUFFTyxJQUFJRyxjQUFjLEdBQWxCLEVBQXVCO0FBQzVCRjtBQUNELFNBRk0sTUFFQSxJQUFJRSxjQUFjLEdBQWxCLEVBQXVCO0FBQzVCSDtBQUNBQztBQUNEO0FBQ0YsT0FaRCxNQVlPO0FBQ0w7QUFDRDtBQUNGOztBQUVEO0FBQ0EsUUFBSSxDQUFDRCxRQUFELElBQWFQLEtBQUtJLFFBQUwsS0FBa0IsQ0FBbkMsRUFBc0M7QUFDcENKLFdBQUtJLFFBQUwsR0FBZ0IsQ0FBaEI7QUFDRDtBQUNELFFBQUksQ0FBQ0ksV0FBRCxJQUFnQlIsS0FBS0UsUUFBTCxLQUFrQixDQUF0QyxFQUF5QztBQUN2Q0YsV0FBS0UsUUFBTCxHQUFnQixDQUFoQjtBQUNEOztBQUVEO0FBQ0EsUUFBSWxDLFFBQVFrQixNQUFaLEVBQW9CO0FBQ2xCLFVBQUlxQixhQUFhUCxLQUFLSSxRQUF0QixFQUFnQztBQUM5QixjQUFNLElBQUlqQixLQUFKLENBQVUsc0RBQXNEVSxtQkFBbUIsQ0FBekUsQ0FBVixDQUFOO0FBQ0Q7QUFDRCxVQUFJVyxnQkFBZ0JSLEtBQUtFLFFBQXpCLEVBQW1DO0FBQ2pDLGNBQU0sSUFBSWYsS0FBSixDQUFVLHdEQUF3RFUsbUJBQW1CLENBQTNFLENBQVYsQ0FBTjtBQUNEO0FBQ0Y7O0FBRUQsV0FBT0csSUFBUDtBQUNEOztBQUVELFNBQU8xQixJQUFJTCxRQUFRUyxNQUFuQixFQUEyQjtBQUN6Qkg7QUFDRDs7QUFFRCxTQUFPRixJQUFQO0FBQ0QiLCJmaWxlIjoicGFyc2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gcGFyc2VQYXRjaCh1bmlEaWZmLCBvcHRpb25zID0ge30pIHtcbiAgbGV0IGRpZmZzdHIgPSB1bmlEaWZmLnNwbGl0KC9cXHJcXG58W1xcblxcdlxcZlxcclxceDg1XS8pLFxuICAgICAgZGVsaW1pdGVycyA9IHVuaURpZmYubWF0Y2goL1xcclxcbnxbXFxuXFx2XFxmXFxyXFx4ODVdL2cpIHx8IFtdLFxuICAgICAgbGlzdCA9IFtdLFxuICAgICAgaSA9IDA7XG5cbiAgZnVuY3Rpb24gcGFyc2VJbmRleCgpIHtcbiAgICBsZXQgaW5kZXggPSB7fTtcbiAgICBsaXN0LnB1c2goaW5kZXgpO1xuXG4gICAgLy8gUGFyc2UgZGlmZiBtZXRhZGF0YVxuICAgIHdoaWxlIChpIDwgZGlmZnN0ci5sZW5ndGgpIHtcbiAgICAgIGxldCBsaW5lID0gZGlmZnN0cltpXTtcblxuICAgICAgLy8gRmlsZSBoZWFkZXIgZm91bmQsIGVuZCBwYXJzaW5nIGRpZmYgbWV0YWRhdGFcbiAgICAgIGlmICgvXihcXC1cXC1cXC18XFwrXFwrXFwrfEBAKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH1cblxuICAgICAgLy8gRGlmZiBpbmRleFxuICAgICAgbGV0IGhlYWRlciA9ICgvXig/OkluZGV4OnxkaWZmKD86IC1yIFxcdyspKylcXHMrKC4rPylcXHMqJC8pLmV4ZWMobGluZSk7XG4gICAgICBpZiAoaGVhZGVyKSB7XG4gICAgICAgIGluZGV4LmluZGV4ID0gaGVhZGVyWzFdO1xuICAgICAgfVxuXG4gICAgICBpKys7XG4gICAgfVxuXG4gICAgLy8gUGFyc2UgZmlsZSBoZWFkZXJzIGlmIHRoZXkgYXJlIGRlZmluZWQuIFVuaWZpZWQgZGlmZiByZXF1aXJlcyB0aGVtLCBidXRcbiAgICAvLyB0aGVyZSdzIG5vIHRlY2huaWNhbCBpc3N1ZXMgdG8gaGF2ZSBhbiBpc29sYXRlZCBodW5rIHdpdGhvdXQgZmlsZSBoZWFkZXJcbiAgICBwYXJzZUZpbGVIZWFkZXIoaW5kZXgpO1xuICAgIHBhcnNlRmlsZUhlYWRlcihpbmRleCk7XG5cbiAgICAvLyBQYXJzZSBodW5rc1xuICAgIGluZGV4Lmh1bmtzID0gW107XG5cbiAgICB3aGlsZSAoaSA8IGRpZmZzdHIubGVuZ3RoKSB7XG4gICAgICBsZXQgbGluZSA9IGRpZmZzdHJbaV07XG5cbiAgICAgIGlmICgvXihJbmRleDp8ZGlmZnxcXC1cXC1cXC18XFwrXFwrXFwrKVxccy8udGVzdChsaW5lKSkge1xuICAgICAgICBicmVhaztcbiAgICAgIH0gZWxzZSBpZiAoL15AQC8udGVzdChsaW5lKSkge1xuICAgICAgICBpbmRleC5odW5rcy5wdXNoKHBhcnNlSHVuaygpKTtcbiAgICAgIH0gZWxzZSBpZiAobGluZSAmJiBvcHRpb25zLnN0cmljdCkge1xuICAgICAgICAvLyBJZ25vcmUgdW5leHBlY3RlZCBjb250ZW50IHVubGVzcyBpbiBzdHJpY3QgbW9kZVxuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1Vua25vd24gbGluZSAnICsgKGkgKyAxKSArICcgJyArIEpTT04uc3RyaW5naWZ5KGxpbmUpKTtcbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGkrKztcbiAgICAgIH1cbiAgICB9XG4gIH1cblxuICAvLyBQYXJzZXMgdGhlIC0tLSBhbmQgKysrIGhlYWRlcnMsIGlmIG5vbmUgYXJlIGZvdW5kLCBubyBsaW5lc1xuICAvLyBhcmUgY29uc3VtZWQuXG4gIGZ1bmN0aW9uIHBhcnNlRmlsZUhlYWRlcihpbmRleCkge1xuICAgIGNvbnN0IGZpbGVIZWFkZXIgPSAoL14oLS0tfFxcK1xcK1xcKylcXHMrKC4qKSQvKS5leGVjKGRpZmZzdHJbaV0pO1xuICAgIGlmIChmaWxlSGVhZGVyKSB7XG4gICAgICBsZXQga2V5UHJlZml4ID0gZmlsZUhlYWRlclsxXSA9PT0gJy0tLScgPyAnb2xkJyA6ICduZXcnO1xuICAgICAgY29uc3QgZGF0YSA9IGZpbGVIZWFkZXJbMl0uc3BsaXQoJ1xcdCcsIDIpO1xuICAgICAgbGV0IGZpbGVOYW1lID0gZGF0YVswXS5yZXBsYWNlKC9cXFxcXFxcXC9nLCAnXFxcXCcpO1xuICAgICAgaWYgKC9eXCIuKlwiJC8udGVzdChmaWxlTmFtZSkpIHtcbiAgICAgICAgZmlsZU5hbWUgPSBmaWxlTmFtZS5zdWJzdHIoMSwgZmlsZU5hbWUubGVuZ3RoIC0gMik7XG4gICAgICB9XG4gICAgICBpbmRleFtrZXlQcmVmaXggKyAnRmlsZU5hbWUnXSA9IGZpbGVOYW1lO1xuICAgICAgaW5kZXhba2V5UHJlZml4ICsgJ0hlYWRlciddID0gKGRhdGFbMV0gfHwgJycpLnRyaW0oKTtcblxuICAgICAgaSsrO1xuICAgIH1cbiAgfVxuXG4gIC8vIFBhcnNlcyBhIGh1bmtcbiAgLy8gVGhpcyBhc3N1bWVzIHRoYXQgd2UgYXJlIGF0IHRoZSBzdGFydCBvZiBhIGh1bmsuXG4gIGZ1bmN0aW9uIHBhcnNlSHVuaygpIHtcbiAgICBsZXQgY2h1bmtIZWFkZXJJbmRleCA9IGksXG4gICAgICAgIGNodW5rSGVhZGVyTGluZSA9IGRpZmZzdHJbaSsrXSxcbiAgICAgICAgY2h1bmtIZWFkZXIgPSBjaHVua0hlYWRlckxpbmUuc3BsaXQoL0BAIC0oXFxkKykoPzosKFxcZCspKT8gXFwrKFxcZCspKD86LChcXGQrKSk/IEBALyk7XG5cbiAgICBsZXQgaHVuayA9IHtcbiAgICAgIG9sZFN0YXJ0OiArY2h1bmtIZWFkZXJbMV0sXG4gICAgICBvbGRMaW5lczogK2NodW5rSGVhZGVyWzJdIHx8IDEsXG4gICAgICBuZXdTdGFydDogK2NodW5rSGVhZGVyWzNdLFxuICAgICAgbmV3TGluZXM6ICtjaHVua0hlYWRlcls0XSB8fCAxLFxuICAgICAgbGluZXM6IFtdLFxuICAgICAgbGluZWRlbGltaXRlcnM6IFtdXG4gICAgfTtcblxuICAgIGxldCBhZGRDb3VudCA9IDAsXG4gICAgICAgIHJlbW92ZUNvdW50ID0gMDtcbiAgICBmb3IgKDsgaSA8IGRpZmZzdHIubGVuZ3RoOyBpKyspIHtcbiAgICAgIC8vIExpbmVzIHN0YXJ0aW5nIHdpdGggJy0tLScgY291bGQgYmUgbWlzdGFrZW4gZm9yIHRoZSBcInJlbW92ZSBsaW5lXCIgb3BlcmF0aW9uXG4gICAgICAvLyBCdXQgdGhleSBjb3VsZCBiZSB0aGUgaGVhZGVyIGZvciB0aGUgbmV4dCBmaWxlLiBUaGVyZWZvcmUgcHJ1bmUgc3VjaCBjYXNlcyBvdXQuXG4gICAgICBpZiAoZGlmZnN0cltpXS5pbmRleE9mKCctLS0gJykgPT09IDBcbiAgICAgICAgICAgICYmIChpICsgMiA8IGRpZmZzdHIubGVuZ3RoKVxuICAgICAgICAgICAgJiYgZGlmZnN0cltpICsgMV0uaW5kZXhPZignKysrICcpID09PSAwXG4gICAgICAgICAgICAmJiBkaWZmc3RyW2kgKyAyXS5pbmRleE9mKCdAQCcpID09PSAwKSB7XG4gICAgICAgICAgYnJlYWs7XG4gICAgICB9XG4gICAgICBsZXQgb3BlcmF0aW9uID0gKGRpZmZzdHJbaV0ubGVuZ3RoID09IDAgJiYgaSAhPSAoZGlmZnN0ci5sZW5ndGggLSAxKSkgPyAnICcgOiBkaWZmc3RyW2ldWzBdO1xuXG4gICAgICBpZiAob3BlcmF0aW9uID09PSAnKycgfHwgb3BlcmF0aW9uID09PSAnLScgfHwgb3BlcmF0aW9uID09PSAnICcgfHwgb3BlcmF0aW9uID09PSAnXFxcXCcpIHtcbiAgICAgICAgaHVuay5saW5lcy5wdXNoKGRpZmZzdHJbaV0pO1xuICAgICAgICBodW5rLmxpbmVkZWxpbWl0ZXJzLnB1c2goZGVsaW1pdGVyc1tpXSB8fCAnXFxuJyk7XG5cbiAgICAgICAgaWYgKG9wZXJhdGlvbiA9PT0gJysnKSB7XG4gICAgICAgICAgYWRkQ291bnQrKztcbiAgICAgICAgfSBlbHNlIGlmIChvcGVyYXRpb24gPT09ICctJykge1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH0gZWxzZSBpZiAob3BlcmF0aW9uID09PSAnICcpIHtcbiAgICAgICAgICBhZGRDb3VudCsrO1xuICAgICAgICAgIHJlbW92ZUNvdW50Kys7XG4gICAgICAgIH1cbiAgICAgIH0gZWxzZSB7XG4gICAgICAgIGJyZWFrO1xuICAgICAgfVxuICAgIH1cblxuICAgIC8vIEhhbmRsZSB0aGUgZW1wdHkgYmxvY2sgY291bnQgY2FzZVxuICAgIGlmICghYWRkQ291bnQgJiYgaHVuay5uZXdMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5uZXdMaW5lcyA9IDA7XG4gICAgfVxuICAgIGlmICghcmVtb3ZlQ291bnQgJiYgaHVuay5vbGRMaW5lcyA9PT0gMSkge1xuICAgICAgaHVuay5vbGRMaW5lcyA9IDA7XG4gICAgfVxuXG4gICAgLy8gUGVyZm9ybSBvcHRpb25hbCBzYW5pdHkgY2hlY2tpbmdcbiAgICBpZiAob3B0aW9ucy5zdHJpY3QpIHtcbiAgICAgIGlmIChhZGRDb3VudCAhPT0gaHVuay5uZXdMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ0FkZGVkIGxpbmUgY291bnQgZGlkIG5vdCBtYXRjaCBmb3IgaHVuayBhdCBsaW5lICcgKyAoY2h1bmtIZWFkZXJJbmRleCArIDEpKTtcbiAgICAgIH1cbiAgICAgIGlmIChyZW1vdmVDb3VudCAhPT0gaHVuay5vbGRMaW5lcykge1xuICAgICAgICB0aHJvdyBuZXcgRXJyb3IoJ1JlbW92ZWQgbGluZSBjb3VudCBkaWQgbm90IG1hdGNoIGZvciBodW5rIGF0IGxpbmUgJyArIChjaHVua0hlYWRlckluZGV4ICsgMSkpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBodW5rO1xuICB9XG5cbiAgd2hpbGUgKGkgPCBkaWZmc3RyLmxlbmd0aCkge1xuICAgIHBhcnNlSW5kZXgoKTtcbiAgfVxuXG4gIHJldHVybiBsaXN0O1xufVxuIl19
-
-
-/***/ }),
-/* 12 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/"use strict";
-
- exports.__esModule = true;
-
- exports["default"] = /*istanbul ignore end*/function (start, minLine, maxLine) {
- var wantForward = true,
- backwardExhausted = false,
- forwardExhausted = false,
- localOffset = 1;
-
- return function iterator() {
- if (wantForward && !forwardExhausted) {
- if (backwardExhausted) {
- localOffset++;
- } else {
- wantForward = false;
- }
-
- // Check if trying to fit beyond text length, and if not, check it fits
- // after offset location (or desired location on first iteration)
- if (start + localOffset <= maxLine) {
- return localOffset;
- }
-
- forwardExhausted = true;
- }
-
- if (!backwardExhausted) {
- if (!forwardExhausted) {
- wantForward = true;
- }
-
- // Check if trying to fit before text beginning, and if not, check it fits
- // before offset location
- if (minLine <= start - localOffset) {
- return -localOffset++;
- }
-
- backwardExhausted = true;
- return iterator();
- }
-
- // We tried to fit hunk before text beginning and beyond text length, then
- // hunk can't fit on the text. Return undefined
- };
- };
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2Rpc3RhbmNlLWl0ZXJhdG9yLmpzIl0sIm5hbWVzIjpbInN0YXJ0IiwibWluTGluZSIsIm1heExpbmUiLCJ3YW50Rm9yd2FyZCIsImJhY2t3YXJkRXhoYXVzdGVkIiwiZm9yd2FyZEV4aGF1c3RlZCIsImxvY2FsT2Zmc2V0IiwiaXRlcmF0b3IiXSwibWFwcGluZ3MiOiI7Ozs7NENBR2UsVUFBU0EsS0FBVCxFQUFnQkMsT0FBaEIsRUFBeUJDLE9BQXpCLEVBQWtDO0FBQy9DLE1BQUlDLGNBQWMsSUFBbEI7QUFBQSxNQUNJQyxvQkFBb0IsS0FEeEI7QUFBQSxNQUVJQyxtQkFBbUIsS0FGdkI7QUFBQSxNQUdJQyxjQUFjLENBSGxCOztBQUtBLFNBQU8sU0FBU0MsUUFBVCxHQUFvQjtBQUN6QixRQUFJSixlQUFlLENBQUNFLGdCQUFwQixFQUFzQztBQUNwQyxVQUFJRCxpQkFBSixFQUF1QjtBQUNyQkU7QUFDRCxPQUZELE1BRU87QUFDTEgsc0JBQWMsS0FBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJSCxRQUFRTSxXQUFSLElBQXVCSixPQUEzQixFQUFvQztBQUNsQyxlQUFPSSxXQUFQO0FBQ0Q7O0FBRURELHlCQUFtQixJQUFuQjtBQUNEOztBQUVELFFBQUksQ0FBQ0QsaUJBQUwsRUFBd0I7QUFDdEIsVUFBSSxDQUFDQyxnQkFBTCxFQUF1QjtBQUNyQkYsc0JBQWMsSUFBZDtBQUNEOztBQUVEO0FBQ0E7QUFDQSxVQUFJRixXQUFXRCxRQUFRTSxXQUF2QixFQUFvQztBQUNsQyxlQUFPLENBQUNBLGFBQVI7QUFDRDs7QUFFREYsMEJBQW9CLElBQXBCO0FBQ0EsYUFBT0csVUFBUDtBQUNEOztBQUVEO0FBQ0E7QUFDRCxHQWxDRDtBQW1DRCxDIiwiZmlsZSI6ImRpc3RhbmNlLWl0ZXJhdG9yLmpzIiwic291cmNlc0NvbnRlbnQiOlsiLy8gSXRlcmF0b3IgdGhhdCB0cmF2ZXJzZXMgaW4gdGhlIHJhbmdlIG9mIFttaW4sIG1heF0sIHN0ZXBwaW5nXG4vLyBieSBkaXN0YW5jZSBmcm9tIGEgZ2l2ZW4gc3RhcnQgcG9zaXRpb24uIEkuZS4gZm9yIFswLCA0XSwgd2l0aFxuLy8gc3RhcnQgb2YgMiwgdGhpcyB3aWxsIGl0ZXJhdGUgMiwgMywgMSwgNCwgMC5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uKHN0YXJ0LCBtaW5MaW5lLCBtYXhMaW5lKSB7XG4gIGxldCB3YW50Rm9yd2FyZCA9IHRydWUsXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IGZhbHNlLFxuICAgICAgbG9jYWxPZmZzZXQgPSAxO1xuXG4gIHJldHVybiBmdW5jdGlvbiBpdGVyYXRvcigpIHtcbiAgICBpZiAod2FudEZvcndhcmQgJiYgIWZvcndhcmRFeGhhdXN0ZWQpIHtcbiAgICAgIGlmIChiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgICBsb2NhbE9mZnNldCsrO1xuICAgICAgfSBlbHNlIHtcbiAgICAgICAgd2FudEZvcndhcmQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZXlvbmQgdGV4dCBsZW5ndGgsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGFmdGVyIG9mZnNldCBsb2NhdGlvbiAob3IgZGVzaXJlZCBsb2NhdGlvbiBvbiBmaXJzdCBpdGVyYXRpb24pXG4gICAgICBpZiAoc3RhcnQgKyBsb2NhbE9mZnNldCA8PSBtYXhMaW5lKSB7XG4gICAgICAgIHJldHVybiBsb2NhbE9mZnNldDtcbiAgICAgIH1cblxuICAgICAgZm9yd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgfVxuXG4gICAgaWYgKCFiYWNrd2FyZEV4aGF1c3RlZCkge1xuICAgICAgaWYgKCFmb3J3YXJkRXhoYXVzdGVkKSB7XG4gICAgICAgIHdhbnRGb3J3YXJkID0gdHJ1ZTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgdHJ5aW5nIHRvIGZpdCBiZWZvcmUgdGV4dCBiZWdpbm5pbmcsIGFuZCBpZiBub3QsIGNoZWNrIGl0IGZpdHNcbiAgICAgIC8vIGJlZm9yZSBvZmZzZXQgbG9jYXRpb25cbiAgICAgIGlmIChtaW5MaW5lIDw9IHN0YXJ0IC0gbG9jYWxPZmZzZXQpIHtcbiAgICAgICAgcmV0dXJuIC1sb2NhbE9mZnNldCsrO1xuICAgICAgfVxuXG4gICAgICBiYWNrd2FyZEV4aGF1c3RlZCA9IHRydWU7XG4gICAgICByZXR1cm4gaXRlcmF0b3IoKTtcbiAgICB9XG5cbiAgICAvLyBXZSB0cmllZCB0byBmaXQgaHVuayBiZWZvcmUgdGV4dCBiZWdpbm5pbmcgYW5kIGJleW9uZCB0ZXh0IGxlbmd0aCwgdGhlblxuICAgIC8vIGh1bmsgY2FuJ3QgZml0IG9uIHRoZSB0ZXh0LiBSZXR1cm4gdW5kZWZpbmVkXG4gIH07XG59XG4iXX0=
-
-
-/***/ }),
-/* 13 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/calcLineCount = calcLineCount;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/merge = merge;
-
- var /*istanbul ignore start*/_create = __webpack_require__(14) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_parse = __webpack_require__(11) /*istanbul ignore end*/;
-
- var /*istanbul ignore start*/_array = __webpack_require__(15) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
-
- /*istanbul ignore end*/function calcLineCount(hunk) {
- /*istanbul ignore start*/var _calcOldNewLineCount = /*istanbul ignore end*/calcOldNewLineCount(hunk.lines),
- oldLines = _calcOldNewLineCount.oldLines,
- newLines = _calcOldNewLineCount.newLines;
-
- if (oldLines !== undefined) {
- hunk.oldLines = oldLines;
- } else {
- delete hunk.oldLines;
- }
-
- if (newLines !== undefined) {
- hunk.newLines = newLines;
- } else {
- delete hunk.newLines;
- }
- }
-
- function merge(mine, theirs, base) {
- mine = loadPatch(mine, base);
- theirs = loadPatch(theirs, base);
-
- var ret = {};
-
- // For index we just let it pass through as it doesn't have any necessary meaning.
- // Leaving sanity checks on this to the API consumer that may know more about the
- // meaning in their own context.
- if (mine.index || theirs.index) {
- ret.index = mine.index || theirs.index;
- }
-
- if (mine.newFileName || theirs.newFileName) {
- if (!fileNameChanged(mine)) {
- // No header or no change in ours, use theirs (and ours if theirs does not exist)
- ret.oldFileName = theirs.oldFileName || mine.oldFileName;
- ret.newFileName = theirs.newFileName || mine.newFileName;
- ret.oldHeader = theirs.oldHeader || mine.oldHeader;
- ret.newHeader = theirs.newHeader || mine.newHeader;
- } else if (!fileNameChanged(theirs)) {
- // No header or no change in theirs, use ours
- ret.oldFileName = mine.oldFileName;
- ret.newFileName = mine.newFileName;
- ret.oldHeader = mine.oldHeader;
- ret.newHeader = mine.newHeader;
- } else {
- // Both changed... figure it out
- ret.oldFileName = selectField(ret, mine.oldFileName, theirs.oldFileName);
- ret.newFileName = selectField(ret, mine.newFileName, theirs.newFileName);
- ret.oldHeader = selectField(ret, mine.oldHeader, theirs.oldHeader);
- ret.newHeader = selectField(ret, mine.newHeader, theirs.newHeader);
- }
- }
-
- ret.hunks = [];
-
- var mineIndex = 0,
- theirsIndex = 0,
- mineOffset = 0,
- theirsOffset = 0;
-
- while (mineIndex < mine.hunks.length || theirsIndex < theirs.hunks.length) {
- var mineCurrent = mine.hunks[mineIndex] || { oldStart: Infinity },
- theirsCurrent = theirs.hunks[theirsIndex] || { oldStart: Infinity };
-
- if (hunkBefore(mineCurrent, theirsCurrent)) {
- // This patch does not overlap with any of the others, yay.
- ret.hunks.push(cloneHunk(mineCurrent, mineOffset));
- mineIndex++;
- theirsOffset += mineCurrent.newLines - mineCurrent.oldLines;
- } else if (hunkBefore(theirsCurrent, mineCurrent)) {
- // This patch does not overlap with any of the others, yay.
- ret.hunks.push(cloneHunk(theirsCurrent, theirsOffset));
- theirsIndex++;
- mineOffset += theirsCurrent.newLines - theirsCurrent.oldLines;
- } else {
- // Overlap, merge as best we can
- var mergedHunk = {
- oldStart: Math.min(mineCurrent.oldStart, theirsCurrent.oldStart),
- oldLines: 0,
- newStart: Math.min(mineCurrent.newStart + mineOffset, theirsCurrent.oldStart + theirsOffset),
- newLines: 0,
- lines: []
- };
- mergeLines(mergedHunk, mineCurrent.oldStart, mineCurrent.lines, theirsCurrent.oldStart, theirsCurrent.lines);
- theirsIndex++;
- mineIndex++;
-
- ret.hunks.push(mergedHunk);
- }
- }
-
- return ret;
- }
-
- function loadPatch(param, base) {
- if (typeof param === 'string') {
- if (/^@@/m.test(param) || /^Index:/m.test(param)) {
- return (/*istanbul ignore start*/(0, _parse.parsePatch) /*istanbul ignore end*/(param)[0]
- );
- }
-
- if (!base) {
- throw new Error('Must provide a base reference or pass in a patch');
- }
- return (/*istanbul ignore start*/(0, _create.structuredPatch) /*istanbul ignore end*/(undefined, undefined, base, param)
- );
- }
-
- return param;
- }
-
- function fileNameChanged(patch) {
- return patch.newFileName && patch.newFileName !== patch.oldFileName;
- }
-
- function selectField(index, mine, theirs) {
- if (mine === theirs) {
- return mine;
- } else {
- index.conflict = true;
- return { mine: mine, theirs: theirs };
- }
- }
-
- function hunkBefore(test, check) {
- return test.oldStart < check.oldStart && test.oldStart + test.oldLines < check.oldStart;
- }
-
- function cloneHunk(hunk, offset) {
- return {
- oldStart: hunk.oldStart, oldLines: hunk.oldLines,
- newStart: hunk.newStart + offset, newLines: hunk.newLines,
- lines: hunk.lines
- };
- }
-
- function mergeLines(hunk, mineOffset, mineLines, theirOffset, theirLines) {
- // This will generally result in a conflicted hunk, but there are cases where the context
- // is the only overlap where we can successfully merge the content here.
- var mine = { offset: mineOffset, lines: mineLines, index: 0 },
- their = { offset: theirOffset, lines: theirLines, index: 0 };
-
- // Handle any leading content
- insertLeading(hunk, mine, their);
- insertLeading(hunk, their, mine);
-
- // Now in the overlap content. Scan through and select the best changes from each.
- while (mine.index < mine.lines.length && their.index < their.lines.length) {
- var mineCurrent = mine.lines[mine.index],
- theirCurrent = their.lines[their.index];
-
- if ((mineCurrent[0] === '-' || mineCurrent[0] === '+') && (theirCurrent[0] === '-' || theirCurrent[0] === '+')) {
- // Both modified ...
- mutualChange(hunk, mine, their);
- } else if (mineCurrent[0] === '+' && theirCurrent[0] === ' ') {
- /*istanbul ignore start*/var _hunk$lines;
-
- /*istanbul ignore end*/ // Mine inserted
- /*istanbul ignore start*/(_hunk$lines = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(mine)));
- } else if (theirCurrent[0] === '+' && mineCurrent[0] === ' ') {
- /*istanbul ignore start*/var _hunk$lines2;
-
- /*istanbul ignore end*/ // Theirs inserted
- /*istanbul ignore start*/(_hunk$lines2 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/collectChange(their)));
- } else if (mineCurrent[0] === '-' && theirCurrent[0] === ' ') {
- // Mine removed or edited
- removal(hunk, mine, their);
- } else if (theirCurrent[0] === '-' && mineCurrent[0] === ' ') {
- // Their removed or edited
- removal(hunk, their, mine, true);
- } else if (mineCurrent === theirCurrent) {
- // Context identity
- hunk.lines.push(mineCurrent);
- mine.index++;
- their.index++;
- } else {
- // Context mismatch
- conflict(hunk, collectChange(mine), collectChange(their));
- }
- }
-
- // Now push anything that may be remaining
- insertTrailing(hunk, mine);
- insertTrailing(hunk, their);
-
- calcLineCount(hunk);
- }
-
- function mutualChange(hunk, mine, their) {
- var myChanges = collectChange(mine),
- theirChanges = collectChange(their);
-
- if (allRemoves(myChanges) && allRemoves(theirChanges)) {
- // Special case for remove changes that are supersets of one another
- if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(myChanges, theirChanges) && skipRemoveSuperset(their, myChanges, myChanges.length - theirChanges.length)) {
- /*istanbul ignore start*/var _hunk$lines3;
-
- /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines3 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
- return;
- } else if ( /*istanbul ignore start*/(0, _array.arrayStartsWith) /*istanbul ignore end*/(theirChanges, myChanges) && skipRemoveSuperset(mine, theirChanges, theirChanges.length - myChanges.length)) {
- /*istanbul ignore start*/var _hunk$lines4;
-
- /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines4 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines4 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges));
- return;
- }
- } else if ( /*istanbul ignore start*/(0, _array.arrayEqual) /*istanbul ignore end*/(myChanges, theirChanges)) {
- /*istanbul ignore start*/var _hunk$lines5;
-
- /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines5 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines5 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/myChanges));
- return;
- }
-
- conflict(hunk, myChanges, theirChanges);
- }
-
- function removal(hunk, mine, their, swap) {
- var myChanges = collectChange(mine),
- theirChanges = collectContext(their, myChanges);
- if (theirChanges.merged) {
- /*istanbul ignore start*/var _hunk$lines6;
-
- /*istanbul ignore end*/ /*istanbul ignore start*/(_hunk$lines6 = /*istanbul ignore end*/hunk.lines).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_hunk$lines6 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/theirChanges.merged));
- } else {
- conflict(hunk, swap ? theirChanges : myChanges, swap ? myChanges : theirChanges);
- }
- }
-
- function conflict(hunk, mine, their) {
- hunk.conflict = true;
- hunk.lines.push({
- conflict: true,
- mine: mine,
- theirs: their
- });
- }
-
- function insertLeading(hunk, insert, their) {
- while (insert.offset < their.offset && insert.index < insert.lines.length) {
- var line = insert.lines[insert.index++];
- hunk.lines.push(line);
- insert.offset++;
- }
- }
- function insertTrailing(hunk, insert) {
- while (insert.index < insert.lines.length) {
- var line = insert.lines[insert.index++];
- hunk.lines.push(line);
- }
- }
-
- function collectChange(state) {
- var ret = [],
- operation = state.lines[state.index][0];
- while (state.index < state.lines.length) {
- var line = state.lines[state.index];
-
- // Group additions that are immediately after subtractions and treat them as one "atomic" modify change.
- if (operation === '-' && line[0] === '+') {
- operation = '+';
- }
-
- if (operation === line[0]) {
- ret.push(line);
- state.index++;
- } else {
- break;
- }
- }
-
- return ret;
- }
- function collectContext(state, matchChanges) {
- var changes = [],
- merged = [],
- matchIndex = 0,
- contextChanges = false,
- conflicted = false;
- while (matchIndex < matchChanges.length && state.index < state.lines.length) {
- var change = state.lines[state.index],
- match = matchChanges[matchIndex];
-
- // Once we've hit our add, then we are done
- if (match[0] === '+') {
- break;
- }
-
- contextChanges = contextChanges || change[0] !== ' ';
-
- merged.push(match);
- matchIndex++;
-
- // Consume any additions in the other block as a conflict to attempt
- // to pull in the remaining context after this
- if (change[0] === '+') {
- conflicted = true;
-
- while (change[0] === '+') {
- changes.push(change);
- change = state.lines[++state.index];
- }
- }
-
- if (match.substr(1) === change.substr(1)) {
- changes.push(change);
- state.index++;
- } else {
- conflicted = true;
- }
- }
-
- if ((matchChanges[matchIndex] || '')[0] === '+' && contextChanges) {
- conflicted = true;
- }
-
- if (conflicted) {
- return changes;
- }
-
- while (matchIndex < matchChanges.length) {
- merged.push(matchChanges[matchIndex++]);
- }
-
- return {
- merged: merged,
- changes: changes
- };
- }
-
- function allRemoves(changes) {
- return changes.reduce(function (prev, change) {
- return prev && change[0] === '-';
- }, true);
- }
- function skipRemoveSuperset(state, removeChanges, delta) {
- for (var i = 0; i < delta; i++) {
- var changeContent = removeChanges[removeChanges.length - delta + i].substr(1);
- if (state.lines[state.index + i] !== ' ' + changeContent) {
- return false;
- }
- }
-
- state.index += delta;
- return true;
- }
-
- function calcOldNewLineCount(lines) {
- var oldLines = 0;
- var newLines = 0;
-
- lines.forEach(function (line) {
- if (typeof line !== 'string') {
- var myCount = calcOldNewLineCount(line.mine);
- var theirCount = calcOldNewLineCount(line.theirs);
-
- if (oldLines !== undefined) {
- if (myCount.oldLines === theirCount.oldLines) {
- oldLines += myCount.oldLines;
- } else {
- oldLines = undefined;
- }
- }
-
- if (newLines !== undefined) {
- if (myCount.newLines === theirCount.newLines) {
- newLines += myCount.newLines;
- } else {
- newLines = undefined;
- }
- }
- } else {
- if (newLines !== undefined && (line[0] === '+' || line[0] === ' ')) {
- newLines++;
- }
- if (oldLines !== undefined && (line[0] === '-' || line[0] === ' ')) {
- oldLines++;
- }
- }
- });
-
- return { oldLines: oldLines, newLines: newLines };
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9tZXJnZS5qcyJdLCJuYW1lcyI6WyJjYWxjTGluZUNvdW50IiwibWVyZ2UiLCJodW5rIiwiY2FsY09sZE5ld0xpbmVDb3VudCIsImxpbmVzIiwib2xkTGluZXMiLCJuZXdMaW5lcyIsInVuZGVmaW5lZCIsIm1pbmUiLCJ0aGVpcnMiLCJiYXNlIiwibG9hZFBhdGNoIiwicmV0IiwiaW5kZXgiLCJuZXdGaWxlTmFtZSIsImZpbGVOYW1lQ2hhbmdlZCIsIm9sZEZpbGVOYW1lIiwib2xkSGVhZGVyIiwibmV3SGVhZGVyIiwic2VsZWN0RmllbGQiLCJodW5rcyIsIm1pbmVJbmRleCIsInRoZWlyc0luZGV4IiwibWluZU9mZnNldCIsInRoZWlyc09mZnNldCIsImxlbmd0aCIsIm1pbmVDdXJyZW50Iiwib2xkU3RhcnQiLCJJbmZpbml0eSIsInRoZWlyc0N1cnJlbnQiLCJodW5rQmVmb3JlIiwicHVzaCIsImNsb25lSHVuayIsIm1lcmdlZEh1bmsiLCJNYXRoIiwibWluIiwibmV3U3RhcnQiLCJtZXJnZUxpbmVzIiwicGFyYW0iLCJ0ZXN0IiwiRXJyb3IiLCJwYXRjaCIsImNvbmZsaWN0IiwiY2hlY2siLCJvZmZzZXQiLCJtaW5lTGluZXMiLCJ0aGVpck9mZnNldCIsInRoZWlyTGluZXMiLCJ0aGVpciIsImluc2VydExlYWRpbmciLCJ0aGVpckN1cnJlbnQiLCJtdXR1YWxDaGFuZ2UiLCJjb2xsZWN0Q2hhbmdlIiwicmVtb3ZhbCIsImluc2VydFRyYWlsaW5nIiwibXlDaGFuZ2VzIiwidGhlaXJDaGFuZ2VzIiwiYWxsUmVtb3ZlcyIsInNraXBSZW1vdmVTdXBlcnNldCIsInN3YXAiLCJjb2xsZWN0Q29udGV4dCIsIm1lcmdlZCIsImluc2VydCIsImxpbmUiLCJzdGF0ZSIsIm9wZXJhdGlvbiIsIm1hdGNoQ2hhbmdlcyIsImNoYW5nZXMiLCJtYXRjaEluZGV4IiwiY29udGV4dENoYW5nZXMiLCJjb25mbGljdGVkIiwiY2hhbmdlIiwibWF0Y2giLCJzdWJzdHIiLCJyZWR1Y2UiLCJwcmV2IiwicmVtb3ZlQ2hhbmdlcyIsImRlbHRhIiwiaSIsImNoYW5nZUNvbnRlbnQiLCJmb3JFYWNoIiwibXlDb3VudCIsInRoZWlyQ291bnQiXSwibWFwcGluZ3MiOiI7OztnQ0FLZ0JBLGEsR0FBQUEsYTt5REFnQkFDLEssR0FBQUEsSzs7QUFyQmhCOztBQUNBOztBQUVBOzs7O3VCQUVPLFNBQVNELGFBQVQsQ0FBdUJFLElBQXZCLEVBQTZCO0FBQUEsNkVBQ0xDLG9CQUFvQkQsS0FBS0UsS0FBekIsQ0FESztBQUFBLE1BQzNCQyxRQUQyQix3QkFDM0JBLFFBRDJCO0FBQUEsTUFDakJDLFFBRGlCLHdCQUNqQkEsUUFEaUI7O0FBR2xDLE1BQUlELGFBQWFFLFNBQWpCLEVBQTRCO0FBQzFCTCxTQUFLRyxRQUFMLEdBQWdCQSxRQUFoQjtBQUNELEdBRkQsTUFFTztBQUNMLFdBQU9ILEtBQUtHLFFBQVo7QUFDRDs7QUFFRCxNQUFJQyxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQkwsU0FBS0ksUUFBTCxHQUFnQkEsUUFBaEI7QUFDRCxHQUZELE1BRU87QUFDTCxXQUFPSixLQUFLSSxRQUFaO0FBQ0Q7QUFDRjs7QUFFTSxTQUFTTCxLQUFULENBQWVPLElBQWYsRUFBcUJDLE1BQXJCLEVBQTZCQyxJQUE3QixFQUFtQztBQUN4Q0YsU0FBT0csVUFBVUgsSUFBVixFQUFnQkUsSUFBaEIsQ0FBUDtBQUNBRCxXQUFTRSxVQUFVRixNQUFWLEVBQWtCQyxJQUFsQixDQUFUOztBQUVBLE1BQUlFLE1BQU0sRUFBVjs7QUFFQTtBQUNBO0FBQ0E7QUFDQSxNQUFJSixLQUFLSyxLQUFMLElBQWNKLE9BQU9JLEtBQXpCLEVBQWdDO0FBQzlCRCxRQUFJQyxLQUFKLEdBQVlMLEtBQUtLLEtBQUwsSUFBY0osT0FBT0ksS0FBakM7QUFDRDs7QUFFRCxNQUFJTCxLQUFLTSxXQUFMLElBQW9CTCxPQUFPSyxXQUEvQixFQUE0QztBQUMxQyxRQUFJLENBQUNDLGdCQUFnQlAsSUFBaEIsQ0FBTCxFQUE0QjtBQUMxQjtBQUNBSSxVQUFJSSxXQUFKLEdBQWtCUCxPQUFPTyxXQUFQLElBQXNCUixLQUFLUSxXQUE3QztBQUNBSixVQUFJRSxXQUFKLEdBQWtCTCxPQUFPSyxXQUFQLElBQXNCTixLQUFLTSxXQUE3QztBQUNBRixVQUFJSyxTQUFKLEdBQWdCUixPQUFPUSxTQUFQLElBQW9CVCxLQUFLUyxTQUF6QztBQUNBTCxVQUFJTSxTQUFKLEdBQWdCVCxPQUFPUyxTQUFQLElBQW9CVixLQUFLVSxTQUF6QztBQUNELEtBTkQsTUFNTyxJQUFJLENBQUNILGdCQUFnQk4sTUFBaEIsQ0FBTCxFQUE4QjtBQUNuQztBQUNBRyxVQUFJSSxXQUFKLEdBQWtCUixLQUFLUSxXQUF2QjtBQUNBSixVQUFJRSxXQUFKLEdBQWtCTixLQUFLTSxXQUF2QjtBQUNBRixVQUFJSyxTQUFKLEdBQWdCVCxLQUFLUyxTQUFyQjtBQUNBTCxVQUFJTSxTQUFKLEdBQWdCVixLQUFLVSxTQUFyQjtBQUNELEtBTk0sTUFNQTtBQUNMO0FBQ0FOLFVBQUlJLFdBQUosR0FBa0JHLFlBQVlQLEdBQVosRUFBaUJKLEtBQUtRLFdBQXRCLEVBQW1DUCxPQUFPTyxXQUExQyxDQUFsQjtBQUNBSixVQUFJRSxXQUFKLEdBQWtCSyxZQUFZUCxHQUFaLEVBQWlCSixLQUFLTSxXQUF0QixFQUFtQ0wsT0FBT0ssV0FBMUMsQ0FBbEI7QUFDQUYsVUFBSUssU0FBSixHQUFnQkUsWUFBWVAsR0FBWixFQUFpQkosS0FBS1MsU0FBdEIsRUFBaUNSLE9BQU9RLFNBQXhDLENBQWhCO0FBQ0FMLFVBQUlNLFNBQUosR0FBZ0JDLFlBQVlQLEdBQVosRUFBaUJKLEtBQUtVLFNBQXRCLEVBQWlDVCxPQUFPUyxTQUF4QyxDQUFoQjtBQUNEO0FBQ0Y7O0FBRUROLE1BQUlRLEtBQUosR0FBWSxFQUFaOztBQUVBLE1BQUlDLFlBQVksQ0FBaEI7QUFBQSxNQUNJQyxjQUFjLENBRGxCO0FBQUEsTUFFSUMsYUFBYSxDQUZqQjtBQUFBLE1BR0lDLGVBQWUsQ0FIbkI7O0FBS0EsU0FBT0gsWUFBWWIsS0FBS1ksS0FBTCxDQUFXSyxNQUF2QixJQUFpQ0gsY0FBY2IsT0FBT1csS0FBUCxDQUFhSyxNQUFuRSxFQUEyRTtBQUN6RSxRQUFJQyxjQUFjbEIsS0FBS1ksS0FBTCxDQUFXQyxTQUFYLEtBQXlCLEVBQUNNLFVBQVVDLFFBQVgsRUFBM0M7QUFBQSxRQUNJQyxnQkFBZ0JwQixPQUFPVyxLQUFQLENBQWFFLFdBQWIsS0FBNkIsRUFBQ0ssVUFBVUMsUUFBWCxFQURqRDs7QUFHQSxRQUFJRSxXQUFXSixXQUFYLEVBQXdCRyxhQUF4QixDQUFKLEVBQTRDO0FBQzFDO0FBQ0FqQixVQUFJUSxLQUFKLENBQVVXLElBQVYsQ0FBZUMsVUFBVU4sV0FBVixFQUF1QkgsVUFBdkIsQ0FBZjtBQUNBRjtBQUNBRyxzQkFBZ0JFLFlBQVlwQixRQUFaLEdBQXVCb0IsWUFBWXJCLFFBQW5EO0FBQ0QsS0FMRCxNQUtPLElBQUl5QixXQUFXRCxhQUFYLEVBQTBCSCxXQUExQixDQUFKLEVBQTRDO0FBQ2pEO0FBQ0FkLFVBQUlRLEtBQUosQ0FBVVcsSUFBVixDQUFlQyxVQUFVSCxhQUFWLEVBQXlCTCxZQUF6QixDQUFmO0FBQ0FGO0FBQ0FDLG9CQUFjTSxjQUFjdkIsUUFBZCxHQUF5QnVCLGNBQWN4QixRQUFyRDtBQUNELEtBTE0sTUFLQTtBQUNMO0FBQ0EsVUFBSTRCLGFBQWE7QUFDZk4sa0JBQVVPLEtBQUtDLEdBQUwsQ0FBU1QsWUFBWUMsUUFBckIsRUFBK0JFLGNBQWNGLFFBQTdDLENBREs7QUFFZnRCLGtCQUFVLENBRks7QUFHZitCLGtCQUFVRixLQUFLQyxHQUFMLENBQVNULFlBQVlVLFFBQVosR0FBdUJiLFVBQWhDLEVBQTRDTSxjQUFjRixRQUFkLEdBQXlCSCxZQUFyRSxDQUhLO0FBSWZsQixrQkFBVSxDQUpLO0FBS2ZGLGVBQU87QUFMUSxPQUFqQjtBQU9BaUMsaUJBQVdKLFVBQVgsRUFBdUJQLFlBQVlDLFFBQW5DLEVBQTZDRCxZQUFZdEIsS0FBekQsRUFBZ0V5QixjQUFjRixRQUE5RSxFQUF3RkUsY0FBY3pCLEtBQXRHO0FBQ0FrQjtBQUNBRDs7QUFFQVQsVUFBSVEsS0FBSixDQUFVVyxJQUFWLENBQWVFLFVBQWY7QUFDRDtBQUNGOztBQUVELFNBQU9yQixHQUFQO0FBQ0Q7O0FBRUQsU0FBU0QsU0FBVCxDQUFtQjJCLEtBQW5CLEVBQTBCNUIsSUFBMUIsRUFBZ0M7QUFDOUIsTUFBSSxPQUFPNEIsS0FBUCxLQUFpQixRQUFyQixFQUErQjtBQUM3QixRQUFJLE9BQU9DLElBQVAsQ0FBWUQsS0FBWixLQUF1QixXQUFXQyxJQUFYLENBQWdCRCxLQUFoQixDQUEzQixFQUFvRDtBQUNsRCxhQUFPLHlFQUFXQSxLQUFYLEVBQWtCLENBQWxCO0FBQVA7QUFDRDs7QUFFRCxRQUFJLENBQUM1QixJQUFMLEVBQVc7QUFDVCxZQUFNLElBQUk4QixLQUFKLENBQVUsa0RBQVYsQ0FBTjtBQUNEO0FBQ0QsV0FBTywrRUFBZ0JqQyxTQUFoQixFQUEyQkEsU0FBM0IsRUFBc0NHLElBQXRDLEVBQTRDNEIsS0FBNUM7QUFBUDtBQUNEOztBQUVELFNBQU9BLEtBQVA7QUFDRDs7QUFFRCxTQUFTdkIsZUFBVCxDQUF5QjBCLEtBQXpCLEVBQWdDO0FBQzlCLFNBQU9BLE1BQU0zQixXQUFOLElBQXFCMkIsTUFBTTNCLFdBQU4sS0FBc0IyQixNQUFNekIsV0FBeEQ7QUFDRDs7QUFFRCxTQUFTRyxXQUFULENBQXFCTixLQUFyQixFQUE0QkwsSUFBNUIsRUFBa0NDLE1BQWxDLEVBQTBDO0FBQ3hDLE1BQUlELFNBQVNDLE1BQWIsRUFBcUI7QUFDbkIsV0FBT0QsSUFBUDtBQUNELEdBRkQsTUFFTztBQUNMSyxVQUFNNkIsUUFBTixHQUFpQixJQUFqQjtBQUNBLFdBQU8sRUFBQ2xDLFVBQUQsRUFBT0MsY0FBUCxFQUFQO0FBQ0Q7QUFDRjs7QUFFRCxTQUFTcUIsVUFBVCxDQUFvQlMsSUFBcEIsRUFBMEJJLEtBQTFCLEVBQWlDO0FBQy9CLFNBQU9KLEtBQUtaLFFBQUwsR0FBZ0JnQixNQUFNaEIsUUFBdEIsSUFDRFksS0FBS1osUUFBTCxHQUFnQlksS0FBS2xDLFFBQXRCLEdBQWtDc0MsTUFBTWhCLFFBRDdDO0FBRUQ7O0FBRUQsU0FBU0ssU0FBVCxDQUFtQjlCLElBQW5CLEVBQXlCMEMsTUFBekIsRUFBaUM7QUFDL0IsU0FBTztBQUNMakIsY0FBVXpCLEtBQUt5QixRQURWLEVBQ29CdEIsVUFBVUgsS0FBS0csUUFEbkM7QUFFTCtCLGNBQVVsQyxLQUFLa0MsUUFBTCxHQUFnQlEsTUFGckIsRUFFNkJ0QyxVQUFVSixLQUFLSSxRQUY1QztBQUdMRixXQUFPRixLQUFLRTtBQUhQLEdBQVA7QUFLRDs7QUFFRCxTQUFTaUMsVUFBVCxDQUFvQm5DLElBQXBCLEVBQTBCcUIsVUFBMUIsRUFBc0NzQixTQUF0QyxFQUFpREMsV0FBakQsRUFBOERDLFVBQTlELEVBQTBFO0FBQ3hFO0FBQ0E7QUFDQSxNQUFJdkMsT0FBTyxFQUFDb0MsUUFBUXJCLFVBQVQsRUFBcUJuQixPQUFPeUMsU0FBNUIsRUFBdUNoQyxPQUFPLENBQTlDLEVBQVg7QUFBQSxNQUNJbUMsUUFBUSxFQUFDSixRQUFRRSxXQUFULEVBQXNCMUMsT0FBTzJDLFVBQTdCLEVBQXlDbEMsT0FBTyxDQUFoRCxFQURaOztBQUdBO0FBQ0FvQyxnQkFBYy9DLElBQWQsRUFBb0JNLElBQXBCLEVBQTBCd0MsS0FBMUI7QUFDQUMsZ0JBQWMvQyxJQUFkLEVBQW9COEMsS0FBcEIsRUFBMkJ4QyxJQUEzQjs7QUFFQTtBQUNBLFNBQU9BLEtBQUtLLEtBQUwsR0FBYUwsS0FBS0osS0FBTCxDQUFXcUIsTUFBeEIsSUFBa0N1QixNQUFNbkMsS0FBTixHQUFjbUMsTUFBTTVDLEtBQU4sQ0FBWXFCLE1BQW5FLEVBQTJFO0FBQ3pFLFFBQUlDLGNBQWNsQixLQUFLSixLQUFMLENBQVdJLEtBQUtLLEtBQWhCLENBQWxCO0FBQUEsUUFDSXFDLGVBQWVGLE1BQU01QyxLQUFOLENBQVk0QyxNQUFNbkMsS0FBbEIsQ0FEbkI7O0FBR0EsUUFBSSxDQUFDYSxZQUFZLENBQVosTUFBbUIsR0FBbkIsSUFBMEJBLFlBQVksQ0FBWixNQUFtQixHQUE5QyxNQUNJd0IsYUFBYSxDQUFiLE1BQW9CLEdBQXBCLElBQTJCQSxhQUFhLENBQWIsTUFBb0IsR0FEbkQsQ0FBSixFQUM2RDtBQUMzRDtBQUNBQyxtQkFBYWpELElBQWIsRUFBbUJNLElBQW5CLEVBQXlCd0MsS0FBekI7QUFDRCxLQUpELE1BSU8sSUFBSXRCLFlBQVksQ0FBWixNQUFtQixHQUFuQixJQUEwQndCLGFBQWEsQ0FBYixNQUFvQixHQUFsRCxFQUF1RDtBQUFBOztBQUFBLDhCQUM1RDtBQUNBLDBFQUFLOUMsS0FBTCxFQUFXMkIsSUFBWCw0TEFBb0JxQixjQUFjNUMsSUFBZCxDQUFwQjtBQUNELEtBSE0sTUFHQSxJQUFJMEMsYUFBYSxDQUFiLE1BQW9CLEdBQXBCLElBQTJCeEIsWUFBWSxDQUFaLE1BQW1CLEdBQWxELEVBQXVEO0FBQUE7O0FBQUEsOEJBQzVEO0FBQ0EsMkVBQUt0QixLQUFMLEVBQVcyQixJQUFYLDZMQUFvQnFCLGNBQWNKLEtBQWQsQ0FBcEI7QUFDRCxLQUhNLE1BR0EsSUFBSXRCLFlBQVksQ0FBWixNQUFtQixHQUFuQixJQUEwQndCLGFBQWEsQ0FBYixNQUFvQixHQUFsRCxFQUF1RDtBQUM1RDtBQUNBRyxjQUFRbkQsSUFBUixFQUFjTSxJQUFkLEVBQW9Cd0MsS0FBcEI7QUFDRCxLQUhNLE1BR0EsSUFBSUUsYUFBYSxDQUFiLE1BQW9CLEdBQXBCLElBQTJCeEIsWUFBWSxDQUFaLE1BQW1CLEdBQWxELEVBQXVEO0FBQzVEO0FBQ0EyQixjQUFRbkQsSUFBUixFQUFjOEMsS0FBZCxFQUFxQnhDLElBQXJCLEVBQTJCLElBQTNCO0FBQ0QsS0FITSxNQUdBLElBQUlrQixnQkFBZ0J3QixZQUFwQixFQUFrQztBQUN2QztBQUNBaEQsV0FBS0UsS0FBTCxDQUFXMkIsSUFBWCxDQUFnQkwsV0FBaEI7QUFDQWxCLFdBQUtLLEtBQUw7QUFDQW1DLFlBQU1uQyxLQUFOO0FBQ0QsS0FMTSxNQUtBO0FBQ0w7QUFDQTZCLGVBQVN4QyxJQUFULEVBQWVrRCxjQUFjNUMsSUFBZCxDQUFmLEVBQW9DNEMsY0FBY0osS0FBZCxDQUFwQztBQUNEO0FBQ0Y7O0FBRUQ7QUFDQU0saUJBQWVwRCxJQUFmLEVBQXFCTSxJQUFyQjtBQUNBOEMsaUJBQWVwRCxJQUFmLEVBQXFCOEMsS0FBckI7O0FBRUFoRCxnQkFBY0UsSUFBZDtBQUNEOztBQUVELFNBQVNpRCxZQUFULENBQXNCakQsSUFBdEIsRUFBNEJNLElBQTVCLEVBQWtDd0MsS0FBbEMsRUFBeUM7QUFDdkMsTUFBSU8sWUFBWUgsY0FBYzVDLElBQWQsQ0FBaEI7QUFBQSxNQUNJZ0QsZUFBZUosY0FBY0osS0FBZCxDQURuQjs7QUFHQSxNQUFJUyxXQUFXRixTQUFYLEtBQXlCRSxXQUFXRCxZQUFYLENBQTdCLEVBQXVEO0FBQ3JEO0FBQ0EsUUFBSSw4RUFBZ0JELFNBQWhCLEVBQTJCQyxZQUEzQixLQUNHRSxtQkFBbUJWLEtBQW5CLEVBQTBCTyxTQUExQixFQUFxQ0EsVUFBVTlCLE1BQVYsR0FBbUIrQixhQUFhL0IsTUFBckUsQ0FEUCxFQUNxRjtBQUFBOztBQUFBLDZCQUNuRixzRUFBS3JCLEtBQUwsRUFBVzJCLElBQVgsNkxBQW9Cd0IsU0FBcEI7QUFDQTtBQUNELEtBSkQsTUFJTyxJQUFJLDhFQUFnQkMsWUFBaEIsRUFBOEJELFNBQTlCLEtBQ0pHLG1CQUFtQmxELElBQW5CLEVBQXlCZ0QsWUFBekIsRUFBdUNBLGFBQWEvQixNQUFiLEdBQXNCOEIsVUFBVTlCLE1BQXZFLENBREEsRUFDZ0Y7QUFBQTs7QUFBQSw2QkFDckYsc0VBQUtyQixLQUFMLEVBQVcyQixJQUFYLDZMQUFvQnlCLFlBQXBCO0FBQ0E7QUFDRDtBQUNGLEdBWEQsTUFXTyxJQUFJLHlFQUFXRCxTQUFYLEVBQXNCQyxZQUF0QixDQUFKLEVBQXlDO0FBQUE7O0FBQUEsMkJBQzlDLHNFQUFLcEQsS0FBTCxFQUFXMkIsSUFBWCw2TEFBb0J3QixTQUFwQjtBQUNBO0FBQ0Q7O0FBRURiLFdBQVN4QyxJQUFULEVBQWVxRCxTQUFmLEVBQTBCQyxZQUExQjtBQUNEOztBQUVELFNBQVNILE9BQVQsQ0FBaUJuRCxJQUFqQixFQUF1Qk0sSUFBdkIsRUFBNkJ3QyxLQUE3QixFQUFvQ1csSUFBcEMsRUFBMEM7QUFDeEMsTUFBSUosWUFBWUgsY0FBYzVDLElBQWQsQ0FBaEI7QUFBQSxNQUNJZ0QsZUFBZUksZUFBZVosS0FBZixFQUFzQk8sU0FBdEIsQ0FEbkI7QUFFQSxNQUFJQyxhQUFhSyxNQUFqQixFQUF5QjtBQUFBOztBQUFBLDJCQUN2QixzRUFBS3pELEtBQUwsRUFBVzJCLElBQVgsNkxBQW9CeUIsYUFBYUssTUFBakM7QUFDRCxHQUZELE1BRU87QUFDTG5CLGFBQVN4QyxJQUFULEVBQWV5RCxPQUFPSCxZQUFQLEdBQXNCRCxTQUFyQyxFQUFnREksT0FBT0osU0FBUCxHQUFtQkMsWUFBbkU7QUFDRDtBQUNGOztBQUVELFNBQVNkLFFBQVQsQ0FBa0J4QyxJQUFsQixFQUF3Qk0sSUFBeEIsRUFBOEJ3QyxLQUE5QixFQUFxQztBQUNuQzlDLE9BQUt3QyxRQUFMLEdBQWdCLElBQWhCO0FBQ0F4QyxPQUFLRSxLQUFMLENBQVcyQixJQUFYLENBQWdCO0FBQ2RXLGNBQVUsSUFESTtBQUVkbEMsVUFBTUEsSUFGUTtBQUdkQyxZQUFRdUM7QUFITSxHQUFoQjtBQUtEOztBQUVELFNBQVNDLGFBQVQsQ0FBdUIvQyxJQUF2QixFQUE2QjRELE1BQTdCLEVBQXFDZCxLQUFyQyxFQUE0QztBQUMxQyxTQUFPYyxPQUFPbEIsTUFBUCxHQUFnQkksTUFBTUosTUFBdEIsSUFBZ0NrQixPQUFPakQsS0FBUCxHQUFlaUQsT0FBTzFELEtBQVAsQ0FBYXFCLE1BQW5FLEVBQTJFO0FBQ3pFLFFBQUlzQyxPQUFPRCxPQUFPMUQsS0FBUCxDQUFhMEQsT0FBT2pELEtBQVAsRUFBYixDQUFYO0FBQ0FYLFNBQUtFLEtBQUwsQ0FBVzJCLElBQVgsQ0FBZ0JnQyxJQUFoQjtBQUNBRCxXQUFPbEIsTUFBUDtBQUNEO0FBQ0Y7QUFDRCxTQUFTVSxjQUFULENBQXdCcEQsSUFBeEIsRUFBOEI0RCxNQUE5QixFQUFzQztBQUNwQyxTQUFPQSxPQUFPakQsS0FBUCxHQUFlaUQsT0FBTzFELEtBQVAsQ0FBYXFCLE1BQW5DLEVBQTJDO0FBQ3pDLFFBQUlzQyxPQUFPRCxPQUFPMUQsS0FBUCxDQUFhMEQsT0FBT2pELEtBQVAsRUFBYixDQUFYO0FBQ0FYLFNBQUtFLEtBQUwsQ0FBVzJCLElBQVgsQ0FBZ0JnQyxJQUFoQjtBQUNEO0FBQ0Y7O0FBRUQsU0FBU1gsYUFBVCxDQUF1QlksS0FBdkIsRUFBOEI7QUFDNUIsTUFBSXBELE1BQU0sRUFBVjtBQUFBLE1BQ0lxRCxZQUFZRCxNQUFNNUQsS0FBTixDQUFZNEQsTUFBTW5ELEtBQWxCLEVBQXlCLENBQXpCLENBRGhCO0FBRUEsU0FBT21ELE1BQU1uRCxLQUFOLEdBQWNtRCxNQUFNNUQsS0FBTixDQUFZcUIsTUFBakMsRUFBeUM7QUFDdkMsUUFBSXNDLE9BQU9DLE1BQU01RCxLQUFOLENBQVk0RCxNQUFNbkQsS0FBbEIsQ0FBWDs7QUFFQTtBQUNBLFFBQUlvRCxjQUFjLEdBQWQsSUFBcUJGLEtBQUssQ0FBTCxNQUFZLEdBQXJDLEVBQTBDO0FBQ3hDRSxrQkFBWSxHQUFaO0FBQ0Q7O0FBRUQsUUFBSUEsY0FBY0YsS0FBSyxDQUFMLENBQWxCLEVBQTJCO0FBQ3pCbkQsVUFBSW1CLElBQUosQ0FBU2dDLElBQVQ7QUFDQUMsWUFBTW5ELEtBQU47QUFDRCxLQUhELE1BR087QUFDTDtBQUNEO0FBQ0Y7O0FBRUQsU0FBT0QsR0FBUDtBQUNEO0FBQ0QsU0FBU2dELGNBQVQsQ0FBd0JJLEtBQXhCLEVBQStCRSxZQUEvQixFQUE2QztBQUMzQyxNQUFJQyxVQUFVLEVBQWQ7QUFBQSxNQUNJTixTQUFTLEVBRGI7QUFBQSxNQUVJTyxhQUFhLENBRmpCO0FBQUEsTUFHSUMsaUJBQWlCLEtBSHJCO0FBQUEsTUFJSUMsYUFBYSxLQUpqQjtBQUtBLFNBQU9GLGFBQWFGLGFBQWF6QyxNQUExQixJQUNFdUMsTUFBTW5ELEtBQU4sR0FBY21ELE1BQU01RCxLQUFOLENBQVlxQixNQURuQyxFQUMyQztBQUN6QyxRQUFJOEMsU0FBU1AsTUFBTTVELEtBQU4sQ0FBWTRELE1BQU1uRCxLQUFsQixDQUFiO0FBQUEsUUFDSTJELFFBQVFOLGFBQWFFLFVBQWIsQ0FEWjs7QUFHQTtBQUNBLFFBQUlJLE1BQU0sQ0FBTixNQUFhLEdBQWpCLEVBQXNCO0FBQ3BCO0FBQ0Q7O0FBRURILHFCQUFpQkEsa0JBQWtCRSxPQUFPLENBQVAsTUFBYyxHQUFqRDs7QUFFQVYsV0FBTzlCLElBQVAsQ0FBWXlDLEtBQVo7QUFDQUo7O0FBRUE7QUFDQTtBQUNBLFFBQUlHLE9BQU8sQ0FBUCxNQUFjLEdBQWxCLEVBQXVCO0FBQ3JCRCxtQkFBYSxJQUFiOztBQUVBLGFBQU9DLE9BQU8sQ0FBUCxNQUFjLEdBQXJCLEVBQTBCO0FBQ3hCSixnQkFBUXBDLElBQVIsQ0FBYXdDLE1BQWI7QUFDQUEsaUJBQVNQLE1BQU01RCxLQUFOLENBQVksRUFBRTRELE1BQU1uRCxLQUFwQixDQUFUO0FBQ0Q7QUFDRjs7QUFFRCxRQUFJMkQsTUFBTUMsTUFBTixDQUFhLENBQWIsTUFBb0JGLE9BQU9FLE1BQVAsQ0FBYyxDQUFkLENBQXhCLEVBQTBDO0FBQ3hDTixjQUFRcEMsSUFBUixDQUFhd0MsTUFBYjtBQUNBUCxZQUFNbkQsS0FBTjtBQUNELEtBSEQsTUFHTztBQUNMeUQsbUJBQWEsSUFBYjtBQUNEO0FBQ0Y7O0FBRUQsTUFBSSxDQUFDSixhQUFhRSxVQUFiLEtBQTRCLEVBQTdCLEVBQWlDLENBQWpDLE1BQXdDLEdBQXhDLElBQ0dDLGNBRFAsRUFDdUI7QUFDckJDLGlCQUFhLElBQWI7QUFDRDs7QUFFRCxNQUFJQSxVQUFKLEVBQWdCO0FBQ2QsV0FBT0gsT0FBUDtBQUNEOztBQUVELFNBQU9DLGFBQWFGLGFBQWF6QyxNQUFqQyxFQUF5QztBQUN2Q29DLFdBQU85QixJQUFQLENBQVltQyxhQUFhRSxZQUFiLENBQVo7QUFDRDs7QUFFRCxTQUFPO0FBQ0xQLGtCQURLO0FBRUxNO0FBRkssR0FBUDtBQUlEOztBQUVELFNBQVNWLFVBQVQsQ0FBb0JVLE9BQXBCLEVBQTZCO0FBQzNCLFNBQU9BLFFBQVFPLE1BQVIsQ0FBZSxVQUFTQyxJQUFULEVBQWVKLE1BQWYsRUFBdUI7QUFDM0MsV0FBT0ksUUFBUUosT0FBTyxDQUFQLE1BQWMsR0FBN0I7QUFDRCxHQUZNLEVBRUosSUFGSSxDQUFQO0FBR0Q7QUFDRCxTQUFTYixrQkFBVCxDQUE0Qk0sS0FBNUIsRUFBbUNZLGFBQW5DLEVBQWtEQyxLQUFsRCxFQUF5RDtBQUN2RCxPQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsS0FBcEIsRUFBMkJDLEdBQTNCLEVBQWdDO0FBQzlCLFFBQUlDLGdCQUFnQkgsY0FBY0EsY0FBY25ELE1BQWQsR0FBdUJvRCxLQUF2QixHQUErQkMsQ0FBN0MsRUFBZ0RMLE1BQWhELENBQXVELENBQXZELENBQXBCO0FBQ0EsUUFBSVQsTUFBTTVELEtBQU4sQ0FBWTRELE1BQU1uRCxLQUFOLEdBQWNpRSxDQUExQixNQUFpQyxNQUFNQyxhQUEzQyxFQUEwRDtBQUN4RCxhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVEZixRQUFNbkQsS0FBTixJQUFlZ0UsS0FBZjtBQUNBLFNBQU8sSUFBUDtBQUNEOztBQUVELFNBQVMxRSxtQkFBVCxDQUE2QkMsS0FBN0IsRUFBb0M7QUFDbEMsTUFBSUMsV0FBVyxDQUFmO0FBQ0EsTUFBSUMsV0FBVyxDQUFmOztBQUVBRixRQUFNNEUsT0FBTixDQUFjLFVBQVNqQixJQUFULEVBQWU7QUFDM0IsUUFBSSxPQUFPQSxJQUFQLEtBQWdCLFFBQXBCLEVBQThCO0FBQzVCLFVBQUlrQixVQUFVOUUsb0JBQW9CNEQsS0FBS3ZELElBQXpCLENBQWQ7QUFDQSxVQUFJMEUsYUFBYS9FLG9CQUFvQjRELEtBQUt0RCxNQUF6QixDQUFqQjs7QUFFQSxVQUFJSixhQUFhRSxTQUFqQixFQUE0QjtBQUMxQixZQUFJMEUsUUFBUTVFLFFBQVIsS0FBcUI2RSxXQUFXN0UsUUFBcEMsRUFBOEM7QUFDNUNBLHNCQUFZNEUsUUFBUTVFLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLHFCQUFXRSxTQUFYO0FBQ0Q7QUFDRjs7QUFFRCxVQUFJRCxhQUFhQyxTQUFqQixFQUE0QjtBQUMxQixZQUFJMEUsUUFBUTNFLFFBQVIsS0FBcUI0RSxXQUFXNUUsUUFBcEMsRUFBOEM7QUFDNUNBLHNCQUFZMkUsUUFBUTNFLFFBQXBCO0FBQ0QsU0FGRCxNQUVPO0FBQ0xBLHFCQUFXQyxTQUFYO0FBQ0Q7QUFDRjtBQUNGLEtBbkJELE1BbUJPO0FBQ0wsVUFBSUQsYUFBYUMsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEV6RDtBQUNEO0FBQ0QsVUFBSUQsYUFBYUUsU0FBYixLQUEyQndELEtBQUssQ0FBTCxNQUFZLEdBQVosSUFBbUJBLEtBQUssQ0FBTCxNQUFZLEdBQTFELENBQUosRUFBb0U7QUFDbEUxRDtBQUNEO0FBQ0Y7QUFDRixHQTVCRDs7QUE4QkEsU0FBTyxFQUFDQSxrQkFBRCxFQUFXQyxrQkFBWCxFQUFQO0FBQ0QiLCJmaWxlIjoibWVyZ2UuanMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge3N0cnVjdHVyZWRQYXRjaH0gZnJvbSAnLi9jcmVhdGUnO1xuaW1wb3J0IHtwYXJzZVBhdGNofSBmcm9tICcuL3BhcnNlJztcblxuaW1wb3J0IHthcnJheUVxdWFsLCBhcnJheVN0YXJ0c1dpdGh9IGZyb20gJy4uL3V0aWwvYXJyYXknO1xuXG5leHBvcnQgZnVuY3Rpb24gY2FsY0xpbmVDb3VudChodW5rKSB7XG4gIGNvbnN0IHtvbGRMaW5lcywgbmV3TGluZXN9ID0gY2FsY09sZE5ld0xpbmVDb3VudChodW5rLmxpbmVzKTtcblxuICBpZiAob2xkTGluZXMgIT09IHVuZGVmaW5lZCkge1xuICAgIGh1bmsub2xkTGluZXMgPSBvbGRMaW5lcztcbiAgfSBlbHNlIHtcbiAgICBkZWxldGUgaHVuay5vbGRMaW5lcztcbiAgfVxuXG4gIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgaHVuay5uZXdMaW5lcyA9IG5ld0xpbmVzO1xuICB9IGVsc2Uge1xuICAgIGRlbGV0ZSBodW5rLm5ld0xpbmVzO1xuICB9XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBtZXJnZShtaW5lLCB0aGVpcnMsIGJhc2UpIHtcbiAgbWluZSA9IGxvYWRQYXRjaChtaW5lLCBiYXNlKTtcbiAgdGhlaXJzID0gbG9hZFBhdGNoKHRoZWlycywgYmFzZSk7XG5cbiAgbGV0IHJldCA9IHt9O1xuXG4gIC8vIEZvciBpbmRleCB3ZSBqdXN0IGxldCBpdCBwYXNzIHRocm91Z2ggYXMgaXQgZG9lc24ndCBoYXZlIGFueSBuZWNlc3NhcnkgbWVhbmluZy5cbiAgLy8gTGVhdmluZyBzYW5pdHkgY2hlY2tzIG9uIHRoaXMgdG8gdGhlIEFQSSBjb25zdW1lciB0aGF0IG1heSBrbm93IG1vcmUgYWJvdXQgdGhlXG4gIC8vIG1lYW5pbmcgaW4gdGhlaXIgb3duIGNvbnRleHQuXG4gIGlmIChtaW5lLmluZGV4IHx8IHRoZWlycy5pbmRleCkge1xuICAgIHJldC5pbmRleCA9IG1pbmUuaW5kZXggfHwgdGhlaXJzLmluZGV4O1xuICB9XG5cbiAgaWYgKG1pbmUubmV3RmlsZU5hbWUgfHwgdGhlaXJzLm5ld0ZpbGVOYW1lKSB7XG4gICAgaWYgKCFmaWxlTmFtZUNoYW5nZWQobWluZSkpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gb3VycywgdXNlIHRoZWlycyAoYW5kIG91cnMgaWYgdGhlaXJzIGRvZXMgbm90IGV4aXN0KVxuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gdGhlaXJzLm9sZEZpbGVOYW1lIHx8IG1pbmUub2xkRmlsZU5hbWU7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSB0aGVpcnMubmV3RmlsZU5hbWUgfHwgbWluZS5uZXdGaWxlTmFtZTtcbiAgICAgIHJldC5vbGRIZWFkZXIgPSB0aGVpcnMub2xkSGVhZGVyIHx8IG1pbmUub2xkSGVhZGVyO1xuICAgICAgcmV0Lm5ld0hlYWRlciA9IHRoZWlycy5uZXdIZWFkZXIgfHwgbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIGlmICghZmlsZU5hbWVDaGFuZ2VkKHRoZWlycykpIHtcbiAgICAgIC8vIE5vIGhlYWRlciBvciBubyBjaGFuZ2UgaW4gdGhlaXJzLCB1c2Ugb3Vyc1xuICAgICAgcmV0Lm9sZEZpbGVOYW1lID0gbWluZS5vbGRGaWxlTmFtZTtcbiAgICAgIHJldC5uZXdGaWxlTmFtZSA9IG1pbmUubmV3RmlsZU5hbWU7XG4gICAgICByZXQub2xkSGVhZGVyID0gbWluZS5vbGRIZWFkZXI7XG4gICAgICByZXQubmV3SGVhZGVyID0gbWluZS5uZXdIZWFkZXI7XG4gICAgfSBlbHNlIHtcbiAgICAgIC8vIEJvdGggY2hhbmdlZC4uLiBmaWd1cmUgaXQgb3V0XG4gICAgICByZXQub2xkRmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUub2xkRmlsZU5hbWUsIHRoZWlycy5vbGRGaWxlTmFtZSk7XG4gICAgICByZXQubmV3RmlsZU5hbWUgPSBzZWxlY3RGaWVsZChyZXQsIG1pbmUubmV3RmlsZU5hbWUsIHRoZWlycy5uZXdGaWxlTmFtZSk7XG4gICAgICByZXQub2xkSGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm9sZEhlYWRlciwgdGhlaXJzLm9sZEhlYWRlcik7XG4gICAgICByZXQubmV3SGVhZGVyID0gc2VsZWN0RmllbGQocmV0LCBtaW5lLm5ld0hlYWRlciwgdGhlaXJzLm5ld0hlYWRlcik7XG4gICAgfVxuICB9XG5cbiAgcmV0Lmh1bmtzID0gW107XG5cbiAgbGV0IG1pbmVJbmRleCA9IDAsXG4gICAgICB0aGVpcnNJbmRleCA9IDAsXG4gICAgICBtaW5lT2Zmc2V0ID0gMCxcbiAgICAgIHRoZWlyc09mZnNldCA9IDA7XG5cbiAgd2hpbGUgKG1pbmVJbmRleCA8IG1pbmUuaHVua3MubGVuZ3RoIHx8IHRoZWlyc0luZGV4IDwgdGhlaXJzLmh1bmtzLmxlbmd0aCkge1xuICAgIGxldCBtaW5lQ3VycmVudCA9IG1pbmUuaHVua3NbbWluZUluZGV4XSB8fCB7b2xkU3RhcnQ6IEluZmluaXR5fSxcbiAgICAgICAgdGhlaXJzQ3VycmVudCA9IHRoZWlycy5odW5rc1t0aGVpcnNJbmRleF0gfHwge29sZFN0YXJ0OiBJbmZpbml0eX07XG5cbiAgICBpZiAoaHVua0JlZm9yZShtaW5lQ3VycmVudCwgdGhlaXJzQ3VycmVudCkpIHtcbiAgICAgIC8vIFRoaXMgcGF0Y2ggZG9lcyBub3Qgb3ZlcmxhcCB3aXRoIGFueSBvZiB0aGUgb3RoZXJzLCB5YXkuXG4gICAgICByZXQuaHVua3MucHVzaChjbG9uZUh1bmsobWluZUN1cnJlbnQsIG1pbmVPZmZzZXQpKTtcbiAgICAgIG1pbmVJbmRleCsrO1xuICAgICAgdGhlaXJzT2Zmc2V0ICs9IG1pbmVDdXJyZW50Lm5ld0xpbmVzIC0gbWluZUN1cnJlbnQub2xkTGluZXM7XG4gICAgfSBlbHNlIGlmIChodW5rQmVmb3JlKHRoZWlyc0N1cnJlbnQsIG1pbmVDdXJyZW50KSkge1xuICAgICAgLy8gVGhpcyBwYXRjaCBkb2VzIG5vdCBvdmVybGFwIHdpdGggYW55IG9mIHRoZSBvdGhlcnMsIHlheS5cbiAgICAgIHJldC5odW5rcy5wdXNoKGNsb25lSHVuayh0aGVpcnNDdXJyZW50LCB0aGVpcnNPZmZzZXQpKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lT2Zmc2V0ICs9IHRoZWlyc0N1cnJlbnQubmV3TGluZXMgLSB0aGVpcnNDdXJyZW50Lm9sZExpbmVzO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBPdmVybGFwLCBtZXJnZSBhcyBiZXN0IHdlIGNhblxuICAgICAgbGV0IG1lcmdlZEh1bmsgPSB7XG4gICAgICAgIG9sZFN0YXJ0OiBNYXRoLm1pbihtaW5lQ3VycmVudC5vbGRTdGFydCwgdGhlaXJzQ3VycmVudC5vbGRTdGFydCksXG4gICAgICAgIG9sZExpbmVzOiAwLFxuICAgICAgICBuZXdTdGFydDogTWF0aC5taW4obWluZUN1cnJlbnQubmV3U3RhcnQgKyBtaW5lT2Zmc2V0LCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0ICsgdGhlaXJzT2Zmc2V0KSxcbiAgICAgICAgbmV3TGluZXM6IDAsXG4gICAgICAgIGxpbmVzOiBbXVxuICAgICAgfTtcbiAgICAgIG1lcmdlTGluZXMobWVyZ2VkSHVuaywgbWluZUN1cnJlbnQub2xkU3RhcnQsIG1pbmVDdXJyZW50LmxpbmVzLCB0aGVpcnNDdXJyZW50Lm9sZFN0YXJ0LCB0aGVpcnNDdXJyZW50LmxpbmVzKTtcbiAgICAgIHRoZWlyc0luZGV4Kys7XG4gICAgICBtaW5lSW5kZXgrKztcblxuICAgICAgcmV0Lmh1bmtzLnB1c2gobWVyZ2VkSHVuayk7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHJldDtcbn1cblxuZnVuY3Rpb24gbG9hZFBhdGNoKHBhcmFtLCBiYXNlKSB7XG4gIGlmICh0eXBlb2YgcGFyYW0gPT09ICdzdHJpbmcnKSB7XG4gICAgaWYgKC9eQEAvbS50ZXN0KHBhcmFtKSB8fCAoL15JbmRleDovbS50ZXN0KHBhcmFtKSkpIHtcbiAgICAgIHJldHVybiBwYXJzZVBhdGNoKHBhcmFtKVswXTtcbiAgICB9XG5cbiAgICBpZiAoIWJhc2UpIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignTXVzdCBwcm92aWRlIGEgYmFzZSByZWZlcmVuY2Ugb3IgcGFzcyBpbiBhIHBhdGNoJyk7XG4gICAgfVxuICAgIHJldHVybiBzdHJ1Y3R1cmVkUGF0Y2godW5kZWZpbmVkLCB1bmRlZmluZWQsIGJhc2UsIHBhcmFtKTtcbiAgfVxuXG4gIHJldHVybiBwYXJhbTtcbn1cblxuZnVuY3Rpb24gZmlsZU5hbWVDaGFuZ2VkKHBhdGNoKSB7XG4gIHJldHVybiBwYXRjaC5uZXdGaWxlTmFtZSAmJiBwYXRjaC5uZXdGaWxlTmFtZSAhPT0gcGF0Y2gub2xkRmlsZU5hbWU7XG59XG5cbmZ1bmN0aW9uIHNlbGVjdEZpZWxkKGluZGV4LCBtaW5lLCB0aGVpcnMpIHtcbiAgaWYgKG1pbmUgPT09IHRoZWlycykge1xuICAgIHJldHVybiBtaW5lO1xuICB9IGVsc2Uge1xuICAgIGluZGV4LmNvbmZsaWN0ID0gdHJ1ZTtcbiAgICByZXR1cm4ge21pbmUsIHRoZWlyc307XG4gIH1cbn1cblxuZnVuY3Rpb24gaHVua0JlZm9yZSh0ZXN0LCBjaGVjaykge1xuICByZXR1cm4gdGVzdC5vbGRTdGFydCA8IGNoZWNrLm9sZFN0YXJ0XG4gICAgJiYgKHRlc3Qub2xkU3RhcnQgKyB0ZXN0Lm9sZExpbmVzKSA8IGNoZWNrLm9sZFN0YXJ0O1xufVxuXG5mdW5jdGlvbiBjbG9uZUh1bmsoaHVuaywgb2Zmc2V0KSB7XG4gIHJldHVybiB7XG4gICAgb2xkU3RhcnQ6IGh1bmsub2xkU3RhcnQsIG9sZExpbmVzOiBodW5rLm9sZExpbmVzLFxuICAgIG5ld1N0YXJ0OiBodW5rLm5ld1N0YXJ0ICsgb2Zmc2V0LCBuZXdMaW5lczogaHVuay5uZXdMaW5lcyxcbiAgICBsaW5lczogaHVuay5saW5lc1xuICB9O1xufVxuXG5mdW5jdGlvbiBtZXJnZUxpbmVzKGh1bmssIG1pbmVPZmZzZXQsIG1pbmVMaW5lcywgdGhlaXJPZmZzZXQsIHRoZWlyTGluZXMpIHtcbiAgLy8gVGhpcyB3aWxsIGdlbmVyYWxseSByZXN1bHQgaW4gYSBjb25mbGljdGVkIGh1bmssIGJ1dCB0aGVyZSBhcmUgY2FzZXMgd2hlcmUgdGhlIGNvbnRleHRcbiAgLy8gaXMgdGhlIG9ubHkgb3ZlcmxhcCB3aGVyZSB3ZSBjYW4gc3VjY2Vzc2Z1bGx5IG1lcmdlIHRoZSBjb250ZW50IGhlcmUuXG4gIGxldCBtaW5lID0ge29mZnNldDogbWluZU9mZnNldCwgbGluZXM6IG1pbmVMaW5lcywgaW5kZXg6IDB9LFxuICAgICAgdGhlaXIgPSB7b2Zmc2V0OiB0aGVpck9mZnNldCwgbGluZXM6IHRoZWlyTGluZXMsIGluZGV4OiAwfTtcblxuICAvLyBIYW5kbGUgYW55IGxlYWRpbmcgY29udGVudFxuICBpbnNlcnRMZWFkaW5nKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgaW5zZXJ0TGVhZGluZyhodW5rLCB0aGVpciwgbWluZSk7XG5cbiAgLy8gTm93IGluIHRoZSBvdmVybGFwIGNvbnRlbnQuIFNjYW4gdGhyb3VnaCBhbmQgc2VsZWN0IHRoZSBiZXN0IGNoYW5nZXMgZnJvbSBlYWNoLlxuICB3aGlsZSAobWluZS5pbmRleCA8IG1pbmUubGluZXMubGVuZ3RoICYmIHRoZWlyLmluZGV4IDwgdGhlaXIubGluZXMubGVuZ3RoKSB7XG4gICAgbGV0IG1pbmVDdXJyZW50ID0gbWluZS5saW5lc1ttaW5lLmluZGV4XSxcbiAgICAgICAgdGhlaXJDdXJyZW50ID0gdGhlaXIubGluZXNbdGhlaXIuaW5kZXhdO1xuXG4gICAgaWYgKChtaW5lQ3VycmVudFswXSA9PT0gJy0nIHx8IG1pbmVDdXJyZW50WzBdID09PSAnKycpXG4gICAgICAgICYmICh0aGVpckN1cnJlbnRbMF0gPT09ICctJyB8fCB0aGVpckN1cnJlbnRbMF0gPT09ICcrJykpIHtcbiAgICAgIC8vIEJvdGggbW9kaWZpZWQgLi4uXG4gICAgICBtdXR1YWxDaGFuZ2UoaHVuaywgbWluZSwgdGhlaXIpO1xuICAgIH0gZWxzZSBpZiAobWluZUN1cnJlbnRbMF0gPT09ICcrJyAmJiB0aGVpckN1cnJlbnRbMF0gPT09ICcgJykge1xuICAgICAgLy8gTWluZSBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKG1pbmUpKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJysnICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlycyBpbnNlcnRlZFxuICAgICAgaHVuay5saW5lcy5wdXNoKC4uLiBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfSBlbHNlIGlmIChtaW5lQ3VycmVudFswXSA9PT0gJy0nICYmIHRoZWlyQ3VycmVudFswXSA9PT0gJyAnKSB7XG4gICAgICAvLyBNaW5lIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIG1pbmUsIHRoZWlyKTtcbiAgICB9IGVsc2UgaWYgKHRoZWlyQ3VycmVudFswXSA9PT0gJy0nICYmIG1pbmVDdXJyZW50WzBdID09PSAnICcpIHtcbiAgICAgIC8vIFRoZWlyIHJlbW92ZWQgb3IgZWRpdGVkXG4gICAgICByZW1vdmFsKGh1bmssIHRoZWlyLCBtaW5lLCB0cnVlKTtcbiAgICB9IGVsc2UgaWYgKG1pbmVDdXJyZW50ID09PSB0aGVpckN1cnJlbnQpIHtcbiAgICAgIC8vIENvbnRleHQgaWRlbnRpdHlcbiAgICAgIGh1bmsubGluZXMucHVzaChtaW5lQ3VycmVudCk7XG4gICAgICBtaW5lLmluZGV4Kys7XG4gICAgICB0aGVpci5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICAvLyBDb250ZXh0IG1pc21hdGNoXG4gICAgICBjb25mbGljdChodW5rLCBjb2xsZWN0Q2hhbmdlKG1pbmUpLCBjb2xsZWN0Q2hhbmdlKHRoZWlyKSk7XG4gICAgfVxuICB9XG5cbiAgLy8gTm93IHB1c2ggYW55dGhpbmcgdGhhdCBtYXkgYmUgcmVtYWluaW5nXG4gIGluc2VydFRyYWlsaW5nKGh1bmssIG1pbmUpO1xuICBpbnNlcnRUcmFpbGluZyhodW5rLCB0aGVpcik7XG5cbiAgY2FsY0xpbmVDb3VudChodW5rKTtcbn1cblxuZnVuY3Rpb24gbXV0dWFsQ2hhbmdlKGh1bmssIG1pbmUsIHRoZWlyKSB7XG4gIGxldCBteUNoYW5nZXMgPSBjb2xsZWN0Q2hhbmdlKG1pbmUpLFxuICAgICAgdGhlaXJDaGFuZ2VzID0gY29sbGVjdENoYW5nZSh0aGVpcik7XG5cbiAgaWYgKGFsbFJlbW92ZXMobXlDaGFuZ2VzKSAmJiBhbGxSZW1vdmVzKHRoZWlyQ2hhbmdlcykpIHtcbiAgICAvLyBTcGVjaWFsIGNhc2UgZm9yIHJlbW92ZSBjaGFuZ2VzIHRoYXQgYXJlIHN1cGVyc2V0cyBvZiBvbmUgYW5vdGhlclxuICAgIGlmIChhcnJheVN0YXJ0c1dpdGgobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpXG4gICAgICAgICYmIHNraXBSZW1vdmVTdXBlcnNldCh0aGVpciwgbXlDaGFuZ2VzLCBteUNoYW5nZXMubGVuZ3RoIC0gdGhlaXJDaGFuZ2VzLmxlbmd0aCkpIHtcbiAgICAgIGh1bmsubGluZXMucHVzaCguLi4gbXlDaGFuZ2VzKTtcbiAgICAgIHJldHVybjtcbiAgICB9IGVsc2UgaWYgKGFycmF5U3RhcnRzV2l0aCh0aGVpckNoYW5nZXMsIG15Q2hhbmdlcylcbiAgICAgICAgJiYgc2tpcFJlbW92ZVN1cGVyc2V0KG1pbmUsIHRoZWlyQ2hhbmdlcywgdGhlaXJDaGFuZ2VzLmxlbmd0aCAtIG15Q2hhbmdlcy5sZW5ndGgpKSB7XG4gICAgICBodW5rLmxpbmVzLnB1c2goLi4uIHRoZWlyQ2hhbmdlcyk7XG4gICAgICByZXR1cm47XG4gICAgfVxuICB9IGVsc2UgaWYgKGFycmF5RXF1YWwobXlDaGFuZ2VzLCB0aGVpckNoYW5nZXMpKSB7XG4gICAgaHVuay5saW5lcy5wdXNoKC4uLiBteUNoYW5nZXMpO1xuICAgIHJldHVybjtcbiAgfVxuXG4gIGNvbmZsaWN0KGh1bmssIG15Q2hhbmdlcywgdGhlaXJDaGFuZ2VzKTtcbn1cblxuZnVuY3Rpb24gcmVtb3ZhbChodW5rLCBtaW5lLCB0aGVpciwgc3dhcCkge1xuICBsZXQgbXlDaGFuZ2VzID0gY29sbGVjdENoYW5nZShtaW5lKSxcbiAgICAgIHRoZWlyQ2hhbmdlcyA9IGNvbGxlY3RDb250ZXh0KHRoZWlyLCBteUNoYW5nZXMpO1xuICBpZiAodGhlaXJDaGFuZ2VzLm1lcmdlZCkge1xuICAgIGh1bmsubGluZXMucHVzaCguLi4gdGhlaXJDaGFuZ2VzLm1lcmdlZCk7XG4gIH0gZWxzZSB7XG4gICAgY29uZmxpY3QoaHVuaywgc3dhcCA/IHRoZWlyQ2hhbmdlcyA6IG15Q2hhbmdlcywgc3dhcCA/IG15Q2hhbmdlcyA6IHRoZWlyQ2hhbmdlcyk7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uZmxpY3QoaHVuaywgbWluZSwgdGhlaXIpIHtcbiAgaHVuay5jb25mbGljdCA9IHRydWU7XG4gIGh1bmsubGluZXMucHVzaCh7XG4gICAgY29uZmxpY3Q6IHRydWUsXG4gICAgbWluZTogbWluZSxcbiAgICB0aGVpcnM6IHRoZWlyXG4gIH0pO1xufVxuXG5mdW5jdGlvbiBpbnNlcnRMZWFkaW5nKGh1bmssIGluc2VydCwgdGhlaXIpIHtcbiAgd2hpbGUgKGluc2VydC5vZmZzZXQgPCB0aGVpci5vZmZzZXQgJiYgaW5zZXJ0LmluZGV4IDwgaW5zZXJ0LmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBsaW5lID0gaW5zZXJ0LmxpbmVzW2luc2VydC5pbmRleCsrXTtcbiAgICBodW5rLmxpbmVzLnB1c2gobGluZSk7XG4gICAgaW5zZXJ0Lm9mZnNldCsrO1xuICB9XG59XG5mdW5jdGlvbiBpbnNlcnRUcmFpbGluZyhodW5rLCBpbnNlcnQpIHtcbiAgd2hpbGUgKGluc2VydC5pbmRleCA8IGluc2VydC5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IGluc2VydC5saW5lc1tpbnNlcnQuaW5kZXgrK107XG4gICAgaHVuay5saW5lcy5wdXNoKGxpbmUpO1xuICB9XG59XG5cbmZ1bmN0aW9uIGNvbGxlY3RDaGFuZ2Uoc3RhdGUpIHtcbiAgbGV0IHJldCA9IFtdLFxuICAgICAgb3BlcmF0aW9uID0gc3RhdGUubGluZXNbc3RhdGUuaW5kZXhdWzBdO1xuICB3aGlsZSAoc3RhdGUuaW5kZXggPCBzdGF0ZS5saW5lcy5sZW5ndGgpIHtcbiAgICBsZXQgbGluZSA9IHN0YXRlLmxpbmVzW3N0YXRlLmluZGV4XTtcblxuICAgIC8vIEdyb3VwIGFkZGl0aW9ucyB0aGF0IGFyZSBpbW1lZGlhdGVseSBhZnRlciBzdWJ0cmFjdGlvbnMgYW5kIHRyZWF0IHRoZW0gYXMgb25lIFwiYXRvbWljXCIgbW9kaWZ5IGNoYW5nZS5cbiAgICBpZiAob3BlcmF0aW9uID09PSAnLScgJiYgbGluZVswXSA9PT0gJysnKSB7XG4gICAgICBvcGVyYXRpb24gPSAnKyc7XG4gICAgfVxuXG4gICAgaWYgKG9wZXJhdGlvbiA9PT0gbGluZVswXSkge1xuICAgICAgcmV0LnB1c2gobGluZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBicmVhaztcbiAgICB9XG4gIH1cblxuICByZXR1cm4gcmV0O1xufVxuZnVuY3Rpb24gY29sbGVjdENvbnRleHQoc3RhdGUsIG1hdGNoQ2hhbmdlcykge1xuICBsZXQgY2hhbmdlcyA9IFtdLFxuICAgICAgbWVyZ2VkID0gW10sXG4gICAgICBtYXRjaEluZGV4ID0gMCxcbiAgICAgIGNvbnRleHRDaGFuZ2VzID0gZmFsc2UsXG4gICAgICBjb25mbGljdGVkID0gZmFsc2U7XG4gIHdoaWxlIChtYXRjaEluZGV4IDwgbWF0Y2hDaGFuZ2VzLmxlbmd0aFxuICAgICAgICAmJiBzdGF0ZS5pbmRleCA8IHN0YXRlLmxpbmVzLmxlbmd0aCkge1xuICAgIGxldCBjaGFuZ2UgPSBzdGF0ZS5saW5lc1tzdGF0ZS5pbmRleF0sXG4gICAgICAgIG1hdGNoID0gbWF0Y2hDaGFuZ2VzW21hdGNoSW5kZXhdO1xuXG4gICAgLy8gT25jZSB3ZSd2ZSBoaXQgb3VyIGFkZCwgdGhlbiB3ZSBhcmUgZG9uZVxuICAgIGlmIChtYXRjaFswXSA9PT0gJysnKSB7XG4gICAgICBicmVhaztcbiAgICB9XG5cbiAgICBjb250ZXh0Q2hhbmdlcyA9IGNvbnRleHRDaGFuZ2VzIHx8IGNoYW5nZVswXSAhPT0gJyAnO1xuXG4gICAgbWVyZ2VkLnB1c2gobWF0Y2gpO1xuICAgIG1hdGNoSW5kZXgrKztcblxuICAgIC8vIENvbnN1bWUgYW55IGFkZGl0aW9ucyBpbiB0aGUgb3RoZXIgYmxvY2sgYXMgYSBjb25mbGljdCB0byBhdHRlbXB0XG4gICAgLy8gdG8gcHVsbCBpbiB0aGUgcmVtYWluaW5nIGNvbnRleHQgYWZ0ZXIgdGhpc1xuICAgIGlmIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgY29uZmxpY3RlZCA9IHRydWU7XG5cbiAgICAgIHdoaWxlIChjaGFuZ2VbMF0gPT09ICcrJykge1xuICAgICAgICBjaGFuZ2VzLnB1c2goY2hhbmdlKTtcbiAgICAgICAgY2hhbmdlID0gc3RhdGUubGluZXNbKytzdGF0ZS5pbmRleF07XG4gICAgICB9XG4gICAgfVxuXG4gICAgaWYgKG1hdGNoLnN1YnN0cigxKSA9PT0gY2hhbmdlLnN1YnN0cigxKSkge1xuICAgICAgY2hhbmdlcy5wdXNoKGNoYW5nZSk7XG4gICAgICBzdGF0ZS5pbmRleCsrO1xuICAgIH0gZWxzZSB7XG4gICAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgICB9XG4gIH1cblxuICBpZiAoKG1hdGNoQ2hhbmdlc1ttYXRjaEluZGV4XSB8fCAnJylbMF0gPT09ICcrJ1xuICAgICAgJiYgY29udGV4dENoYW5nZXMpIHtcbiAgICBjb25mbGljdGVkID0gdHJ1ZTtcbiAgfVxuXG4gIGlmIChjb25mbGljdGVkKSB7XG4gICAgcmV0dXJuIGNoYW5nZXM7XG4gIH1cblxuICB3aGlsZSAobWF0Y2hJbmRleCA8IG1hdGNoQ2hhbmdlcy5sZW5ndGgpIHtcbiAgICBtZXJnZWQucHVzaChtYXRjaENoYW5nZXNbbWF0Y2hJbmRleCsrXSk7XG4gIH1cblxuICByZXR1cm4ge1xuICAgIG1lcmdlZCxcbiAgICBjaGFuZ2VzXG4gIH07XG59XG5cbmZ1bmN0aW9uIGFsbFJlbW92ZXMoY2hhbmdlcykge1xuICByZXR1cm4gY2hhbmdlcy5yZWR1Y2UoZnVuY3Rpb24ocHJldiwgY2hhbmdlKSB7XG4gICAgcmV0dXJuIHByZXYgJiYgY2hhbmdlWzBdID09PSAnLSc7XG4gIH0sIHRydWUpO1xufVxuZnVuY3Rpb24gc2tpcFJlbW92ZVN1cGVyc2V0KHN0YXRlLCByZW1vdmVDaGFuZ2VzLCBkZWx0YSkge1xuICBmb3IgKGxldCBpID0gMDsgaSA8IGRlbHRhOyBpKyspIHtcbiAgICBsZXQgY2hhbmdlQ29udGVudCA9IHJlbW92ZUNoYW5nZXNbcmVtb3ZlQ2hhbmdlcy5sZW5ndGggLSBkZWx0YSArIGldLnN1YnN0cigxKTtcbiAgICBpZiAoc3RhdGUubGluZXNbc3RhdGUuaW5kZXggKyBpXSAhPT0gJyAnICsgY2hhbmdlQ29udGVudCkge1xuICAgICAgcmV0dXJuIGZhbHNlO1xuICAgIH1cbiAgfVxuXG4gIHN0YXRlLmluZGV4ICs9IGRlbHRhO1xuICByZXR1cm4gdHJ1ZTtcbn1cblxuZnVuY3Rpb24gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lcykge1xuICBsZXQgb2xkTGluZXMgPSAwO1xuICBsZXQgbmV3TGluZXMgPSAwO1xuXG4gIGxpbmVzLmZvckVhY2goZnVuY3Rpb24obGluZSkge1xuICAgIGlmICh0eXBlb2YgbGluZSAhPT0gJ3N0cmluZycpIHtcbiAgICAgIGxldCBteUNvdW50ID0gY2FsY09sZE5ld0xpbmVDb3VudChsaW5lLm1pbmUpO1xuICAgICAgbGV0IHRoZWlyQ291bnQgPSBjYWxjT2xkTmV3TGluZUNvdW50KGxpbmUudGhlaXJzKTtcblxuICAgICAgaWYgKG9sZExpbmVzICE9PSB1bmRlZmluZWQpIHtcbiAgICAgICAgaWYgKG15Q291bnQub2xkTGluZXMgPT09IHRoZWlyQ291bnQub2xkTGluZXMpIHtcbiAgICAgICAgICBvbGRMaW5lcyArPSBteUNvdW50Lm9sZExpbmVzO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIG9sZExpbmVzID0gdW5kZWZpbmVkO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIGlmIChuZXdMaW5lcyAhPT0gdW5kZWZpbmVkKSB7XG4gICAgICAgIGlmIChteUNvdW50Lm5ld0xpbmVzID09PSB0aGVpckNvdW50Lm5ld0xpbmVzKSB7XG4gICAgICAgICAgbmV3TGluZXMgKz0gbXlDb3VudC5uZXdMaW5lcztcbiAgICAgICAgfSBlbHNlIHtcbiAgICAgICAgICBuZXdMaW5lcyA9IHVuZGVmaW5lZDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH0gZWxzZSB7XG4gICAgICBpZiAobmV3TGluZXMgIT09IHVuZGVmaW5lZCAmJiAobGluZVswXSA9PT0gJysnIHx8IGxpbmVbMF0gPT09ICcgJykpIHtcbiAgICAgICAgbmV3TGluZXMrKztcbiAgICAgIH1cbiAgICAgIGlmIChvbGRMaW5lcyAhPT0gdW5kZWZpbmVkICYmIChsaW5lWzBdID09PSAnLScgfHwgbGluZVswXSA9PT0gJyAnKSkge1xuICAgICAgICBvbGRMaW5lcysrO1xuICAgICAgfVxuICAgIH1cbiAgfSk7XG5cbiAgcmV0dXJuIHtvbGRMaW5lcywgbmV3TGluZXN9O1xufVxuIl19
-
-
-/***/ }),
-/* 14 */
-/***/ (function(module, exports, __webpack_require__) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/structuredPatch = structuredPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/createTwoFilesPatch = createTwoFilesPatch;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/createPatch = createPatch;
-
- var /*istanbul ignore start*/_line = __webpack_require__(5) /*istanbul ignore end*/;
-
- /*istanbul ignore start*/function _toConsumableArray(arr) { if (Array.isArray(arr)) { for (var i = 0, arr2 = Array(arr.length); i < arr.length; i++) { arr2[i] = arr[i]; } return arr2; } else { return Array.from(arr); } }
-
- /*istanbul ignore end*/function structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
- if (!options) {
- options = {};
- }
- if (typeof options.context === 'undefined') {
- options.context = 4;
- }
-
- var diff = /*istanbul ignore start*/(0, _line.diffLines) /*istanbul ignore end*/(oldStr, newStr, options);
- diff.push({ value: '', lines: [] }); // Append an empty value to make cleanup easier
-
- function contextLines(lines) {
- return lines.map(function (entry) {
- return ' ' + entry;
- });
- }
-
- var hunks = [];
- var oldRangeStart = 0,
- newRangeStart = 0,
- curRange = [],
- oldLine = 1,
- newLine = 1;
-
- /*istanbul ignore start*/var _loop = function _loop( /*istanbul ignore end*/i) {
- var current = diff[i],
- lines = current.lines || current.value.replace(/\n$/, '').split('\n');
- current.lines = lines;
-
- if (current.added || current.removed) {
- /*istanbul ignore start*/var _curRange;
-
- /*istanbul ignore end*/ // If we have previous context, start with that
- if (!oldRangeStart) {
- var prev = diff[i - 1];
- oldRangeStart = oldLine;
- newRangeStart = newLine;
-
- if (prev) {
- curRange = options.context > 0 ? contextLines(prev.lines.slice(-options.context)) : [];
- oldRangeStart -= curRange.length;
- newRangeStart -= curRange.length;
- }
- }
-
- // Output our changes
- /*istanbul ignore start*/(_curRange = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/lines.map(function (entry) {
- return (current.added ? '+' : '-') + entry;
- })));
-
- // Track the updated file position
- if (current.added) {
- newLine += lines.length;
- } else {
- oldLine += lines.length;
- }
- } else {
- // Identical context lines. Track line changes
- if (oldRangeStart) {
- // Close out any changes that have been output (or join overlapping)
- if (lines.length <= options.context * 2 && i < diff.length - 2) {
- /*istanbul ignore start*/var _curRange2;
-
- /*istanbul ignore end*/ // Overlapping
- /*istanbul ignore start*/(_curRange2 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange2 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines)));
- } else {
- /*istanbul ignore start*/var _curRange3;
-
- /*istanbul ignore end*/ // end the range and output
- var contextSize = Math.min(lines.length, options.context);
- /*istanbul ignore start*/(_curRange3 = /*istanbul ignore end*/curRange).push. /*istanbul ignore start*/apply /*istanbul ignore end*/( /*istanbul ignore start*/_curRange3 /*istanbul ignore end*/, /*istanbul ignore start*/_toConsumableArray( /*istanbul ignore end*/contextLines(lines.slice(0, contextSize))));
-
- var hunk = {
- oldStart: oldRangeStart,
- oldLines: oldLine - oldRangeStart + contextSize,
- newStart: newRangeStart,
- newLines: newLine - newRangeStart + contextSize,
- lines: curRange
- };
- if (i >= diff.length - 2 && lines.length <= options.context) {
- // EOF is inside this hunk
- var oldEOFNewline = /\n$/.test(oldStr);
- var newEOFNewline = /\n$/.test(newStr);
- if (lines.length == 0 && !oldEOFNewline) {
- // special case: old has no eol and no trailing context; no-nl can end up before adds
- curRange.splice(hunk.oldLines, 0, '\\ No newline at end of file');
- } else if (!oldEOFNewline || !newEOFNewline) {
- curRange.push('\\ No newline at end of file');
- }
- }
- hunks.push(hunk);
-
- oldRangeStart = 0;
- newRangeStart = 0;
- curRange = [];
- }
- }
- oldLine += lines.length;
- newLine += lines.length;
- }
- };
-
- for (var i = 0; i < diff.length; i++) {
- /*istanbul ignore start*/_loop( /*istanbul ignore end*/i);
- }
-
- return {
- oldFileName: oldFileName, newFileName: newFileName,
- oldHeader: oldHeader, newHeader: newHeader,
- hunks: hunks
- };
- }
-
- function createTwoFilesPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options) {
- var diff = structuredPatch(oldFileName, newFileName, oldStr, newStr, oldHeader, newHeader, options);
-
- var ret = [];
- if (oldFileName == newFileName) {
- ret.push('Index: ' + oldFileName);
- }
- ret.push('===================================================================');
- ret.push('--- ' + diff.oldFileName + (typeof diff.oldHeader === 'undefined' ? '' : '\t' + diff.oldHeader));
- ret.push('+++ ' + diff.newFileName + (typeof diff.newHeader === 'undefined' ? '' : '\t' + diff.newHeader));
-
- for (var i = 0; i < diff.hunks.length; i++) {
- var hunk = diff.hunks[i];
- ret.push('@@ -' + hunk.oldStart + ',' + hunk.oldLines + ' +' + hunk.newStart + ',' + hunk.newLines + ' @@');
- ret.push.apply(ret, hunk.lines);
- }
-
- return ret.join('\n') + '\n';
- }
-
- function createPatch(fileName, oldStr, newStr, oldHeader, newHeader, options) {
- return createTwoFilesPatch(fileName, fileName, oldStr, newStr, oldHeader, newHeader, options);
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9wYXRjaC9jcmVhdGUuanMiXSwibmFtZXMiOlsic3RydWN0dXJlZFBhdGNoIiwiY3JlYXRlVHdvRmlsZXNQYXRjaCIsImNyZWF0ZVBhdGNoIiwib2xkRmlsZU5hbWUiLCJuZXdGaWxlTmFtZSIsIm9sZFN0ciIsIm5ld1N0ciIsIm9sZEhlYWRlciIsIm5ld0hlYWRlciIsIm9wdGlvbnMiLCJjb250ZXh0IiwiZGlmZiIsInB1c2giLCJ2YWx1ZSIsImxpbmVzIiwiY29udGV4dExpbmVzIiwibWFwIiwiZW50cnkiLCJodW5rcyIsIm9sZFJhbmdlU3RhcnQiLCJuZXdSYW5nZVN0YXJ0IiwiY3VyUmFuZ2UiLCJvbGRMaW5lIiwibmV3TGluZSIsImkiLCJjdXJyZW50IiwicmVwbGFjZSIsInNwbGl0IiwiYWRkZWQiLCJyZW1vdmVkIiwicHJldiIsInNsaWNlIiwibGVuZ3RoIiwiY29udGV4dFNpemUiLCJNYXRoIiwibWluIiwiaHVuayIsIm9sZFN0YXJ0Iiwib2xkTGluZXMiLCJuZXdTdGFydCIsIm5ld0xpbmVzIiwib2xkRU9GTmV3bGluZSIsInRlc3QiLCJuZXdFT0ZOZXdsaW5lIiwic3BsaWNlIiwicmV0IiwiYXBwbHkiLCJqb2luIiwiZmlsZU5hbWUiXSwibWFwcGluZ3MiOiI7OztnQ0FFZ0JBLGUsR0FBQUEsZTt5REFpR0FDLG1CLEdBQUFBLG1CO3lEQXdCQUMsVyxHQUFBQSxXOztBQTNIaEI7Ozs7dUJBRU8sU0FBU0YsZUFBVCxDQUF5QkcsV0FBekIsRUFBc0NDLFdBQXRDLEVBQW1EQyxNQUFuRCxFQUEyREMsTUFBM0QsRUFBbUVDLFNBQW5FLEVBQThFQyxTQUE5RSxFQUF5RkMsT0FBekYsRUFBa0c7QUFDdkcsTUFBSSxDQUFDQSxPQUFMLEVBQWM7QUFDWkEsY0FBVSxFQUFWO0FBQ0Q7QUFDRCxNQUFJLE9BQU9BLFFBQVFDLE9BQWYsS0FBMkIsV0FBL0IsRUFBNEM7QUFDMUNELFlBQVFDLE9BQVIsR0FBa0IsQ0FBbEI7QUFDRDs7QUFFRCxNQUFNQyxPQUFPLHNFQUFVTixNQUFWLEVBQWtCQyxNQUFsQixFQUEwQkcsT0FBMUIsQ0FBYjtBQUNBRSxPQUFLQyxJQUFMLENBQVUsRUFBQ0MsT0FBTyxFQUFSLEVBQVlDLE9BQU8sRUFBbkIsRUFBVixFQVR1RyxDQVNsRTs7QUFFckMsV0FBU0MsWUFBVCxDQUFzQkQsS0FBdEIsRUFBNkI7QUFDM0IsV0FBT0EsTUFBTUUsR0FBTixDQUFVLFVBQVNDLEtBQVQsRUFBZ0I7QUFBRSxhQUFPLE1BQU1BLEtBQWI7QUFBcUIsS0FBakQsQ0FBUDtBQUNEOztBQUVELE1BQUlDLFFBQVEsRUFBWjtBQUNBLE1BQUlDLGdCQUFnQixDQUFwQjtBQUFBLE1BQXVCQyxnQkFBZ0IsQ0FBdkM7QUFBQSxNQUEwQ0MsV0FBVyxFQUFyRDtBQUFBLE1BQ0lDLFVBQVUsQ0FEZDtBQUFBLE1BQ2lCQyxVQUFVLENBRDNCOztBQWhCdUcsOEVBa0I5RkMsQ0FsQjhGO0FBbUJyRyxRQUFNQyxVQUFVZCxLQUFLYSxDQUFMLENBQWhCO0FBQUEsUUFDTVYsUUFBUVcsUUFBUVgsS0FBUixJQUFpQlcsUUFBUVosS0FBUixDQUFjYSxPQUFkLENBQXNCLEtBQXRCLEVBQTZCLEVBQTdCLEVBQWlDQyxLQUFqQyxDQUF1QyxJQUF2QyxDQUQvQjtBQUVBRixZQUFRWCxLQUFSLEdBQWdCQSxLQUFoQjs7QUFFQSxRQUFJVyxRQUFRRyxLQUFSLElBQWlCSCxRQUFRSSxPQUE3QixFQUFzQztBQUFBOztBQUFBLDhCQUNwQztBQUNBLFVBQUksQ0FBQ1YsYUFBTCxFQUFvQjtBQUNsQixZQUFNVyxPQUFPbkIsS0FBS2EsSUFBSSxDQUFULENBQWI7QUFDQUwsd0JBQWdCRyxPQUFoQjtBQUNBRix3QkFBZ0JHLE9BQWhCOztBQUVBLFlBQUlPLElBQUosRUFBVTtBQUNSVCxxQkFBV1osUUFBUUMsT0FBUixHQUFrQixDQUFsQixHQUFzQkssYUFBYWUsS0FBS2hCLEtBQUwsQ0FBV2lCLEtBQVgsQ0FBaUIsQ0FBQ3RCLFFBQVFDLE9BQTFCLENBQWIsQ0FBdEIsR0FBeUUsRUFBcEY7QUFDQVMsMkJBQWlCRSxTQUFTVyxNQUExQjtBQUNBWiwyQkFBaUJDLFNBQVNXLE1BQTFCO0FBQ0Q7QUFDRjs7QUFFRDtBQUNBLDZFQUFTcEIsSUFBVCwwTEFBa0JFLE1BQU1FLEdBQU4sQ0FBVSxVQUFTQyxLQUFULEVBQWdCO0FBQzFDLGVBQU8sQ0FBQ1EsUUFBUUcsS0FBUixHQUFnQixHQUFoQixHQUFzQixHQUF2QixJQUE4QlgsS0FBckM7QUFDRCxPQUZpQixDQUFsQjs7QUFJQTtBQUNBLFVBQUlRLFFBQVFHLEtBQVosRUFBbUI7QUFDakJMLG1CQUFXVCxNQUFNa0IsTUFBakI7QUFDRCxPQUZELE1BRU87QUFDTFYsbUJBQVdSLE1BQU1rQixNQUFqQjtBQUNEO0FBQ0YsS0F6QkQsTUF5Qk87QUFDTDtBQUNBLFVBQUliLGFBQUosRUFBbUI7QUFDakI7QUFDQSxZQUFJTCxNQUFNa0IsTUFBTixJQUFnQnZCLFFBQVFDLE9BQVIsR0FBa0IsQ0FBbEMsSUFBdUNjLElBQUliLEtBQUtxQixNQUFMLEdBQWMsQ0FBN0QsRUFBZ0U7QUFBQTs7QUFBQSxrQ0FDOUQ7QUFDQSxrRkFBU3BCLElBQVQsMkxBQWtCRyxhQUFhRCxLQUFiLENBQWxCO0FBQ0QsU0FIRCxNQUdPO0FBQUE7O0FBQUEsa0NBQ0w7QUFDQSxjQUFJbUIsY0FBY0MsS0FBS0MsR0FBTCxDQUFTckIsTUFBTWtCLE1BQWYsRUFBdUJ2QixRQUFRQyxPQUEvQixDQUFsQjtBQUNBLGtGQUFTRSxJQUFULDJMQUFrQkcsYUFBYUQsTUFBTWlCLEtBQU4sQ0FBWSxDQUFaLEVBQWVFLFdBQWYsQ0FBYixDQUFsQjs7QUFFQSxjQUFJRyxPQUFPO0FBQ1RDLHNCQUFVbEIsYUFERDtBQUVUbUIsc0JBQVdoQixVQUFVSCxhQUFWLEdBQTBCYyxXQUY1QjtBQUdUTSxzQkFBVW5CLGFBSEQ7QUFJVG9CLHNCQUFXakIsVUFBVUgsYUFBVixHQUEwQmEsV0FKNUI7QUFLVG5CLG1CQUFPTztBQUxFLFdBQVg7QUFPQSxjQUFJRyxLQUFLYixLQUFLcUIsTUFBTCxHQUFjLENBQW5CLElBQXdCbEIsTUFBTWtCLE1BQU4sSUFBZ0J2QixRQUFRQyxPQUFwRCxFQUE2RDtBQUMzRDtBQUNBLGdCQUFJK0IsZ0JBQWlCLE1BQU1DLElBQU4sQ0FBV3JDLE1BQVgsQ0FBckI7QUFDQSxnQkFBSXNDLGdCQUFpQixNQUFNRCxJQUFOLENBQVdwQyxNQUFYLENBQXJCO0FBQ0EsZ0JBQUlRLE1BQU1rQixNQUFOLElBQWdCLENBQWhCLElBQXFCLENBQUNTLGFBQTFCLEVBQXlDO0FBQ3ZDO0FBQ0FwQix1QkFBU3VCLE1BQVQsQ0FBZ0JSLEtBQUtFLFFBQXJCLEVBQStCLENBQS9CLEVBQWtDLDhCQUFsQztBQUNELGFBSEQsTUFHTyxJQUFJLENBQUNHLGFBQUQsSUFBa0IsQ0FBQ0UsYUFBdkIsRUFBc0M7QUFDM0N0Qix1QkFBU1QsSUFBVCxDQUFjLDhCQUFkO0FBQ0Q7QUFDRjtBQUNETSxnQkFBTU4sSUFBTixDQUFXd0IsSUFBWDs7QUFFQWpCLDBCQUFnQixDQUFoQjtBQUNBQywwQkFBZ0IsQ0FBaEI7QUFDQUMscUJBQVcsRUFBWDtBQUNEO0FBQ0Y7QUFDREMsaUJBQVdSLE1BQU1rQixNQUFqQjtBQUNBVCxpQkFBV1QsTUFBTWtCLE1BQWpCO0FBQ0Q7QUF2Rm9HOztBQWtCdkcsT0FBSyxJQUFJUixJQUFJLENBQWIsRUFBZ0JBLElBQUliLEtBQUtxQixNQUF6QixFQUFpQ1IsR0FBakMsRUFBc0M7QUFBQSwyREFBN0JBLENBQTZCO0FBc0VyQzs7QUFFRCxTQUFPO0FBQ0xyQixpQkFBYUEsV0FEUixFQUNxQkMsYUFBYUEsV0FEbEM7QUFFTEcsZUFBV0EsU0FGTixFQUVpQkMsV0FBV0EsU0FGNUI7QUFHTFUsV0FBT0E7QUFIRixHQUFQO0FBS0Q7O0FBRU0sU0FBU2pCLG1CQUFULENBQTZCRSxXQUE3QixFQUEwQ0MsV0FBMUMsRUFBdURDLE1BQXZELEVBQStEQyxNQUEvRCxFQUF1RUMsU0FBdkUsRUFBa0ZDLFNBQWxGLEVBQTZGQyxPQUE3RixFQUFzRztBQUMzRyxNQUFNRSxPQUFPWCxnQkFBZ0JHLFdBQWhCLEVBQTZCQyxXQUE3QixFQUEwQ0MsTUFBMUMsRUFBa0RDLE1BQWxELEVBQTBEQyxTQUExRCxFQUFxRUMsU0FBckUsRUFBZ0ZDLE9BQWhGLENBQWI7O0FBRUEsTUFBTW9DLE1BQU0sRUFBWjtBQUNBLE1BQUkxQyxlQUFlQyxXQUFuQixFQUFnQztBQUM5QnlDLFFBQUlqQyxJQUFKLENBQVMsWUFBWVQsV0FBckI7QUFDRDtBQUNEMEMsTUFBSWpDLElBQUosQ0FBUyxxRUFBVDtBQUNBaUMsTUFBSWpDLElBQUosQ0FBUyxTQUFTRCxLQUFLUixXQUFkLElBQTZCLE9BQU9RLEtBQUtKLFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0ksS0FBS0osU0FBdEYsQ0FBVDtBQUNBc0MsTUFBSWpDLElBQUosQ0FBUyxTQUFTRCxLQUFLUCxXQUFkLElBQTZCLE9BQU9PLEtBQUtILFNBQVosS0FBMEIsV0FBMUIsR0FBd0MsRUFBeEMsR0FBNkMsT0FBT0csS0FBS0gsU0FBdEYsQ0FBVDs7QUFFQSxPQUFLLElBQUlnQixJQUFJLENBQWIsRUFBZ0JBLElBQUliLEtBQUtPLEtBQUwsQ0FBV2MsTUFBL0IsRUFBdUNSLEdBQXZDLEVBQTRDO0FBQzFDLFFBQU1ZLE9BQU96QixLQUFLTyxLQUFMLENBQVdNLENBQVgsQ0FBYjtBQUNBcUIsUUFBSWpDLElBQUosQ0FDRSxTQUFTd0IsS0FBS0MsUUFBZCxHQUF5QixHQUF6QixHQUErQkQsS0FBS0UsUUFBcEMsR0FDRSxJQURGLEdBQ1NGLEtBQUtHLFFBRGQsR0FDeUIsR0FEekIsR0FDK0JILEtBQUtJLFFBRHBDLEdBRUUsS0FISjtBQUtBSyxRQUFJakMsSUFBSixDQUFTa0MsS0FBVCxDQUFlRCxHQUFmLEVBQW9CVCxLQUFLdEIsS0FBekI7QUFDRDs7QUFFRCxTQUFPK0IsSUFBSUUsSUFBSixDQUFTLElBQVQsSUFBaUIsSUFBeEI7QUFDRDs7QUFFTSxTQUFTN0MsV0FBVCxDQUFxQjhDLFFBQXJCLEVBQStCM0MsTUFBL0IsRUFBdUNDLE1BQXZDLEVBQStDQyxTQUEvQyxFQUEwREMsU0FBMUQsRUFBcUVDLE9BQXJFLEVBQThFO0FBQ25GLFNBQU9SLG9CQUFvQitDLFFBQXBCLEVBQThCQSxRQUE5QixFQUF3QzNDLE1BQXhDLEVBQWdEQyxNQUFoRCxFQUF3REMsU0FBeEQsRUFBbUVDLFNBQW5FLEVBQThFQyxPQUE5RSxDQUFQO0FBQ0QiLCJmaWxlIjoiY3JlYXRlLmpzIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtkaWZmTGluZXN9IGZyb20gJy4uL2RpZmYvbGluZSc7XG5cbmV4cG9ydCBmdW5jdGlvbiBzdHJ1Y3R1cmVkUGF0Y2gob2xkRmlsZU5hbWUsIG5ld0ZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgaWYgKCFvcHRpb25zKSB7XG4gICAgb3B0aW9ucyA9IHt9O1xuICB9XG4gIGlmICh0eXBlb2Ygb3B0aW9ucy5jb250ZXh0ID09PSAndW5kZWZpbmVkJykge1xuICAgIG9wdGlvbnMuY29udGV4dCA9IDQ7XG4gIH1cblxuICBjb25zdCBkaWZmID0gZGlmZkxpbmVzKG9sZFN0ciwgbmV3U3RyLCBvcHRpb25zKTtcbiAgZGlmZi5wdXNoKHt2YWx1ZTogJycsIGxpbmVzOiBbXX0pOyAgIC8vIEFwcGVuZCBhbiBlbXB0eSB2YWx1ZSB0byBtYWtlIGNsZWFudXAgZWFzaWVyXG5cbiAgZnVuY3Rpb24gY29udGV4dExpbmVzKGxpbmVzKSB7XG4gICAgcmV0dXJuIGxpbmVzLm1hcChmdW5jdGlvbihlbnRyeSkgeyByZXR1cm4gJyAnICsgZW50cnk7IH0pO1xuICB9XG5cbiAgbGV0IGh1bmtzID0gW107XG4gIGxldCBvbGRSYW5nZVN0YXJ0ID0gMCwgbmV3UmFuZ2VTdGFydCA9IDAsIGN1clJhbmdlID0gW10sXG4gICAgICBvbGRMaW5lID0gMSwgbmV3TGluZSA9IDE7XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgZGlmZi5sZW5ndGg7IGkrKykge1xuICAgIGNvbnN0IGN1cnJlbnQgPSBkaWZmW2ldLFxuICAgICAgICAgIGxpbmVzID0gY3VycmVudC5saW5lcyB8fCBjdXJyZW50LnZhbHVlLnJlcGxhY2UoL1xcbiQvLCAnJykuc3BsaXQoJ1xcbicpO1xuICAgIGN1cnJlbnQubGluZXMgPSBsaW5lcztcblxuICAgIGlmIChjdXJyZW50LmFkZGVkIHx8IGN1cnJlbnQucmVtb3ZlZCkge1xuICAgICAgLy8gSWYgd2UgaGF2ZSBwcmV2aW91cyBjb250ZXh0LCBzdGFydCB3aXRoIHRoYXRcbiAgICAgIGlmICghb2xkUmFuZ2VTdGFydCkge1xuICAgICAgICBjb25zdCBwcmV2ID0gZGlmZltpIC0gMV07XG4gICAgICAgIG9sZFJhbmdlU3RhcnQgPSBvbGRMaW5lO1xuICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gbmV3TGluZTtcblxuICAgICAgICBpZiAocHJldikge1xuICAgICAgICAgIGN1clJhbmdlID0gb3B0aW9ucy5jb250ZXh0ID4gMCA/IGNvbnRleHRMaW5lcyhwcmV2LmxpbmVzLnNsaWNlKC1vcHRpb25zLmNvbnRleHQpKSA6IFtdO1xuICAgICAgICAgIG9sZFJhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICAgIG5ld1JhbmdlU3RhcnQgLT0gY3VyUmFuZ2UubGVuZ3RoO1xuICAgICAgICB9XG4gICAgICB9XG5cbiAgICAgIC8vIE91dHB1dCBvdXIgY2hhbmdlc1xuICAgICAgY3VyUmFuZ2UucHVzaCguLi4gbGluZXMubWFwKGZ1bmN0aW9uKGVudHJ5KSB7XG4gICAgICAgIHJldHVybiAoY3VycmVudC5hZGRlZCA/ICcrJyA6ICctJykgKyBlbnRyeTtcbiAgICAgIH0pKTtcblxuICAgICAgLy8gVHJhY2sgdGhlIHVwZGF0ZWQgZmlsZSBwb3NpdGlvblxuICAgICAgaWYgKGN1cnJlbnQuYWRkZWQpIHtcbiAgICAgICAgbmV3TGluZSArPSBsaW5lcy5sZW5ndGg7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIH1cbiAgICB9IGVsc2Uge1xuICAgICAgLy8gSWRlbnRpY2FsIGNvbnRleHQgbGluZXMuIFRyYWNrIGxpbmUgY2hhbmdlc1xuICAgICAgaWYgKG9sZFJhbmdlU3RhcnQpIHtcbiAgICAgICAgLy8gQ2xvc2Ugb3V0IGFueSBjaGFuZ2VzIHRoYXQgaGF2ZSBiZWVuIG91dHB1dCAob3Igam9pbiBvdmVybGFwcGluZylcbiAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQgKiAyICYmIGkgPCBkaWZmLmxlbmd0aCAtIDIpIHtcbiAgICAgICAgICAvLyBPdmVybGFwcGluZ1xuICAgICAgICAgIGN1clJhbmdlLnB1c2goLi4uIGNvbnRleHRMaW5lcyhsaW5lcykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIC8vIGVuZCB0aGUgcmFuZ2UgYW5kIG91dHB1dFxuICAgICAgICAgIGxldCBjb250ZXh0U2l6ZSA9IE1hdGgubWluKGxpbmVzLmxlbmd0aCwgb3B0aW9ucy5jb250ZXh0KTtcbiAgICAgICAgICBjdXJSYW5nZS5wdXNoKC4uLiBjb250ZXh0TGluZXMobGluZXMuc2xpY2UoMCwgY29udGV4dFNpemUpKSk7XG5cbiAgICAgICAgICBsZXQgaHVuayA9IHtcbiAgICAgICAgICAgIG9sZFN0YXJ0OiBvbGRSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgb2xkTGluZXM6IChvbGRMaW5lIC0gb2xkUmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIG5ld1N0YXJ0OiBuZXdSYW5nZVN0YXJ0LFxuICAgICAgICAgICAgbmV3TGluZXM6IChuZXdMaW5lIC0gbmV3UmFuZ2VTdGFydCArIGNvbnRleHRTaXplKSxcbiAgICAgICAgICAgIGxpbmVzOiBjdXJSYW5nZVxuICAgICAgICAgIH07XG4gICAgICAgICAgaWYgKGkgPj0gZGlmZi5sZW5ndGggLSAyICYmIGxpbmVzLmxlbmd0aCA8PSBvcHRpb25zLmNvbnRleHQpIHtcbiAgICAgICAgICAgIC8vIEVPRiBpcyBpbnNpZGUgdGhpcyBodW5rXG4gICAgICAgICAgICBsZXQgb2xkRU9GTmV3bGluZSA9ICgvXFxuJC8udGVzdChvbGRTdHIpKTtcbiAgICAgICAgICAgIGxldCBuZXdFT0ZOZXdsaW5lID0gKC9cXG4kLy50ZXN0KG5ld1N0cikpO1xuICAgICAgICAgICAgaWYgKGxpbmVzLmxlbmd0aCA9PSAwICYmICFvbGRFT0ZOZXdsaW5lKSB7XG4gICAgICAgICAgICAgIC8vIHNwZWNpYWwgY2FzZTogb2xkIGhhcyBubyBlb2wgYW5kIG5vIHRyYWlsaW5nIGNvbnRleHQ7IG5vLW5sIGNhbiBlbmQgdXAgYmVmb3JlIGFkZHNcbiAgICAgICAgICAgICAgY3VyUmFuZ2Uuc3BsaWNlKGh1bmsub2xkTGluZXMsIDAsICdcXFxcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUnKTtcbiAgICAgICAgICAgIH0gZWxzZSBpZiAoIW9sZEVPRk5ld2xpbmUgfHwgIW5ld0VPRk5ld2xpbmUpIHtcbiAgICAgICAgICAgICAgY3VyUmFuZ2UucHVzaCgnXFxcXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlJyk7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICAgIGh1bmtzLnB1c2goaHVuayk7XG5cbiAgICAgICAgICBvbGRSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBuZXdSYW5nZVN0YXJ0ID0gMDtcbiAgICAgICAgICBjdXJSYW5nZSA9IFtdO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgICBvbGRMaW5lICs9IGxpbmVzLmxlbmd0aDtcbiAgICAgIG5ld0xpbmUgKz0gbGluZXMubGVuZ3RoO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiB7XG4gICAgb2xkRmlsZU5hbWU6IG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZTogbmV3RmlsZU5hbWUsXG4gICAgb2xkSGVhZGVyOiBvbGRIZWFkZXIsIG5ld0hlYWRlcjogbmV3SGVhZGVyLFxuICAgIGh1bmtzOiBodW5rc1xuICB9O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlVHdvRmlsZXNQYXRjaChvbGRGaWxlTmFtZSwgbmV3RmlsZU5hbWUsIG9sZFN0ciwgbmV3U3RyLCBvbGRIZWFkZXIsIG5ld0hlYWRlciwgb3B0aW9ucykge1xuICBjb25zdCBkaWZmID0gc3RydWN0dXJlZFBhdGNoKG9sZEZpbGVOYW1lLCBuZXdGaWxlTmFtZSwgb2xkU3RyLCBuZXdTdHIsIG9sZEhlYWRlciwgbmV3SGVhZGVyLCBvcHRpb25zKTtcblxuICBjb25zdCByZXQgPSBbXTtcbiAgaWYgKG9sZEZpbGVOYW1lID09IG5ld0ZpbGVOYW1lKSB7XG4gICAgcmV0LnB1c2goJ0luZGV4OiAnICsgb2xkRmlsZU5hbWUpO1xuICB9XG4gIHJldC5wdXNoKCc9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Jyk7XG4gIHJldC5wdXNoKCctLS0gJyArIGRpZmYub2xkRmlsZU5hbWUgKyAodHlwZW9mIGRpZmYub2xkSGVhZGVyID09PSAndW5kZWZpbmVkJyA/ICcnIDogJ1xcdCcgKyBkaWZmLm9sZEhlYWRlcikpO1xuICByZXQucHVzaCgnKysrICcgKyBkaWZmLm5ld0ZpbGVOYW1lICsgKHR5cGVvZiBkaWZmLm5ld0hlYWRlciA9PT0gJ3VuZGVmaW5lZCcgPyAnJyA6ICdcXHQnICsgZGlmZi5uZXdIZWFkZXIpKTtcblxuICBmb3IgKGxldCBpID0gMDsgaSA8IGRpZmYuaHVua3MubGVuZ3RoOyBpKyspIHtcbiAgICBjb25zdCBodW5rID0gZGlmZi5odW5rc1tpXTtcbiAgICByZXQucHVzaChcbiAgICAgICdAQCAtJyArIGh1bmsub2xkU3RhcnQgKyAnLCcgKyBodW5rLm9sZExpbmVzXG4gICAgICArICcgKycgKyBodW5rLm5ld1N0YXJ0ICsgJywnICsgaHVuay5uZXdMaW5lc1xuICAgICAgKyAnIEBAJ1xuICAgICk7XG4gICAgcmV0LnB1c2guYXBwbHkocmV0LCBodW5rLmxpbmVzKTtcbiAgfVxuXG4gIHJldHVybiByZXQuam9pbignXFxuJykgKyAnXFxuJztcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGNyZWF0ZVBhdGNoKGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpIHtcbiAgcmV0dXJuIGNyZWF0ZVR3b0ZpbGVzUGF0Y2goZmlsZU5hbWUsIGZpbGVOYW1lLCBvbGRTdHIsIG5ld1N0ciwgb2xkSGVhZGVyLCBuZXdIZWFkZXIsIG9wdGlvbnMpO1xufVxuIl19
-
-
-/***/ }),
-/* 15 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/"use strict";
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/arrayEqual = arrayEqual;
- /*istanbul ignore start*/exports. /*istanbul ignore end*/arrayStartsWith = arrayStartsWith;
- function arrayEqual(a, b) {
- if (a.length !== b.length) {
- return false;
- }
-
- return arrayStartsWith(a, b);
- }
-
- function arrayStartsWith(array, start) {
- if (start.length > array.length) {
- return false;
- }
-
- for (var i = 0; i < start.length; i++) {
- if (start[i] !== array[i]) {
- return false;
- }
- }
-
- return true;
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlsL2FycmF5LmpzIl0sIm5hbWVzIjpbImFycmF5RXF1YWwiLCJhcnJheVN0YXJ0c1dpdGgiLCJhIiwiYiIsImxlbmd0aCIsImFycmF5Iiwic3RhcnQiLCJpIl0sIm1hcHBpbmdzIjoiOzs7Z0NBQWdCQSxVLEdBQUFBLFU7eURBUUFDLGUsR0FBQUEsZTtBQVJULFNBQVNELFVBQVQsQ0FBb0JFLENBQXBCLEVBQXVCQyxDQUF2QixFQUEwQjtBQUMvQixNQUFJRCxFQUFFRSxNQUFGLEtBQWFELEVBQUVDLE1BQW5CLEVBQTJCO0FBQ3pCLFdBQU8sS0FBUDtBQUNEOztBQUVELFNBQU9ILGdCQUFnQkMsQ0FBaEIsRUFBbUJDLENBQW5CLENBQVA7QUFDRDs7QUFFTSxTQUFTRixlQUFULENBQXlCSSxLQUF6QixFQUFnQ0MsS0FBaEMsRUFBdUM7QUFDNUMsTUFBSUEsTUFBTUYsTUFBTixHQUFlQyxNQUFNRCxNQUF6QixFQUFpQztBQUMvQixXQUFPLEtBQVA7QUFDRDs7QUFFRCxPQUFLLElBQUlHLElBQUksQ0FBYixFQUFnQkEsSUFBSUQsTUFBTUYsTUFBMUIsRUFBa0NHLEdBQWxDLEVBQXVDO0FBQ3JDLFFBQUlELE1BQU1DLENBQU4sTUFBYUYsTUFBTUUsQ0FBTixDQUFqQixFQUEyQjtBQUN6QixhQUFPLEtBQVA7QUFDRDtBQUNGOztBQUVELFNBQU8sSUFBUDtBQUNEIiwiZmlsZSI6ImFycmF5LmpzIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGZ1bmN0aW9uIGFycmF5RXF1YWwoYSwgYikge1xuICBpZiAoYS5sZW5ndGggIT09IGIubGVuZ3RoKSB7XG4gICAgcmV0dXJuIGZhbHNlO1xuICB9XG5cbiAgcmV0dXJuIGFycmF5U3RhcnRzV2l0aChhLCBiKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGFycmF5U3RhcnRzV2l0aChhcnJheSwgc3RhcnQpIHtcbiAgaWYgKHN0YXJ0Lmxlbmd0aCA+IGFycmF5Lmxlbmd0aCkge1xuICAgIHJldHVybiBmYWxzZTtcbiAgfVxuXG4gIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnQubGVuZ3RoOyBpKyspIHtcbiAgICBpZiAoc3RhcnRbaV0gIT09IGFycmF5W2ldKSB7XG4gICAgICByZXR1cm4gZmFsc2U7XG4gICAgfVxuICB9XG5cbiAgcmV0dXJuIHRydWU7XG59XG4iXX0=
-
-
-/***/ }),
-/* 16 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/"use strict";
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/convertChangesToDMP = convertChangesToDMP;
- // See: http://code.google.com/p/google-diff-match-patch/wiki/API
- function convertChangesToDMP(changes) {
- var ret = [],
- change = /*istanbul ignore start*/void 0 /*istanbul ignore end*/,
- operation = /*istanbul ignore start*/void 0 /*istanbul ignore end*/;
- for (var i = 0; i < changes.length; i++) {
- change = changes[i];
- if (change.added) {
- operation = 1;
- } else if (change.removed) {
- operation = -1;
- } else {
- operation = 0;
- }
-
- ret.push([operation, change.value]);
- }
- return ret;
- }
- //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9jb252ZXJ0L2RtcC5qcyJdLCJuYW1lcyI6WyJjb252ZXJ0Q2hhbmdlc1RvRE1QIiwiY2hhbmdlcyIsInJldCIsImNoYW5nZSIsIm9wZXJhdGlvbiIsImkiLCJsZW5ndGgiLCJhZGRlZCIsInJlbW92ZWQiLCJwdXNoIiwidmFsdWUiXSwibWFwcGluZ3MiOiI7OztnQ0FDZ0JBLG1CLEdBQUFBLG1CO0FBRGhCO0FBQ08sU0FBU0EsbUJBQVQsQ0FBNkJDLE9BQTdCLEVBQXNDO0FBQzNDLE1BQUlDLE1BQU0sRUFBVjtBQUFBLE1BQ0lDLHdDQURKO0FBQUEsTUFFSUMsMkNBRko7QUFHQSxPQUFLLElBQUlDLElBQUksQ0FBYixFQUFnQkEsSUFBSUosUUFBUUssTUFBNUIsRUFBb0NELEdBQXBDLEVBQXlDO0FBQ3ZDRixhQUFTRixRQUFRSSxDQUFSLENBQVQ7QUFDQSxRQUFJRixPQUFPSSxLQUFYLEVBQWtCO0FBQ2hCSCxrQkFBWSxDQUFaO0FBQ0QsS0FGRCxNQUVPLElBQUlELE9BQU9LLE9BQVgsRUFBb0I7QUFDekJKLGtCQUFZLENBQUMsQ0FBYjtBQUNELEtBRk0sTUFFQTtBQUNMQSxrQkFBWSxDQUFaO0FBQ0Q7O0FBRURGLFFBQUlPLElBQUosQ0FBUyxDQUFDTCxTQUFELEVBQVlELE9BQU9PLEtBQW5CLENBQVQ7QUFDRDtBQUNELFNBQU9SLEdBQVA7QUFDRCIsImZpbGUiOiJkbXAuanMiLCJzb3VyY2VzQ29udGVudCI6WyIvLyBTZWU6IGh0dHA6Ly9jb2RlLmdvb2dsZS5jb20vcC9nb29nbGUtZGlmZi1tYXRjaC1wYXRjaC93aWtpL0FQSVxuZXhwb3J0IGZ1bmN0aW9uIGNvbnZlcnRDaGFuZ2VzVG9ETVAoY2hhbmdlcykge1xuICBsZXQgcmV0ID0gW10sXG4gICAgICBjaGFuZ2UsXG4gICAgICBvcGVyYXRpb247XG4gIGZvciAobGV0IGkgPSAwOyBpIDwgY2hhbmdlcy5sZW5ndGg7IGkrKykge1xuICAgIGNoYW5nZSA9IGNoYW5nZXNbaV07XG4gICAgaWYgKGNoYW5nZS5hZGRlZCkge1xuICAgICAgb3BlcmF0aW9uID0gMTtcbiAgICB9IGVsc2UgaWYgKGNoYW5nZS5yZW1vdmVkKSB7XG4gICAgICBvcGVyYXRpb24gPSAtMTtcbiAgICB9IGVsc2Uge1xuICAgICAgb3BlcmF0aW9uID0gMDtcbiAgICB9XG5cbiAgICByZXQucHVzaChbb3BlcmF0aW9uLCBjaGFuZ2UudmFsdWVdKTtcbiAgfVxuICByZXR1cm4gcmV0O1xufVxuIl19
-
-
-/***/ }),
-/* 17 */
-/***/ (function(module, exports) {
-
- /*istanbul ignore start*/'use strict';
-
- exports.__esModule = true;
- exports. /*istanbul ignore end*/convertChangesToXML = convertChangesToXML;
- function convertChangesToXML(changes) {
- var ret = [];
- for (var i = 0; i < changes.length; i++) {
- var change = changes[i];
- if (change.added) {
- ret.push('<ins>');
- } else if (change.removed) {
- ret.push('<del>');
- }
-
- ret.push(escapeHTML(change.value));
-
- if (change.added) {
- ret.push('</ins>');
- } else if (change.removed) {
- ret.push('</del>');
- }
- }
- return ret.join('');
- }
-
- function escapeHTML(s) {
- var n = s;
- n = n.replace(/&/g, '&amp;');
- n = n.replace(/</g, '&lt;');
- n = n.replace(/>/g, '&gt;');
- n = n.replace(/"/g, '&quot;');
-
- return n;
- }
-
-
-/***/ })
-/******/ ])
-});
-;
-
-/***/ }),
-
-/***/ 22:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["richText"]; }());
-
-/***/ }),
-
-/***/ 220:
-/***/ (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, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js
-var arrayWithHoles = __webpack_require__(38);
-
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js
-function _iterableToArrayLimit(arr, i) {
- var _arr = [];
- var _n = true;
- var _d = false;
- var _e = undefined;
-
- try {
- for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) {
- _arr.push(_s.value);
-
- if (i && _arr.length === i) break;
- }
- } catch (err) {
- _d = true;
- _e = err;
- } finally {
- try {
- if (!_n && _i["return"] != null) _i["return"]();
- } finally {
- if (_d) throw _e;
- }
- }
-
- return _arr;
-}
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/nonIterableRest.js
-var nonIterableRest = __webpack_require__(39);
-
-// CONCATENATED MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _slicedToArray; });
-
-
-
-function _slicedToArray(arr, i) {
- return Object(arrayWithHoles["a" /* default */])(arr) || _iterableToArrayLimit(arr, i) || Object(nonIterableRest["a" /* default */])();
-}
-
-/***/ }),
-
-/***/ 25:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["dom"]; }());
-
-/***/ }),
-
-/***/ 26:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["url"]; }());
-
-/***/ }),
-
-/***/ 27:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["hooks"]; }());
-
-/***/ }),
-
-/***/ 28:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["React"]; }());
-
-/***/ }),
-
-/***/ 3:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["components"]; }());
-
-/***/ }),
-
-/***/ 30:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _iterableToArray; });
-function _iterableToArray(iter) {
- if (Symbol.iterator in Object(iter) || Object.prototype.toString.call(iter) === "[object Arguments]") return Array.from(iter);
-}
-
-/***/ }),
-
-/***/ 31:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _typeof; });
-function _typeof2(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof2 = function _typeof2(obj) { return typeof obj; }; } else { _typeof2 = function _typeof2(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof2(obj); }
-
-function _typeof(obj) {
- if (typeof Symbol === "function" && _typeof2(Symbol.iterator) === "symbol") {
- _typeof = function _typeof(obj) {
- return _typeof2(obj);
- };
- } else {
- _typeof = function _typeof(obj) {
- return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : _typeof2(obj);
- };
- }
-
- return _typeof(obj);
-}
-
-/***/ }),
-
-/***/ 33:
-/***/ (function(module, exports, __webpack_require__) {
-
-/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-if (false) { var throwOnDirectAccess, ReactIs; } else {
- // By explicitly using `prop-types` you are opting into new production behavior.
- // http://fb.me/prop-types-in-prod
- module.exports = __webpack_require__(87)();
-}
-
-
-/***/ }),
-
-/***/ 342:
-/***/ (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, "resetBlocks", function() { return resetBlocks; });
-__webpack_require__.d(actions_namespaceObject, "receiveBlocks", function() { return receiveBlocks; });
-__webpack_require__.d(actions_namespaceObject, "updateBlockAttributes", function() { return actions_updateBlockAttributes; });
-__webpack_require__.d(actions_namespaceObject, "updateBlock", function() { return updateBlock; });
-__webpack_require__.d(actions_namespaceObject, "selectBlock", function() { return actions_selectBlock; });
-__webpack_require__.d(actions_namespaceObject, "selectPreviousBlock", function() { return selectPreviousBlock; });
-__webpack_require__.d(actions_namespaceObject, "selectNextBlock", function() { return selectNextBlock; });
-__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 actions_multiSelect; });
-__webpack_require__.d(actions_namespaceObject, "clearSelectedBlock", function() { return clearSelectedBlock; });
-__webpack_require__.d(actions_namespaceObject, "toggleSelection", function() { return actions_toggleSelection; });
-__webpack_require__.d(actions_namespaceObject, "replaceBlocks", function() { return actions_replaceBlocks; });
-__webpack_require__.d(actions_namespaceObject, "replaceBlock", function() { return replaceBlock; });
-__webpack_require__.d(actions_namespaceObject, "moveBlocksDown", function() { return actions_moveBlocksDown; });
-__webpack_require__.d(actions_namespaceObject, "moveBlocksUp", function() { return actions_moveBlocksUp; });
-__webpack_require__.d(actions_namespaceObject, "moveBlockToPosition", function() { return moveBlockToPosition; });
-__webpack_require__.d(actions_namespaceObject, "insertBlock", function() { return actions_insertBlock; });
-__webpack_require__.d(actions_namespaceObject, "insertBlocks", function() { return actions_insertBlocks; });
-__webpack_require__.d(actions_namespaceObject, "showInsertionPoint", function() { return actions_showInsertionPoint; });
-__webpack_require__.d(actions_namespaceObject, "hideInsertionPoint", function() { return actions_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 actions_mergeBlocks; });
-__webpack_require__.d(actions_namespaceObject, "removeBlocks", function() { return actions_removeBlocks; });
-__webpack_require__.d(actions_namespaceObject, "removeBlock", function() { return actions_removeBlock; });
-__webpack_require__.d(actions_namespaceObject, "replaceInnerBlocks", function() { return actions_replaceInnerBlocks; });
-__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, "selectionChange", function() { return selectionChange; });
-__webpack_require__.d(actions_namespaceObject, "insertDefaultBlock", function() { return actions_insertDefaultBlock; });
-__webpack_require__.d(actions_namespaceObject, "updateBlockListSettings", function() { return updateBlockListSettings; });
-__webpack_require__.d(actions_namespaceObject, "updateSettings", function() { return updateSettings; });
-__webpack_require__.d(actions_namespaceObject, "__unstableSaveReusableBlock", function() { return __unstableSaveReusableBlock; });
-__webpack_require__.d(actions_namespaceObject, "__unstableMarkLastChangeAsPersistent", function() { return actions_unstableMarkLastChangeAsPersistent; });
-__webpack_require__.d(actions_namespaceObject, "__unstableMarkAutomaticChange", function() { return __unstableMarkAutomaticChange; });
-__webpack_require__.d(actions_namespaceObject, "setNavigationMode", function() { return actions_setNavigationMode; });
-var selectors_namespaceObject = {};
-__webpack_require__.r(selectors_namespaceObject);
-__webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_HIGH", function() { return INSERTER_UTILITY_HIGH; });
-__webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_MEDIUM", function() { return INSERTER_UTILITY_MEDIUM; });
-__webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_LOW", function() { return INSERTER_UTILITY_LOW; });
-__webpack_require__.d(selectors_namespaceObject, "INSERTER_UTILITY_NONE", function() { return INSERTER_UTILITY_NONE; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockName", function() { return selectors_getBlockName; });
-__webpack_require__.d(selectors_namespaceObject, "isBlockValid", function() { return selectors_isBlockValid; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockAttributes", function() { return getBlockAttributes; });
-__webpack_require__.d(selectors_namespaceObject, "getBlock", function() { return selectors_getBlock; });
-__webpack_require__.d(selectors_namespaceObject, "__unstableGetBlockWithoutInnerBlocks", function() { return selectors_unstableGetBlockWithoutInnerBlocks; });
-__webpack_require__.d(selectors_namespaceObject, "getBlocks", function() { return selectors_getBlocks; });
-__webpack_require__.d(selectors_namespaceObject, "getClientIdsOfDescendants", function() { return selectors_getClientIdsOfDescendants; });
-__webpack_require__.d(selectors_namespaceObject, "getClientIdsWithDescendants", function() { return getClientIdsWithDescendants; });
-__webpack_require__.d(selectors_namespaceObject, "getGlobalBlockCount", function() { return getGlobalBlockCount; });
-__webpack_require__.d(selectors_namespaceObject, "getBlocksByClientId", function() { return selectors_getBlocksByClientId; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockCount", function() { return selectors_getBlockCount; });
-__webpack_require__.d(selectors_namespaceObject, "getSelectionStart", function() { return getSelectionStart; });
-__webpack_require__.d(selectors_namespaceObject, "getSelectionEnd", function() { return getSelectionEnd; });
-__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 selectors_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 selectors_getSelectedBlock; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockRootClientId", function() { return selectors_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 selectors_getSelectedBlocksInitialCaretPosition; });
-__webpack_require__.d(selectors_namespaceObject, "getSelectedBlockClientIds", function() { return selectors_getSelectedBlockClientIds; });
-__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 selectors_isFirstMultiSelectedBlock; });
-__webpack_require__.d(selectors_namespaceObject, "isBlockMultiSelected", function() { return selectors_isBlockMultiSelected; });
-__webpack_require__.d(selectors_namespaceObject, "isAncestorMultiSelected", function() { return selectors_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 selectors_getBlockOrder; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockIndex", function() { return selectors_getBlockIndex; });
-__webpack_require__.d(selectors_namespaceObject, "isBlockSelected", function() { return selectors_isBlockSelected; });
-__webpack_require__.d(selectors_namespaceObject, "hasSelectedInnerBlock", function() { return selectors_hasSelectedInnerBlock; });
-__webpack_require__.d(selectors_namespaceObject, "isBlockWithinSelection", function() { return isBlockWithinSelection; });
-__webpack_require__.d(selectors_namespaceObject, "hasMultiSelection", function() { return selectors_hasMultiSelection; });
-__webpack_require__.d(selectors_namespaceObject, "isMultiSelecting", function() { return isMultiSelecting; });
-__webpack_require__.d(selectors_namespaceObject, "isSelectionEnabled", function() { return selectors_isSelectionEnabled; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockMode", function() { return selectors_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 selectors_getTemplateLock; });
-__webpack_require__.d(selectors_namespaceObject, "canInsertBlockType", function() { return selectors_canInsertBlockType; });
-__webpack_require__.d(selectors_namespaceObject, "getInserterItems", function() { return selectors_getInserterItems; });
-__webpack_require__.d(selectors_namespaceObject, "hasInserterItems", function() { return hasInserterItems; });
-__webpack_require__.d(selectors_namespaceObject, "getBlockListSettings", function() { return getBlockListSettings; });
-__webpack_require__.d(selectors_namespaceObject, "getSettings", function() { return selectors_getSettings; });
-__webpack_require__.d(selectors_namespaceObject, "isLastBlockChangePersistent", function() { return selectors_isLastBlockChangePersistent; });
-__webpack_require__.d(selectors_namespaceObject, "__experimentalGetParsedReusableBlock", function() { return __experimentalGetParsedReusableBlock; });
-__webpack_require__.d(selectors_namespaceObject, "__unstableIsLastBlockChangeIgnored", function() { return selectors_unstableIsLastBlockChangeIgnored; });
-__webpack_require__.d(selectors_namespaceObject, "__experimentalGetLastBlockAttributeChanges", function() { return __experimentalGetLastBlockAttributeChanges; });
-__webpack_require__.d(selectors_namespaceObject, "isNavigationMode", function() { return selectors_isNavigationMode; });
-__webpack_require__.d(selectors_namespaceObject, "didAutomaticChange", function() { return selectors_didAutomaticChange; });
-
-// EXTERNAL MODULE: external {"this":["wp","blocks"]}
-var external_this_wp_blocks_ = __webpack_require__(9);
-
-// EXTERNAL MODULE: external {"this":["wp","richText"]}
-var external_this_wp_richText_ = __webpack_require__(22);
-
-// EXTERNAL MODULE: external {"this":["wp","viewport"]}
-var external_this_wp_viewport_ = __webpack_require__(42);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectSpread.js
-var objectSpread = __webpack_require__(7);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/extends.js
-var esm_extends = __webpack_require__(18);
-
-// EXTERNAL MODULE: external {"this":["wp","element"]}
-var external_this_wp_element_ = __webpack_require__(0);
-
-// EXTERNAL MODULE: ./node_modules/classnames/index.js
-var classnames = __webpack_require__(16);
-var classnames_default = /*#__PURE__*/__webpack_require__.n(classnames);
-
-// EXTERNAL MODULE: external "lodash"
-var external_lodash_ = __webpack_require__(2);
-
-// EXTERNAL MODULE: external {"this":["wp","compose"]}
-var external_this_wp_compose_ = __webpack_require__(8);
-
-// EXTERNAL MODULE: external {"this":["wp","hooks"]}
-var external_this_wp_hooks_ = __webpack_require__(27);
-
-// EXTERNAL MODULE: external {"this":["wp","data"]}
-var external_this_wp_data_ = __webpack_require__(4);
-
-// EXTERNAL MODULE: ./node_modules/tinycolor2/tinycolor.js
-var tinycolor = __webpack_require__(48);
-var tinycolor_default = /*#__PURE__*/__webpack_require__.n(tinycolor);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/utils.js
-/**
- * External dependencies
- */
-
-
-/**
- * Provided an array of color objects as set by the theme or by the editor defaults,
- * and the values of the defined color or custom color returns a color object describing the color.
- *
- * @param {Array} colors Array of color objects as set by the theme or by the editor defaults.
- * @param {?string} definedColor A string containing the color slug.
- * @param {?string} customColor A string containing the customColor value.
- *
- * @return {?Object} If definedColor is passed and the name is found in colors,
- * the color object exactly as set by the theme or editor defaults is returned.
- * Otherwise, an object that just sets the color is defined.
- */
-
-var utils_getColorObjectByAttributeValues = function getColorObjectByAttributeValues(colors, definedColor, customColor) {
- if (definedColor) {
- var colorObj = Object(external_lodash_["find"])(colors, {
- slug: definedColor
- });
-
- if (colorObj) {
- return colorObj;
- }
- }
-
- return {
- color: customColor
- };
-};
-/**
- * Provided an array of color objects as set by the theme or by the editor defaults, and a color value returns the color object matching that value or undefined.
- *
- * @param {Array} colors Array of color objects as set by the theme or by the editor defaults.
- * @param {?string} colorValue A string containing the color value.
- *
- * @return {?Object} Color object included in the colors array whose color property equals colorValue.
- * Returns undefined if no color object matches this requirement.
- */
-
-var utils_getColorObjectByColorValue = function getColorObjectByColorValue(colors, colorValue) {
- return Object(external_lodash_["find"])(colors, {
- color: colorValue
- });
-};
-/**
- * Returns a class based on the context a color is being used and its slug.
- *
- * @param {string} colorContextName Context/place where color is being used e.g: background, text etc...
- * @param {string} colorSlug Slug of the color.
- *
- * @return {?string} String with the class corresponding to the color in the provided context.
- * Returns undefined if either colorContextName or colorSlug are not provided.
- */
-
-function getColorClassName(colorContextName, colorSlug) {
- if (!colorContextName || !colorSlug) {
- return undefined;
- }
-
- return "has-".concat(Object(external_lodash_["kebabCase"])(colorSlug), "-").concat(colorContextName);
-}
-/**
- * Given an array of color objects and a color value returns the color value of the most readable color in the array.
- *
- * @param {Array} colors Array of color objects as set by the theme or by the editor defaults.
- * @param {?string} colorValue A string containing the color value.
- *
- * @return {string} String with the color value of the most readable color.
- */
-
-function utils_getMostReadableColor(colors, colorValue) {
- return tinycolor_default.a.mostReadable(colorValue, Object(external_lodash_["map"])(colors, 'color')).toHexString();
-}
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/classCallCheck.js
-var classCallCheck = __webpack_require__(12);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/createClass.js
-var createClass = __webpack_require__(11);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js
-var possibleConstructorReturn = __webpack_require__(13);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js
-var getPrototypeOf = __webpack_require__(14);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js
-var assertThisInitialized = __webpack_require__(5);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/inherits.js + 1 modules
-var inherits = __webpack_require__(15);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/defineProperty.js
-var defineProperty = __webpack_require__(10);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/with-colors.js
-
-
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-var DEFAULT_COLORS = [];
-/**
- * Higher order component factory for injecting the `colorsArray` argument as
- * the colors prop in the `withCustomColors` HOC.
- *
- * @param {Array} colorsArray An array of color objects.
- *
- * @return {Function} The higher order component.
- */
-
-var with_colors_withCustomColorPalette = function withCustomColorPalette(colorsArray) {
- return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (WrappedComponent) {
- return function (props) {
- return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(esm_extends["a" /* default */])({}, props, {
- colors: colorsArray
- }));
- };
- }, 'withCustomColorPalette');
-};
-/**
- * Higher order component factory for injecting the editor colors as the
- * `colors` prop in the `withColors` HOC.
- *
- * @return {Function} The higher order component.
- */
-
-
-var with_colors_withEditorColorPalette = function withEditorColorPalette() {
- return Object(external_this_wp_data_["withSelect"])(function (select) {
- var settings = select('core/block-editor').getSettings();
- return {
- colors: Object(external_lodash_["get"])(settings, ['colors'], DEFAULT_COLORS)
- };
- });
-};
-/**
- * Helper function used with `createHigherOrderComponent` to create
- * higher order components for managing color logic.
- *
- * @param {Array} colorTypes An array of color types (e.g. 'backgroundColor, borderColor).
- * @param {Function} withColorPalette A HOC for injecting the 'colors' prop into the WrappedComponent.
- *
- * @return {Component} The component that can be used as a HOC.
- */
-
-
-function createColorHOC(colorTypes, withColorPalette) {
- var colorMap = Object(external_lodash_["reduce"])(colorTypes, function (colorObject, colorType) {
- return Object(objectSpread["a" /* default */])({}, colorObject, Object(external_lodash_["isString"])(colorType) ? Object(defineProperty["a" /* default */])({}, colorType, Object(external_lodash_["kebabCase"])(colorType)) : colorType);
- }, {});
- return Object(external_this_wp_compose_["compose"])([withColorPalette, function (WrappedComponent) {
- return (
- /*#__PURE__*/
- function (_Component) {
- Object(inherits["a" /* default */])(_class, _Component);
-
- function _class(props) {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, _class);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(_class).call(this, props));
- _this.setters = _this.createSetters();
- _this.colorUtils = {
- getMostReadableColor: _this.getMostReadableColor.bind(Object(assertThisInitialized["a" /* default */])(_this))
- };
- _this.state = {};
- return _this;
- }
-
- Object(createClass["a" /* default */])(_class, [{
- key: "getMostReadableColor",
- value: function getMostReadableColor(colorValue) {
- var colors = this.props.colors;
- return utils_getMostReadableColor(colors, colorValue);
- }
- }, {
- key: "createSetters",
- value: function createSetters() {
- var _this2 = this;
-
- return Object(external_lodash_["reduce"])(colorMap, function (settersAccumulator, colorContext, colorAttributeName) {
- var upperFirstColorAttributeName = Object(external_lodash_["upperFirst"])(colorAttributeName);
- var customColorAttributeName = "custom".concat(upperFirstColorAttributeName);
- settersAccumulator["set".concat(upperFirstColorAttributeName)] = _this2.createSetColor(colorAttributeName, customColorAttributeName);
- return settersAccumulator;
- }, {});
- }
- }, {
- key: "createSetColor",
- value: function createSetColor(colorAttributeName, customColorAttributeName) {
- var _this3 = this;
-
- return function (colorValue) {
- var _this3$props$setAttri;
-
- var colorObject = utils_getColorObjectByColorValue(_this3.props.colors, colorValue);
-
- _this3.props.setAttributes((_this3$props$setAttri = {}, Object(defineProperty["a" /* default */])(_this3$props$setAttri, colorAttributeName, colorObject && colorObject.slug ? colorObject.slug : undefined), Object(defineProperty["a" /* default */])(_this3$props$setAttri, customColorAttributeName, colorObject && colorObject.slug ? undefined : colorValue), _this3$props$setAttri));
- };
- }
- }, {
- key: "render",
- value: function render() {
- return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(objectSpread["a" /* default */])({}, this.props, {
- colors: undefined
- }, this.state, this.setters, {
- colorUtils: this.colorUtils
- }));
- }
- }], [{
- key: "getDerivedStateFromProps",
- value: function getDerivedStateFromProps(_ref2, previousState) {
- var attributes = _ref2.attributes,
- colors = _ref2.colors;
- return Object(external_lodash_["reduce"])(colorMap, function (newState, colorContext, colorAttributeName) {
- var colorObject = utils_getColorObjectByAttributeValues(colors, attributes[colorAttributeName], attributes["custom".concat(Object(external_lodash_["upperFirst"])(colorAttributeName))]);
- var previousColorObject = previousState[colorAttributeName];
- var previousColor = Object(external_lodash_["get"])(previousColorObject, ['color']);
- /**
- * The "and previousColorObject" condition checks that a previous color object was already computed.
- * At the start previousColorObject and colorValue are both equal to undefined
- * bus as previousColorObject does not exist we should compute the object.
- */
-
- if (previousColor === colorObject.color && previousColorObject) {
- newState[colorAttributeName] = previousColorObject;
- } else {
- newState[colorAttributeName] = Object(objectSpread["a" /* default */])({}, colorObject, {
- class: getColorClassName(colorContext, colorObject.slug)
- });
- }
-
- return newState;
- }, {});
- }
- }]);
-
- return _class;
- }(external_this_wp_element_["Component"])
- );
- }]);
-}
-/**
- * A higher-order component factory for creating a 'withCustomColors' HOC, which handles color logic
- * for class generation color value, retrieval and color attribute setting.
- *
- * Use this higher-order component to work with a custom set of colors.
- *
- * @example
- *
- * ```jsx
- * const CUSTOM_COLORS = [ { name: 'Red', slug: 'red', color: '#ff0000' }, { name: 'Blue', slug: 'blue', color: '#0000ff' } ];
- * const withCustomColors = createCustomColorsHOC( CUSTOM_COLORS );
- * // ...
- * export default compose(
- * withCustomColors( 'backgroundColor', 'borderColor' ),
- * MyColorfulComponent,
- * );
- * ```
- *
- * @param {Array} colorsArray The array of color objects (name, slug, color, etc... ).
- *
- * @return {Function} Higher-order component.
- */
-
-
-function createCustomColorsHOC(colorsArray) {
- return function () {
- var withColorPalette = with_colors_withCustomColorPalette(colorsArray);
-
- for (var _len = arguments.length, colorTypes = new Array(_len), _key = 0; _key < _len; _key++) {
- colorTypes[_key] = arguments[_key];
- }
-
- return Object(external_this_wp_compose_["createHigherOrderComponent"])(createColorHOC(colorTypes, withColorPalette), 'withCustomColors');
- };
-}
-/**
- * A higher-order component, which handles color logic for class generation color value, retrieval and color attribute setting.
- *
- * For use with the default editor/theme color palette.
- *
- * @example
- *
- * ```jsx
- * export default compose(
- * withColors( 'backgroundColor', { textColor: 'color' } ),
- * MyColorfulComponent,
- * );
- * ```
- *
- * @param {...(Object|string)} colorTypes The arguments can be strings or objects. If the argument is an object,
- * it should contain the color attribute name as key and the color context as value.
- * If the argument is a string the value should be the color attribute name,
- * the color context is computed by applying a kebab case transform to the value.
- * Color context represents the context/place where the color is going to be used.
- * The class name of the color is generated using 'has' followed by the color name
- * and ending with the color context all in kebab case e.g: has-green-background-color.
- *
- * @return {Function} Higher-order component.
- */
-
-function withColors() {
- var withColorPalette = with_colors_withEditorColorPalette();
-
- for (var _len2 = arguments.length, colorTypes = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {
- colorTypes[_key2] = arguments[_key2];
- }
-
- return Object(external_this_wp_compose_["createHigherOrderComponent"])(createColorHOC(colorTypes, withColorPalette), 'withColors');
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/colors/index.js
-
-
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/utils.js
-/**
- * External dependencies
- */
-
-/**
- * Returns the font size object based on an array of named font sizes and the namedFontSize and customFontSize values.
- * If namedFontSize is undefined or not found in fontSizes an object with just the size value based on customFontSize is returned.
- *
- * @param {Array} fontSizes Array of font size objects containing at least the "name" and "size" values as properties.
- * @param {?string} fontSizeAttribute Content of the font size attribute (slug).
- * @param {?number} customFontSizeAttribute Contents of the custom font size attribute (value).
- *
- * @return {?string} If fontSizeAttribute is set and an equal slug is found in fontSizes it returns the font size object for that slug.
- * Otherwise, an object with just the size value based on customFontSize is returned.
- */
-
-var utils_getFontSize = function getFontSize(fontSizes, fontSizeAttribute, customFontSizeAttribute) {
- if (fontSizeAttribute) {
- var fontSizeObject = Object(external_lodash_["find"])(fontSizes, {
- slug: fontSizeAttribute
- });
-
- if (fontSizeObject) {
- return fontSizeObject;
- }
- }
-
- return {
- size: customFontSizeAttribute
- };
-};
-/**
- * Returns a class based on fontSizeName.
- *
- * @param {string} fontSizeSlug Slug of the fontSize.
- *
- * @return {string} String with the class corresponding to the fontSize passed.
- * The class is generated by appending 'has-' followed by fontSizeSlug in kebabCase and ending with '-font-size'.
- */
-
-function getFontSizeClass(fontSizeSlug) {
- if (!fontSizeSlug) {
- return;
- }
-
- return "has-".concat(Object(external_lodash_["kebabCase"])(fontSizeSlug), "-font-size");
-}
-
-// EXTERNAL MODULE: external {"this":["wp","components"]}
-var external_this_wp_components_ = __webpack_require__(3);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/font-size-picker.js
-/**
- * WordPress dependencies
- */
-
-
-/* harmony default export */ var font_size_picker = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select$getSettings = select('core/block-editor').getSettings(),
- disableCustomFontSizes = _select$getSettings.disableCustomFontSizes,
- fontSizes = _select$getSettings.fontSizes;
-
- return {
- disableCustomFontSizes: disableCustomFontSizes,
- fontSizes: fontSizes
- };
-})(external_this_wp_components_["FontSizePicker"]));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/with-font-sizes.js
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Higher-order component, which handles font size logic for class generation,
- * font size value retrieval, and font size change handling.
- *
- * @param {...(Object|string)} fontSizeNames The arguments should all be strings.
- * Each string contains the font size
- * attribute name e.g: 'fontSize'.
- *
- * @return {Function} Higher-order component.
- */
-
-/* harmony default export */ var with_font_sizes = (function () {
- for (var _len = arguments.length, fontSizeNames = new Array(_len), _key = 0; _key < _len; _key++) {
- fontSizeNames[_key] = arguments[_key];
- }
-
- /*
- * Computes an object whose key is the font size attribute name as passed in the array,
- * and the value is the custom font size attribute name.
- * Custom font size is automatically compted by appending custom followed by the font size attribute name in with the first letter capitalized.
- */
- var fontSizeAttributeNames = Object(external_lodash_["reduce"])(fontSizeNames, function (fontSizeAttributeNamesAccumulator, fontSizeAttributeName) {
- fontSizeAttributeNamesAccumulator[fontSizeAttributeName] = "custom".concat(Object(external_lodash_["upperFirst"])(fontSizeAttributeName));
- return fontSizeAttributeNamesAccumulator;
- }, {});
- return Object(external_this_wp_compose_["createHigherOrderComponent"])(Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select$getSettings = select('core/block-editor').getSettings(),
- fontSizes = _select$getSettings.fontSizes;
-
- return {
- fontSizes: fontSizes
- };
- }), function (WrappedComponent) {
- return (
- /*#__PURE__*/
- function (_Component) {
- Object(inherits["a" /* default */])(_class, _Component);
-
- function _class(props) {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, _class);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(_class).call(this, props));
- _this.setters = _this.createSetters();
- _this.state = {};
- return _this;
- }
-
- Object(createClass["a" /* default */])(_class, [{
- key: "createSetters",
- value: function createSetters() {
- var _this2 = this;
-
- return Object(external_lodash_["reduce"])(fontSizeAttributeNames, function (settersAccumulator, customFontSizeAttributeName, fontSizeAttributeName) {
- var upperFirstFontSizeAttributeName = Object(external_lodash_["upperFirst"])(fontSizeAttributeName);
- settersAccumulator["set".concat(upperFirstFontSizeAttributeName)] = _this2.createSetFontSize(fontSizeAttributeName, customFontSizeAttributeName);
- return settersAccumulator;
- }, {});
- }
- }, {
- key: "createSetFontSize",
- value: function createSetFontSize(fontSizeAttributeName, customFontSizeAttributeName) {
- var _this3 = this;
-
- return function (fontSizeValue) {
- var _this3$props$setAttri;
-
- var fontSizeObject = Object(external_lodash_["find"])(_this3.props.fontSizes, {
- size: Number(fontSizeValue)
- });
-
- _this3.props.setAttributes((_this3$props$setAttri = {}, Object(defineProperty["a" /* default */])(_this3$props$setAttri, fontSizeAttributeName, fontSizeObject && fontSizeObject.slug ? fontSizeObject.slug : undefined), Object(defineProperty["a" /* default */])(_this3$props$setAttri, customFontSizeAttributeName, fontSizeObject && fontSizeObject.slug ? undefined : fontSizeValue), _this3$props$setAttri));
- };
- }
- }, {
- key: "render",
- value: function render() {
- return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(objectSpread["a" /* default */])({}, this.props, {
- fontSizes: undefined
- }, this.state, this.setters));
- }
- }], [{
- key: "getDerivedStateFromProps",
- value: function getDerivedStateFromProps(_ref, previousState) {
- var attributes = _ref.attributes,
- fontSizes = _ref.fontSizes;
-
- var didAttributesChange = function didAttributesChange(customFontSizeAttributeName, fontSizeAttributeName) {
- if (previousState[fontSizeAttributeName]) {
- // if new font size is name compare with the previous slug
- if (attributes[fontSizeAttributeName]) {
- return attributes[fontSizeAttributeName] !== previousState[fontSizeAttributeName].slug;
- } // if font size is not named, update when the font size value changes.
-
-
- return previousState[fontSizeAttributeName].size !== attributes[customFontSizeAttributeName];
- } // in this case we need to build the font size object
-
-
- return true;
- };
-
- if (!Object(external_lodash_["some"])(fontSizeAttributeNames, didAttributesChange)) {
- return null;
- }
-
- var newState = Object(external_lodash_["reduce"])(Object(external_lodash_["pickBy"])(fontSizeAttributeNames, didAttributesChange), function (newStateAccumulator, customFontSizeAttributeName, fontSizeAttributeName) {
- var fontSizeAttributeValue = attributes[fontSizeAttributeName];
- var fontSizeObject = utils_getFontSize(fontSizes, fontSizeAttributeValue, attributes[customFontSizeAttributeName]);
- newStateAccumulator[fontSizeAttributeName] = Object(objectSpread["a" /* default */])({}, fontSizeObject, {
- class: getFontSizeClass(fontSizeAttributeValue)
- });
- return newStateAccumulator;
- }, {});
- return Object(objectSpread["a" /* default */])({}, previousState, newState);
- }
- }]);
-
- return _class;
- }(external_this_wp_element_["Component"])
- );
- }]), 'withFontSizes');
-});
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/font-sizes/index.js
-
-
-
-
-// EXTERNAL MODULE: external {"this":["wp","i18n"]}
-var external_this_wp_i18n_ = __webpack_require__(1);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/alignment-toolbar/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-var DEFAULT_ALIGNMENT_CONTROLS = [{
- icon: 'editor-alignleft',
- title: Object(external_this_wp_i18n_["__"])('Align Text Left'),
- align: 'left'
-}, {
- icon: 'editor-aligncenter',
- title: Object(external_this_wp_i18n_["__"])('Align Text Center'),
- align: 'center'
-}, {
- icon: 'editor-alignright',
- title: Object(external_this_wp_i18n_["__"])('Align Text Right'),
- align: 'right'
-}];
-function AlignmentToolbar(props) {
- var value = props.value,
- onChange = props.onChange,
- _props$alignmentContr = props.alignmentControls,
- alignmentControls = _props$alignmentContr === void 0 ? DEFAULT_ALIGNMENT_CONTROLS : _props$alignmentContr,
- _props$label = props.label,
- label = _props$label === void 0 ? Object(external_this_wp_i18n_["__"])('Change text alignment') : _props$label,
- _props$isCollapsed = props.isCollapsed,
- isCollapsed = _props$isCollapsed === void 0 ? true : _props$isCollapsed;
-
- function applyOrUnset(align) {
- return function () {
- return onChange(value === align ? undefined : align);
- };
- }
-
- var activeAlignment = Object(external_lodash_["find"])(alignmentControls, function (control) {
- return control.align === value;
- });
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
- isCollapsed: isCollapsed,
- icon: activeAlignment ? activeAlignment.icon : 'editor-alignleft',
- label: label,
- controls: alignmentControls.map(function (control) {
- var align = control.align;
- var isActive = value === align;
- return Object(objectSpread["a" /* default */])({}, control, {
- isActive: isActive,
- onClick: applyOrUnset(align)
- });
- })
- });
-}
-/* harmony default export */ var alignment_toolbar = (AlignmentToolbar);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/context.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-var _createContext = Object(external_this_wp_element_["createContext"])({
- name: '',
- isSelected: false,
- focusedElement: null,
- setFocusedElement: external_lodash_["noop"],
- clientId: null
-}),
- Consumer = _createContext.Consumer,
- Provider = _createContext.Provider;
-
-
-/**
- * A Higher Order Component used to inject BlockEdit context to the
- * wrapped component.
- *
- * @param {Function} mapContextToProps Function called on every context change,
- * expected to return object of props to
- * merge with the component's own props.
- *
- * @return {Component} Enhanced component with injected context as props.
- */
-
-var context_withBlockEditContext = function withBlockEditContext(mapContextToProps) {
- return Object(external_this_wp_compose_["createHigherOrderComponent"])(function (OriginalComponent) {
- return function (props) {
- return Object(external_this_wp_element_["createElement"])(Consumer, null, function (context) {
- return Object(external_this_wp_element_["createElement"])(OriginalComponent, Object(esm_extends["a" /* default */])({}, props, mapContextToProps(context, props)));
- });
- };
- }, 'withBlockEditContext');
-};
-/**
- * A Higher Order Component used to render conditionally the wrapped
- * component only when the BlockEdit has selected state set.
- *
- * @param {Component} OriginalComponent Component to wrap.
- *
- * @return {Component} Component which renders only when the BlockEdit is selected.
- */
-
-var ifBlockEditSelected = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (OriginalComponent) {
- return function (props) {
- return Object(external_this_wp_element_["createElement"])(Consumer, null, function (_ref) {
- var isSelected = _ref.isSelected;
- return isSelected && Object(external_this_wp_element_["createElement"])(OriginalComponent, props);
- });
- };
-}, 'ifBlockEditSelected');
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/autocomplete/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Wrap the default Autocomplete component with one that
- * supports a filter hook for customizing its list of autocompleters.
- *
- * This function is exported for unit test.
- *
- * @param {Function} Autocomplete Original component.
- * @return {Function} Wrapped component
- */
-
-function withFilteredAutocompleters(Autocomplete) {
- return function (props) {
- var _props$completers = props.completers,
- completers = _props$completers === void 0 ? [] : _props$completers;
-
- if (Object(external_this_wp_hooks_["hasFilter"])('editor.Autocomplete.completers')) {
- completers = Object(external_this_wp_hooks_["applyFilters"])('editor.Autocomplete.completers', // Provide copies so filters may directly modify them.
- completers.map(external_lodash_["clone"]), props.blockName);
- }
-
- return Object(external_this_wp_element_["createElement"])(Autocomplete, Object(esm_extends["a" /* default */])({}, props, {
- completers: completers
- }));
- };
-}
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/autocomplete/README.md
- */
-
-/* harmony default export */ var autocomplete = (Object(external_this_wp_compose_["compose"])([context_withBlockEditContext(function (_ref) {
- var name = _ref.name;
- return {
- blockName: name
- };
-}), withFilteredAutocompleters])(external_this_wp_components_["Autocomplete"]));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-alignment-toolbar/index.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-var BLOCK_ALIGNMENTS_CONTROLS = {
- left: {
- icon: 'align-left',
- title: Object(external_this_wp_i18n_["__"])('Align Left')
- },
- center: {
- icon: 'align-center',
- title: Object(external_this_wp_i18n_["__"])('Align Center')
- },
- right: {
- icon: 'align-right',
- title: Object(external_this_wp_i18n_["__"])('Align Right')
- },
- wide: {
- icon: 'align-wide',
- title: Object(external_this_wp_i18n_["__"])('Wide Width')
- },
- full: {
- icon: 'align-full-width',
- title: Object(external_this_wp_i18n_["__"])('Full Width')
- }
-};
-var DEFAULT_CONTROLS = ['left', 'center', 'right', 'wide', 'full'];
-var DEFAULT_CONTROL = 'center';
-var WIDE_CONTROLS = ['wide', 'full'];
-function BlockAlignmentToolbar(_ref) {
- var value = _ref.value,
- onChange = _ref.onChange,
- _ref$controls = _ref.controls,
- controls = _ref$controls === void 0 ? DEFAULT_CONTROLS : _ref$controls,
- _ref$isCollapsed = _ref.isCollapsed,
- isCollapsed = _ref$isCollapsed === void 0 ? true : _ref$isCollapsed,
- _ref$wideControlsEnab = _ref.wideControlsEnabled,
- wideControlsEnabled = _ref$wideControlsEnab === void 0 ? false : _ref$wideControlsEnab;
-
- function applyOrUnset(align) {
- return function () {
- return onChange(value === align ? undefined : align);
- };
- }
-
- var enabledControls = wideControlsEnabled ? controls : controls.filter(function (control) {
- return WIDE_CONTROLS.indexOf(control) === -1;
- });
- var activeAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[value];
- var defaultAlignmentControl = BLOCK_ALIGNMENTS_CONTROLS[DEFAULT_CONTROL];
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
- isCollapsed: isCollapsed,
- icon: activeAlignmentControl ? activeAlignmentControl.icon : defaultAlignmentControl.icon,
- label: Object(external_this_wp_i18n_["__"])('Change alignment'),
- controls: enabledControls.map(function (control) {
- return Object(objectSpread["a" /* default */])({}, BLOCK_ALIGNMENTS_CONTROLS[control], {
- isActive: value === control,
- onClick: applyOrUnset(control)
- });
- })
- });
-}
-/* harmony default export */ var block_alignment_toolbar = (Object(external_this_wp_compose_["compose"])(context_withBlockEditContext(function (_ref2) {
- var clientId = _ref2.clientId;
- return {
- clientId: clientId
- };
-}), Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSettings = _select.getSettings;
-
- var settings = getSettings();
- return {
- wideControlsEnabled: settings.alignWide
- };
-}))(BlockAlignmentToolbar));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-controls/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-var _createSlotFill = Object(external_this_wp_components_["createSlotFill"])('BlockControls'),
- Fill = _createSlotFill.Fill,
- Slot = _createSlotFill.Slot;
-
-var block_controls_BlockControlsFill = function BlockControlsFill(_ref) {
- var controls = _ref.controls,
- children = _ref.children;
- return Object(external_this_wp_element_["createElement"])(Fill, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
- controls: controls
- }), children);
-};
-
-var BlockControls = ifBlockEditSelected(block_controls_BlockControlsFill);
-BlockControls.Slot = Slot;
-/* harmony default export */ var block_controls = (BlockControls);
-
-// EXTERNAL MODULE: ./node_modules/memize/index.js
-var memize = __webpack_require__(44);
-var memize_default = /*#__PURE__*/__webpack_require__.n(memize);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/edit.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-var edit_Edit = function Edit(props) {
- var _props$attributes = props.attributes,
- attributes = _props$attributes === void 0 ? {} : _props$attributes,
- name = props.name;
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(name);
-
- if (!blockType) {
- return null;
- } // Generate a class name for the block's editable form
-
-
- var generatedClassName = Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'className', true) ? Object(external_this_wp_blocks_["getBlockDefaultClassName"])(name) : null;
- var className = classnames_default()(generatedClassName, attributes.className); // `edit` and `save` are functions or components describing the markup
- // with which a block is displayed. If `blockType` is valid, assign
- // them preferentially as the render value for the block.
-
- var Component = blockType.edit || blockType.save;
- return Object(external_this_wp_element_["createElement"])(Component, Object(esm_extends["a" /* default */])({}, props, {
- className: className
- }));
-};
-/* harmony default export */ var edit = (Object(external_this_wp_components_["withFilters"])('editor.BlockEdit')(edit_Edit));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-edit/index.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-var block_edit_BlockEdit =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockEdit, _Component);
-
- function BlockEdit() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockEdit);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockEdit).apply(this, arguments)); // It is important to return the same object if props haven't changed
- // to avoid unnecessary rerenders.
- // See https://reactjs.org/docs/context.html#caveats.
-
- _this.propsToContext = memize_default()(_this.propsToContext.bind(Object(assertThisInitialized["a" /* default */])(_this)), {
- maxSize: 1
- });
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockEdit, [{
- key: "propsToContext",
- value: function propsToContext(name, isSelected, clientId, onFocus, onCaretVerticalPositionChange) {
- return {
- name: name,
- isSelected: isSelected,
- clientId: clientId,
- onFocus: onFocus,
- onCaretVerticalPositionChange: onCaretVerticalPositionChange
- };
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- name = _this$props.name,
- isSelected = _this$props.isSelected,
- clientId = _this$props.clientId,
- onFocus = _this$props.onFocus,
- onCaretVerticalPositionChange = _this$props.onCaretVerticalPositionChange;
- var value = this.propsToContext(name, isSelected, clientId, onFocus, onCaretVerticalPositionChange);
- return Object(external_this_wp_element_["createElement"])(Provider, {
- value: value
- }, Object(external_this_wp_element_["createElement"])(edit, this.props));
- }
- }]);
-
- return BlockEdit;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_edit = (block_edit_BlockEdit);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-format-controls/index.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-var block_format_controls_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('BlockFormatControls'),
- block_format_controls_Fill = block_format_controls_createSlotFill.Fill,
- block_format_controls_Slot = block_format_controls_createSlotFill.Slot;
-
-var BlockFormatControls = ifBlockEditSelected(block_format_controls_Fill);
-BlockFormatControls.Slot = block_format_controls_Slot;
-/* harmony default export */ var block_format_controls = (BlockFormatControls);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-icon/index.js
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-function BlockIcon(_ref) {
- var icon = _ref.icon,
- _ref$showColors = _ref.showColors,
- showColors = _ref$showColors === void 0 ? false : _ref$showColors,
- className = _ref.className;
-
- if (Object(external_lodash_["get"])(icon, ['src']) === 'block-default') {
- icon = {
- src: Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M19 7h-1V5h-4v2h-4V5H6v2H5c-1.1 0-2 .9-2 2v10h18V9c0-1.1-.9-2-2-2zm0 10H5V9h14v8z"
- }))
- };
- }
-
- var renderedIcon = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], {
- icon: icon && icon.src ? icon.src : icon
- });
- var style = showColors ? {
- backgroundColor: icon && icon.background,
- color: icon && icon.foreground
- } : {};
- return Object(external_this_wp_element_["createElement"])("span", {
- style: style,
- className: classnames_default()('editor-block-icon block-editor-block-icon', className, {
- 'has-colors': showColors
- })
- }, renderedIcon);
-}
-
-// EXTERNAL MODULE: external {"this":["wp","keycodes"]}
-var external_this_wp_keycodes_ = __webpack_require__(19);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-navigation/list.js
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function BlockNavigationList(_ref) {
- var blocks = _ref.blocks,
- selectedBlockClientId = _ref.selectedBlockClientId,
- selectBlock = _ref.selectBlock,
- showNestedBlocks = _ref.showNestedBlocks;
- return (
- /*
- * Disable reason: The `list` ARIA role is redundant but
- * Safari+VoiceOver won't announce the list otherwise.
- */
-
- /* eslint-disable jsx-a11y/no-redundant-roles */
- Object(external_this_wp_element_["createElement"])("ul", {
- className: "editor-block-navigation__list block-editor-block-navigation__list",
- role: "list"
- }, Object(external_lodash_["map"])(blocks, function (block) {
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(block.name);
- var isSelected = block.clientId === selectedBlockClientId;
- return Object(external_this_wp_element_["createElement"])("li", {
- key: block.clientId
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-navigation__item block-editor-block-navigation__item"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- className: classnames_default()('editor-block-navigation__item-button block-editor-block-navigation__item-button', {
- 'is-selected': isSelected
- }),
- onClick: function onClick() {
- return selectBlock(block.clientId);
- }
- }, Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: blockType.icon,
- showColors: true
- }), blockType.title, isSelected && Object(external_this_wp_element_["createElement"])("span", {
- className: "screen-reader-text"
- }, Object(external_this_wp_i18n_["__"])('(selected block)')))), showNestedBlocks && !!block.innerBlocks && !!block.innerBlocks.length && Object(external_this_wp_element_["createElement"])(BlockNavigationList, {
- blocks: block.innerBlocks,
- selectedBlockClientId: selectedBlockClientId,
- selectBlock: selectBlock,
- showNestedBlocks: true
- }));
- }))
- /* eslint-enable jsx-a11y/no-redundant-roles */
-
- );
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-navigation/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function BlockNavigation(_ref) {
- var rootBlock = _ref.rootBlock,
- rootBlocks = _ref.rootBlocks,
- selectedBlockClientId = _ref.selectedBlockClientId,
- selectBlock = _ref.selectBlock;
-
- if (!rootBlocks || rootBlocks.length === 0) {
- return null;
- }
-
- var hasHierarchy = rootBlock && (rootBlock.clientId !== selectedBlockClientId || rootBlock.innerBlocks && rootBlock.innerBlocks.length !== 0);
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NavigableMenu"], {
- role: "presentation",
- className: "editor-block-navigation__container block-editor-block-navigation__container"
- }, Object(external_this_wp_element_["createElement"])("p", {
- className: "editor-block-navigation__label block-editor-block-navigation__label"
- }, Object(external_this_wp_i18n_["__"])('Block navigation')), hasHierarchy && Object(external_this_wp_element_["createElement"])(BlockNavigationList, {
- blocks: [rootBlock],
- selectedBlockClientId: selectedBlockClientId,
- selectBlock: selectBlock,
- showNestedBlocks: true
- }), !hasHierarchy && Object(external_this_wp_element_["createElement"])(BlockNavigationList, {
- blocks: rootBlocks,
- selectedBlockClientId: selectedBlockClientId,
- selectBlock: selectBlock
- }));
-}
-
-/* harmony default export */ var block_navigation = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSelectedBlockClientId = _select.getSelectedBlockClientId,
- getBlockHierarchyRootClientId = _select.getBlockHierarchyRootClientId,
- getBlock = _select.getBlock,
- getBlocks = _select.getBlocks;
-
- var selectedBlockClientId = getSelectedBlockClientId();
- return {
- rootBlocks: getBlocks(),
- rootBlock: selectedBlockClientId ? getBlock(getBlockHierarchyRootClientId(selectedBlockClientId)) : null,
- selectedBlockClientId: selectedBlockClientId
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref2) {
- var _ref2$onSelect = _ref2.onSelect,
- onSelect = _ref2$onSelect === void 0 ? external_lodash_["noop"] : _ref2$onSelect;
- return {
- selectBlock: function selectBlock(clientId) {
- dispatch('core/block-editor').selectBlock(clientId);
- onSelect(clientId);
- }
- };
-}))(BlockNavigation));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-navigation/dropdown.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-var MenuIcon = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24",
- width: "20",
- height: "20"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M5 5H3v2h2V5zm3 8h11v-2H8v2zm9-8H6v2h11V5zM7 11H5v2h2v-2zm0 8h2v-2H7v2zm3-2v2h11v-2H10z"
-}));
-
-function BlockNavigationDropdown(_ref) {
- var hasBlocks = _ref.hasBlocks,
- isDisabled = _ref.isDisabled;
- var isEnabled = hasBlocks && !isDisabled;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dropdown"], {
- contentClassName: "editor-block-navigation__popover block-editor-block-navigation__popover",
- renderToggle: function renderToggle(_ref2) {
- var isOpen = _ref2.isOpen,
- onToggle = _ref2.onToggle;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, isEnabled && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], {
- bindGlobal: true,
- shortcuts: Object(defineProperty["a" /* default */])({}, external_this_wp_keycodes_["rawShortcut"].access('o'), onToggle)
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: MenuIcon,
- "aria-expanded": isOpen,
- onClick: isEnabled ? onToggle : undefined,
- label: Object(external_this_wp_i18n_["__"])('Block navigation'),
- className: "editor-block-navigation block-editor-block-navigation",
- shortcut: external_this_wp_keycodes_["displayShortcut"].access('o'),
- "aria-disabled": !isEnabled
- }));
- },
- renderContent: function renderContent(_ref4) {
- var onClose = _ref4.onClose;
- return Object(external_this_wp_element_["createElement"])(block_navigation, {
- onSelect: onClose
- });
- }
- });
-}
-
-/* harmony default export */ var dropdown = (Object(external_this_wp_data_["withSelect"])(function (select) {
- return {
- hasBlocks: !!select('core/block-editor').getBlockCount()
- };
-})(BlockNavigationDropdown));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-vertical-alignment-toolbar/icons.js
-
-
-/**
- * WordPress dependencies
- */
-
-var alignBottom = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- width: "20",
- height: "20",
- viewBox: "0 0 24 24"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- fill: "none",
- d: "M0 0h24v24H0V0z"
-}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M16 13h-3V3h-2v10H8l4 4 4-4zM4 19v2h16v-2H4z"
-}));
-var alignCenter = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- width: "20",
- height: "20",
- viewBox: "0 0 24 24"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- fill: "none",
- d: "M0 0h24v24H0V0z"
-}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M8 19h3v4h2v-4h3l-4-4-4 4zm8-14h-3V1h-2v4H8l4 4 4-4zM4 11v2h16v-2H4z"
-}));
-var alignTop = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- width: "20",
- height: "20",
- viewBox: "0 0 24 24"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- fill: "none",
- d: "M0 0h24v24H0V0z"
-}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M8 11h3v10h2V11h3l-4-4-4 4zM4 3v2h16V3H4z"
-}));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-vertical-alignment-toolbar/index.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-var block_vertical_alignment_toolbar_BLOCK_ALIGNMENTS_CONTROLS = {
- top: {
- icon: alignTop,
- title: Object(external_this_wp_i18n_["_x"])('Vertically Align Top', 'Block vertical alignment setting')
- },
- center: {
- icon: alignCenter,
- title: Object(external_this_wp_i18n_["_x"])('Vertically Align Middle', 'Block vertical alignment setting')
- },
- bottom: {
- icon: alignBottom,
- title: Object(external_this_wp_i18n_["_x"])('Vertically Align Bottom', 'Block vertical alignment setting')
- }
-};
-var block_vertical_alignment_toolbar_DEFAULT_CONTROLS = ['top', 'center', 'bottom'];
-var block_vertical_alignment_toolbar_DEFAULT_CONTROL = 'top';
-function BlockVerticalAlignmentToolbar(_ref) {
- var value = _ref.value,
- onChange = _ref.onChange,
- _ref$controls = _ref.controls,
- controls = _ref$controls === void 0 ? block_vertical_alignment_toolbar_DEFAULT_CONTROLS : _ref$controls,
- _ref$isCollapsed = _ref.isCollapsed,
- isCollapsed = _ref$isCollapsed === void 0 ? true : _ref$isCollapsed;
-
- function applyOrUnset(align) {
- return function () {
- return onChange(value === align ? undefined : align);
- };
- }
-
- var activeAlignment = block_vertical_alignment_toolbar_BLOCK_ALIGNMENTS_CONTROLS[value];
- var defaultAlignmentControl = block_vertical_alignment_toolbar_BLOCK_ALIGNMENTS_CONTROLS[block_vertical_alignment_toolbar_DEFAULT_CONTROL];
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], {
- isCollapsed: isCollapsed,
- icon: activeAlignment ? activeAlignment.icon : defaultAlignmentControl.icon,
- label: Object(external_this_wp_i18n_["_x"])('Change vertical alignment', 'Block vertical alignment setting label'),
- controls: controls.map(function (control) {
- return Object(objectSpread["a" /* default */])({}, block_vertical_alignment_toolbar_BLOCK_ALIGNMENTS_CONTROLS[control], {
- isActive: value === control,
- onClick: applyOrUnset(control)
- });
- })
- });
-}
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/block-vertical-alignment-toolbar/README.md
- */
-
-/* harmony default export */ var block_vertical_alignment_toolbar = (BlockVerticalAlignmentToolbar);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/media-upload/check.js
-/**
- * WordPress dependencies
- */
-
-function MediaUploadCheck(_ref) {
- var hasUploadPermissions = _ref.hasUploadPermissions,
- _ref$fallback = _ref.fallback,
- fallback = _ref$fallback === void 0 ? null : _ref$fallback,
- children = _ref.children;
- return hasUploadPermissions ? children : fallback;
-}
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/media-upload/README.md
- */
-
-/* harmony default export */ var check = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSettings = _select.getSettings;
-
- return {
- hasUploadPermissions: !!getSettings().__experimentalMediaUpload
- };
-})(MediaUploadCheck));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-drop-zone/index.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var parseDropEvent = function parseDropEvent(event) {
- var result = {
- srcRootClientId: null,
- srcClientId: null,
- srcIndex: null,
- type: null
- };
-
- if (!event.dataTransfer) {
- return result;
- }
-
- try {
- result = Object.assign(result, JSON.parse(event.dataTransfer.getData('text')));
- } catch (err) {
- return result;
- }
-
- return result;
-};
-
-var block_drop_zone_BlockDropZone =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockDropZone, _Component);
-
- function BlockDropZone() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockDropZone);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockDropZone).apply(this, arguments));
- _this.onFilesDrop = _this.onFilesDrop.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onHTMLDrop = _this.onHTMLDrop.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onDrop = _this.onDrop.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockDropZone, [{
- key: "getInsertIndex",
- value: function getInsertIndex(position) {
- var _this$props = this.props,
- clientId = _this$props.clientId,
- rootClientId = _this$props.rootClientId,
- getBlockIndex = _this$props.getBlockIndex;
-
- if (clientId !== undefined) {
- var index = getBlockIndex(clientId, rootClientId);
- return position && position.y === 'top' ? index : index + 1;
- }
- }
- }, {
- key: "onFilesDrop",
- value: function onFilesDrop(files, position) {
- var transformation = Object(external_this_wp_blocks_["findTransform"])(Object(external_this_wp_blocks_["getBlockTransforms"])('from'), function (transform) {
- return transform.type === 'files' && transform.isMatch(files);
- });
-
- if (transformation) {
- var insertIndex = this.getInsertIndex(position);
- var blocks = transformation.transform(files, this.props.updateBlockAttributes);
- this.props.insertBlocks(blocks, insertIndex);
- }
- }
- }, {
- key: "onHTMLDrop",
- value: function onHTMLDrop(HTML, position) {
- var blocks = Object(external_this_wp_blocks_["pasteHandler"])({
- HTML: HTML,
- mode: 'BLOCKS'
- });
-
- if (blocks.length) {
- this.props.insertBlocks(blocks, this.getInsertIndex(position));
- }
- }
- }, {
- key: "onDrop",
- value: function onDrop(event, position) {
- var _this$props2 = this.props,
- dstRootClientId = _this$props2.rootClientId,
- dstClientId = _this$props2.clientId,
- getClientIdsOfDescendants = _this$props2.getClientIdsOfDescendants,
- getBlockIndex = _this$props2.getBlockIndex;
-
- var _parseDropEvent = parseDropEvent(event),
- srcRootClientId = _parseDropEvent.srcRootClientId,
- srcClientId = _parseDropEvent.srcClientId,
- srcIndex = _parseDropEvent.srcIndex,
- type = _parseDropEvent.type;
-
- var isBlockDropType = function isBlockDropType(dropType) {
- return dropType === 'block';
- };
-
- var isSameLevel = function isSameLevel(srcRoot, dstRoot) {
- // Note that rootClientId of top-level blocks will be undefined OR a void string,
- // so we also need to account for that case separately.
- return srcRoot === dstRoot || !srcRoot === true && !dstRoot === true;
- };
-
- var isSameBlock = function isSameBlock(src, dst) {
- return src === dst;
- };
-
- var isSrcBlockAnAncestorOfDstBlock = function isSrcBlockAnAncestorOfDstBlock(src, dst) {
- return getClientIdsOfDescendants([src]).some(function (id) {
- return id === dst;
- });
- };
-
- if (!isBlockDropType(type) || isSameBlock(srcClientId, dstClientId) || isSrcBlockAnAncestorOfDstBlock(srcClientId, dstClientId || dstRootClientId)) {
- return;
- }
-
- var dstIndex = dstClientId ? getBlockIndex(dstClientId, dstRootClientId) : undefined;
- var positionIndex = this.getInsertIndex(position); // If the block is kept at the same level and moved downwards,
- // subtract to account for blocks shifting upward to occupy its old position.
-
- var insertIndex = dstIndex && srcIndex < dstIndex && isSameLevel(srcRootClientId, dstRootClientId) ? positionIndex - 1 : positionIndex;
- this.props.moveBlockToPosition(srcClientId, srcRootClientId, insertIndex);
- }
- }, {
- key: "render",
- value: function render() {
- var isLockedAll = this.props.isLockedAll;
-
- if (isLockedAll) {
- return null;
- }
-
- var index = this.getInsertIndex();
- var isAppender = index === undefined;
- return Object(external_this_wp_element_["createElement"])(check, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["DropZone"], {
- className: classnames_default()('editor-block-drop-zone block-editor-block-drop-zone', {
- 'is-appender': isAppender
- }),
- onFilesDrop: this.onFilesDrop,
- onHTMLDrop: this.onHTMLDrop,
- onDrop: this.onDrop
- }));
- }
- }]);
-
- return BlockDropZone;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_drop_zone = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) {
- var _dispatch = dispatch('core/block-editor'),
- _insertBlocks = _dispatch.insertBlocks,
- _updateBlockAttributes = _dispatch.updateBlockAttributes,
- _moveBlockToPosition = _dispatch.moveBlockToPosition;
-
- return {
- insertBlocks: function insertBlocks(blocks, index) {
- var rootClientId = ownProps.rootClientId;
-
- _insertBlocks(blocks, index, rootClientId);
- },
- updateBlockAttributes: function updateBlockAttributes() {
- _updateBlockAttributes.apply(void 0, arguments);
- },
- moveBlockToPosition: function moveBlockToPosition(srcClientId, srcRootClientId, dstIndex) {
- var dstRootClientId = ownProps.rootClientId;
-
- _moveBlockToPosition(srcClientId, srcRootClientId, dstRootClientId, dstIndex);
- }
- };
-}), Object(external_this_wp_data_["withSelect"])(function (select, _ref) {
- var rootClientId = _ref.rootClientId;
-
- var _select = select('core/block-editor'),
- getClientIdsOfDescendants = _select.getClientIdsOfDescendants,
- getTemplateLock = _select.getTemplateLock,
- getBlockIndex = _select.getBlockIndex;
-
- return {
- isLockedAll: getTemplateLock(rootClientId) === 'all',
- getClientIdsOfDescendants: getClientIdsOfDescendants,
- getBlockIndex: getBlockIndex
- };
-}), Object(external_this_wp_components_["withFilters"])('editor.BlockDropZone'))(block_drop_zone_BlockDropZone));
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/toConsumableArray.js + 2 modules
-var toConsumableArray = __webpack_require__(17);
-
-// EXTERNAL MODULE: ./node_modules/dom-scroll-into-view/lib/index.js
-var lib = __webpack_require__(68);
-var lib_default = /*#__PURE__*/__webpack_require__.n(lib);
-
-// EXTERNAL MODULE: external {"this":["wp","url"]}
-var external_this_wp_url_ = __webpack_require__(26);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/slicedToArray.js + 1 modules
-var slicedToArray = __webpack_require__(23);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js + 1 modules
-var objectWithoutProperties = __webpack_require__(21);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/defaults.js
-/**
- * WordPress dependencies
- */
-
-var PREFERENCES_DEFAULTS = {
- insertUsage: {}
-};
-/**
- * The default editor settings
- *
- * alignWide boolean Enable/Disable Wide/Full Alignments
- * availableLegacyWidgets Array Array of objects representing the legacy widgets available.
- * colors Array Palette colors
- * disableCustomColors boolean Whether or not the custom colors are disabled
- * fontSizes Array Available font sizes
- * disableCustomFontSizes boolean Whether or not the custom font sizes are disabled
- * imageSizes Array Available image sizes
- * maxWidth number Max width to constraint resizing
- * allowedBlockTypes boolean|Array Allowed block types
- * hasFixedToolbar boolean Whether or not the editor toolbar is fixed
- * hasPermissionsToManageWidgets boolean Whether or not the user is able to manage widgets.
- * focusMode boolean Whether the focus mode is enabled or not
- * styles Array Editor Styles
- * isRTL boolean Whether the editor is in RTL mode
- * bodyPlaceholder string Empty post placeholder
- * titlePlaceholder string Empty title placeholder
- * codeEditingEnabled string Whether or not the user can switch to the code editor
- * showInserterHelpPanel boolean Whether or not the inserter help panel is shown
- * __experimentalCanUserUseUnfilteredHTML string Whether the user should be able to use unfiltered HTML or the HTML should be filtered e.g., to remove elements considered insecure like iframes.
- * __experimentalEnableLegacyWidgetBlock boolean Whether the user has enabled the Legacy Widget Block
- * __experimentalEnableMenuBlock boolean Whether the user has enabled the Menu Block
- * __experimentalBlockDirectory boolean Whether the user has enabled the Block Directory
- */
-
-var SETTINGS_DEFAULTS = {
- alignWide: false,
- colors: [{
- name: Object(external_this_wp_i18n_["__"])('Pale pink'),
- slug: 'pale-pink',
- color: '#f78da7'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Vivid red'),
- slug: 'vivid-red',
- color: '#cf2e2e'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Luminous vivid orange'),
- slug: 'luminous-vivid-orange',
- color: '#ff6900'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Luminous vivid amber'),
- slug: 'luminous-vivid-amber',
- color: '#fcb900'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Light green cyan'),
- slug: 'light-green-cyan',
- color: '#7bdcb5'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Vivid green cyan'),
- slug: 'vivid-green-cyan',
- color: '#00d084'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Pale cyan blue'),
- slug: 'pale-cyan-blue',
- color: '#8ed1fc'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Vivid cyan blue'),
- slug: 'vivid-cyan-blue',
- color: '#0693e3'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Vivid purple'),
- slug: 'vivid-purple',
- color: '#9b51e0'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Very light gray'),
- slug: 'very-light-gray',
- color: '#eeeeee'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Cyan bluish gray'),
- slug: 'cyan-bluish-gray',
- color: '#abb8c3'
- }, {
- name: Object(external_this_wp_i18n_["__"])('Very dark gray'),
- slug: 'very-dark-gray',
- color: '#313131'
- }],
- fontSizes: [{
- name: Object(external_this_wp_i18n_["_x"])('Small', 'font size name'),
- size: 13,
- slug: 'small'
- }, {
- name: Object(external_this_wp_i18n_["_x"])('Normal', 'font size name'),
- size: 16,
- slug: 'normal'
- }, {
- name: Object(external_this_wp_i18n_["_x"])('Medium', 'font size name'),
- size: 20,
- slug: 'medium'
- }, {
- name: Object(external_this_wp_i18n_["_x"])('Large', 'font size name'),
- size: 36,
- slug: 'large'
- }, {
- name: Object(external_this_wp_i18n_["_x"])('Huge', 'font size name'),
- size: 48,
- slug: 'huge'
- }],
- imageSizes: [{
- slug: 'thumbnail',
- label: Object(external_this_wp_i18n_["__"])('Thumbnail')
- }, {
- slug: 'medium',
- label: Object(external_this_wp_i18n_["__"])('Medium')
- }, {
- slug: 'large',
- label: Object(external_this_wp_i18n_["__"])('Large')
- }, {
- slug: 'full',
- label: Object(external_this_wp_i18n_["__"])('Full Size')
- }],
- // This is current max width of the block inner area
- // It's used to constraint image resizing and this value could be overridden later by themes
- maxWidth: 580,
- // Allowed block types for the editor, defaulting to true (all supported).
- allowedBlockTypes: true,
- // Maximum upload size in bytes allowed for the site.
- maxUploadFileSize: 0,
- // List of allowed mime types and file extensions.
- allowedMimeTypes: null,
- availableLegacyWidgets: {},
- hasPermissionsToManageWidgets: false,
- showInserterHelpPanel: true,
- __experimentalCanUserUseUnfilteredHTML: false,
- __experimentalEnableLegacyWidgetBlock: false,
- __experimentalEnableMenuBlock: false,
- __experimentalBlockDirectory: false
-};
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/array.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * Insert one or multiple elements into a given position of an array.
- *
- * @param {Array} array Source array.
- * @param {*} elements Elements to insert.
- * @param {number} index Insert Position.
- *
- * @return {Array} Result.
- */
-
-function insertAt(array, elements, index) {
- return [].concat(Object(toConsumableArray["a" /* default */])(array.slice(0, index)), Object(toConsumableArray["a" /* default */])(Object(external_lodash_["castArray"])(elements)), Object(toConsumableArray["a" /* default */])(array.slice(index)));
-}
-/**
- * Moves an element in an array.
- *
- * @param {Array} array Source array.
- * @param {number} from Source index.
- * @param {number} to Destination index.
- * @param {number} count Number of elements to move.
- *
- * @return {Array} Result.
- */
-
-function moveTo(array, from, to) {
- var count = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : 1;
-
- var withoutMovedElements = Object(toConsumableArray["a" /* default */])(array);
-
- withoutMovedElements.splice(from, count);
- return insertAt(withoutMovedElements, array.slice(from, from + count), to);
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/reducer.js
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-/**
- * Given an array of blocks, returns an object where each key is a nesting
- * context, the value of which is an array of block client IDs existing within
- * that nesting context.
- *
- * @param {Array} blocks Blocks to map.
- * @param {?string} rootClientId Assumed root client ID.
- *
- * @return {Object} Block order map object.
- */
-
-function mapBlockOrder(blocks) {
- var rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
-
- var result = Object(defineProperty["a" /* default */])({}, rootClientId, []);
-
- blocks.forEach(function (block) {
- var clientId = block.clientId,
- innerBlocks = block.innerBlocks;
- result[rootClientId].push(clientId);
- Object.assign(result, mapBlockOrder(innerBlocks, clientId));
- });
- return result;
-}
-/**
- * Given an array of blocks, returns an object where each key contains
- * the clientId of the block and the value is the parent of the block.
- *
- * @param {Array} blocks Blocks to map.
- * @param {?string} rootClientId Assumed root client ID.
- *
- * @return {Object} Block order map object.
- */
-
-
-function mapBlockParents(blocks) {
- var rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- return blocks.reduce(function (result, block) {
- return Object.assign(result, Object(defineProperty["a" /* default */])({}, block.clientId, rootClientId), mapBlockParents(block.innerBlocks, block.clientId));
- }, {});
-}
-/**
- * Helper method to iterate through all blocks, recursing into inner blocks,
- * applying a transformation function to each one.
- * Returns a flattened object with the transformed blocks.
- *
- * @param {Array} blocks Blocks to flatten.
- * @param {Function} transform Transforming function to be applied to each block.
- *
- * @return {Object} Flattened object.
- */
-
-
-function flattenBlocks(blocks) {
- var transform = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : external_lodash_["identity"];
- var result = {};
-
- var stack = Object(toConsumableArray["a" /* default */])(blocks);
-
- while (stack.length) {
- var _stack$shift = stack.shift(),
- innerBlocks = _stack$shift.innerBlocks,
- block = Object(objectWithoutProperties["a" /* default */])(_stack$shift, ["innerBlocks"]);
-
- stack.push.apply(stack, Object(toConsumableArray["a" /* default */])(innerBlocks));
- result[block.clientId] = transform(block);
- }
-
- return result;
-}
-/**
- * Given an array of blocks, returns an object containing all blocks, without
- * attributes, recursing into inner blocks. Keys correspond to the block client
- * ID, the value of which is the attributes object.
- *
- * @param {Array} blocks Blocks to flatten.
- *
- * @return {Object} Flattened block attributes object.
- */
-
-
-function getFlattenedBlocksWithoutAttributes(blocks) {
- return flattenBlocks(blocks, function (block) {
- return Object(external_lodash_["omit"])(block, 'attributes');
- });
-}
-/**
- * Given an array of blocks, returns an object containing all block attributes,
- * recursing into inner blocks. Keys correspond to the block client ID, the
- * value of which is the attributes object.
- *
- * @param {Array} blocks Blocks to flatten.
- *
- * @return {Object} Flattened block attributes object.
- */
-
-
-function getFlattenedBlockAttributes(blocks) {
- return flattenBlocks(blocks, function (block) {
- return block.attributes;
- });
-}
-/**
- * Given a block order map object, returns *all* of the block client IDs that are
- * a descendant of the given root client ID.
- *
- * Calling this with `rootClientId` set to `''` results in a list of client IDs
- * that are in the post. That is, it excludes blocks like fetched reusable
- * blocks which are stored into state but not visible.
- *
- * @param {Object} blocksOrder Object that maps block client IDs to a list of
- * nested block client IDs.
- * @param {?string} rootClientId The root client ID to search. Defaults to ''.
- *
- * @return {Array} List of descendant client IDs.
- */
-
-
-function getNestedBlockClientIds(blocksOrder) {
- var rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
- return Object(external_lodash_["reduce"])(blocksOrder[rootClientId], function (result, clientId) {
- return [].concat(Object(toConsumableArray["a" /* default */])(result), [clientId], Object(toConsumableArray["a" /* default */])(getNestedBlockClientIds(blocksOrder, clientId)));
- }, []);
-}
-/**
- * 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 updating the same block attribute, or
- * false otherwise.
- *
- * @param {Object} action Currently dispatching action.
- * @param {Object} lastAction Previously dispatched action.
- *
- * @return {boolean} Whether actions are updating the same block attribute.
- */
-
-function isUpdatingSameBlockAttribute(action, lastAction) {
- return action.type === 'UPDATE_BLOCK_ATTRIBUTES' && lastAction !== undefined && lastAction.type === 'UPDATE_BLOCK_ATTRIBUTES' && action.clientId === lastAction.clientId && hasSameKeys(action.attributes, lastAction.attributes);
-}
-/**
- * Utility returning an object with an empty object value for each key.
- *
- * @param {Array} objectKeys Keys to fill.
- * @return {Object} Object filled with empty object as values for each clientId.
- */
-
-var fillKeysWithEmptyObject = function fillKeysWithEmptyObject(objectKeys) {
- return objectKeys.reduce(function (result, key) {
- result[key] = {};
- return result;
- }, {});
-};
-/**
- * Higher-order reducer intended to compute a cache key for each block in the post.
- * A new instance of the cache key (empty object) is created each time the block object
- * needs to be refreshed (for any change in the block or its children).
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-var reducer_withBlockCache = function withBlockCache(reducer) {
- return function () {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var action = arguments.length > 1 ? arguments[1] : undefined;
- var newState = reducer(state, action);
-
- if (newState === state) {
- return state;
- }
-
- newState.cache = state.cache ? state.cache : {};
- /**
- * For each clientId provided, traverses up parents, adding the provided clientIds
- * and each parent's clientId to the returned array.
- *
- * When calling this function consider that it uses the old state, so any state
- * modifications made by the `reducer` will not be present.
- *
- * @param {Array} clientIds an Array of block clientIds.
- *
- * @return {Array} The provided clientIds and all of their parent clientIds.
- */
-
- var getBlocksWithParentsClientIds = function getBlocksWithParentsClientIds(clientIds) {
- return clientIds.reduce(function (result, clientId) {
- var current = clientId;
-
- do {
- result.push(current);
- current = state.parents[current];
- } while (current);
-
- return result;
- }, []);
- };
-
- switch (action.type) {
- case 'RESET_BLOCKS':
- newState.cache = Object(external_lodash_["mapValues"])(flattenBlocks(action.blocks), function () {
- return {};
- });
- break;
-
- case 'RECEIVE_BLOCKS':
- case 'INSERT_BLOCKS':
- {
- var updatedBlockUids = Object(external_lodash_["keys"])(flattenBlocks(action.blocks));
-
- if (action.rootClientId) {
- updatedBlockUids.push(action.rootClientId);
- }
-
- newState.cache = Object(objectSpread["a" /* default */])({}, newState.cache, fillKeysWithEmptyObject(getBlocksWithParentsClientIds(updatedBlockUids)));
- break;
- }
-
- case 'UPDATE_BLOCK':
- case 'UPDATE_BLOCK_ATTRIBUTES':
- newState.cache = Object(objectSpread["a" /* default */])({}, newState.cache, fillKeysWithEmptyObject(getBlocksWithParentsClientIds([action.clientId])));
- break;
-
- case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- var parentClientIds = fillKeysWithEmptyObject(getBlocksWithParentsClientIds(action.replacedClientIds));
- newState.cache = Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(newState.cache, action.replacedClientIds), Object(external_lodash_["omit"])(parentClientIds, action.replacedClientIds), fillKeysWithEmptyObject(Object(external_lodash_["keys"])(flattenBlocks(action.blocks))));
- break;
-
- case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- newState.cache = Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(newState.cache, action.removedClientIds), fillKeysWithEmptyObject(Object(external_lodash_["difference"])(getBlocksWithParentsClientIds(action.clientIds), action.clientIds)));
- break;
-
- case 'MOVE_BLOCK_TO_POSITION':
- {
- var _updatedBlockUids = [action.clientId];
-
- if (action.fromRootClientId) {
- _updatedBlockUids.push(action.fromRootClientId);
- }
-
- if (action.toRootClientId) {
- _updatedBlockUids.push(action.toRootClientId);
- }
-
- newState.cache = Object(objectSpread["a" /* default */])({}, newState.cache, fillKeysWithEmptyObject(getBlocksWithParentsClientIds(_updatedBlockUids)));
- break;
- }
-
- case 'MOVE_BLOCKS_UP':
- case 'MOVE_BLOCKS_DOWN':
- {
- var _updatedBlockUids2 = [];
-
- if (action.rootClientId) {
- _updatedBlockUids2.push(action.rootClientId);
- }
-
- newState.cache = Object(objectSpread["a" /* default */])({}, newState.cache, fillKeysWithEmptyObject(getBlocksWithParentsClientIds(_updatedBlockUids2)));
- break;
- }
-
- case 'SAVE_REUSABLE_BLOCK_SUCCESS':
- {
- var _updatedBlockUids3 = Object(external_lodash_["keys"])(Object(external_lodash_["omitBy"])(newState.attributes, function (attributes, clientId) {
- return newState.byClientId[clientId].name !== 'core/block' || attributes.ref !== action.updatedId;
- }));
-
- newState.cache = Object(objectSpread["a" /* default */])({}, newState.cache, fillKeysWithEmptyObject(getBlocksWithParentsClientIds(_updatedBlockUids3)));
- }
- }
-
- return newState;
- };
-};
-/**
- * Higher-order reducer intended to augment the blocks reducer, assigning an
- * `isPersistentChange` property value corresponding to whether a change in
- * state can be considered as persistent. All changes are considered persistent
- * except when updating the same block attribute as in the previous action.
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-function withPersistentBlockChange(reducer) {
- var lastAction;
- return function (state, action) {
- var nextState = reducer(state, action);
- var isExplicitPersistentChange = action.type === 'MARK_LAST_CHANGE_AS_PERSISTENT'; // Defer to previous state value (or default) unless changing or
- // explicitly marking as persistent.
-
- if (state === nextState && !isExplicitPersistentChange) {
- var nextIsPersistentChange = Object(external_lodash_["get"])(state, ['isPersistentChange'], true);
-
- if (state.isPersistentChange === nextIsPersistentChange) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, nextState, {
- isPersistentChange: nextIsPersistentChange
- });
- }
-
- nextState = Object(objectSpread["a" /* default */])({}, nextState, {
- isPersistentChange: isExplicitPersistentChange || !isUpdatingSameBlockAttribute(action, lastAction)
- }); // In comparing against the previous action, consider only those which
- // would have qualified as one which would have been ignored or not
- // have resulted in a changed state.
-
- lastAction = action;
- return nextState;
- };
-}
-/**
- * Higher-order reducer intended to augment the blocks reducer, assigning an
- * `isIgnoredChange` property value corresponding to whether a change in state
- * can be considered as ignored. A change is considered ignored when the result
- * of an action not incurred by direct user interaction.
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-function withIgnoredBlockChange(reducer) {
- /**
- * Set of action types for which a blocks state change should be ignored.
- *
- * @type {Set}
- */
- var IGNORED_ACTION_TYPES = new Set(['RECEIVE_BLOCKS']);
- return function (state, action) {
- var nextState = reducer(state, action);
-
- if (nextState !== state) {
- nextState.isIgnoredChange = IGNORED_ACTION_TYPES.has(action.type);
- }
-
- return nextState;
- };
-}
-/**
- * Higher-order reducer targeting the combined blocks reducer, augmenting
- * block client IDs in remove action to include cascade of inner blocks.
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-var reducer_withInnerBlocksRemoveCascade = function withInnerBlocksRemoveCascade(reducer) {
- return function (state, action) {
- var getAllChildren = function getAllChildren(clientIds) {
- var result = clientIds;
-
- for (var i = 0; i < result.length; i++) {
- var _result2;
-
- if (!state.order[result[i]]) {
- continue;
- }
-
- if (result === clientIds) {
- result = Object(toConsumableArray["a" /* default */])(result);
- }
-
- (_result2 = result).push.apply(_result2, Object(toConsumableArray["a" /* default */])(state.order[result[i]]));
- }
-
- return result;
- };
-
- if (state) {
- switch (action.type) {
- case 'REMOVE_BLOCKS':
- action = Object(objectSpread["a" /* default */])({}, action, {
- type: 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN',
- removedClientIds: getAllChildren(action.clientIds)
- });
- break;
-
- case 'REPLACE_BLOCKS':
- action = Object(objectSpread["a" /* default */])({}, action, {
- type: 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN',
- replacedClientIds: getAllChildren(action.clientIds)
- });
- break;
- }
- }
-
- return reducer(state, action);
- };
-};
-/**
- * Higher-order reducer which targets the combined blocks reducer and handles
- * the `RESET_BLOCKS` action. When dispatched, this action will replace all
- * blocks that exist in the post, leaving blocks that exist only in state (e.g.
- * reusable blocks) alone.
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-var reducer_withBlockReset = function withBlockReset(reducer) {
- return function (state, action) {
- if (state && action.type === 'RESET_BLOCKS') {
- var visibleClientIds = getNestedBlockClientIds(state.order);
- return Object(objectSpread["a" /* default */])({}, state, {
- byClientId: Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state.byClientId, visibleClientIds), getFlattenedBlocksWithoutAttributes(action.blocks)),
- attributes: Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state.attributes, visibleClientIds), getFlattenedBlockAttributes(action.blocks)),
- order: Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state.order, visibleClientIds), mapBlockOrder(action.blocks)),
- parents: Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state.parents, visibleClientIds), mapBlockParents(action.blocks)),
- cache: Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state.cache, visibleClientIds), Object(external_lodash_["mapValues"])(flattenBlocks(action.blocks), function () {
- return {};
- }))
- });
- }
-
- return reducer(state, action);
- };
-};
-/**
- * Higher-order reducer which targets the combined blocks reducer and handles
- * the `REPLACE_INNER_BLOCKS` action. When dispatched, this action the state should become equivalent
- * to the execution of a `REMOVE_BLOCKS` action containing all the child's of the root block followed by
- * the execution of `INSERT_BLOCKS` with the new blocks.
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-var reducer_withReplaceInnerBlocks = function withReplaceInnerBlocks(reducer) {
- return function (state, action) {
- if (action.type !== 'REPLACE_INNER_BLOCKS') {
- return reducer(state, action);
- }
-
- var stateAfterBlocksRemoval = state;
-
- if (state.order[action.rootClientId]) {
- stateAfterBlocksRemoval = reducer(stateAfterBlocksRemoval, {
- type: 'REMOVE_BLOCKS',
- clientIds: state.order[action.rootClientId]
- });
- }
-
- var stateAfterInsert = stateAfterBlocksRemoval;
-
- if (action.blocks.length) {
- stateAfterInsert = reducer(stateAfterInsert, Object(objectSpread["a" /* default */])({}, action, {
- type: 'INSERT_BLOCKS',
- index: 0
- }));
- }
-
- return stateAfterInsert;
- };
-};
-/**
- * Higher-order reducer which targets the combined blocks reducer and handles
- * the `SAVE_REUSABLE_BLOCK_SUCCESS` action. This action can't be handled by
- * regular reducers and needs a higher-order reducer since it needs access to
- * both `byClientId` and `attributes` simultaneously.
- *
- * @param {Function} reducer Original reducer function.
- *
- * @return {Function} Enhanced reducer function.
- */
-
-
-var reducer_withSaveReusableBlock = function withSaveReusableBlock(reducer) {
- return function (state, action) {
- if (state && action.type === '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;
- }
-
- state = Object(objectSpread["a" /* default */])({}, state);
- state.attributes = Object(external_lodash_["mapValues"])(state.attributes, function (attributes, clientId) {
- var name = state.byClientId[clientId].name;
-
- if (name === 'core/block' && attributes.ref === id) {
- return Object(objectSpread["a" /* default */])({}, attributes, {
- ref: updatedId
- });
- }
-
- return attributes;
- });
- }
-
- return reducer(state, action);
- };
-};
-/**
- * Reducer returning the blocks state.
- *
- * @param {Object} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
-
-
-var reducer_blocks = Object(external_lodash_["flow"])(external_this_wp_data_["combineReducers"], reducer_withSaveReusableBlock, // needs to be before withBlockCache
-reducer_withBlockCache, // needs to be before withInnerBlocksRemoveCascade
-reducer_withInnerBlocksRemoveCascade, reducer_withReplaceInnerBlocks, // needs to be after withInnerBlocksRemoveCascade
-reducer_withBlockReset, withPersistentBlockChange, withIgnoredBlockChange)({
- byClientId: function byClientId() {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- switch (action.type) {
- case 'RESET_BLOCKS':
- return getFlattenedBlocksWithoutAttributes(action.blocks);
-
- case 'RECEIVE_BLOCKS':
- case 'INSERT_BLOCKS':
- return Object(objectSpread["a" /* default */])({}, state, getFlattenedBlocksWithoutAttributes(action.blocks));
-
- case 'UPDATE_BLOCK':
- // Ignore updates if block isn't known
- if (!state[action.clientId]) {
- return state;
- } // Do nothing if only attributes change.
-
-
- var changes = Object(external_lodash_["omit"])(action.updates, 'attributes');
-
- if (Object(external_lodash_["isEmpty"])(changes)) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.clientId, Object(objectSpread["a" /* default */])({}, state[action.clientId], changes)));
-
- case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- if (!action.blocks) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state, action.replacedClientIds), getFlattenedBlocksWithoutAttributes(action.blocks));
-
- case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- return Object(external_lodash_["omit"])(state, action.removedClientIds);
- }
-
- return state;
- },
- attributes: function attributes() {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- switch (action.type) {
- case 'RESET_BLOCKS':
- return getFlattenedBlockAttributes(action.blocks);
-
- case 'RECEIVE_BLOCKS':
- case 'INSERT_BLOCKS':
- return Object(objectSpread["a" /* default */])({}, state, getFlattenedBlockAttributes(action.blocks));
-
- case 'UPDATE_BLOCK':
- // Ignore updates if block isn't known or there are no attribute changes.
- if (!state[action.clientId] || !action.updates.attributes) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.clientId, Object(objectSpread["a" /* default */])({}, state[action.clientId], action.updates.attributes)));
-
- case 'UPDATE_BLOCK_ATTRIBUTES':
- // Ignore updates if block isn't known
- if (!state[action.clientId]) {
- return state;
- } // Consider as updates only changed values
-
-
- var nextAttributes = Object(external_lodash_["reduce"])(action.attributes, function (result, value, key) {
- if (value !== result[key]) {
- result = getMutateSafeObject(state[action.clientId], result);
- result[key] = value;
- }
-
- return result;
- }, state[action.clientId]); // Skip update if nothing has been changed. The reference will
- // match the original block if `reduce` had no changed values.
-
- if (nextAttributes === state[action.clientId]) {
- return state;
- } // Otherwise replace attributes in state
-
-
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.clientId, nextAttributes));
-
- case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- if (!action.blocks) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state, action.replacedClientIds), getFlattenedBlockAttributes(action.blocks));
-
- case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- return Object(external_lodash_["omit"])(state, action.removedClientIds);
- }
-
- return state;
- },
- order: function order() {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- switch (action.type) {
- case 'RESET_BLOCKS':
- return mapBlockOrder(action.blocks);
-
- case 'RECEIVE_BLOCKS':
- return Object(objectSpread["a" /* default */])({}, state, Object(external_lodash_["omit"])(mapBlockOrder(action.blocks), ''));
-
- case 'INSERT_BLOCKS':
- {
- var _action$rootClientId = action.rootClientId,
- rootClientId = _action$rootClientId === void 0 ? '' : _action$rootClientId;
- var subState = state[rootClientId] || [];
- var mappedBlocks = mapBlockOrder(action.blocks, rootClientId);
- var _action$index = action.index,
- index = _action$index === void 0 ? subState.length : _action$index;
- return Object(objectSpread["a" /* default */])({}, state, mappedBlocks, Object(defineProperty["a" /* default */])({}, rootClientId, insertAt(subState, mappedBlocks[rootClientId], index)));
- }
-
- case 'MOVE_BLOCK_TO_POSITION':
- {
- var _objectSpread7;
-
- var _action$fromRootClien = action.fromRootClientId,
- fromRootClientId = _action$fromRootClien === void 0 ? '' : _action$fromRootClien,
- _action$toRootClientI = action.toRootClientId,
- toRootClientId = _action$toRootClientI === void 0 ? '' : _action$toRootClientI,
- clientId = action.clientId;
-
- var _action$index2 = action.index,
- _index = _action$index2 === void 0 ? state[toRootClientId].length : _action$index2; // Moving inside the same parent block
-
-
- if (fromRootClientId === toRootClientId) {
- var _subState = state[toRootClientId];
-
- var fromIndex = _subState.indexOf(clientId);
-
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, toRootClientId, moveTo(state[toRootClientId], fromIndex, _index)));
- } // Moving from a parent block to another
-
-
- return Object(objectSpread["a" /* default */])({}, state, (_objectSpread7 = {}, Object(defineProperty["a" /* default */])(_objectSpread7, fromRootClientId, Object(external_lodash_["without"])(state[fromRootClientId], clientId)), Object(defineProperty["a" /* default */])(_objectSpread7, toRootClientId, insertAt(state[toRootClientId], clientId, _index)), _objectSpread7));
- }
-
- case 'MOVE_BLOCKS_UP':
- {
- var clientIds = action.clientIds,
- _action$rootClientId2 = action.rootClientId,
- _rootClientId = _action$rootClientId2 === void 0 ? '' : _action$rootClientId2;
-
- var firstClientId = Object(external_lodash_["first"])(clientIds);
- var _subState2 = state[_rootClientId];
-
- if (!_subState2.length || firstClientId === Object(external_lodash_["first"])(_subState2)) {
- return state;
- }
-
- var firstIndex = _subState2.indexOf(firstClientId);
-
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, _rootClientId, moveTo(_subState2, firstIndex, firstIndex - 1, clientIds.length)));
- }
-
- case 'MOVE_BLOCKS_DOWN':
- {
- var _clientIds = action.clientIds,
- _action$rootClientId3 = action.rootClientId,
- _rootClientId2 = _action$rootClientId3 === void 0 ? '' : _action$rootClientId3;
-
- var _firstClientId = Object(external_lodash_["first"])(_clientIds);
-
- var lastClientId = Object(external_lodash_["last"])(_clientIds);
- var _subState3 = state[_rootClientId2];
-
- if (!_subState3.length || lastClientId === Object(external_lodash_["last"])(_subState3)) {
- return state;
- }
-
- var _firstIndex = _subState3.indexOf(_firstClientId);
-
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, _rootClientId2, moveTo(_subState3, _firstIndex, _firstIndex + 1, _clientIds.length)));
- }
-
- case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- {
- var _clientIds2 = action.clientIds;
-
- if (!action.blocks) {
- return state;
- }
-
- var _mappedBlocks = mapBlockOrder(action.blocks);
-
- return Object(external_lodash_["flow"])([function (nextState) {
- return Object(external_lodash_["omit"])(nextState, action.replacedClientIds);
- }, function (nextState) {
- return Object(objectSpread["a" /* default */])({}, nextState, Object(external_lodash_["omit"])(_mappedBlocks, ''));
- }, function (nextState) {
- return Object(external_lodash_["mapValues"])(nextState, function (subState) {
- return Object(external_lodash_["reduce"])(subState, function (result, clientId) {
- if (clientId === _clientIds2[0]) {
- return [].concat(Object(toConsumableArray["a" /* default */])(result), Object(toConsumableArray["a" /* default */])(_mappedBlocks['']));
- }
-
- if (_clientIds2.indexOf(clientId) === -1) {
- result.push(clientId);
- }
-
- return result;
- }, []);
- });
- }])(state);
- }
-
- case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- return Object(external_lodash_["flow"])([// Remove inner block ordering for removed blocks
- function (nextState) {
- return Object(external_lodash_["omit"])(nextState, action.removedClientIds);
- }, // Remove deleted blocks from other blocks' orderings
- function (nextState) {
- return Object(external_lodash_["mapValues"])(nextState, function (subState) {
- return external_lodash_["without"].apply(void 0, [subState].concat(Object(toConsumableArray["a" /* default */])(action.removedClientIds)));
- });
- }])(state);
- }
-
- return state;
- },
- // While technically redundant data as the inverse of `order`, it serves as
- // an optimization for the selectors which derive the ancestry of a block.
- parents: function parents() {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- switch (action.type) {
- case 'RESET_BLOCKS':
- return mapBlockParents(action.blocks);
-
- case 'RECEIVE_BLOCKS':
- return Object(objectSpread["a" /* default */])({}, state, mapBlockParents(action.blocks));
-
- case 'INSERT_BLOCKS':
- return Object(objectSpread["a" /* default */])({}, state, mapBlockParents(action.blocks, action.rootClientId || ''));
-
- case 'MOVE_BLOCK_TO_POSITION':
- {
- return Object(objectSpread["a" /* default */])({}, state, Object(defineProperty["a" /* default */])({}, action.clientId, action.toRootClientId || ''));
- }
-
- case 'REPLACE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- return Object(objectSpread["a" /* default */])({}, Object(external_lodash_["omit"])(state, action.replacedClientIds), mapBlockParents(action.blocks, state[action.clientIds[0]]));
-
- case 'REMOVE_BLOCKS_AUGMENTED_WITH_CHILDREN':
- return Object(external_lodash_["omit"])(state, action.removedClientIds);
- }
-
- return state;
- }
-});
-/**
- * Reducer returning typing state.
- *
- * @param {boolean} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {boolean} Updated state.
- */
-
-function reducer_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 reducer_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;
-}
-var BLOCK_SELECTION_EMPTY_OBJECT = {};
-var BLOCK_SELECTION_INITIAL_STATE = {
- start: BLOCK_SELECTION_EMPTY_OBJECT,
- end: BLOCK_SELECTION_EMPTY_OBJECT,
- isMultiSelecting: false,
- isEnabled: true,
- initialPosition: null
-};
-/**
- * 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] : BLOCK_SELECTION_INITIAL_STATE;
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- switch (action.type) {
- case 'CLEAR_SELECTED_BLOCK':
- if (!state.start || !state.start.clientId) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, state, {
- start: BLOCK_SELECTION_EMPTY_OBJECT,
- end: BLOCK_SELECTION_EMPTY_OBJECT,
- 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, {
- isMultiSelecting: state.isMultiSelecting,
- start: {
- clientId: action.start
- },
- end: {
- clientId: action.end
- }
- });
-
- case 'SELECT_BLOCK':
- if (action.clientId === state.start.clientId && action.clientId === state.end.clientId) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, state, {
- initialPosition: action.initialPosition,
- start: {
- clientId: action.clientId
- },
- end: {
- clientId: action.clientId
- }
- });
-
- case 'REPLACE_INNER_BLOCKS': // REPLACE_INNER_BLOCKS and INSERT_BLOCKS should follow the same logic.
-
- case 'INSERT_BLOCKS':
- {
- if (action.updateSelection) {
- return Object(objectSpread["a" /* default */])({}, state, {
- start: {
- clientId: action.blocks[0].clientId
- },
- end: {
- clientId: action.blocks[0].clientId
- }
- });
- }
-
- return state;
- }
-
- case 'REMOVE_BLOCKS':
- if (!action.clientIds || !action.clientIds.length || action.clientIds.indexOf(state.start.clientId) === -1) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, state, {
- start: BLOCK_SELECTION_EMPTY_OBJECT,
- end: BLOCK_SELECTION_EMPTY_OBJECT,
- isMultiSelecting: false,
- initialPosition: null
- });
-
- case 'REPLACE_BLOCKS':
- {
- if (action.clientIds.indexOf(state.start.clientId) === -1) {
- return state;
- }
-
- var indexToSelect = action.indexToSelect || action.blocks.length - 1;
- var blockToSelect = action.blocks[indexToSelect];
-
- if (!blockToSelect) {
- return Object(objectSpread["a" /* default */])({}, state, {
- start: BLOCK_SELECTION_EMPTY_OBJECT,
- end: BLOCK_SELECTION_EMPTY_OBJECT,
- isMultiSelecting: false,
- initialPosition: null
- });
- }
-
- if (blockToSelect.clientId === state.start.clientId && blockToSelect.clientId === state.end.clientId) {
- return state;
- }
-
- return Object(objectSpread["a" /* default */])({}, state, {
- start: {
- clientId: blockToSelect.clientId
- },
- end: {
- clientId: blockToSelect.clientId
- }
- });
- }
-
- case 'TOGGLE_SELECTION':
- return Object(objectSpread["a" /* default */])({}, state, {
- isEnabled: action.isSelectionEnabled
- });
-
- case 'SELECTION_CHANGE':
- return Object(objectSpread["a" /* default */])({}, state, {
- start: {
- clientId: action.clientId,
- attributeKey: action.attributeKey,
- offset: action.startOffset
- },
- end: {
- clientId: action.clientId,
- attributeKey: action.attributeKey,
- offset: action.endOffset
- }
- });
- }
-
- 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 editor setting.
- *
- * @param {Object} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {Object} Updated state.
- */
-
-function reducer_settings() {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : SETTINGS_DEFAULTS;
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- switch (action.type) {
- case 'UPDATE_SETTINGS':
- return Object(objectSpread["a" /* default */])({}, state, action.settings);
- }
-
- 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 'INSERT_BLOCKS':
- case 'REPLACE_BLOCKS':
- return action.blocks.reduce(function (prevState, block) {
- var id = block.name;
- var insert = {
- name: block.name
- };
-
- if (Object(external_this_wp_blocks_["isReusableBlock"])(block)) {
- insert.ref = block.attributes.ref;
- id += '/' + block.attributes.ref;
- }
-
- return Object(objectSpread["a" /* default */])({}, prevState, {
- insertUsage: Object(objectSpread["a" /* default */])({}, prevState.insertUsage, Object(defineProperty["a" /* default */])({}, id, {
- time: action.time,
- count: prevState.insertUsage[id] ? prevState.insertUsage[id].count + 1 : 1,
- insert: insert
- }))
- });
- }, state);
- }
-
- 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 whether the navigation mode is enabled or not.
- *
- * @param {string} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {string} Updated state.
- */
-
-function reducer_isNavigationMode() {
- var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
- var action = arguments.length > 1 ? arguments[1] : undefined;
-
- if (action.type === 'SET_NAVIGATION_MODE') {
- return action.isNavigationMode;
- }
-
- return state;
-}
-/**
- * Reducer return an updated state representing the most recent block attribute
- * update. The state is structured as an object where the keys represent the
- * client IDs of blocks, the values a subset of attributes from the most recent
- * block update. The state is always reset to null if the last action is
- * anything other than an attributes update.
- *
- * @param {Object<string,Object>} state Current state.
- * @param {Object} action Action object.
- *
- * @return {[string,Object]} Updated state.
- */
-
-function lastBlockAttributesChange(state, action) {
- switch (action.type) {
- case 'UPDATE_BLOCK':
- if (!action.updates.attributes) {
- break;
- }
-
- return Object(defineProperty["a" /* default */])({}, action.clientId, action.updates.attributes);
-
- case 'UPDATE_BLOCK_ATTRIBUTES':
- return Object(defineProperty["a" /* default */])({}, action.clientId, action.attributes);
- }
-
- return null;
-}
-/**
- * Reducer returning automatic change state.
- *
- * @param {boolean} state Current state.
- * @param {Object} action Dispatched action.
- *
- * @return {boolean} Updated state.
- */
-
-function reducer_didAutomaticChange(state, action) {
- return action.type === 'MARK_AUTOMATIC_CHANGE';
-}
-/* harmony default export */ var store_reducer = (Object(external_this_wp_data_["combineReducers"])({
- blocks: reducer_blocks,
- isTyping: reducer_isTyping,
- isCaretWithinFormattedText: reducer_isCaretWithinFormattedText,
- blockSelection: blockSelection,
- blocksMode: blocksMode,
- blockListSettings: reducer_blockListSettings,
- insertionPoint: insertionPoint,
- template: reducer_template,
- settings: reducer_settings,
- preferences: preferences,
- lastBlockAttributesChange: lastBlockAttributesChange,
- isNavigationMode: reducer_isNavigationMode,
- didAutomaticChange: reducer_didAutomaticChange
-}));
-
-// EXTERNAL MODULE: ./node_modules/refx/refx.js
-var refx = __webpack_require__(72);
-var refx_default = /*#__PURE__*/__webpack_require__.n(refx);
-
-// EXTERNAL MODULE: ./node_modules/redux-multi/lib/index.js
-var redux_multi_lib = __webpack_require__(218);
-var redux_multi_lib_default = /*#__PURE__*/__webpack_require__.n(redux_multi_lib);
-
-// EXTERNAL MODULE: external {"this":["wp","a11y"]}
-var external_this_wp_a11y_ = __webpack_require__(45);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/regenerator/index.js
-var regenerator = __webpack_require__(20);
-var regenerator_default = /*#__PURE__*/__webpack_require__.n(regenerator);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/controls.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Calls a selector using the current state.
- *
- * @param {string} storeName Store name.
- * @param {string} selectorName Selector name.
- * @param {Array} args Selector arguments.
- *
- * @return {Object} control descriptor.
- */
-
-function controls_select(storeName, selectorName) {
- for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {
- args[_key - 2] = arguments[_key];
- }
-
- return {
- type: 'SELECT',
- storeName: storeName,
- selectorName: selectorName,
- args: args
- };
-}
-var controls_controls = {
- SELECT: Object(external_this_wp_data_["createRegistryControl"])(function (registry) {
- return function (_ref) {
- var _registry$select;
-
- var storeName = _ref.storeName,
- selectorName = _ref.selectorName,
- args = _ref.args;
- return (_registry$select = registry.select(storeName))[selectorName].apply(_registry$select, Object(toConsumableArray["a" /* default */])(args));
- };
- })
-};
-/* harmony default export */ var store_controls = (controls_controls);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/actions.js
-
-
-
-var _marked =
-/*#__PURE__*/
-regenerator_default.a.mark(ensureDefaultBlock),
- _marked2 =
-/*#__PURE__*/
-regenerator_default.a.mark(selectPreviousBlock),
- _marked3 =
-/*#__PURE__*/
-regenerator_default.a.mark(selectNextBlock),
- _marked4 =
-/*#__PURE__*/
-regenerator_default.a.mark(actions_replaceBlocks),
- _marked5 =
-/*#__PURE__*/
-regenerator_default.a.mark(moveBlockToPosition),
- _marked6 =
-/*#__PURE__*/
-regenerator_default.a.mark(actions_insertBlocks),
- _marked7 =
-/*#__PURE__*/
-regenerator_default.a.mark(actions_removeBlocks);
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Generator which will yield a default block insert action if there
- * are no other blocks at the root of the editor. This generator should be used
- * in actions which may result in no blocks remaining in the editor (removal,
- * replacement, etc).
- */
-
-function ensureDefaultBlock() {
- var count;
- return regenerator_default.a.wrap(function ensureDefaultBlock$(_context) {
- while (1) {
- switch (_context.prev = _context.next) {
- case 0:
- _context.next = 2;
- return controls_select('core/block-editor', 'getBlockCount');
-
- case 2:
- count = _context.sent;
-
- if (!(count === 0)) {
- _context.next = 6;
- break;
- }
-
- _context.next = 6;
- return actions_insertDefaultBlock();
-
- case 6:
- case "end":
- return _context.stop();
- }
- }
- }, _marked);
-}
-/**
- * Returns an action object used in signalling that blocks state should be
- * reset to the specified array of blocks, taking precedence over any other
- * content reflected as an edit in state.
- *
- * @param {Array} blocks Array of blocks.
- *
- * @return {Object} Action object.
- */
-
-
-function resetBlocks(blocks) {
- return {
- type: 'RESET_BLOCKS',
- blocks: blocks
- };
-}
-/**
- * Returns an action object used in signalling that blocks have been received.
- * Unlike resetBlocks, these should be appended to the existing known set, not
- * replacing.
- *
- * @param {Object[]} blocks Array of block objects.
- *
- * @return {Object} Action object.
- */
-
-function receiveBlocks(blocks) {
- return {
- type: 'RECEIVE_BLOCKS',
- blocks: blocks
- };
-}
-/**
- * Returns an action object used in signalling that the block attributes with
- * the specified client ID has been updated.
- *
- * @param {string} clientId Block client ID.
- * @param {Object} attributes Block attributes to be merged.
- *
- * @return {Object} Action object.
- */
-
-function actions_updateBlockAttributes(clientId, attributes) {
- return {
- type: 'UPDATE_BLOCK_ATTRIBUTES',
- clientId: clientId,
- attributes: attributes
- };
-}
-/**
- * Returns an action object used in signalling that the block with the
- * specified client ID has been updated.
- *
- * @param {string} clientId Block client ID.
- * @param {Object} updates Block attributes to be merged.
- *
- * @return {Object} Action object.
- */
-
-function updateBlock(clientId, updates) {
- return {
- type: 'UPDATE_BLOCK',
- clientId: clientId,
- updates: updates
- };
-}
-/**
- * Returns an action object used in signalling that the block with the
- * specified client ID has been selected, optionally accepting a position
- * value reflecting its selection directionality. An initialPosition of -1
- * reflects a reverse selection.
- *
- * @param {string} clientId Block client ID.
- * @param {?number} initialPosition Optional initial position. Pass as -1 to
- * reflect reverse selection.
- *
- * @return {Object} Action object.
- */
-
-function actions_selectBlock(clientId) {
- var initialPosition = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
- return {
- type: 'SELECT_BLOCK',
- initialPosition: initialPosition,
- clientId: clientId
- };
-}
-/**
- * Yields action objects used in signalling that the block preceding the given
- * clientId should be selected.
- *
- * @param {string} clientId Block client ID.
- */
-
-function selectPreviousBlock(clientId) {
- var previousBlockClientId;
- return regenerator_default.a.wrap(function selectPreviousBlock$(_context2) {
- while (1) {
- switch (_context2.prev = _context2.next) {
- case 0:
- _context2.next = 2;
- return controls_select('core/block-editor', 'getPreviousBlockClientId', clientId);
-
- case 2:
- previousBlockClientId = _context2.sent;
-
- if (!previousBlockClientId) {
- _context2.next = 6;
- break;
- }
-
- _context2.next = 6;
- return actions_selectBlock(previousBlockClientId, -1);
-
- case 6:
- case "end":
- return _context2.stop();
- }
- }
- }, _marked2);
-}
-/**
- * Yields action objects used in signalling that the block following the given
- * clientId should be selected.
- *
- * @param {string} clientId Block client ID.
- */
-
-function selectNextBlock(clientId) {
- var nextBlockClientId;
- return regenerator_default.a.wrap(function selectNextBlock$(_context3) {
- while (1) {
- switch (_context3.prev = _context3.next) {
- case 0:
- _context3.next = 2;
- return controls_select('core/block-editor', 'getNextBlockClientId', clientId);
-
- case 2:
- nextBlockClientId = _context3.sent;
-
- if (!nextBlockClientId) {
- _context3.next = 6;
- break;
- }
-
- _context3.next = 6;
- return actions_selectBlock(nextBlockClientId);
-
- case 6:
- case "end":
- return _context3.stop();
- }
- }
- }, _marked3);
-}
-/**
- * Returns an action object used in signalling that a block multi-selection has started.
- *
- * @return {Object} Action object.
- */
-
-function startMultiSelect() {
- return {
- type: 'START_MULTI_SELECT'
- };
-}
-/**
- * Returns an action object used in signalling that block multi-selection stopped.
- *
- * @return {Object} Action object.
- */
-
-function stopMultiSelect() {
- return {
- type: 'STOP_MULTI_SELECT'
- };
-}
-/**
- * Returns an action object used in signalling that block multi-selection changed.
- *
- * @param {string} start First block of the multi selection.
- * @param {string} end Last block of the multiselection.
- *
- * @return {Object} Action object.
- */
-
-function actions_multiSelect(start, end) {
- return {
- type: 'MULTI_SELECT',
- start: start,
- end: end
- };
-}
-/**
- * Returns an action object used in signalling that the block selection is cleared.
- *
- * @return {Object} Action object.
- */
-
-function clearSelectedBlock() {
- return {
- type: 'CLEAR_SELECTED_BLOCK'
- };
-}
-/**
- * Returns an action object that enables or disables block selection.
- *
- * @param {boolean} [isSelectionEnabled=true] Whether block selection should
- * be enabled.
- *
- * @return {Object} Action object.
- */
-
-function actions_toggleSelection() {
- var isSelectionEnabled = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
- return {
- type: 'TOGGLE_SELECTION',
- isSelectionEnabled: isSelectionEnabled
- };
-}
-
-function getBlocksWithDefaultStylesApplied(blocks, blockEditorSettings) {
- var preferredStyleVariations = Object(external_lodash_["get"])(blockEditorSettings, ['__experimentalPreferredStyleVariations', 'value'], {});
- return blocks.map(function (block) {
- var blockName = block.name;
-
- if (!preferredStyleVariations[blockName]) {
- return block;
- }
-
- var className = Object(external_lodash_["get"])(block, ['attributes', 'className']);
-
- if (Object(external_lodash_["includes"])(className, 'is-style-')) {
- return block;
- }
-
- var _block$attributes = block.attributes,
- attributes = _block$attributes === void 0 ? {} : _block$attributes;
- var blockStyle = preferredStyleVariations[blockName];
- return Object(objectSpread["a" /* default */])({}, block, {
- attributes: Object(objectSpread["a" /* default */])({}, attributes, {
- className: "".concat(className || '', " is-style-").concat(blockStyle).trim()
- })
- });
- });
-}
-/**
- * Returns an action object signalling that a blocks should be replaced with
- * one or more replacement blocks.
- *
- * @param {(string|string[])} clientIds Block client ID(s) to replace.
- * @param {(Object|Object[])} blocks Replacement block(s).
- * @param {number} indexToSelect Index of replacement block to
- * select.
- *
- * @yield {Object} Action object.
- */
-
-
-function actions_replaceBlocks(clientIds, blocks, indexToSelect) {
- var rootClientId, index, block, canInsertBlock;
- return regenerator_default.a.wrap(function replaceBlocks$(_context4) {
- while (1) {
- switch (_context4.prev = _context4.next) {
- case 0:
- clientIds = Object(external_lodash_["castArray"])(clientIds);
- _context4.t0 = getBlocksWithDefaultStylesApplied;
- _context4.t1 = Object(external_lodash_["castArray"])(blocks);
- _context4.next = 5;
- return controls_select('core/block-editor', 'getSettings');
-
- case 5:
- _context4.t2 = _context4.sent;
- blocks = (0, _context4.t0)(_context4.t1, _context4.t2);
- _context4.next = 9;
- return controls_select('core/block-editor', 'getBlockRootClientId', Object(external_lodash_["first"])(clientIds));
-
- case 9:
- rootClientId = _context4.sent;
- index = 0;
-
- case 11:
- if (!(index < blocks.length)) {
- _context4.next = 21;
- break;
- }
-
- block = blocks[index];
- _context4.next = 15;
- return controls_select('core/block-editor', 'canInsertBlockType', block.name, rootClientId);
-
- case 15:
- canInsertBlock = _context4.sent;
-
- if (canInsertBlock) {
- _context4.next = 18;
- break;
- }
-
- return _context4.abrupt("return");
-
- case 18:
- index++;
- _context4.next = 11;
- break;
-
- case 21:
- _context4.next = 23;
- return {
- type: 'REPLACE_BLOCKS',
- clientIds: clientIds,
- blocks: blocks,
- time: Date.now(),
- indexToSelect: indexToSelect
- };
-
- case 23:
- return _context4.delegateYield(ensureDefaultBlock(), "t3", 24);
-
- case 24:
- case "end":
- return _context4.stop();
- }
- }
- }, _marked4);
-}
-/**
- * Returns an action object signalling that a single block should be replaced
- * with one or more replacement blocks.
- *
- * @param {(string|string[])} clientId Block client ID to replace.
- * @param {(Object|Object[])} block Replacement block(s).
- *
- * @return {Object} Action object.
- */
-
-function replaceBlock(clientId, block) {
- return actions_replaceBlocks(clientId, block);
-}
-/**
- * Higher-order action creator which, given the action type to dispatch creates
- * an action creator for managing block movement.
- *
- * @param {string} type Action type to dispatch.
- *
- * @return {Function} Action creator.
- */
-
-function createOnMove(type) {
- return function (clientIds, rootClientId) {
- return {
- clientIds: Object(external_lodash_["castArray"])(clientIds),
- type: type,
- rootClientId: rootClientId
- };
- };
-}
-
-var actions_moveBlocksDown = createOnMove('MOVE_BLOCKS_DOWN');
-var actions_moveBlocksUp = createOnMove('MOVE_BLOCKS_UP');
-/**
- * Returns an action object signalling that an indexed block should be moved
- * to a new index.
- *
- * @param {?string} clientId The client ID of the block.
- * @param {?string} fromRootClientId Root client ID source.
- * @param {?string} toRootClientId Root client ID destination.
- * @param {number} index The index to move the block into.
- *
- * @yield {Object} Action object.
- */
-
-function moveBlockToPosition(clientId) {
- var fromRootClientId,
- toRootClientId,
- index,
- templateLock,
- action,
- blockName,
- canInsertBlock,
- _args5 = arguments;
- return regenerator_default.a.wrap(function moveBlockToPosition$(_context5) {
- while (1) {
- switch (_context5.prev = _context5.next) {
- case 0:
- fromRootClientId = _args5.length > 1 && _args5[1] !== undefined ? _args5[1] : '';
- toRootClientId = _args5.length > 2 && _args5[2] !== undefined ? _args5[2] : '';
- index = _args5.length > 3 ? _args5[3] : undefined;
- _context5.next = 5;
- return controls_select('core/block-editor', 'getTemplateLock', fromRootClientId);
-
- case 5:
- templateLock = _context5.sent;
-
- if (!(templateLock === 'all')) {
- _context5.next = 8;
- break;
- }
-
- return _context5.abrupt("return");
-
- case 8:
- action = {
- type: 'MOVE_BLOCK_TO_POSITION',
- fromRootClientId: fromRootClientId,
- toRootClientId: toRootClientId,
- clientId: clientId,
- index: index
- }; // If moving inside the same root block the move is always possible.
-
- if (!(fromRootClientId === toRootClientId)) {
- _context5.next = 13;
- break;
- }
-
- _context5.next = 12;
- return action;
-
- case 12:
- return _context5.abrupt("return");
-
- case 13:
- if (!(templateLock === 'insert')) {
- _context5.next = 15;
- break;
- }
-
- return _context5.abrupt("return");
-
- case 15:
- _context5.next = 17;
- return controls_select('core/block-editor', 'getBlockName', clientId);
-
- case 17:
- blockName = _context5.sent;
- _context5.next = 20;
- return controls_select('core/block-editor', 'canInsertBlockType', blockName, toRootClientId);
-
- case 20:
- canInsertBlock = _context5.sent;
-
- if (!canInsertBlock) {
- _context5.next = 24;
- break;
- }
-
- _context5.next = 24;
- return action;
-
- case 24:
- case "end":
- return _context5.stop();
- }
- }
- }, _marked5);
-}
-/**
- * Returns an action object used in signalling that a single block should be
- * inserted, optionally at a specific index respective a root block list.
- *
- * @param {Object} block Block object to insert.
- * @param {?number} index Index at which block should be inserted.
- * @param {?string} rootClientId Optional root client ID of block list on which to insert.
- * @param {?boolean} updateSelection If true block selection will be updated. If false, block selection will not change. Defaults to true.
- *
- * @return {Object} Action object.
- */
-
-function actions_insertBlock(block, index, rootClientId) {
- var updateSelection = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : true;
- return actions_insertBlocks([block], index, rootClientId, updateSelection);
-}
-/**
- * Returns an action object used in signalling that an array of blocks should
- * be inserted, optionally at a specific index respective a root block list.
- *
- * @param {Object[]} blocks Block objects to insert.
- * @param {?number} index Index at which block should be inserted.
- * @param {?string} rootClientId Optional root client ID of block list on which to insert.
- * @param {?boolean} updateSelection If true block selection will be updated. If false, block selection will not change. Defaults to true.
- *
- * @return {Object} Action object.
- */
-
-function actions_insertBlocks(blocks, index, rootClientId) {
- var updateSelection,
- allowedBlocks,
- _iteratorNormalCompletion,
- _didIteratorError,
- _iteratorError,
- _iterator,
- _step,
- block,
- isValid,
- _args6 = arguments;
-
- return regenerator_default.a.wrap(function insertBlocks$(_context6) {
- while (1) {
- switch (_context6.prev = _context6.next) {
- case 0:
- updateSelection = _args6.length > 3 && _args6[3] !== undefined ? _args6[3] : true;
- _context6.t0 = getBlocksWithDefaultStylesApplied;
- _context6.t1 = Object(external_lodash_["castArray"])(blocks);
- _context6.next = 5;
- return controls_select('core/block-editor', 'getSettings');
-
- case 5:
- _context6.t2 = _context6.sent;
- blocks = (0, _context6.t0)(_context6.t1, _context6.t2);
- allowedBlocks = [];
- _iteratorNormalCompletion = true;
- _didIteratorError = false;
- _iteratorError = undefined;
- _context6.prev = 11;
- _iterator = blocks[Symbol.iterator]();
-
- case 13:
- if (_iteratorNormalCompletion = (_step = _iterator.next()).done) {
- _context6.next = 22;
- break;
- }
-
- block = _step.value;
- _context6.next = 17;
- return controls_select('core/block-editor', 'canInsertBlockType', block.name, rootClientId);
-
- case 17:
- isValid = _context6.sent;
-
- if (isValid) {
- allowedBlocks.push(block);
- }
-
- case 19:
- _iteratorNormalCompletion = true;
- _context6.next = 13;
- break;
-
- case 22:
- _context6.next = 28;
- break;
-
- case 24:
- _context6.prev = 24;
- _context6.t3 = _context6["catch"](11);
- _didIteratorError = true;
- _iteratorError = _context6.t3;
-
- case 28:
- _context6.prev = 28;
- _context6.prev = 29;
-
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
-
- case 31:
- _context6.prev = 31;
-
- if (!_didIteratorError) {
- _context6.next = 34;
- break;
- }
-
- throw _iteratorError;
-
- case 34:
- return _context6.finish(31);
-
- case 35:
- return _context6.finish(28);
-
- case 36:
- if (!allowedBlocks.length) {
- _context6.next = 38;
- break;
- }
-
- return _context6.abrupt("return", {
- type: 'INSERT_BLOCKS',
- blocks: allowedBlocks,
- index: index,
- rootClientId: rootClientId,
- time: Date.now(),
- updateSelection: updateSelection
- });
-
- case 38:
- case "end":
- return _context6.stop();
- }
- }
- }, _marked6, null, [[11, 24, 28, 36], [29,, 31, 35]]);
-}
-/**
- * Returns an action object used in signalling that the insertion point should
- * be shown.
- *
- * @param {?string} rootClientId Optional root client ID of block list on
- * which to insert.
- * @param {?number} index Index at which block should be inserted.
- *
- * @return {Object} Action object.
- */
-
-function actions_showInsertionPoint(rootClientId, index) {
- return {
- type: 'SHOW_INSERTION_POINT',
- rootClientId: rootClientId,
- index: index
- };
-}
-/**
- * Returns an action object hiding the insertion point.
- *
- * @return {Object} Action object.
- */
-
-function actions_hideInsertionPoint() {
- return {
- type: 'HIDE_INSERTION_POINT'
- };
-}
-/**
- * Returns an action object resetting the template validity.
- *
- * @param {boolean} isValid template validity flag.
- *
- * @return {Object} Action object.
- */
-
-function setTemplateValidity(isValid) {
- return {
- type: 'SET_TEMPLATE_VALIDITY',
- isValid: isValid
- };
-}
-/**
- * Returns an action object synchronize the template with the list of blocks
- *
- * @return {Object} Action object.
- */
-
-function synchronizeTemplate() {
- return {
- type: 'SYNCHRONIZE_TEMPLATE'
- };
-}
-/**
- * Returns an action object used in signalling that two blocks should be merged
- *
- * @param {string} firstBlockClientId Client ID of the first block to merge.
- * @param {string} secondBlockClientId Client ID of the second block to merge.
- *
- * @return {Object} Action object.
- */
-
-function actions_mergeBlocks(firstBlockClientId, secondBlockClientId) {
- return {
- type: 'MERGE_BLOCKS',
- blocks: [firstBlockClientId, secondBlockClientId]
- };
-}
-/**
- * Yields action objects used in signalling that the blocks corresponding to
- * the set of specified client IDs are to be removed.
- *
- * @param {string|string[]} clientIds Client IDs of blocks to remove.
- * @param {boolean} selectPrevious True if the previous block should be
- * selected when a block is removed.
- */
-
-function actions_removeBlocks(clientIds) {
- var selectPrevious,
- _args7 = arguments;
- return regenerator_default.a.wrap(function removeBlocks$(_context7) {
- while (1) {
- switch (_context7.prev = _context7.next) {
- case 0:
- selectPrevious = _args7.length > 1 && _args7[1] !== undefined ? _args7[1] : true;
- clientIds = Object(external_lodash_["castArray"])(clientIds);
-
- if (!selectPrevious) {
- _context7.next = 5;
- break;
- }
-
- _context7.next = 5;
- return selectPreviousBlock(clientIds[0]);
-
- case 5:
- _context7.next = 7;
- return {
- type: 'REMOVE_BLOCKS',
- clientIds: clientIds
- };
-
- case 7:
- return _context7.delegateYield(ensureDefaultBlock(), "t0", 8);
-
- case 8:
- case "end":
- return _context7.stop();
- }
- }
- }, _marked7);
-}
-/**
- * Returns an action object used in signalling that the block with the
- * specified client ID is to be removed.
- *
- * @param {string} clientId Client ID of block to remove.
- * @param {boolean} selectPrevious True if the previous block should be
- * selected when a block is removed.
- *
- * @return {Object} Action object.
- */
-
-function actions_removeBlock(clientId, selectPrevious) {
- return actions_removeBlocks([clientId], selectPrevious);
-}
-/**
- * Returns an action object used in signalling that the inner blocks with the
- * specified client ID should be replaced.
- *
- * @param {string} rootClientId Client ID of the block whose InnerBlocks will re replaced.
- * @param {Object[]} blocks Block objects to insert as new InnerBlocks
- * @param {?boolean} updateSelection If true block selection will be updated. If false, block selection will not change. Defaults to true.
- *
- * @return {Object} Action object.
- */
-
-function actions_replaceInnerBlocks(rootClientId, blocks) {
- var updateSelection = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
- return {
- type: 'REPLACE_INNER_BLOCKS',
- rootClientId: rootClientId,
- blocks: blocks,
- updateSelection: updateSelection,
- time: Date.now()
- };
-}
-/**
- * Returns an action object used to toggle the block editing mode between
- * visual and HTML modes.
- *
- * @param {string} clientId Block client ID.
- *
- * @return {Object} Action object.
- */
-
-function toggleBlockMode(clientId) {
- return {
- type: 'TOGGLE_BLOCK_MODE',
- clientId: clientId
- };
-}
-/**
- * Returns an action object used in signalling that the user has begun to type.
- *
- * @return {Object} Action object.
- */
-
-function startTyping() {
- return {
- type: 'START_TYPING'
- };
-}
-/**
- * Returns an action object used in signalling that the user has stopped typing.
- *
- * @return {Object} Action object.
- */
-
-function stopTyping() {
- return {
- type: 'STOP_TYPING'
- };
-}
-/**
- * Returns an action object used in signalling that the caret has entered formatted text.
- *
- * @return {Object} Action object.
- */
-
-function enterFormattedText() {
- return {
- type: 'ENTER_FORMATTED_TEXT'
- };
-}
-/**
- * Returns an action object used in signalling that the user caret has exited formatted text.
- *
- * @return {Object} Action object.
- */
-
-function exitFormattedText() {
- return {
- type: 'EXIT_FORMATTED_TEXT'
- };
-}
-/**
- * Returns an action object used in signalling that the user caret has changed
- * position.
- *
- * @param {string} clientId The selected block client ID.
- * @param {string} attributeKey The selected block attribute key.
- * @param {number} startOffset The start offset.
- * @param {number} endOffset The end offset.
- *
- * @return {Object} Action object.
- */
-
-function selectionChange(clientId, attributeKey, startOffset, endOffset) {
- return {
- type: 'SELECTION_CHANGE',
- clientId: clientId,
- attributeKey: attributeKey,
- startOffset: startOffset,
- endOffset: endOffset
- };
-}
-/**
- * Returns an action object used in signalling that a new block of the default
- * type should be added to the block list.
- *
- * @param {?Object} attributes Optional attributes of the block to assign.
- * @param {?string} rootClientId Optional root client ID of block list on which
- * to append.
- * @param {?number} index Optional index where to insert the default block
- *
- * @return {Object} Action object
- */
-
-function actions_insertDefaultBlock(attributes, rootClientId, index) {
- // Abort if there is no default block type (if it has been unregistered).
- var defaultBlockName = Object(external_this_wp_blocks_["getDefaultBlockName"])();
-
- if (!defaultBlockName) {
- return;
- }
-
- var block = Object(external_this_wp_blocks_["createBlock"])(defaultBlockName, attributes);
- return actions_insertBlock(block, index, rootClientId);
-}
-/**
- * Returns an action object that changes the nested settings of a given block.
- *
- * @param {string} clientId Client ID of the block whose nested setting are
- * being received.
- * @param {Object} settings Object with the new settings for the nested block.
- *
- * @return {Object} Action object
- */
-
-function updateBlockListSettings(clientId, settings) {
- return {
- type: 'UPDATE_BLOCK_LIST_SETTINGS',
- clientId: clientId,
- settings: settings
- };
-}
-/*
- * Returns an action object used in signalling that the block editor settings have been updated.
- *
- * @param {Object} settings Updated settings
- *
- * @return {Object} Action object
- */
-
-function updateSettings(settings) {
- return {
- type: 'UPDATE_SETTINGS',
- settings: settings
- };
-}
-/**
- * Returns an action object used in signalling that a temporary reusable blocks have been saved
- * in order to switch its temporary id with the real id.
- *
- * @param {string} id Reusable block's id.
- * @param {string} updatedId Updated block's id.
- *
- * @return {Object} Action object.
- */
-
-function __unstableSaveReusableBlock(id, updatedId) {
- return {
- type: 'SAVE_REUSABLE_BLOCK_SUCCESS',
- id: id,
- updatedId: updatedId
- };
-}
-/**
- * Returns an action object used in signalling that the last block change should be marked explicitely as persistent.
- *
- * @return {Object} Action object.
- */
-
-function actions_unstableMarkLastChangeAsPersistent() {
- return {
- type: 'MARK_LAST_CHANGE_AS_PERSISTENT'
- };
-}
-/**
- * Returns an action object used in signalling that the last block change is
- * an automatic change, meaning it was not performed by the user, and can be
- * undone using the `Escape` and `Backspace` keys. This action must be called
- * after the change was made, and any actions that are a consequence of it, so
- * it is recommended to be called at the next idle period to ensure all
- * selection changes have been recorded.
- *
- * @return {Object} Action object.
- */
-
-function __unstableMarkAutomaticChange() {
- return {
- type: 'MARK_AUTOMATIC_CHANGE'
- };
-}
-/**
- * Returns an action object used to enable or disable the navigation mode.
- *
- * @param {string} isNavigationMode Enable/Disable navigation mode.
- *
- * @return {Object} Action object
- */
-
-function actions_setNavigationMode() {
- var isNavigationMode = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
- return {
- type: 'SET_NAVIGATION_MODE',
- isNavigationMode: isNavigationMode
- };
-}
-
-// EXTERNAL MODULE: ./node_modules/rememo/es/rememo.js
-var rememo = __webpack_require__(36);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/selectors.js
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
- // Module constants
-
-/**
- * @private
- */
-
-var INSERTER_UTILITY_HIGH = 3;
-/**
- * @private
- */
-
-var INSERTER_UTILITY_MEDIUM = 2;
-/**
- * @private
- */
-
-var INSERTER_UTILITY_LOW = 1;
-/**
- * @private
- */
-
-var INSERTER_UTILITY_NONE = 0;
-var MILLISECONDS_PER_HOUR = 3600 * 1000;
-var MILLISECONDS_PER_DAY = 24 * 3600 * 1000;
-var MILLISECONDS_PER_WEEK = 7 * 24 * 3600 * 1000;
-var templateIcon = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Rect"], {
- x: "0",
- fill: "none",
- width: "24",
- height: "24"
-}), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["G"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M19 3H5c-1.105 0-2 .895-2 2v14c0 1.105.895 2 2 2h14c1.105 0 2-.895 2-2V5c0-1.105-.895-2-2-2zM6 6h5v5H6V6zm4.5 13C9.12 19 8 17.88 8 16.5S9.12 14 10.5 14s2.5 1.12 2.5 2.5-1.12 2.5-2.5 2.5zm3-6l3-5 3 5h-6z"
-})));
-/**
- * Shared reference to an empty array for cases where it is important to avoid
- * returning a new array reference on every invocation, as in a connected or
- * other pure component which performs `shouldComponentUpdate` check on props.
- * This should be used as a last resort, since the normalized data should be
- * maintained by the reducer result in state.
- *
- * @type {Array}
- */
-
-var EMPTY_ARRAY = [];
-/**
- * Returns a block's name given its client ID, or null if no block exists with
- * the client ID.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {string} Block name.
- */
-
-function selectors_getBlockName(state, clientId) {
- var block = state.blocks.byClientId[clientId];
- return block ? block.name : null;
-}
-/**
- * Returns whether a block is valid or not.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {boolean} Is Valid.
- */
-
-function selectors_isBlockValid(state, clientId) {
- var block = state.blocks.byClientId[clientId];
- return !!block && block.isValid;
-}
-/**
- * Returns a block's attributes given its client ID, or null if no block exists with
- * the client ID.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {Object?} Block attributes.
- */
-
-function getBlockAttributes(state, clientId) {
- var block = state.blocks.byClientId[clientId];
-
- if (!block) {
- return null;
- }
-
- return state.blocks.attributes[clientId];
-}
-/**
- * Returns a block given its client ID. This is a parsed copy of the block,
- * containing its `blockName`, `clientId`, and current `attributes` state. This
- * is not the block's registration settings, which must be retrieved from the
- * blocks module registration store.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {Object} Parsed block object.
- */
-
-var selectors_getBlock = Object(rememo["a" /* default */])(function (state, clientId) {
- var block = state.blocks.byClientId[clientId];
-
- if (!block) {
- return null;
- }
-
- return Object(objectSpread["a" /* default */])({}, block, {
- attributes: getBlockAttributes(state, clientId),
- innerBlocks: selectors_getBlocks(state, clientId)
- });
-}, function (state, clientId) {
- return [// Normally, we'd have both `getBlockAttributes` dependancies and
- // `getBlocks` (children) dependancies here but for performance reasons
- // we use a denormalized cache key computed in the reducer that takes both
- // the attributes and inner blocks into account. The value of the cache key
- // is being changed whenever one of these dependencies is out of date.
- state.blocks.cache[clientId]];
-});
-var selectors_unstableGetBlockWithoutInnerBlocks = Object(rememo["a" /* default */])(function (state, clientId) {
- var block = state.blocks.byClientId[clientId];
-
- if (!block) {
- return null;
- }
-
- return Object(objectSpread["a" /* default */])({}, block, {
- attributes: getBlockAttributes(state, clientId)
- });
-}, function (state, clientId) {
- return [state.blocks.byClientId[clientId], state.blocks.attributes[clientId]];
-});
-/**
- * Returns all block objects for the current post being edited as an array in
- * the order they appear in the post.
- *
- * Note: It's important to memoize this selector to avoid return a new instance
- * on each call
- *
- * @param {Object} state Editor state.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {Object[]} Post blocks.
- */
-
-var selectors_getBlocks = Object(rememo["a" /* default */])(function (state, rootClientId) {
- return Object(external_lodash_["map"])(selectors_getBlockOrder(state, rootClientId), function (clientId) {
- return selectors_getBlock(state, clientId);
- });
-}, function (state) {
- return [state.blocks.byClientId, state.blocks.order, state.blocks.attributes];
-});
-/**
- * Returns an array containing the clientIds of all descendants
- * of the blocks given.
- *
- * @param {Object} state Global application state.
- * @param {Array} clientIds Array of blocks to inspect.
- *
- * @return {Array} ids of descendants.
- */
-
-var selectors_getClientIdsOfDescendants = function getClientIdsOfDescendants(state, clientIds) {
- return Object(external_lodash_["flatMap"])(clientIds, function (clientId) {
- var descendants = selectors_getBlockOrder(state, clientId);
- return [].concat(Object(toConsumableArray["a" /* default */])(descendants), Object(toConsumableArray["a" /* default */])(getClientIdsOfDescendants(state, descendants)));
- });
-};
-/**
- * Returns an array containing the clientIds of the top-level blocks
- * and their descendants of any depth (for nested blocks).
- *
- * @param {Object} state Global application state.
- *
- * @return {Array} ids of top-level and descendant blocks.
- */
-
-var getClientIdsWithDescendants = Object(rememo["a" /* default */])(function (state) {
- var topLevelIds = selectors_getBlockOrder(state);
- return [].concat(Object(toConsumableArray["a" /* default */])(topLevelIds), Object(toConsumableArray["a" /* default */])(selectors_getClientIdsOfDescendants(state, topLevelIds)));
-}, function (state) {
- return [state.blocks.order];
-});
-/**
- * Returns the total number of blocks, or the total number of blocks with a specific name in a post.
- * The number returned includes nested blocks.
- *
- * @param {Object} state Global application state.
- * @param {?string} blockName Optional block name, if specified only blocks of that type will be counted.
- *
- * @return {number} Number of blocks in the post, or number of blocks with name equal to blockName.
- */
-
-var getGlobalBlockCount = Object(rememo["a" /* default */])(function (state, blockName) {
- var clientIds = getClientIdsWithDescendants(state);
-
- if (!blockName) {
- return clientIds.length;
- }
-
- return Object(external_lodash_["reduce"])(clientIds, function (count, clientId) {
- var block = state.blocks.byClientId[clientId];
- return block.name === blockName ? count + 1 : count;
- }, 0);
-}, function (state) {
- return [state.blocks.order, state.blocks.byClientId];
-});
-/**
- * Given an array of block client IDs, returns the corresponding array of block
- * objects.
- *
- * @param {Object} state Editor state.
- * @param {string[]} clientIds Client IDs for which blocks are to be returned.
- *
- * @return {WPBlock[]} Block objects.
- */
-
-var selectors_getBlocksByClientId = Object(rememo["a" /* default */])(function (state, clientIds) {
- return Object(external_lodash_["map"])(Object(external_lodash_["castArray"])(clientIds), function (clientId) {
- return selectors_getBlock(state, clientId);
- });
-}, function (state) {
- return [state.blocks.byClientId, state.blocks.order, state.blocks.attributes];
-});
-/**
- * Returns the number of blocks currently present in the post.
- *
- * @param {Object} state Editor state.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {number} Number of blocks in the post.
- */
-
-function selectors_getBlockCount(state, rootClientId) {
- return selectors_getBlockOrder(state, rootClientId).length;
-}
-/**
- * @typedef {WPBlockSelection} A block selection object.
- *
- * @property {string} clientId The selected block client ID.
- * @property {string} attributeKey The selected block attribute key.
- * @property {number} offset The selected block attribute offset.
- */
-
-/**
- * Returns the current selection start block client ID, attribute key and text
- * offset.
- *
- * @param {Object} state Block editor state.
- *
- * @return {WPBlockSelection} Selection start information.
- */
-
-function getSelectionStart(state) {
- return state.blockSelection.start;
-}
-/**
- * Returns the current selection end block client ID, attribute key and text
- * offset.
- *
- * @param {Object} state Block editor state.
- *
- * @return {WPBlockSelection} Selection end information.
- */
-
-function getSelectionEnd(state) {
- return state.blockSelection.end;
-}
-/**
- * Returns the current block selection start. This value may be null, and it
- * may represent either a singular block selection or multi-selection start.
- * A selection is singular if its start and end match.
- *
- * @param {Object} state Global application state.
- *
- * @return {?string} Client ID of block selection start.
- */
-
-function getBlockSelectionStart(state) {
- return state.blockSelection.start.clientId;
-}
-/**
- * Returns the current block selection end. This value may be null, and it
- * may represent either a singular block selection or multi-selection end.
- * A selection is singular if its start and end match.
- *
- * @param {Object} state Global application state.
- *
- * @return {?string} Client ID of block selection end.
- */
-
-function getBlockSelectionEnd(state) {
- return state.blockSelection.end.clientId;
-}
-/**
- * Returns the number of blocks currently selected in the post.
- *
- * @param {Object} state Global application state.
- *
- * @return {number} Number of blocks selected in the post.
- */
-
-function selectors_getSelectedBlockCount(state) {
- var multiSelectedBlockCount = getMultiSelectedBlockClientIds(state).length;
-
- if (multiSelectedBlockCount) {
- return multiSelectedBlockCount;
- }
-
- return state.blockSelection.start.clientId ? 1 : 0;
-}
-/**
- * Returns true if there is a single selected block, or false otherwise.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether a single block is selected.
- */
-
-function hasSelectedBlock(state) {
- var _state$blockSelection = state.blockSelection,
- start = _state$blockSelection.start,
- end = _state$blockSelection.end;
- return !!start.clientId && start.clientId === end.clientId;
-}
-/**
- * Returns the currently selected block client ID, or null if there is no
- * selected block.
- *
- * @param {Object} state Editor state.
- *
- * @return {?string} Selected block client ID.
- */
-
-function selectors_getSelectedBlockClientId(state) {
- var _state$blockSelection2 = state.blockSelection,
- start = _state$blockSelection2.start,
- end = _state$blockSelection2.end; // We need to check the block exists because the current blockSelection
- // reducer doesn't take into account when blocks are reset via undo. To be
- // removed when that's fixed.
-
- return start.clientId && start.clientId === end.clientId && !!state.blocks.byClientId[start.clientId] ? start.clientId : null;
-}
-/**
- * Returns the currently selected block, or null if there is no selected block.
- *
- * @param {Object} state Global application state.
- *
- * @return {?Object} Selected block.
- */
-
-function selectors_getSelectedBlock(state) {
- var clientId = selectors_getSelectedBlockClientId(state);
- return clientId ? selectors_getBlock(state, clientId) : null;
-}
-/**
- * Given a block client ID, returns the root block from which the block is
- * nested, an empty string for top-level blocks, or null if the block does not
- * exist.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block from which to find root client ID.
- *
- * @return {?string} Root client ID, if exists
- */
-
-function selectors_getBlockRootClientId(state, clientId) {
- return state.blocks.parents[clientId] !== undefined ? state.blocks.parents[clientId] : null;
-}
-/**
- * Given a block client ID, returns the root of the hierarchy from which the block is nested, return the block itself for root level blocks.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block from which to find root client ID.
- *
- * @return {string} Root client ID
- */
-
-function getBlockHierarchyRootClientId(state, clientId) {
- var current = clientId;
- var parent;
-
- do {
- parent = current;
- current = state.blocks.parents[current];
- } while (current);
-
- return parent;
-}
-/**
- * Returns the client ID of the block adjacent one at the given reference
- * startClientId and modifier directionality. Defaults start startClientId to
- * the selected block, and direction as next block. Returns null if there is no
- * adjacent block.
- *
- * @param {Object} state Editor state.
- * @param {?string} startClientId Optional client ID of block from which to
- * search.
- * @param {?number} modifier Directionality multiplier (1 next, -1
- * previous).
- *
- * @return {?string} Return the client ID of the block, or null if none exists.
- */
-
-function getAdjacentBlockClientId(state, startClientId) {
- var modifier = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
-
- // Default to selected block.
- if (startClientId === undefined) {
- startClientId = selectors_getSelectedBlockClientId(state);
- } // Try multi-selection starting at extent based on modifier.
-
-
- if (startClientId === undefined) {
- if (modifier < 0) {
- startClientId = getFirstMultiSelectedBlockClientId(state);
- } else {
- startClientId = getLastMultiSelectedBlockClientId(state);
- }
- } // Validate working start client ID.
-
-
- if (!startClientId) {
- return null;
- } // Retrieve start block root client ID, being careful to allow the falsey
- // empty string top-level root by explicitly testing against null.
-
-
- var rootClientId = selectors_getBlockRootClientId(state, startClientId);
-
- if (rootClientId === null) {
- return null;
- }
-
- var order = state.blocks.order;
- var orderSet = order[rootClientId];
- var index = orderSet.indexOf(startClientId);
- var nextIndex = index + 1 * modifier; // Block was first in set and we're attempting to get previous.
-
- if (nextIndex < 0) {
- return null;
- } // Block was last in set and we're attempting to get next.
-
-
- if (nextIndex === orderSet.length) {
- return null;
- } // Assume incremented index is within the set.
-
-
- return orderSet[nextIndex];
-}
-/**
- * Returns the previous block's client ID from the given reference start ID.
- * Defaults start to the selected block. Returns null if there is no previous
- * block.
- *
- * @param {Object} state Editor state.
- * @param {?string} startClientId Optional client ID of block from which to
- * search.
- *
- * @return {?string} Adjacent block's client ID, or null if none exists.
- */
-
-function getPreviousBlockClientId(state, startClientId) {
- return getAdjacentBlockClientId(state, startClientId, -1);
-}
-/**
- * Returns the next block's client ID from the given reference start ID.
- * Defaults start to the selected block. Returns null if there is no next
- * block.
- *
- * @param {Object} state Editor state.
- * @param {?string} startClientId Optional client ID of block from which to
- * search.
- *
- * @return {?string} Adjacent block's client ID, or null if none exists.
- */
-
-function getNextBlockClientId(state, startClientId) {
- return getAdjacentBlockClientId(state, startClientId, 1);
-}
-/**
- * Returns the initial caret position for the selected block.
- * This position is to used to position the caret properly when the selected block changes.
- *
- * @param {Object} state Global application state.
- *
- * @return {?Object} Selected block.
- */
-
-function selectors_getSelectedBlocksInitialCaretPosition(state) {
- var _state$blockSelection3 = state.blockSelection,
- start = _state$blockSelection3.start,
- end = _state$blockSelection3.end;
-
- if (start.clientId !== end.clientId || !start.clientId) {
- return null;
- }
-
- return state.blockSelection.initialPosition;
-}
-/**
- * Returns the current selection set of block client IDs (multiselection or single selection).
- *
- * @param {Object} state Editor state.
- *
- * @return {Array} Multi-selected block client IDs.
- */
-
-var selectors_getSelectedBlockClientIds = Object(rememo["a" /* default */])(function (state) {
- var _state$blockSelection4 = state.blockSelection,
- start = _state$blockSelection4.start,
- end = _state$blockSelection4.end;
-
- if (start.clientId === undefined || end.clientId === undefined) {
- return EMPTY_ARRAY;
- }
-
- if (start.clientId === end.clientId) {
- return [start.clientId];
- } // Retrieve root client ID to aid in retrieving relevant nested block
- // order, being careful to allow the falsey empty string top-level root
- // by explicitly testing against null.
-
-
- var rootClientId = selectors_getBlockRootClientId(state, start.clientId);
-
- if (rootClientId === null) {
- return EMPTY_ARRAY;
- }
-
- var blockOrder = selectors_getBlockOrder(state, rootClientId);
- var startIndex = blockOrder.indexOf(start.clientId);
- var endIndex = blockOrder.indexOf(end.clientId);
-
- if (startIndex > endIndex) {
- return blockOrder.slice(endIndex, startIndex + 1);
- }
-
- return blockOrder.slice(startIndex, endIndex + 1);
-}, function (state) {
- return [state.blocks.order, state.blockSelection.start.clientId, state.blockSelection.end.clientId];
-});
-/**
- * Returns the current multi-selection set of block client IDs, or an empty
- * array if there is no multi-selection.
- *
- * @param {Object} state Editor state.
- *
- * @return {Array} Multi-selected block client IDs.
- */
-
-function getMultiSelectedBlockClientIds(state) {
- var _state$blockSelection5 = state.blockSelection,
- start = _state$blockSelection5.start,
- end = _state$blockSelection5.end;
-
- if (start.clientId === end.clientId) {
- return EMPTY_ARRAY;
- }
-
- return selectors_getSelectedBlockClientIds(state);
-}
-/**
- * Returns the current multi-selection set of blocks, or an empty array if
- * there is no multi-selection.
- *
- * @param {Object} state Editor state.
- *
- * @return {Array} Multi-selected block objects.
- */
-
-var getMultiSelectedBlocks = Object(rememo["a" /* default */])(function (state) {
- var multiSelectedBlockClientIds = getMultiSelectedBlockClientIds(state);
-
- if (!multiSelectedBlockClientIds.length) {
- return EMPTY_ARRAY;
- }
-
- return multiSelectedBlockClientIds.map(function (clientId) {
- return selectors_getBlock(state, clientId);
- });
-}, function (state) {
- return [].concat(Object(toConsumableArray["a" /* default */])(selectors_getSelectedBlockClientIds.getDependants(state)), [state.blocks.byClientId, state.blocks.order, state.blocks.attributes]);
-});
-/**
- * Returns the client ID of the first block in the multi-selection set, or null
- * if there is no multi-selection.
- *
- * @param {Object} state Editor state.
- *
- * @return {?string} First block client ID in the multi-selection set.
- */
-
-function getFirstMultiSelectedBlockClientId(state) {
- return Object(external_lodash_["first"])(getMultiSelectedBlockClientIds(state)) || null;
-}
-/**
- * Returns the client ID of the last block in the multi-selection set, or null
- * if there is no multi-selection.
- *
- * @param {Object} state Editor state.
- *
- * @return {?string} Last block client ID in the multi-selection set.
- */
-
-function getLastMultiSelectedBlockClientId(state) {
- return Object(external_lodash_["last"])(getMultiSelectedBlockClientIds(state)) || null;
-}
-/**
- * Returns true if a multi-selection exists, and the block corresponding to the
- * specified client ID is the first block of the multi-selection set, or false
- * otherwise.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {boolean} Whether block is first in multi-selection.
- */
-
-function selectors_isFirstMultiSelectedBlock(state, clientId) {
- return getFirstMultiSelectedBlockClientId(state) === clientId;
-}
-/**
- * Returns true if the client ID occurs within the block multi-selection, or
- * false otherwise.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {boolean} Whether block is in multi-selection set.
- */
-
-function selectors_isBlockMultiSelected(state, clientId) {
- return getMultiSelectedBlockClientIds(state).indexOf(clientId) !== -1;
-}
-/**
- * Returns true if an ancestor of the block is multi-selected, or false
- * otherwise.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {boolean} Whether an ancestor of the block is in multi-selection
- * set.
- */
-
-var selectors_isAncestorMultiSelected = Object(rememo["a" /* default */])(function (state, clientId) {
- var ancestorClientId = clientId;
- var isMultiSelected = false;
-
- while (ancestorClientId && !isMultiSelected) {
- ancestorClientId = selectors_getBlockRootClientId(state, ancestorClientId);
- isMultiSelected = selectors_isBlockMultiSelected(state, ancestorClientId);
- }
-
- return isMultiSelected;
-}, function (state) {
- return [state.blocks.order, state.blockSelection.start.clientId, state.blockSelection.end.clientId];
-});
-/**
- * Returns the client ID of the block which begins the multi-selection set, or
- * null if there is no multi-selection.
- *
- * This is not necessarily the first client ID in the selection.
- *
- * @see getFirstMultiSelectedBlockClientId
- *
- * @param {Object} state Editor state.
- *
- * @return {?string} Client ID of block beginning multi-selection.
- */
-
-function getMultiSelectedBlocksStartClientId(state) {
- var _state$blockSelection6 = state.blockSelection,
- start = _state$blockSelection6.start,
- end = _state$blockSelection6.end;
-
- if (start.clientId === end.clientId) {
- return null;
- }
-
- return start.clientId || null;
-}
-/**
- * Returns the client ID of the block which ends the multi-selection set, or
- * null if there is no multi-selection.
- *
- * This is not necessarily the last client ID in the selection.
- *
- * @see getLastMultiSelectedBlockClientId
- *
- * @param {Object} state Editor state.
- *
- * @return {?string} Client ID of block ending multi-selection.
- */
-
-function getMultiSelectedBlocksEndClientId(state) {
- var _state$blockSelection7 = state.blockSelection,
- start = _state$blockSelection7.start,
- end = _state$blockSelection7.end;
-
- if (start.clientId === end.clientId) {
- return null;
- }
-
- return end.clientId || null;
-}
-/**
- * Returns an array containing all block client IDs in the editor in the order
- * they appear. Optionally accepts a root client ID of the block list for which
- * the order should be returned, defaulting to the top-level block order.
- *
- * @param {Object} state Editor state.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {Array} Ordered client IDs of editor blocks.
- */
-
-function selectors_getBlockOrder(state, rootClientId) {
- return state.blocks.order[rootClientId || ''] || EMPTY_ARRAY;
-}
-/**
- * Returns the index at which the block corresponding to the specified client
- * ID occurs within the block order, or `-1` if the block does not exist.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {number} Index at which block exists in order.
- */
-
-function selectors_getBlockIndex(state, clientId, rootClientId) {
- return selectors_getBlockOrder(state, rootClientId).indexOf(clientId);
-}
-/**
- * Returns true if the block corresponding to the specified client ID is
- * currently selected and no multi-selection exists, or false otherwise.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {boolean} Whether block is selected and multi-selection exists.
- */
-
-function selectors_isBlockSelected(state, clientId) {
- var _state$blockSelection8 = state.blockSelection,
- start = _state$blockSelection8.start,
- end = _state$blockSelection8.end;
-
- if (start.clientId !== end.clientId) {
- return false;
- }
-
- return start.clientId === clientId;
-}
-/**
- * Returns true if one of the block's inner blocks is selected.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- * @param {boolean} deep Perform a deep check.
- *
- * @return {boolean} Whether the block as an inner block selected
- */
-
-function selectors_hasSelectedInnerBlock(state, clientId) {
- var deep = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
- return Object(external_lodash_["some"])(selectors_getBlockOrder(state, clientId), function (innerClientId) {
- return selectors_isBlockSelected(state, innerClientId) || selectors_isBlockMultiSelected(state, innerClientId) || deep && selectors_hasSelectedInnerBlock(state, innerClientId, deep);
- });
-}
-/**
- * Returns true if the block corresponding to the specified client ID is
- * currently selected but isn't the last of the selected blocks. Here "last"
- * refers to the block sequence in the document, _not_ the sequence of
- * multi-selection, which is why `state.blockSelection.end` isn't used.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {boolean} Whether block is selected and not the last in the
- * selection.
- */
-
-function isBlockWithinSelection(state, clientId) {
- if (!clientId) {
- return false;
- }
-
- var clientIds = getMultiSelectedBlockClientIds(state);
- var index = clientIds.indexOf(clientId);
- return index > -1 && index < clientIds.length - 1;
-}
-/**
- * Returns true if a multi-selection has been made, or false otherwise.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Whether multi-selection has been made.
- */
-
-function selectors_hasMultiSelection(state) {
- var _state$blockSelection9 = state.blockSelection,
- start = _state$blockSelection9.start,
- end = _state$blockSelection9.end;
- return start.clientId !== end.clientId;
-}
-/**
- * Whether in the process of multi-selecting or not. This flag is only true
- * while the multi-selection is being selected (by mouse move), and is false
- * once the multi-selection has been settled.
- *
- * @see hasMultiSelection
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} True if multi-selecting, false if not.
- */
-
-function isMultiSelecting(state) {
- return state.blockSelection.isMultiSelecting;
-}
-/**
- * Selector that returns if multi-selection is enabled or not.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} True if it should be possible to multi-select blocks, false if multi-selection is disabled.
- */
-
-function selectors_isSelectionEnabled(state) {
- return state.blockSelection.isEnabled;
-}
-/**
- * Returns the block's editing mode, defaulting to "visual" if not explicitly
- * assigned.
- *
- * @param {Object} state Editor state.
- * @param {string} clientId Block client ID.
- *
- * @return {Object} Block editing mode.
- */
-
-function selectors_getBlockMode(state, clientId) {
- return state.blocksMode[clientId] || 'visual';
-}
-/**
- * Returns true if the user is typing, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether user is typing.
- */
-
-function selectors_isTyping(state) {
- return state.isTyping;
-}
-/**
- * Returns true if the caret is within formatted text, or false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the caret is within formatted text.
- */
-
-function selectors_isCaretWithinFormattedText(state) {
- return state.isCaretWithinFormattedText;
-}
-/**
- * Returns the insertion point, the index at which the new inserted block would
- * be placed. Defaults to the last index.
- *
- * @param {Object} state Editor state.
- *
- * @return {Object} Insertion point object with `rootClientId`, `index`.
- */
-
-function getBlockInsertionPoint(state) {
- var rootClientId, index;
- var insertionPoint = state.insertionPoint,
- blockSelection = state.blockSelection;
-
- if (insertionPoint !== null) {
- return insertionPoint;
- }
-
- var end = blockSelection.end;
-
- if (end.clientId) {
- rootClientId = selectors_getBlockRootClientId(state, end.clientId) || undefined;
- index = selectors_getBlockIndex(state, end.clientId, rootClientId) + 1;
- } else {
- index = selectors_getBlockOrder(state).length;
- }
-
- return {
- rootClientId: rootClientId,
- index: index
- };
-}
-/**
- * Returns true if we should show the block insertion point.
- *
- * @param {Object} state Global application state.
- *
- * @return {?boolean} Whether the insertion point is visible or not.
- */
-
-function isBlockInsertionPointVisible(state) {
- return state.insertionPoint !== null;
-}
-/**
- * Returns whether the blocks matches the template or not.
- *
- * @param {boolean} state
- * @return {?boolean} Whether the template is valid or not.
- */
-
-function isValidTemplate(state) {
- return state.template.isValid;
-}
-/**
- * Returns the defined block template
- *
- * @param {boolean} state
- * @return {?Array} Block Template
- */
-
-function getTemplate(state) {
- return state.settings.template;
-}
-/**
- * Returns the defined block template lock. Optionally accepts a root block
- * client ID as context, otherwise defaulting to the global context.
- *
- * @param {Object} state Editor state.
- * @param {?string} rootClientId Optional block root client ID.
- *
- * @return {?string} Block Template Lock
- */
-
-function selectors_getTemplateLock(state, rootClientId) {
- if (!rootClientId) {
- return state.settings.templateLock;
- }
-
- var blockListSettings = getBlockListSettings(state, rootClientId);
-
- if (!blockListSettings) {
- return null;
- }
-
- return blockListSettings.templateLock;
-}
-/**
- * Determines if the given block type is allowed to be inserted into the block list.
- * This function is not exported and not memoized because using a memoized selector
- * inside another memoized selector is just a waste of time.
- *
- * @param {Object} state Editor state.
- * @param {string} blockName The name of the block type, e.g.' core/paragraph'.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {boolean} Whether the given block type is allowed to be inserted.
- */
-
-var selectors_canInsertBlockTypeUnmemoized = function canInsertBlockTypeUnmemoized(state, blockName) {
- var rootClientId = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
-
- var checkAllowList = function checkAllowList(list, item) {
- var defaultResult = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
-
- if (Object(external_lodash_["isBoolean"])(list)) {
- return list;
- }
-
- if (Object(external_lodash_["isArray"])(list)) {
- return Object(external_lodash_["includes"])(list, item);
- }
-
- return defaultResult;
- };
-
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(blockName);
-
- if (!blockType) {
- return false;
- }
-
- var _getSettings = selectors_getSettings(state),
- allowedBlockTypes = _getSettings.allowedBlockTypes;
-
- var isBlockAllowedInEditor = checkAllowList(allowedBlockTypes, blockName, true);
-
- if (!isBlockAllowedInEditor) {
- return false;
- }
-
- var isLocked = !!selectors_getTemplateLock(state, rootClientId);
-
- if (isLocked) {
- return false;
- }
-
- var parentBlockListSettings = getBlockListSettings(state, rootClientId);
- var parentAllowedBlocks = Object(external_lodash_["get"])(parentBlockListSettings, ['allowedBlocks']);
- var hasParentAllowedBlock = checkAllowList(parentAllowedBlocks, blockName);
- var blockAllowedParentBlocks = blockType.parent;
- var parentName = selectors_getBlockName(state, rootClientId);
- var hasBlockAllowedParent = checkAllowList(blockAllowedParentBlocks, parentName);
-
- if (hasParentAllowedBlock !== null && hasBlockAllowedParent !== null) {
- return hasParentAllowedBlock || hasBlockAllowedParent;
- } else if (hasParentAllowedBlock !== null) {
- return hasParentAllowedBlock;
- } else if (hasBlockAllowedParent !== null) {
- return hasBlockAllowedParent;
- }
-
- return true;
-};
-/**
- * Determines if the given block type is allowed to be inserted into the block list.
- *
- * @param {Object} state Editor state.
- * @param {string} blockName The name of the block type, e.g.' core/paragraph'.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {boolean} Whether the given block type is allowed to be inserted.
- */
-
-
-var selectors_canInsertBlockType = Object(rememo["a" /* default */])(selectors_canInsertBlockTypeUnmemoized, function (state, blockName, rootClientId) {
- return [state.blockListSettings[rootClientId], state.blocks.byClientId[rootClientId], state.settings.allowedBlockTypes, state.settings.templateLock];
-});
-/**
- * Returns information about how recently and frequently a block has been inserted.
- *
- * @param {Object} state Global application state.
- * @param {string} id A string which identifies the insert, e.g. 'core/block/12'
- *
- * @return {?{ time: number, count: number }} An object containing `time` which is when the last
- * insert occurred as a UNIX epoch, and `count` which is
- * the number of inserts that have occurred.
- */
-
-function getInsertUsage(state, id) {
- return Object(external_lodash_["get"])(state.preferences.insertUsage, [id], null);
-}
-/**
- * Returns whether we can show a block type in the inserter
- *
- * @param {Object} state Global State
- * @param {Object} blockType BlockType
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {boolean} Whether the given block type is allowed to be shown in the inserter.
- */
-
-
-var selectors_canIncludeBlockTypeInInserter = function canIncludeBlockTypeInInserter(state, blockType, rootClientId) {
- if (!Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'inserter', true)) {
- return false;
- }
-
- return selectors_canInsertBlockTypeUnmemoized(state, blockType.name, rootClientId);
-};
-/**
- * Determines the items that appear in the inserter. Includes both static
- * items (e.g. a regular block type) and dynamic items (e.g. a reusable block).
- *
- * Each item object contains what's necessary to display a button in the
- * inserter and handle its selection.
- *
- * The 'utility' property indicates how useful we think an item will be to the
- * user. There are 4 levels of utility:
- *
- * 1. Blocks that are contextually useful (utility = 3)
- * 2. Blocks that have been previously inserted (utility = 2)
- * 3. Blocks that are in the common category (utility = 1)
- * 4. All other blocks (utility = 0)
- *
- * The 'frecency' property is a heuristic (https://en.wikipedia.org/wiki/Frecency)
- * that combines block usage frequenty and recency.
- *
- * Items are returned ordered descendingly by their 'utility' and 'frecency'.
- *
- * @param {Object} state Editor state.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {Editor.InserterItem[]} Items that appear in inserter.
- *
- * @typedef {Object} Editor.InserterItem
- * @property {string} id Unique identifier for the item.
- * @property {string} name The type of block to create.
- * @property {Object} initialAttributes Attributes to pass to the newly created block.
- * @property {string} title Title of the item, as it appears in the inserter.
- * @property {string} icon Dashicon for the item, as it appears in the inserter.
- * @property {string} category Block category that the item is associated with.
- * @property {string[]} keywords Keywords that can be searched to find this item.
- * @property {boolean} isDisabled Whether or not the user should be prevented from inserting
- * this item.
- * @property {number} utility How useful we think this item is, between 0 and 3.
- * @property {number} frecency Hueristic that combines frequency and recency.
- */
-
-
-var selectors_getInserterItems = Object(rememo["a" /* default */])(function (state) {
- var rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
-
- var calculateUtility = function calculateUtility(category, count, isContextual) {
- if (isContextual) {
- return INSERTER_UTILITY_HIGH;
- } else if (count > 0) {
- return INSERTER_UTILITY_MEDIUM;
- } else if (category === 'common') {
- return INSERTER_UTILITY_LOW;
- }
-
- return INSERTER_UTILITY_NONE;
- };
-
- var calculateFrecency = function calculateFrecency(time, count) {
- if (!time) {
- return count;
- } // The selector is cached, which means Date.now() is the last time that the
- // relevant state changed. This suits our needs.
-
-
- var duration = Date.now() - time;
-
- switch (true) {
- case duration < MILLISECONDS_PER_HOUR:
- return count * 4;
-
- case duration < MILLISECONDS_PER_DAY:
- return count * 2;
-
- case duration < MILLISECONDS_PER_WEEK:
- return count / 2;
-
- default:
- return count / 4;
- }
- };
-
- var buildBlockTypeInserterItem = function buildBlockTypeInserterItem(blockType) {
- var id = blockType.name;
- var isDisabled = false;
-
- if (!Object(external_this_wp_blocks_["hasBlockSupport"])(blockType.name, 'multiple', true)) {
- isDisabled = Object(external_lodash_["some"])(selectors_getBlocksByClientId(state, getClientIdsWithDescendants(state)), {
- name: blockType.name
- });
- }
-
- var isContextual = Object(external_lodash_["isArray"])(blockType.parent);
-
- var _ref = getInsertUsage(state, id) || {},
- time = _ref.time,
- _ref$count = _ref.count,
- count = _ref$count === void 0 ? 0 : _ref$count;
-
- return {
- id: id,
- name: blockType.name,
- initialAttributes: {},
- title: blockType.title,
- icon: blockType.icon,
- category: blockType.category,
- keywords: blockType.keywords,
- isDisabled: isDisabled,
- utility: calculateUtility(blockType.category, count, isContextual),
- frecency: calculateFrecency(time, count)
- };
- };
-
- var buildReusableBlockInserterItem = function buildReusableBlockInserterItem(reusableBlock) {
- var id = "core/block/".concat(reusableBlock.id);
-
- var referencedBlocks = __experimentalGetParsedReusableBlock(state, reusableBlock.id);
-
- var referencedBlockType;
-
- if (referencedBlocks.length === 1) {
- referencedBlockType = Object(external_this_wp_blocks_["getBlockType"])(referencedBlocks[0].name);
- }
-
- var _ref2 = getInsertUsage(state, id) || {},
- time = _ref2.time,
- _ref2$count = _ref2.count,
- count = _ref2$count === void 0 ? 0 : _ref2$count;
-
- var utility = calculateUtility('reusable', count, false);
- var frecency = calculateFrecency(time, count);
- return {
- id: id,
- name: 'core/block',
- initialAttributes: {
- ref: reusableBlock.id
- },
- title: reusableBlock.title,
- icon: referencedBlockType ? referencedBlockType.icon : templateIcon,
- category: 'reusable',
- keywords: [],
- isDisabled: false,
- utility: utility,
- frecency: frecency
- };
- };
-
- var blockTypeInserterItems = Object(external_this_wp_blocks_["getBlockTypes"])().filter(function (blockType) {
- return selectors_canIncludeBlockTypeInInserter(state, blockType, rootClientId);
- }).map(buildBlockTypeInserterItem);
- var reusableBlockInserterItems = selectors_canInsertBlockTypeUnmemoized(state, 'core/block', rootClientId) ? getReusableBlocks(state).map(buildReusableBlockInserterItem) : [];
- return Object(external_lodash_["orderBy"])([].concat(Object(toConsumableArray["a" /* default */])(blockTypeInserterItems), Object(toConsumableArray["a" /* default */])(reusableBlockInserterItems)), ['utility', 'frecency'], ['desc', 'desc']);
-}, function (state, rootClientId) {
- return [state.blockListSettings[rootClientId], state.blocks.byClientId, state.blocks.order, state.preferences.insertUsage, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), Object(external_this_wp_blocks_["getBlockTypes"])()];
-});
-/**
- * Determines whether there are items to show in the inserter.
- *
- * @param {Object} state Editor state.
- * @param {?string} rootClientId Optional root client ID of block list.
- *
- * @return {boolean} Items that appear in inserter.
- */
-
-var hasInserterItems = Object(rememo["a" /* default */])(function (state) {
- var rootClientId = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
- var hasBlockType = Object(external_lodash_["some"])(Object(external_this_wp_blocks_["getBlockTypes"])(), function (blockType) {
- return selectors_canIncludeBlockTypeInInserter(state, blockType, rootClientId);
- });
-
- if (hasBlockType) {
- return true;
- }
-
- var hasReusableBlock = selectors_canInsertBlockTypeUnmemoized(state, 'core/block', rootClientId) && getReusableBlocks(state).length > 0;
- return hasReusableBlock;
-}, function (state, rootClientId) {
- return [state.blockListSettings[rootClientId], state.blocks.byClientId, state.settings.allowedBlockTypes, state.settings.templateLock, getReusableBlocks(state), Object(external_this_wp_blocks_["getBlockTypes"])()];
-});
-/**
- * Returns the Block List settings of a block, if any exist.
- *
- * @param {Object} state Editor state.
- * @param {?string} clientId Block client ID.
- *
- * @return {?Object} Block settings of the block if set.
- */
-
-function getBlockListSettings(state, clientId) {
- return state.blockListSettings[clientId];
-}
-/**
- * Returns the editor settings.
- *
- * @param {Object} state Editor state.
- *
- * @return {Object} The editor settings object.
- */
-
-function selectors_getSettings(state) {
- return state.settings;
-}
-/**
- * Returns true if the most recent block change is be considered persistent, or
- * false otherwise. A persistent change is one committed by BlockEditorProvider
- * via its `onChange` callback, in addition to `onInput`.
- *
- * @param {Object} state Block editor state.
- *
- * @return {boolean} Whether the most recent block change was persistent.
- */
-
-function selectors_isLastBlockChangePersistent(state) {
- return state.blocks.isPersistentChange;
-}
-/**
- * Returns the parsed block saved as shared block with the given ID.
- *
- * @param {Object} state Global application state.
- * @param {number|string} ref The shared block's ID.
- *
- * @return {Object} The parsed block.
- */
-
-var __experimentalGetParsedReusableBlock = Object(rememo["a" /* default */])(function (state, ref) {
- var reusableBlock = Object(external_lodash_["find"])(getReusableBlocks(state), function (block) {
- return block.id === ref;
- });
-
- if (!reusableBlock) {
- return null;
- }
-
- return Object(external_this_wp_blocks_["parse"])(reusableBlock.content);
-}, function (state) {
- return [getReusableBlocks(state)];
-});
-/**
- * Returns true if the most recent block change is be considered ignored, or
- * false otherwise. An ignored change is one not to be committed by
- * BlockEditorProvider, neither via `onChange` nor `onInput`.
- *
- * @param {Object} state Block editor state.
- *
- * @return {boolean} Whether the most recent block change was ignored.
- */
-
-function selectors_unstableIsLastBlockChangeIgnored(state) {
- // TODO: Removal Plan: Changes incurred by RECEIVE_BLOCKS should not be
- // ignored if in-fact they result in a change in blocks state. The current
- // need to ignore changes not a result of user interaction should be
- // accounted for in the refactoring of reusable blocks as occurring within
- // their own separate block editor / state (#7119).
- return state.blocks.isIgnoredChange;
-}
-/**
- * Returns the block attributes changed as a result of the last dispatched
- * action.
- *
- * @param {Object} state Block editor state.
- *
- * @return {Object<string,Object>} Subsets of block attributes changed, keyed
- * by block client ID.
- */
-
-function __experimentalGetLastBlockAttributeChanges(state) {
- return state.lastBlockAttributesChange;
-}
-/**
- * Returns the available reusable blocks
- *
- * @param {Object} state Global application state.
- *
- * @return {Array} Reusable blocks
- */
-
-function getReusableBlocks(state) {
- return Object(external_lodash_["get"])(state, ['settings', '__experimentalReusableBlocks'], EMPTY_ARRAY);
-}
-/**
- * Returns whether the navigation mode is enabled.
- *
- * @param {Object} state Editor state.
- *
- * @return {boolean} Is navigation mode enabled.
- */
-
-
-function selectors_isNavigationMode(state) {
- return state.isNavigationMode;
-}
-/**
- * Returns true if the last change was an automatic change, false otherwise.
- *
- * @param {Object} state Global application state.
- *
- * @return {boolean} Whether the last change was automatic.
- */
-
-function selectors_didAutomaticChange(state) {
- return state.didAutomaticChange;
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/store/effects.js
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-/**
- * Block validity is a function of blocks state (at the point of a
- * reset) and the template setting. As a compromise to its placement
- * across distinct parts of state, it is implemented here as a side-
- * effect of the block reset action.
- *
- * @param {Object} action RESET_BLOCKS action.
- * @param {Object} store Store instance.
- *
- * @return {?Object} New validity set action if validity has changed.
- */
-
-function validateBlocksToTemplate(action, store) {
- var state = store.getState();
- var template = getTemplate(state);
- var templateLock = selectors_getTemplateLock(state); // Unlocked templates are considered always valid because they act
- // as default values only.
-
- var isBlocksValidToTemplate = !template || templateLock !== 'all' || Object(external_this_wp_blocks_["doBlocksMatchTemplate"])(action.blocks, template); // Update if validity has changed.
-
- if (isBlocksValidToTemplate !== isValidTemplate(state)) {
- return setTemplateValidity(isBlocksValidToTemplate);
- }
-}
-/* harmony default export */ var effects = ({
- MERGE_BLOCKS: function MERGE_BLOCKS(action, store) {
- var dispatch = store.dispatch;
- var state = store.getState();
-
- var _action$blocks = Object(slicedToArray["a" /* default */])(action.blocks, 2),
- clientIdA = _action$blocks[0],
- clientIdB = _action$blocks[1];
-
- var blockA = selectors_getBlock(state, clientIdA);
- var blockAType = Object(external_this_wp_blocks_["getBlockType"])(blockA.name); // Only focus the previous block if it's not mergeable
-
- if (!blockAType.merge) {
- dispatch(actions_selectBlock(blockA.clientId));
- return;
- }
-
- var blockB = selectors_getBlock(state, clientIdB);
- var blockBType = Object(external_this_wp_blocks_["getBlockType"])(blockB.name);
-
- var _getSelectionStart = getSelectionStart(state),
- clientId = _getSelectionStart.clientId,
- attributeKey = _getSelectionStart.attributeKey,
- offset = _getSelectionStart.offset;
-
- var hasTextSelection = (clientId === clientIdA || clientId === clientIdB) && attributeKey !== undefined && offset !== undefined; // A robust way to retain selection position through various transforms
- // is to insert a special character at the position and then recover it.
-
- var START_OF_SELECTED_AREA = "\x86"; // Clone the blocks so we don't insert the character in a "live" block.
-
- var cloneA = Object(external_this_wp_blocks_["cloneBlock"])(blockA);
- var cloneB = Object(external_this_wp_blocks_["cloneBlock"])(blockB);
-
- if (hasTextSelection) {
- var selectedBlock = clientId === clientIdA ? cloneA : cloneB;
- var html = selectedBlock.attributes[attributeKey];
- var selectedBlockType = clientId === clientIdA ? blockAType : blockBType;
- var _selectedBlockType$at = selectedBlockType.attributes[attributeKey],
- multilineTag = _selectedBlockType$at.multiline,
- multilineWrapperTags = _selectedBlockType$at.__unstableMultilineWrapperTags;
- var value = Object(external_this_wp_richText_["insert"])(Object(external_this_wp_richText_["create"])({
- html: html,
- multilineTag: multilineTag,
- multilineWrapperTags: multilineWrapperTags
- }), START_OF_SELECTED_AREA, offset, offset);
- selectedBlock.attributes[attributeKey] = Object(external_this_wp_richText_["toHTMLString"])({
- value: value,
- multilineTag: multilineTag
- });
- } // We can only merge blocks with similar types
- // thus, we transform the block to merge first
-
-
- var blocksWithTheSameType = blockA.name === blockB.name ? [cloneB] : Object(external_this_wp_blocks_["switchToBlockType"])(cloneB, blockA.name); // If the block types can not match, do nothing
-
- if (!blocksWithTheSameType || !blocksWithTheSameType.length) {
- return;
- } // Calling the merge to update the attributes and remove the block to be merged
-
-
- var updatedAttributes = blockAType.merge(cloneA.attributes, blocksWithTheSameType[0].attributes);
-
- if (hasTextSelection) {
- var newAttributeKey = Object(external_lodash_["findKey"])(updatedAttributes, function (v) {
- return typeof v === 'string' && v.indexOf(START_OF_SELECTED_AREA) !== -1;
- });
- var convertedHtml = updatedAttributes[newAttributeKey];
- var _blockAType$attribute = blockAType.attributes[newAttributeKey],
- _multilineTag = _blockAType$attribute.multiline,
- _multilineWrapperTags = _blockAType$attribute.__unstableMultilineWrapperTags;
- var convertedValue = Object(external_this_wp_richText_["create"])({
- html: convertedHtml,
- multilineTag: _multilineTag,
- multilineWrapperTags: _multilineWrapperTags
- });
- var newOffset = convertedValue.text.indexOf(START_OF_SELECTED_AREA);
- var newValue = Object(external_this_wp_richText_["remove"])(convertedValue, newOffset, newOffset + 1);
- var newHtml = Object(external_this_wp_richText_["toHTMLString"])({
- value: newValue,
- multilineTag: _multilineTag
- });
- updatedAttributes[newAttributeKey] = newHtml;
- dispatch(selectionChange(blockA.clientId, newAttributeKey, newOffset, newOffset));
- }
-
- dispatch(actions_replaceBlocks([blockA.clientId, blockB.clientId], [Object(objectSpread["a" /* default */])({}, blockA, {
- attributes: Object(objectSpread["a" /* default */])({}, blockA.attributes, updatedAttributes)
- })].concat(Object(toConsumableArray["a" /* default */])(blocksWithTheSameType.slice(1)))));
- },
- RESET_BLOCKS: [validateBlocksToTemplate],
- MULTI_SELECT: function MULTI_SELECT(action, _ref) {
- var getState = _ref.getState;
- var blockCount = selectors_getSelectedBlockCount(getState());
- /* translators: %s: number of selected blocks */
-
- Object(external_this_wp_a11y_["speak"])(Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%s block selected.', '%s blocks selected.', blockCount), blockCount), 'assertive');
- },
- SYNCHRONIZE_TEMPLATE: function SYNCHRONIZE_TEMPLATE(action, _ref2) {
- var getState = _ref2.getState;
- var state = getState();
- var blocks = selectors_getBlocks(state);
- var template = getTemplate(state);
- var updatedBlockList = Object(external_this_wp_blocks_["synchronizeBlocksWithTemplate"])(blocks, template);
- return resetBlocks(updatedBlockList);
- }
-});
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-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), redux_multi_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/block-editor/build-module/store/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-/**
- * Module Constants
- */
-
-var MODULE_KEY = 'core/block-editor';
-/**
- * Block editor data store configuration.
- *
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/data/README.md#registerStore
- *
- * @type {Object}
- */
-
-var storeConfig = {
- reducer: store_reducer,
- selectors: selectors_namespaceObject,
- actions: actions_namespaceObject,
- controls: store_controls
-};
-var store_store = Object(external_this_wp_data_["registerStore"])(MODULE_KEY, Object(objectSpread["a" /* default */])({}, storeConfig, {
- persist: ['preferences']
-}));
-store_middlewares(store_store);
-/* harmony default export */ var build_module_store = (store_store);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/provider/with-registry-provider.js
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var withRegistryProvider = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (WrappedComponent) {
- return Object(external_this_wp_data_["withRegistry"])(function (_ref) {
- var _ref$useSubRegistry = _ref.useSubRegistry,
- useSubRegistry = _ref$useSubRegistry === void 0 ? true : _ref$useSubRegistry,
- registry = _ref.registry,
- props = Object(objectWithoutProperties["a" /* default */])(_ref, ["useSubRegistry", "registry"]);
-
- if (!useSubRegistry) {
- return Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(esm_extends["a" /* default */])({
- registry: registry
- }, props));
- }
-
- var _useState = Object(external_this_wp_element_["useState"])(null),
- _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),
- subRegistry = _useState2[0],
- setSubRegistry = _useState2[1];
-
- Object(external_this_wp_element_["useEffect"])(function () {
- var newRegistry = Object(external_this_wp_data_["createRegistry"])({}, registry);
- var store = newRegistry.registerStore('core/block-editor', storeConfig); // This should be removed after the refactoring of the effects to controls.
-
- store_middlewares(store);
- setSubRegistry(newRegistry);
- }, [registry]);
-
- if (!subRegistry) {
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_data_["RegistryProvider"], {
- value: subRegistry
- }, Object(external_this_wp_element_["createElement"])(WrappedComponent, Object(esm_extends["a" /* default */])({
- registry: subRegistry
- }, props)));
- });
-}, 'withRegistryProvider');
-/* harmony default export */ var with_registry_provider = (withRegistryProvider);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/provider/index.js
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var provider_BlockEditorProvider =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockEditorProvider, _Component);
-
- function BlockEditorProvider() {
- Object(classCallCheck["a" /* default */])(this, BlockEditorProvider);
-
- return Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockEditorProvider).apply(this, arguments));
- }
-
- Object(createClass["a" /* default */])(BlockEditorProvider, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- this.props.updateSettings(this.props.settings);
- this.props.resetBlocks(this.props.value);
- this.attachChangeObserver(this.props.registry);
- }
- }, {
- key: "componentDidUpdate",
- value: function componentDidUpdate(prevProps) {
- var _this$props = this.props,
- settings = _this$props.settings,
- updateSettings = _this$props.updateSettings,
- value = _this$props.value,
- resetBlocks = _this$props.resetBlocks,
- registry = _this$props.registry;
-
- if (settings !== prevProps.settings) {
- updateSettings(settings);
- }
-
- if (registry !== prevProps.registry) {
- this.attachChangeObserver(registry);
- }
-
- if (this.isSyncingOutcomingValue !== null && this.isSyncingOutcomingValue === value) {
- // Skip block reset if the value matches expected outbound sync
- // triggered by this component by a preceding change detection.
- // Only skip if the value matches expectation, since a reset should
- // still occur if the value is modified (not equal by reference),
- // to allow that the consumer may apply modifications to reflect
- // back on the editor.
- this.isSyncingOutcomingValue = null;
- } else if (value !== prevProps.value) {
- // Reset changing value in all other cases than the sync described
- // above. Since this can be reached in an update following an out-
- // bound sync, unset the outbound value to avoid considering it in
- // subsequent renders.
- this.isSyncingOutcomingValue = null;
- this.isSyncingIncomingValue = value;
- resetBlocks(value);
- }
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- if (this.unsubscribe) {
- this.unsubscribe();
- }
- }
- /**
- * Given a registry object, overrides the default dispatch behavior for the
- * `core/block-editor` store to interpret a state change and decide whether
- * we should call `onChange` or `onInput` depending on whether the change
- * is persistent or not.
- *
- * This needs to be done synchronously after state changes (instead of using
- * `componentDidUpdate`) in order to avoid batching these changes.
- *
- * @param {WPDataRegistry} registry Registry from which block editor
- * dispatch is to be overriden.
- */
-
- }, {
- key: "attachChangeObserver",
- value: function attachChangeObserver(registry) {
- var _this = this;
-
- if (this.unsubscribe) {
- this.unsubscribe();
- }
-
- var _registry$select = registry.select('core/block-editor'),
- getBlocks = _registry$select.getBlocks,
- isLastBlockChangePersistent = _registry$select.isLastBlockChangePersistent,
- __unstableIsLastBlockChangeIgnored = _registry$select.__unstableIsLastBlockChangeIgnored;
-
- var blocks = getBlocks();
- var isPersistent = isLastBlockChangePersistent();
- this.unsubscribe = registry.subscribe(function () {
- var _this$props2 = _this.props,
- _this$props2$onChange = _this$props2.onChange,
- onChange = _this$props2$onChange === void 0 ? external_lodash_["noop"] : _this$props2$onChange,
- _this$props2$onInput = _this$props2.onInput,
- onInput = _this$props2$onInput === void 0 ? external_lodash_["noop"] : _this$props2$onInput;
- var newBlocks = getBlocks();
- var newIsPersistent = isLastBlockChangePersistent();
-
- if (newBlocks !== blocks && (_this.isSyncingIncomingValue || __unstableIsLastBlockChangeIgnored())) {
- _this.isSyncingIncomingValue = null;
- blocks = newBlocks;
- isPersistent = newIsPersistent;
- return;
- }
-
- if (newBlocks !== blocks || // This happens when a previous input is explicitely marked as persistent.
- newIsPersistent && !isPersistent) {
- // When knowing the blocks value is changing, assign instance
- // value to skip reset in subsequent `componentDidUpdate`.
- if (newBlocks !== blocks) {
- _this.isSyncingOutcomingValue = newBlocks;
- }
-
- blocks = newBlocks;
- isPersistent = newIsPersistent;
-
- if (isPersistent) {
- onChange(blocks);
- } else {
- onInput(blocks);
- }
- }
- });
- }
- }, {
- key: "render",
- value: function render() {
- var children = this.props.children;
- return children;
- }
- }]);
-
- return BlockEditorProvider;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var provider = (Object(external_this_wp_compose_["compose"])([with_registry_provider, Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- var _dispatch = dispatch('core/block-editor'),
- updateSettings = _dispatch.updateSettings,
- resetBlocks = _dispatch.resetBlocks;
-
- return {
- updateSettings: updateSettings,
- resetBlocks: resetBlocks
- };
-})])(provider_BlockEditorProvider));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-async-mode-provider.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-var block_async_mode_provider_BlockAsyncModeProvider = function BlockAsyncModeProvider(_ref) {
- var children = _ref.children,
- clientId = _ref.clientId,
- isBlockInSelection = _ref.isBlockInSelection;
- var isParentOfSelectedBlock = Object(external_this_wp_data_["useSelect"])(function (select) {
- return select('core/block-editor').hasSelectedInnerBlock(clientId, true);
- });
- var isSyncModeForced = isBlockInSelection || isParentOfSelectedBlock;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_data_["__experimentalAsyncModeProvider"], {
- value: !isSyncModeForced
- }, children);
-};
-
-/* harmony default export */ var block_async_mode_provider = (block_async_mode_provider_BlockAsyncModeProvider);
-
-// EXTERNAL MODULE: ./node_modules/react-spring/web.cjs.js
-var web_cjs = __webpack_require__(64);
-
-// EXTERNAL MODULE: external {"this":["wp","dom"]}
-var external_this_wp_dom_ = __webpack_require__(25);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-mover/mover-description.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Return a label for the block movement controls depending on block position.
- *
- * @param {number} selectedCount Number of blocks selected.
- * @param {string} type Block type - in the case of a single block, should
- * define its 'type'. I.e. 'Text', 'Heading', 'Image' etc.
- * @param {number} firstIndex The index (position - 1) of the first block selected.
- * @param {boolean} isFirst This is the first block.
- * @param {boolean} isLast This is the last block.
- * @param {number} dir Direction of movement (> 0 is considered to be going
- * down, < 0 is up).
- *
- * @return {string} Label for the block movement controls.
- */
-
-function getBlockMoverDescription(selectedCount, type, firstIndex, isFirst, isLast, dir) {
- var position = firstIndex + 1;
-
- if (selectedCount > 1) {
- return getMultiBlockMoverDescription(selectedCount, firstIndex, isFirst, isLast, dir);
- }
-
- if (isFirst && isLast) {
- // translators: %s: Type of block (i.e. Text, Image etc)
- return Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Block %s is the only block, and cannot be moved'), type);
- }
-
- if (dir > 0 && !isLast) {
- // moving down
- return Object(external_this_wp_i18n_["sprintf"])( // translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position
- Object(external_this_wp_i18n_["__"])('Move %1$s block from position %2$d down to position %3$d'), type, position, position + 1);
- }
-
- if (dir > 0 && isLast) {
- // moving down, and is the last item
- // translators: %s: Type of block (i.e. Text, Image etc)
- return Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Block %s is at the end of the content and can’t be moved down'), type);
- }
-
- if (dir < 0 && !isFirst) {
- // moving up
- return Object(external_this_wp_i18n_["sprintf"])( // translators: 1: Type of block (i.e. Text, Image etc), 2: Position of selected block, 3: New position
- Object(external_this_wp_i18n_["__"])('Move %1$s block from position %2$d up to position %3$d'), type, position, position - 1);
- }
-
- if (dir < 0 && isFirst) {
- // moving up, and is the first item
- // translators: %s: Type of block (i.e. Text, Image etc)
- return Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Block %s is at the beginning of the content and can’t be moved up'), type);
- }
-}
-/**
- * Return a label for the block movement controls depending on block position.
- *
- * @param {number} selectedCount Number of blocks selected.
- * @param {number} firstIndex The index (position - 1) of the first block selected.
- * @param {boolean} isFirst This is the first block.
- * @param {boolean} isLast This is the last block.
- * @param {number} dir Direction of movement (> 0 is considered to be going
- * down, < 0 is up).
- *
- * @return {string} Label for the block movement controls.
- */
-
-function getMultiBlockMoverDescription(selectedCount, firstIndex, isFirst, isLast, dir) {
- var position = firstIndex + 1;
-
- if (dir < 0 && isFirst) {
- return Object(external_this_wp_i18n_["__"])('Blocks cannot be moved up as they are already at the top');
- }
-
- if (dir > 0 && isLast) {
- return Object(external_this_wp_i18n_["__"])('Blocks cannot be moved down as they are already at the bottom');
- }
-
- if (dir < 0 && !isFirst) {
- return Object(external_this_wp_i18n_["sprintf"])( // translators: 1: Number of selected blocks, 2: Position of selected blocks
- Object(external_this_wp_i18n_["_n"])('Move %1$d block from position %2$d up by one place', 'Move %1$d blocks from position %2$d up by one place', selectedCount), selectedCount, position);
- }
-
- if (dir > 0 && !isLast) {
- return Object(external_this_wp_i18n_["sprintf"])( // translators: 1: Number of selected blocks, 2: Position of selected blocks
- Object(external_this_wp_i18n_["_n"])('Move %1$d block from position %2$d down by one place', 'Move %1$d blocks from position %2$d down by one place', selectedCount), selectedCount, position);
- }
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-mover/icons.js
-
-
-/**
- * WordPress dependencies
- */
-
-var upArrow = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- width: "18",
- height: "18",
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 18 18"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Polygon"], {
- points: "9,4.5 3.3,10.1 4.8,11.5 9,7.3 13.2,11.5 14.7,10.1 "
-}));
-var downArrow = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- width: "18",
- height: "18",
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 18 18"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Polygon"], {
- points: "9,13.5 14.7,7.9 13.2,6.5 9,10.7 4.8,6.5 3.3,7.9 "
-}));
-var dragHandle = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- width: "18",
- height: "18",
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 18 18"
-}, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M13,8c0.6,0,1-0.4,1-1s-0.4-1-1-1s-1,0.4-1,1S12.4,8,13,8z M5,6C4.4,6,4,6.4,4,7s0.4,1,1,1s1-0.4,1-1S5.6,6,5,6z M5,10 c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S5.6,10,5,10z M13,10c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S13.6,10,13,10z M9,6 C8.4,6,8,6.4,8,7s0.4,1,1,1s1-0.4,1-1S9.6,6,9,6z M9,10c-0.6,0-1,0.4-1,1s0.4,1,1,1s1-0.4,1-1S9.6,10,9,10z"
-}));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-draggable/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-var block_draggable_BlockDraggable = function BlockDraggable(_ref) {
- var children = _ref.children,
- clientId = _ref.clientId,
- rootClientId = _ref.rootClientId,
- blockElementId = _ref.blockElementId,
- index = _ref.index,
- onDragStart = _ref.onDragStart,
- onDragEnd = _ref.onDragEnd;
- var transferData = {
- type: 'block',
- srcIndex: index,
- srcRootClientId: rootClientId,
- srcClientId: clientId
- };
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Draggable"], {
- elementId: blockElementId,
- transferData: transferData,
- onDragStart: onDragStart,
- onDragEnd: onDragEnd
- }, function (_ref2) {
- var onDraggableStart = _ref2.onDraggableStart,
- onDraggableEnd = _ref2.onDraggableEnd;
- return children({
- onDraggableStart: onDraggableStart,
- onDraggableEnd: onDraggableEnd
- });
- });
-};
-
-/* harmony default export */ var block_draggable = (Object(external_this_wp_data_["withSelect"])(function (select, _ref3) {
- var clientId = _ref3.clientId;
-
- var _select = select('core/block-editor'),
- getBlockIndex = _select.getBlockIndex,
- getBlockRootClientId = _select.getBlockRootClientId;
-
- var rootClientId = getBlockRootClientId(clientId);
- return {
- index: getBlockIndex(clientId, rootClientId),
- rootClientId: rootClientId
- };
-})(block_draggable_BlockDraggable));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-mover/drag-handle.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-var drag_handle_IconDragHandle = function IconDragHandle(_ref) {
- var isVisible = _ref.isVisible,
- className = _ref.className,
- icon = _ref.icon,
- onDragStart = _ref.onDragStart,
- onDragEnd = _ref.onDragEnd,
- blockElementId = _ref.blockElementId,
- clientId = _ref.clientId;
-
- if (!isVisible) {
- return null;
- }
-
- var dragHandleClassNames = classnames_default()('editor-block-mover__control-drag-handle block-editor-block-mover__control-drag-handle', className);
- return Object(external_this_wp_element_["createElement"])(block_draggable, {
- clientId: clientId,
- blockElementId: blockElementId,
- onDragStart: onDragStart,
- onDragEnd: onDragEnd
- }, function (_ref2) {
- var onDraggableStart = _ref2.onDraggableStart,
- onDraggableEnd = _ref2.onDraggableEnd;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: dragHandleClassNames,
- "aria-hidden": "true",
- onDragStart: onDraggableStart,
- onDragEnd: onDraggableEnd,
- draggable: true
- }, icon);
- });
-};
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-mover/index.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-var block_mover_BlockMover =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockMover, _Component);
-
- function BlockMover() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockMover);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockMover).apply(this, arguments));
- _this.state = {
- isFocused: false
- };
- _this.onFocus = _this.onFocus.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onBlur = _this.onBlur.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockMover, [{
- key: "onFocus",
- value: function onFocus() {
- this.setState({
- isFocused: true
- });
- }
- }, {
- key: "onBlur",
- value: function onBlur() {
- this.setState({
- isFocused: false
- });
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- onMoveUp = _this$props.onMoveUp,
- onMoveDown = _this$props.onMoveDown,
- isFirst = _this$props.isFirst,
- isLast = _this$props.isLast,
- isDraggable = _this$props.isDraggable,
- onDragStart = _this$props.onDragStart,
- onDragEnd = _this$props.onDragEnd,
- clientIds = _this$props.clientIds,
- blockElementId = _this$props.blockElementId,
- blockType = _this$props.blockType,
- firstIndex = _this$props.firstIndex,
- isLocked = _this$props.isLocked,
- instanceId = _this$props.instanceId,
- isHidden = _this$props.isHidden,
- rootClientId = _this$props.rootClientId;
- var isFocused = this.state.isFocused;
- var blocksCount = Object(external_lodash_["castArray"])(clientIds).length;
-
- if (isLocked || isFirst && isLast && !rootClientId) {
- return null;
- } // We emulate a disabled state because forcefully applying the `disabled`
- // attribute on the button while it has focus causes the screen to change
- // to an unfocused state (body as active element) without firing blur on,
- // the rendering parent, leaving it unable to react to focus out.
-
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()('editor-block-mover block-editor-block-mover', {
- 'is-visible': isFocused || !isHidden
- })
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- className: "editor-block-mover__control block-editor-block-mover__control",
- onClick: isFirst ? null : onMoveUp,
- icon: upArrow,
- label: Object(external_this_wp_i18n_["__"])('Move up'),
- "aria-describedby": "block-editor-block-mover__up-description-".concat(instanceId),
- "aria-disabled": isFirst,
- onFocus: this.onFocus,
- onBlur: this.onBlur
- }), Object(external_this_wp_element_["createElement"])(drag_handle_IconDragHandle, {
- className: "editor-block-mover__control block-editor-block-mover__control",
- icon: dragHandle,
- clientId: clientIds,
- blockElementId: blockElementId,
- isVisible: isDraggable,
- onDragStart: onDragStart,
- onDragEnd: onDragEnd
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- className: "editor-block-mover__control block-editor-block-mover__control",
- onClick: isLast ? null : onMoveDown,
- icon: downArrow,
- label: Object(external_this_wp_i18n_["__"])('Move down'),
- "aria-describedby": "block-editor-block-mover__down-description-".concat(instanceId),
- "aria-disabled": isLast,
- onFocus: this.onFocus,
- onBlur: this.onBlur
- }), Object(external_this_wp_element_["createElement"])("span", {
- id: "block-editor-block-mover__up-description-".concat(instanceId),
- className: "editor-block-mover__description block-editor-block-mover__description"
- }, getBlockMoverDescription(blocksCount, blockType && blockType.title, firstIndex, isFirst, isLast, -1)), Object(external_this_wp_element_["createElement"])("span", {
- id: "block-editor-block-mover__down-description-".concat(instanceId),
- className: "editor-block-mover__description block-editor-block-mover__description"
- }, getBlockMoverDescription(blocksCount, blockType && blockType.title, firstIndex, isFirst, isLast, 1)));
- }
- }]);
-
- return BlockMover;
-}(external_this_wp_element_["Component"]);
-/* harmony default export */ var block_mover = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref) {
- var clientIds = _ref.clientIds;
-
- var _select = select('core/block-editor'),
- getBlock = _select.getBlock,
- getBlockIndex = _select.getBlockIndex,
- getTemplateLock = _select.getTemplateLock,
- getBlockRootClientId = _select.getBlockRootClientId,
- getBlockOrder = _select.getBlockOrder;
-
- var normalizedClientIds = Object(external_lodash_["castArray"])(clientIds);
- var firstClientId = Object(external_lodash_["first"])(normalizedClientIds);
- var block = getBlock(firstClientId);
- var rootClientId = getBlockRootClientId(Object(external_lodash_["first"])(normalizedClientIds));
- var blockOrder = getBlockOrder(rootClientId);
- var firstIndex = getBlockIndex(firstClientId, rootClientId);
- var lastIndex = getBlockIndex(Object(external_lodash_["last"])(normalizedClientIds), rootClientId);
- return {
- blockType: block ? Object(external_this_wp_blocks_["getBlockType"])(block.name) : null,
- isLocked: getTemplateLock(rootClientId) === 'all',
- rootClientId: rootClientId,
- firstIndex: firstIndex,
- isFirst: firstIndex === 0,
- isLast: lastIndex === blockOrder.length - 1
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref2) {
- var clientIds = _ref2.clientIds,
- rootClientId = _ref2.rootClientId;
-
- var _dispatch = dispatch('core/block-editor'),
- moveBlocksDown = _dispatch.moveBlocksDown,
- moveBlocksUp = _dispatch.moveBlocksUp;
-
- return {
- onMoveDown: Object(external_lodash_["partial"])(moveBlocksDown, clientIds, rootClientId),
- onMoveUp: Object(external_lodash_["partial"])(moveBlocksUp, clientIds, rootClientId)
- };
-}), external_this_wp_compose_["withInstanceId"])(block_mover_BlockMover));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/warning/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function Warning(_ref) {
- var className = _ref.className,
- actions = _ref.actions,
- children = _ref.children,
- secondaryActions = _ref.secondaryActions;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()(className, 'editor-warning block-editor-warning')
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-warning__contents block-editor-warning__contents"
- }, Object(external_this_wp_element_["createElement"])("p", {
- className: "editor-warning__message block-editor-warning__message"
- }, children), external_this_wp_element_["Children"].count(actions) > 0 && Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-warning__actions block-editor-warning__actions"
- }, external_this_wp_element_["Children"].map(actions, function (action, i) {
- return Object(external_this_wp_element_["createElement"])("span", {
- key: i,
- className: "editor-warning__action block-editor-warning__action"
- }, action);
- }))), secondaryActions && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dropdown"], {
- className: "editor-warning__secondary block-editor-warning__secondary",
- position: "bottom left",
- renderToggle: function renderToggle(_ref2) {
- var isOpen = _ref2.isOpen,
- onToggle = _ref2.onToggle;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: "ellipsis",
- label: Object(external_this_wp_i18n_["__"])('More options'),
- onClick: onToggle,
- "aria-expanded": isOpen
- });
- },
- renderContent: function renderContent() {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuGroup"], null, secondaryActions.map(function (item, pos) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- onClick: item.onClick,
- key: pos
- }, item.title);
- }));
- }
- }));
-}
-
-/* harmony default export */ var warning = (Warning);
-
-// EXTERNAL MODULE: ./node_modules/diff/dist/diff.js
-var dist_diff = __webpack_require__(219);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-compare/block-view.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-var block_view_BlockView = function BlockView(_ref) {
- var title = _ref.title,
- rawContent = _ref.rawContent,
- renderedContent = _ref.renderedContent,
- action = _ref.action,
- actionText = _ref.actionText,
- className = _ref.className;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: className
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-compare__content block-editor-block-compare__content"
- }, Object(external_this_wp_element_["createElement"])("h2", {
- className: "editor-block-compare__heading block-editor-block-compare__heading"
- }, title), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-compare__html block-editor-block-compare__html"
- }, rawContent), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-compare__preview block-editor-block-compare__preview edit-post-visual-editor"
- }, renderedContent)), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-compare__action block-editor-block-compare__action"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- isLarge: true,
- tabIndex: "0",
- onClick: action
- }, actionText)));
-};
-
-/* harmony default export */ var block_view = (block_view_BlockView);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-compare/index.js
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var block_compare_BlockCompare =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockCompare, _Component);
-
- function BlockCompare() {
- Object(classCallCheck["a" /* default */])(this, BlockCompare);
-
- return Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockCompare).apply(this, arguments));
- }
-
- Object(createClass["a" /* default */])(BlockCompare, [{
- key: "getDifference",
- value: function getDifference(originalContent, newContent) {
- var difference = Object(dist_diff["diffChars"])(originalContent, newContent);
- return difference.map(function (item, pos) {
- var classes = classnames_default()({
- 'editor-block-compare__added block-editor-block-compare__added': item.added,
- 'editor-block-compare__removed block-editor-block-compare__removed': item.removed
- });
- return Object(external_this_wp_element_["createElement"])("span", {
- key: pos,
- className: classes
- }, item.value);
- });
- }
- }, {
- key: "getOriginalContent",
- value: function getOriginalContent(block) {
- return {
- rawContent: block.originalContent,
- renderedContent: Object(external_this_wp_blocks_["getSaveElement"])(block.name, block.attributes)
- };
- }
- }, {
- key: "getConvertedContent",
- value: function getConvertedContent(block) {
- // The convertor may return an array of items or a single item
- var newBlocks = Object(external_lodash_["castArray"])(block); // Get converted block details
-
- var newContent = newBlocks.map(function (item) {
- return Object(external_this_wp_blocks_["getSaveContent"])(item.name, item.attributes, item.innerBlocks);
- });
- var renderedContent = newBlocks.map(function (item) {
- return Object(external_this_wp_blocks_["getSaveElement"])(item.name, item.attributes, item.innerBlocks);
- });
- return {
- rawContent: newContent.join(''),
- renderedContent: renderedContent
- };
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- block = _this$props.block,
- onKeep = _this$props.onKeep,
- onConvert = _this$props.onConvert,
- convertor = _this$props.convertor,
- convertButtonText = _this$props.convertButtonText;
- var original = this.getOriginalContent(block);
- var converted = this.getConvertedContent(convertor(block));
- var difference = this.getDifference(original.rawContent, converted.rawContent);
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-compare__wrapper block-editor-block-compare__wrapper"
- }, Object(external_this_wp_element_["createElement"])(block_view, {
- title: Object(external_this_wp_i18n_["__"])('Current'),
- className: "editor-block-compare__current block-editor-block-compare__current",
- action: onKeep,
- actionText: Object(external_this_wp_i18n_["__"])('Convert to HTML'),
- rawContent: original.rawContent,
- renderedContent: original.renderedContent
- }), Object(external_this_wp_element_["createElement"])(block_view, {
- title: Object(external_this_wp_i18n_["__"])('After Conversion'),
- className: "editor-block-compare__converted block-editor-block-compare__converted",
- action: onConvert,
- actionText: convertButtonText,
- rawContent: difference,
- renderedContent: converted.renderedContent
- }));
- }
- }]);
-
- return BlockCompare;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_compare = (block_compare_BlockCompare);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-invalid-warning.js
-
-
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var block_invalid_warning_BlockInvalidWarning =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockInvalidWarning, _Component);
-
- function BlockInvalidWarning(props) {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockInvalidWarning);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockInvalidWarning).call(this, props));
- _this.state = {
- compare: false
- };
- _this.onCompare = _this.onCompare.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onCompareClose = _this.onCompareClose.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockInvalidWarning, [{
- key: "onCompare",
- value: function onCompare() {
- this.setState({
- compare: true
- });
- }
- }, {
- key: "onCompareClose",
- value: function onCompareClose() {
- this.setState({
- compare: false
- });
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- convertToHTML = _this$props.convertToHTML,
- convertToBlocks = _this$props.convertToBlocks,
- convertToClassic = _this$props.convertToClassic,
- attemptBlockRecovery = _this$props.attemptBlockRecovery,
- block = _this$props.block;
- var hasHTMLBlock = !!Object(external_this_wp_blocks_["getBlockType"])('core/html');
- var compare = this.state.compare;
- var hiddenActions = [{
- title: Object(external_this_wp_i18n_["__"])('Convert to Classic Block'),
- onClick: convertToClassic
- }, {
- title: Object(external_this_wp_i18n_["__"])('Attempt Block Recovery'),
- onClick: attemptBlockRecovery
- }];
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(warning, {
- actions: [Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- key: "convert",
- onClick: this.onCompare,
- isLarge: true,
- isPrimary: !hasHTMLBlock
- }, // translators: Button to fix block content
- Object(external_this_wp_i18n_["_x"])('Resolve', 'imperative verb')), hasHTMLBlock && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- key: "edit",
- onClick: convertToHTML,
- isLarge: true,
- isPrimary: true
- }, Object(external_this_wp_i18n_["__"])('Convert to HTML'))],
- secondaryActions: hiddenActions
- }, Object(external_this_wp_i18n_["__"])('This block contains unexpected or invalid content.')), compare && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Modal"], {
- title: // translators: Dialog title to fix block content
- Object(external_this_wp_i18n_["__"])('Resolve Block'),
- onRequestClose: this.onCompareClose,
- className: "editor-block-compare block-editor-block-compare"
- }, Object(external_this_wp_element_["createElement"])(block_compare, {
- block: block,
- onKeep: convertToHTML,
- onConvert: convertToBlocks,
- convertor: block_invalid_warning_blockToBlocks,
- convertButtonText: Object(external_this_wp_i18n_["__"])('Convert to Blocks')
- })));
- }
- }]);
-
- return BlockInvalidWarning;
-}(external_this_wp_element_["Component"]);
-
-var block_invalid_warning_blockToClassic = function blockToClassic(block) {
- return Object(external_this_wp_blocks_["createBlock"])('core/freeform', {
- content: block.originalContent
- });
-};
-
-var block_invalid_warning_blockToHTML = function blockToHTML(block) {
- return Object(external_this_wp_blocks_["createBlock"])('core/html', {
- content: block.originalContent
- });
-};
-
-var block_invalid_warning_blockToBlocks = function blockToBlocks(block) {
- return Object(external_this_wp_blocks_["rawHandler"])({
- HTML: block.originalContent
- });
-};
-
-var block_invalid_warning_recoverBlock = function recoverBlock(_ref) {
- var name = _ref.name,
- attributes = _ref.attributes,
- innerBlocks = _ref.innerBlocks;
- return Object(external_this_wp_blocks_["createBlock"])(name, attributes, innerBlocks);
-};
-
-/* harmony default export */ var block_invalid_warning = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var clientId = _ref2.clientId;
- return {
- block: select('core/block-editor').getBlock(clientId)
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref3) {
- var block = _ref3.block;
-
- var _dispatch = dispatch('core/block-editor'),
- replaceBlock = _dispatch.replaceBlock;
-
- return {
- convertToClassic: function convertToClassic() {
- replaceBlock(block.clientId, block_invalid_warning_blockToClassic(block));
- },
- convertToHTML: function convertToHTML() {
- replaceBlock(block.clientId, block_invalid_warning_blockToHTML(block));
- },
- convertToBlocks: function convertToBlocks() {
- replaceBlock(block.clientId, block_invalid_warning_blockToBlocks(block));
- },
- attemptBlockRecovery: function attemptBlockRecovery() {
- replaceBlock(block.clientId, block_invalid_warning_recoverBlock(block));
- }
- };
-})])(block_invalid_warning_BlockInvalidWarning));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-crash-warning.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-var block_crash_warning_warning = Object(external_this_wp_element_["createElement"])(warning, {
- className: "block-editor-block-list__block-crash-warning"
-}, Object(external_this_wp_i18n_["__"])('This block has encountered an error and cannot be previewed.'));
-/* harmony default export */ var block_crash_warning = (function () {
- return block_crash_warning_warning;
-});
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-crash-boundary.js
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-var block_crash_boundary_BlockCrashBoundary =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockCrashBoundary, _Component);
-
- function BlockCrashBoundary() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockCrashBoundary);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockCrashBoundary).apply(this, arguments));
- _this.state = {
- hasError: false
- };
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockCrashBoundary, [{
- key: "componentDidCatch",
- value: function componentDidCatch(error) {
- this.props.onError(error);
- this.setState({
- hasError: true
- });
- }
- }, {
- key: "render",
- value: function render() {
- if (this.state.hasError) {
- return null;
- }
-
- return this.props.children;
- }
- }]);
-
- return BlockCrashBoundary;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_crash_boundary = (block_crash_boundary_BlockCrashBoundary);
-
-// EXTERNAL MODULE: ./node_modules/react-autosize-textarea/lib/index.js
-var react_autosize_textarea_lib = __webpack_require__(62);
-var react_autosize_textarea_lib_default = /*#__PURE__*/__webpack_require__.n(react_autosize_textarea_lib);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-html.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-var block_html_BlockHTML =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockHTML, _Component);
-
- function BlockHTML(props) {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockHTML);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockHTML).apply(this, arguments));
- _this.onChange = _this.onChange.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onBlur = _this.onBlur.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.state = {
- html: props.block.isValid ? Object(external_this_wp_blocks_["getBlockContent"])(props.block) : props.block.originalContent
- };
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockHTML, [{
- key: "componentDidUpdate",
- value: function componentDidUpdate(prevProps) {
- if (!Object(external_lodash_["isEqual"])(this.props.block.attributes, prevProps.block.attributes)) {
- this.setState({
- html: Object(external_this_wp_blocks_["getBlockContent"])(this.props.block)
- });
- }
- }
- }, {
- key: "onBlur",
- value: function onBlur() {
- var html = this.state.html;
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(this.props.block.name);
- var attributes = Object(external_this_wp_blocks_["getBlockAttributes"])(blockType, html, this.props.block.attributes); // If html is empty we reset the block to the default HTML and mark it as valid to avoid triggering an error
-
- var content = html ? html : Object(external_this_wp_blocks_["getSaveContent"])(blockType, attributes);
- var isValid = html ? Object(external_this_wp_blocks_["isValidBlockContent"])(blockType, attributes, content) : true;
- this.props.onChange(this.props.clientId, attributes, content, isValid); // Ensure the state is updated if we reset so it displays the default content
-
- if (!html) {
- this.setState({
- html: content
- });
- }
- }
- }, {
- key: "onChange",
- value: function onChange(event) {
- this.setState({
- html: event.target.value
- });
- }
- }, {
- key: "render",
- value: function render() {
- var html = this.state.html;
- return Object(external_this_wp_element_["createElement"])(react_autosize_textarea_lib_default.a, {
- className: "editor-block-list__block-html-textarea block-editor-block-list__block-html-textarea",
- value: html,
- onBlur: this.onBlur,
- onChange: this.onChange
- });
- }
- }]);
-
- return BlockHTML;
-}(external_this_wp_element_["Component"]);
-/* harmony default export */ var block_html = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
- return {
- block: select('core/block-editor').getBlock(ownProps.clientId)
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- return {
- onChange: function onChange(clientId, attributes, originalContent, isValid) {
- dispatch('core/block-editor').updateBlock(clientId, {
- attributes: attributes,
- originalContent: originalContent,
- isValid: isValid
- });
- }
- };
-})])(block_html_BlockHTML));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-title/index.js
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Renders the block's configured title as a string, or empty if the title
- * cannot be determined.
- *
- * @example
- *
- * ```jsx
- * <BlockTitle clientId="afd1cb17-2c08-4e7a-91be-007ba7ddc3a1" />
- * ```
- *
- * @param {Object} props
- * @param {?string} props.name Block name.
- *
- * @return {?string} Block title.
- */
-
-function BlockTitle(_ref) {
- var name = _ref.name;
-
- if (!name) {
- return null;
- }
-
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(name);
-
- if (!blockType) {
- return null;
- }
-
- return blockType.title;
-}
-/* harmony default export */ var block_title = (Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
- var _select = select('core/block-editor'),
- getBlockName = _select.getBlockName;
-
- var clientId = ownProps.clientId;
- return {
- name: getBlockName(clientId)
- };
-})(BlockTitle));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/breadcrumb.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Block breadcrumb component, displaying the label of the block. If the block
- * descends from a root block, a button is displayed enabling the user to select
- * the root block.
- *
- * @param {string} props.clientId Client ID of block.
- * @return {WPElement} Block Breadcrumb.
- */
-
-var BlockBreadcrumb = Object(external_this_wp_element_["forwardRef"])(function (_ref, ref) {
- var clientId = _ref.clientId;
-
- var _useDispatch = Object(external_this_wp_data_["useDispatch"])('core/block-editor'),
- setNavigationMode = _useDispatch.setNavigationMode;
-
- var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) {
- return {
- rootClientId: select('core/block-editor').getBlockRootClientId(clientId)
- };
- }),
- rootClientId = _useSelect.rootClientId;
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__breadcrumb block-editor-block-list__breadcrumb"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], null, rootClientId && Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(block_title, {
- clientId: rootClientId
- }), Object(external_this_wp_element_["createElement"])("span", {
- className: "editor-block-list__descendant-arrow block-editor-block-list__descendant-arrow"
- })), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- ref: ref,
- onClick: function onClick() {
- return setNavigationMode(false);
- }
- }, Object(external_this_wp_element_["createElement"])(block_title, {
- clientId: clientId
- }))));
-});
-/* harmony default export */ var block_list_breadcrumb = (BlockBreadcrumb);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/navigable-toolbar/index.js
-
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-var navigable_toolbar_NavigableToolbar =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(NavigableToolbar, _Component);
-
- function NavigableToolbar() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, NavigableToolbar);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(NavigableToolbar).apply(this, arguments));
- _this.focusToolbar = _this.focusToolbar.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.toolbar = Object(external_this_wp_element_["createRef"])();
- return _this;
- }
-
- Object(createClass["a" /* default */])(NavigableToolbar, [{
- key: "focusToolbar",
- value: function focusToolbar() {
- var tabbables = external_this_wp_dom_["focus"].tabbable.find(this.toolbar.current);
-
- if (tabbables.length) {
- tabbables[0].focus();
- }
- }
- }, {
- key: "componentDidMount",
- value: function componentDidMount() {
- if (this.props.focusOnMount) {
- this.focusToolbar();
- } // We use DOM event listeners instead of React event listeners
- // because we want to catch events from the underlying DOM tree
- // The React Tree can be different from the DOM tree when using
- // portals. Block Toolbars for instance are rendered in a separate
- // React Tree.
-
-
- this.toolbar.current.addEventListener('keydown', this.switchOnKeyDown);
- }
- }, {
- key: "componentwillUnmount",
- value: function componentwillUnmount() {
- this.toolbar.current.removeEventListener('keydown', this.switchOnKeyDown);
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- children = _this$props.children,
- props = Object(objectWithoutProperties["a" /* default */])(_this$props, ["children"]);
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["NavigableMenu"], Object(esm_extends["a" /* default */])({
- orientation: "horizontal",
- role: "toolbar",
- ref: this.toolbar
- }, Object(external_lodash_["omit"])(props, ['focusOnMount'])), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], {
- bindGlobal: true // Use the same event that TinyMCE uses in the Classic block for its own `alt+f10` shortcut.
- ,
- eventName: "keydown",
- shortcuts: {
- 'alt+f10': this.focusToolbar
- }
- }), children);
- }
- }]);
-
- return NavigableToolbar;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var navigable_toolbar = (navigable_toolbar_NavigableToolbar);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-contextual-toolbar.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function BlockContextualToolbar(_ref) {
- var focusOnMount = _ref.focusOnMount;
- return Object(external_this_wp_element_["createElement"])(navigable_toolbar, {
- focusOnMount: focusOnMount,
- className: "editor-block-contextual-toolbar block-editor-block-contextual-toolbar"
- /* translators: accessibility text for the block toolbar */
- ,
- "aria-label": Object(external_this_wp_i18n_["__"])('Block tools')
- }, Object(external_this_wp_element_["createElement"])(block_toolbar, null));
-}
-
-/* harmony default export */ var block_contextual_toolbar = (BlockContextualToolbar);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/multi-controls.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-function BlockListMultiControls(_ref) {
- var multiSelectedBlockClientIds = _ref.multiSelectedBlockClientIds,
- isSelecting = _ref.isSelecting;
-
- if (isSelecting) {
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(block_mover, {
- clientIds: multiSelectedBlockClientIds
- });
-}
-
-/* harmony default export */ var multi_controls = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getMultiSelectedBlockClientIds = _select.getMultiSelectedBlockClientIds,
- isMultiSelecting = _select.isMultiSelecting;
-
- var clientIds = getMultiSelectedBlockClientIds();
- return {
- multiSelectedBlockClientIds: clientIds,
- isSelecting: isMultiSelecting()
- };
-})(BlockListMultiControls));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block-mobile-toolbar.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function BlockMobileToolbar(_ref) {
- var clientId = _ref.clientId;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__block-mobile-toolbar block-editor-block-list__block-mobile-toolbar"
- }, Object(external_this_wp_element_["createElement"])(inserter, null), Object(external_this_wp_element_["createElement"])(block_mover, {
- clientIds: [clientId]
- }));
-}
-
-/* harmony default export */ var block_mobile_toolbar = (Object(external_this_wp_viewport_["ifViewportMatches"])('< small')(BlockMobileToolbar));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/insertion-point.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var insertion_point_BlockInsertionPoint =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockInsertionPoint, _Component);
-
- function BlockInsertionPoint() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockInsertionPoint);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockInsertionPoint).apply(this, arguments));
- _this.state = {
- isInserterFocused: false
- };
- _this.onBlurInserter = _this.onBlurInserter.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onFocusInserter = _this.onFocusInserter.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockInsertionPoint, [{
- key: "onFocusInserter",
- value: function onFocusInserter(event) {
- // Stop propagation of the focus event to avoid selecting the current
- // block while inserting a new block, as it is not relevant to sibling
- // insertion and conflicts with contextual toolbar placement.
- event.stopPropagation();
- this.setState({
- isInserterFocused: true
- });
- }
- }, {
- key: "onBlurInserter",
- value: function onBlurInserter() {
- this.setState({
- isInserterFocused: false
- });
- }
- }, {
- key: "render",
- value: function render() {
- var isInserterFocused = this.state.isInserterFocused;
- var _this$props = this.props,
- showInsertionPoint = _this$props.showInsertionPoint,
- rootClientId = _this$props.rootClientId,
- clientId = _this$props.clientId;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__insertion-point block-editor-block-list__insertion-point"
- }, showInsertionPoint && Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__insertion-point-indicator block-editor-block-list__insertion-point-indicator"
- }), Object(external_this_wp_element_["createElement"])("div", {
- onFocus: this.onFocusInserter,
- onBlur: this.onBlurInserter // While ideally it would be enough to capture the
- // bubbling focus event from the Inserter, due to the
- // characteristics of click focusing of `button`s in
- // Firefox and Safari, it is not reliable.
- //
- // See: https://developer.mozilla.org/en-US/docs/Web/HTML/Element/button#Clicking_and_focus
- ,
- tabIndex: -1,
- className: classnames_default()('editor-block-list__insertion-point-inserter block-editor-block-list__insertion-point-inserter', {
- 'is-visible': isInserterFocused
- })
- }, Object(external_this_wp_element_["createElement"])(inserter, {
- rootClientId: rootClientId,
- clientId: clientId
- })));
- }
- }]);
-
- return BlockInsertionPoint;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var insertion_point = (Object(external_this_wp_data_["withSelect"])(function (select, _ref) {
- var clientId = _ref.clientId,
- rootClientId = _ref.rootClientId;
-
- var _select = select('core/block-editor'),
- getBlockIndex = _select.getBlockIndex,
- getBlockInsertionPoint = _select.getBlockInsertionPoint,
- isBlockInsertionPointVisible = _select.isBlockInsertionPointVisible;
-
- var blockIndex = getBlockIndex(clientId, rootClientId);
- var insertionPoint = getBlockInsertionPoint();
- var showInsertionPoint = isBlockInsertionPointVisible() && insertionPoint.index === blockIndex && insertionPoint.rootClientId === rootClientId;
- return {
- showInsertionPoint: showInsertionPoint
- };
-})(insertion_point_BlockInsertionPoint));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/ignore-nested-events/index.js
-
-
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Component which renders a div with passed props applied except the optional
- * `childHandledEvents` prop. Event prop handlers are replaced with a proxying
- * event handler to capture and prevent events from being handled by ancestor
- * `IgnoreNestedEvents` elements by testing the presence of a private property
- * assigned on the event object.
- *
- * Optionally accepts an `childHandledEvents` prop array, which can be used in
- * instances where an inner `IgnoreNestedEvents` element exists and the outer
- * element should stop propagation but not invoke a callback handler, since it
- * would be assumed these are invoked by the child element.
- *
- * @type {Component}
- */
-
-var ignore_nested_events_IgnoreNestedEvents =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(IgnoreNestedEvents, _Component);
-
- function IgnoreNestedEvents() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, IgnoreNestedEvents);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(IgnoreNestedEvents).apply(this, arguments));
- _this.proxyEvent = _this.proxyEvent.bind(Object(assertThisInitialized["a" /* default */])(_this)); // The event map is responsible for tracking an event type to a React
- // component prop name, since it is easy to determine event type from
- // a React prop name, but not the other way around.
-
- _this.eventMap = {};
- return _this;
- }
- /**
- * General event handler which only calls to its original props callback if
- * it has not already been handled by a descendant IgnoreNestedEvents.
- *
- * @param {Event} event Event object.
- */
-
-
- Object(createClass["a" /* default */])(IgnoreNestedEvents, [{
- key: "proxyEvent",
- value: function proxyEvent(event) {
- var isHandled = !!event.nativeEvent._blockHandled; // Assign into the native event, since React will reuse their synthetic
- // event objects and this property assignment could otherwise leak.
- //
- // See: https://reactjs.org/docs/events.html#event-pooling
-
- event.nativeEvent._blockHandled = true; // Invoke original prop handler
-
- var propKey = this.eventMap[event.type]; // If already handled (i.e. assume nested block), only invoke a
- // corresponding "Handled"-suffixed prop callback.
-
- if (isHandled) {
- propKey += 'Handled';
- }
-
- if (this.props[propKey]) {
- this.props[propKey](event);
- }
- }
- }, {
- key: "render",
- value: function render() {
- var _this2 = this;
-
- var _this$props = this.props,
- _this$props$childHand = _this$props.childHandledEvents,
- childHandledEvents = _this$props$childHand === void 0 ? [] : _this$props$childHand,
- forwardedRef = _this$props.forwardedRef,
- _this$props$tagName = _this$props.tagName,
- tagName = _this$props$tagName === void 0 ? 'div' : _this$props$tagName,
- props = Object(objectWithoutProperties["a" /* default */])(_this$props, ["childHandledEvents", "forwardedRef", "tagName"]);
-
- var eventHandlers = Object(external_lodash_["reduce"])([].concat(Object(toConsumableArray["a" /* default */])(childHandledEvents), Object(toConsumableArray["a" /* default */])(Object.keys(props))), function (result, key) {
- // Try to match prop key as event handler
- var match = key.match(/^on([A-Z][a-zA-Z]+?)(Handled)?$/);
-
- if (match) {
- var isHandledProp = !!match[2];
-
- if (isHandledProp) {
- // Avoid assigning through the invalid prop key. This
- // assumes mutation of shallow clone by above spread.
- delete props[key];
- } // Re-map the prop to the local proxy handler to check whether
- // the event has already been handled.
-
-
- var proxiedPropName = 'on' + match[1];
- result[proxiedPropName] = _this2.proxyEvent; // Assign event -> propName into an instance variable, so as to
- // avoid re-renders which could be incurred either by setState
- // or in mapping values to a newly created function.
-
- _this2.eventMap[match[1].toLowerCase()] = proxiedPropName;
- }
-
- return result;
- }, {});
- return Object(external_this_wp_element_["createElement"])(tagName, Object(objectSpread["a" /* default */])({
- ref: forwardedRef
- }, props, eventHandlers));
- }
- }]);
-
- return IgnoreNestedEvents;
-}(external_this_wp_element_["Component"]);
-
-var ignore_nested_events_forwardedIgnoreNestedEvents = function forwardedIgnoreNestedEvents(props, ref) {
- return Object(external_this_wp_element_["createElement"])(ignore_nested_events_IgnoreNestedEvents, Object(esm_extends["a" /* default */])({}, props, {
- forwardedRef: ref
- }));
-};
-
-ignore_nested_events_forwardedIgnoreNestedEvents.displayName = 'IgnoreNestedEvents';
-/* harmony default export */ var ignore_nested_events = (Object(external_this_wp_element_["forwardRef"])(ignore_nested_events_forwardedIgnoreNestedEvents));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inserter-with-shortcuts/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function InserterWithShortcuts(_ref) {
- var items = _ref.items,
- isLocked = _ref.isLocked,
- onInsert = _ref.onInsert;
-
- if (isLocked) {
- return null;
- }
-
- var itemsWithoutDefaultBlock = Object(external_lodash_["filter"])(items, function (item) {
- return !item.isDisabled && (item.name !== Object(external_this_wp_blocks_["getDefaultBlockName"])() || !Object(external_lodash_["isEmpty"])(item.initialAttributes));
- }).slice(0, 3);
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-inserter-with-shortcuts block-editor-inserter-with-shortcuts"
- }, itemsWithoutDefaultBlock.map(function (item) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- key: item.id,
- className: "editor-inserter-with-shortcuts__block block-editor-inserter-with-shortcuts__block",
- onClick: function onClick() {
- return onInsert(item);
- } // translators: %s: block title/name to be added
- ,
- label: Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Add %s'), item.title),
- icon: Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: item.icon
- })
- });
- }));
-}
-
-/* harmony default export */ var inserter_with_shortcuts = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var rootClientId = _ref2.rootClientId;
-
- var _select = select('core/block-editor'),
- getInserterItems = _select.getInserterItems,
- getTemplateLock = _select.getTemplateLock;
-
- return {
- items: getInserterItems(rootClientId),
- isLocked: !!getTemplateLock(rootClientId)
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) {
- var clientId = ownProps.clientId,
- rootClientId = ownProps.rootClientId;
- return {
- onInsert: function onInsert(_ref3) {
- var name = _ref3.name,
- initialAttributes = _ref3.initialAttributes;
- var block = Object(external_this_wp_blocks_["createBlock"])(name, initialAttributes);
-
- if (clientId) {
- dispatch('core/block-editor').replaceBlocks(clientId, block);
- } else {
- dispatch('core/block-editor').insertBlock(block, undefined, rootClientId);
- }
- }
- };
-}))(InserterWithShortcuts));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/dom.js
-/**
- * Given a block client ID, returns the corresponding DOM node for the block,
- * if exists. As much as possible, this helper should be avoided, and used only
- * in cases where isolated behaviors need remote access to a block node.
- *
- * @param {string} clientId Block client ID.
- * @param {Element} scope an optional DOM Element to which the selector should be scoped
- *
- * @return {Element} Block DOM node.
- */
-function getBlockDOMNode(clientId) {
- var scope = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document;
- return scope.querySelector('[data-block="' + clientId + '"]');
-}
-function getBlockPreviewContainerDOMNode(clientId, scope) {
- var domNode = getBlockDOMNode(clientId, scope);
-
- if (!domNode) {
- return;
- }
-
- return domNode.firstChild || domNode;
-}
-/**
- * Given a block client ID, returns the corresponding DOM node for the block
- * focusable wrapper, if exists. As much as possible, this helper should be
- * avoided, and used only in cases where isolated behaviors need remote access
- * to a block node.
- *
- * @param {string} clientId Block client ID.
- *
- * @return {Element} Block DOM node.
- */
-
-function getBlockFocusableWrapper(clientId) {
- return getBlockDOMNode(clientId).closest('.block-editor-block-list__block');
-}
-/**
- * Returns true if the given HTMLElement is a block focus stop. Blocks without
- * their own text fields rely on the focus stop to be keyboard navigable.
- *
- * @param {HTMLElement} element Element to test.
- *
- * @return {boolean} Whether element is a block focus stop.
- */
-
-function isBlockFocusStop(element) {
- return element.classList.contains('block-editor-block-list__block');
-}
-/**
- * Returns true if two elements are contained within the same block.
- *
- * @param {HTMLElement} a First element.
- * @param {HTMLElement} b Second element.
- *
- * @return {boolean} Whether elements are in the same block.
- */
-
-function isInSameBlock(a, b) {
- return a.closest('[data-block]') === b.closest('[data-block]');
-}
-/**
- * Returns true if an elements is considered part of the block and not its children.
- *
- * @param {HTMLElement} blockElement Block container element.
- * @param {HTMLElement} element Element.
- *
- * @return {boolean} Whether element is in the block Element but not its children.
- */
-
-function isInsideRootBlock(blockElement, element) {
- var innerBlocksContainer = blockElement.querySelector('.block-editor-block-list__layout');
- return blockElement.contains(element) && (!innerBlocksContainer || !innerBlocksContainer.contains(element));
-}
-/**
- * Returns true if the given HTMLElement contains inner blocks (an InnerBlocks
- * element).
- *
- * @param {HTMLElement} element Element to test.
- *
- * @return {boolean} Whether element contains inner blocks.
- */
-
-function hasInnerBlocksContext(element) {
- return !!element.querySelector('.block-editor-block-list__layout');
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/moving-animation.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Simple reducer used to increment a counter.
- *
- * @param {number} state Previous counter value.
- * @return {number} New state value.
- */
-
-var counterReducer = function counterReducer(state) {
- return state + 1;
-};
-
-var getAbsolutePosition = function getAbsolutePosition(element) {
- return {
- top: element.offsetTop,
- left: element.offsetLeft
- };
-};
-/**
- * Hook used to compute the styles required to move a div into a new position.
- *
- * The way this animation works is the following:
- * - It first renders the element as if there was no animation.
- * - It takes a snapshot of the position of the block to use it
- * as a destination point for the animation.
- * - It restores the element to the previous position using a CSS transform
- * - It uses the "resetAnimation" flag to reset the animation
- * from the beginning in order to animate to the new destination point.
- *
- * @param {Object} ref Reference to the element to animate.
- * @param {boolean} isSelected Whether it's the current block or not.
- * @param {boolean} adjustScrolling Adjust the scroll position to the current block.
- * @param {boolean} enableAnimation Enable/Disable animation.
- * @param {*} triggerAnimationOnChange Variable used to trigger the animation if it changes.
- *
- * @return {Object} Style object.
- */
-
-
-function useMovingAnimation(ref, isSelected, adjustScrolling, enableAnimation, triggerAnimationOnChange) {
- var prefersReducedMotion = Object(external_this_wp_compose_["useReducedMotion"])() || !enableAnimation;
-
- var _useReducer = Object(external_this_wp_element_["useReducer"])(counterReducer, 0),
- _useReducer2 = Object(slicedToArray["a" /* default */])(_useReducer, 2),
- triggeredAnimation = _useReducer2[0],
- triggerAnimation = _useReducer2[1];
-
- var _useReducer3 = Object(external_this_wp_element_["useReducer"])(counterReducer, 0),
- _useReducer4 = Object(slicedToArray["a" /* default */])(_useReducer3, 2),
- finishedAnimation = _useReducer4[0],
- endAnimation = _useReducer4[1];
-
- var _useState = Object(external_this_wp_element_["useState"])({
- x: 0,
- y: 0,
- scrollTop: 0
- }),
- _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),
- transform = _useState2[0],
- setTransform = _useState2[1];
-
- var previous = ref.current ? getAbsolutePosition(ref.current) : null;
- var scrollContainer = Object(external_this_wp_element_["useMemo"])(function () {
- if (!adjustScrolling) {
- return false;
- }
-
- return Object(external_this_wp_dom_["getScrollContainer"])(ref.current);
- }, [adjustScrolling]);
- Object(external_this_wp_element_["useLayoutEffect"])(function () {
- if (triggeredAnimation) {
- endAnimation();
- }
- }, [triggeredAnimation]);
- Object(external_this_wp_element_["useLayoutEffect"])(function () {
- if (prefersReducedMotion) {
- if (adjustScrolling && scrollContainer) {
- // if the animation is disabled and the scroll needs to be adjusted,
- // just move directly to the final scroll position
- ref.current.style.transform = 'none';
-
- var _destination = getAbsolutePosition(ref.current);
-
- scrollContainer.scrollTop = scrollContainer.scrollTop - previous.top + _destination.top;
- }
-
- return;
- }
-
- ref.current.style.transform = 'none';
- var destination = getAbsolutePosition(ref.current);
- var newTransform = {
- x: previous ? previous.left - destination.left : 0,
- y: previous ? previous.top - destination.top : 0,
- scrollTop: previous && scrollContainer ? scrollContainer.scrollTop - previous.top + destination.top : 0
- };
- ref.current.style.transform = newTransform.x === 0 && newTransform.y === 0 ? undefined : "translate3d(".concat(newTransform.x, "px,").concat(newTransform.y, "px,0)");
- triggerAnimation();
- setTransform(newTransform);
- }, [triggerAnimationOnChange]);
- var animationProps = Object(web_cjs["useSpring"])({
- from: {
- x: transform.x,
- y: transform.y
- },
- to: {
- x: 0,
- y: 0
- },
- reset: triggeredAnimation !== finishedAnimation,
- config: {
- mass: 5,
- tension: 2000,
- friction: 200
- },
- immediate: prefersReducedMotion,
- onFrame: function onFrame(props) {
- if (adjustScrolling && scrollContainer && !prefersReducedMotion && props.y) {
- scrollContainer.scrollTop = transform.scrollTop + props.y;
- }
- }
- }); // Dismiss animations if disabled.
-
- return prefersReducedMotion ? {} : {
- transformOrigin: 'center',
- transform: Object(web_cjs["interpolate"])([animationProps.x, animationProps.y], function (x, y) {
- return x === 0 && y === 0 ? undefined : "translate3d(".concat(x, "px,").concat(y, "px,0)");
- }),
- zIndex: Object(web_cjs["interpolate"])([animationProps.x, animationProps.y], function (x, y) {
- return !isSelected || x === 0 && y === 0 ? undefined : "1";
- })
- };
-}
-
-/* harmony default export */ var moving_animation = (useMovingAnimation);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/block.js
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/**
- * Prevents default dragging behavior within a block to allow for multi-
- * selection to take effect unhampered.
- *
- * @param {DragEvent} event Drag event.
- */
-
-var preventDrag = function preventDrag(event) {
- event.preventDefault();
-};
-
-function block_BlockListBlock(_ref) {
- var blockRef = _ref.blockRef,
- mode = _ref.mode,
- isFocusMode = _ref.isFocusMode,
- hasFixedToolbar = _ref.hasFixedToolbar,
- isLocked = _ref.isLocked,
- clientId = _ref.clientId,
- rootClientId = _ref.rootClientId,
- isSelected = _ref.isSelected,
- isPartOfMultiSelection = _ref.isPartOfMultiSelection,
- isFirstMultiSelected = _ref.isFirstMultiSelected,
- isTypingWithinBlock = _ref.isTypingWithinBlock,
- isCaretWithinFormattedText = _ref.isCaretWithinFormattedText,
- isEmptyDefaultBlock = _ref.isEmptyDefaultBlock,
- isMovable = _ref.isMovable,
- isParentOfSelectedBlock = _ref.isParentOfSelectedBlock,
- isDraggable = _ref.isDraggable,
- isSelectionEnabled = _ref.isSelectionEnabled,
- className = _ref.className,
- name = _ref.name,
- isValid = _ref.isValid,
- isLast = _ref.isLast,
- attributes = _ref.attributes,
- initialPosition = _ref.initialPosition,
- wrapperProps = _ref.wrapperProps,
- setAttributes = _ref.setAttributes,
- onReplace = _ref.onReplace,
- onInsertBlocksAfter = _ref.onInsertBlocksAfter,
- onMerge = _ref.onMerge,
- onSelect = _ref.onSelect,
- onRemove = _ref.onRemove,
- onInsertDefaultBlockAfter = _ref.onInsertDefaultBlockAfter,
- toggleSelection = _ref.toggleSelection,
- onShiftSelection = _ref.onShiftSelection,
- onSelectionStart = _ref.onSelectionStart,
- animateOnChange = _ref.animateOnChange,
- enableAnimation = _ref.enableAnimation,
- isNavigationMode = _ref.isNavigationMode,
- enableNavigationMode = _ref.enableNavigationMode;
-
- // Random state used to rerender the component if needed, ideally we don't need this
- var _useState = Object(external_this_wp_element_["useState"])({}),
- _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),
- updateRerenderState = _useState2[1];
-
- var rerender = function rerender() {
- return updateRerenderState({});
- }; // Reference of the wrapper
-
-
- var wrapper = Object(external_this_wp_element_["useRef"])(null);
- Object(external_this_wp_element_["useEffect"])(function () {
- blockRef(wrapper.current, clientId);
- }, []); // Reference to the block edit node
-
- var blockNodeRef = Object(external_this_wp_element_["useRef"])();
- var breadcrumb = Object(external_this_wp_element_["useRef"])(); // Keep track of touchstart to disable hover on iOS
-
- var hadTouchStart = Object(external_this_wp_element_["useRef"])(false);
-
- var onTouchStart = function onTouchStart() {
- hadTouchStart.current = true;
- };
-
- var onTouchStop = function onTouchStop() {
- // Clear touchstart detection
- // Browser will try to emulate mouse events also see https://www.html5rocks.com/en/mobile/touchandmouse/
- hadTouchStart.current = false;
- }; // Handling isHovered
-
-
- var _useState3 = Object(external_this_wp_element_["useState"])(false),
- _useState4 = Object(slicedToArray["a" /* default */])(_useState3, 2),
- isBlockHovered = _useState4[0],
- setBlockHoveredState = _useState4[1];
- /**
- * Sets the block state as unhovered if currently hovering. There are cases
- * where mouseleave may occur but the block is not hovered (multi-select),
- * so to avoid unnecesary renders, the state is only set if hovered.
- */
-
-
- var hideHoverEffects = function hideHoverEffects() {
- if (isBlockHovered) {
- setBlockHoveredState(false);
- }
- };
- /**
- * A mouseover event handler to apply hover effect when a pointer device is
- * placed within the bounds of the block. The mouseover event is preferred
- * over mouseenter because it may be the case that a previous mouseenter
- * event was blocked from being handled by a IgnoreNestedEvents component,
- * therefore transitioning out of a nested block to the bounds of the block
- * would otherwise not trigger a hover effect.
- *
- * @see https://developer.mozilla.org/en-US/docs/Web/Events/mouseenter
- */
-
-
- var maybeHover = function maybeHover() {
- if (isBlockHovered || isPartOfMultiSelection || isSelected || hadTouchStart.current) {
- return;
- }
-
- setBlockHoveredState(true);
- }; // Set hover to false once we start typing or select the block.
-
-
- Object(external_this_wp_element_["useEffect"])(function () {
- if (isTypingWithinBlock || isSelected) {
- hideHoverEffects();
- }
- }); // Handling the dragging state
-
- var _useState5 = Object(external_this_wp_element_["useState"])(false),
- _useState6 = Object(slicedToArray["a" /* default */])(_useState5, 2),
- isDragging = _useState6[0],
- setBlockDraggingState = _useState6[1];
-
- var onDragStart = function onDragStart() {
- setBlockDraggingState(true);
- };
-
- var onDragEnd = function onDragEnd() {
- setBlockDraggingState(false);
- }; // Handling the error state
-
-
- var _useState7 = Object(external_this_wp_element_["useState"])(false),
- _useState8 = Object(slicedToArray["a" /* default */])(_useState7, 2),
- hasError = _useState8[0],
- setErrorState = _useState8[1];
-
- var onBlockError = function onBlockError() {
- return setErrorState(true);
- }; // Handling of forceContextualToolbarFocus
-
-
- var isForcingContextualToolbar = Object(external_this_wp_element_["useRef"])(false);
- Object(external_this_wp_element_["useEffect"])(function () {
- if (isForcingContextualToolbar.current) {
- // The forcing of contextual toolbar should only be true during one update,
- // after the first update normal conditions should apply.
- isForcingContextualToolbar.current = false;
- }
- });
-
- var forceFocusedContextualToolbar = function forceFocusedContextualToolbar() {
- isForcingContextualToolbar.current = true; // trigger a re-render
-
- rerender();
- }; // Handing the focus of the block on creation and update
-
- /**
- * When a block becomes selected, transition focus to an inner tabbable.
- *
- * @param {boolean} ignoreInnerBlocks Should not focus inner blocks.
- */
-
-
- var focusTabbable = function focusTabbable(ignoreInnerBlocks) {
- // Focus is captured by the wrapper node, so while focus transition
- // should only consider tabbables within editable display, since it
- // may be the wrapper itself or a side control which triggered the
- // focus event, don't unnecessary transition to an inner tabbable.
- if (wrapper.current.contains(document.activeElement)) {
- return;
- }
-
- if (isNavigationMode) {
- breadcrumb.current.focus();
- return;
- } // Find all tabbables within node.
-
-
- var textInputs = external_this_wp_dom_["focus"].tabbable.find(blockNodeRef.current).filter(external_this_wp_dom_["isTextField"]) // Exclude inner blocks
- .filter(function (node) {
- return !ignoreInnerBlocks || isInsideRootBlock(blockNodeRef.current, node);
- }); // If reversed (e.g. merge via backspace), use the last in the set of
- // tabbables.
-
- var isReverse = -1 === initialPosition;
- var target = (isReverse ? external_lodash_["last"] : external_lodash_["first"])(textInputs);
-
- if (!target) {
- wrapper.current.focus();
- return;
- }
-
- Object(external_this_wp_dom_["placeCaretAtHorizontalEdge"])(target, isReverse);
- }; // Focus the selected block's wrapper or inner input on mount and update
-
-
- var isMounting = Object(external_this_wp_element_["useRef"])(true);
- Object(external_this_wp_element_["useEffect"])(function () {
- if (isSelected) {
- focusTabbable(!isMounting.current);
- }
-
- isMounting.current = false;
- }, [isSelected]); // Focus the first multi selected block
-
- Object(external_this_wp_element_["useEffect"])(function () {
- if (isFirstMultiSelected) {
- wrapper.current.focus();
- }
- }, [isFirstMultiSelected]); // Block Reordering animation
-
- var animationStyle = moving_animation(wrapper, isSelected || isPartOfMultiSelection, isSelected || isFirstMultiSelected, enableAnimation, animateOnChange); // Focus the breadcrumb if the wrapper is focused on navigation mode.
- // Focus the first editable or the wrapper if edit mode.
-
- Object(external_this_wp_element_["useLayoutEffect"])(function () {
- if (isSelected) {
- if (isNavigationMode) {
- breadcrumb.current.focus();
- } else {
- focusTabbable(true);
- }
- }
- }, [isSelected, isNavigationMode]); // Other event handlers
-
- /**
- * Marks the block as selected when focused and not already selected. This
- * specifically handles the case where block does not set focus on its own
- * (via `setFocus`), typically if there is no focusable input in the block.
- */
-
- var onFocus = function onFocus() {
- if (!isSelected && !isPartOfMultiSelection) {
- onSelect();
- }
- };
- /**
- * Interprets keydown event intent to remove or insert after block if key
- * event occurs on wrapper node. This can occur when the block has no text
- * fields of its own, particularly after initial insertion, to allow for
- * easy deletion and continuous writing flow to add additional content.
- *
- * @param {KeyboardEvent} event Keydown event.
- */
-
-
- var onKeyDown = function onKeyDown(event) {
- var keyCode = event.keyCode,
- target = event.target; // ENTER/BACKSPACE Shortcuts are only available if the wrapper is focused
- // and the block is not locked.
-
- var canUseShortcuts = isSelected && !isLocked && (target === wrapper.current || target === breadcrumb.current);
- var isEditMode = !isNavigationMode;
-
- switch (keyCode) {
- case external_this_wp_keycodes_["ENTER"]:
- if (canUseShortcuts && isEditMode) {
- // Insert default block after current block if enter and event
- // not already handled by descendant.
- onInsertDefaultBlockAfter();
- event.preventDefault();
- }
-
- break;
-
- case external_this_wp_keycodes_["BACKSPACE"]:
- case external_this_wp_keycodes_["DELETE"]:
- if (canUseShortcuts) {
- // Remove block on backspace.
- onRemove(clientId);
- event.preventDefault();
- }
-
- break;
-
- case external_this_wp_keycodes_["ESCAPE"]:
- if (isSelected && isEditMode) {
- enableNavigationMode();
- wrapper.current.focus();
- }
-
- break;
- }
- };
- /**
- * Begins tracking cursor multi-selection when clicking down within block.
- *
- * @param {MouseEvent} event A mousedown event.
- */
-
-
- var onPointerDown = function onPointerDown(event) {
- // Not the main button.
- // https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent/button
- if (event.button !== 0) {
- return;
- }
-
- if (event.shiftKey) {
- if (!isSelected) {
- onShiftSelection();
- event.preventDefault();
- } // Avoid triggering multi-selection if we click toolbars/inspectors
- // and all elements that are outside the Block Edit DOM tree.
-
- } else if (blockNodeRef.current.contains(event.target)) {
- onSelectionStart(clientId); // Allow user to escape out of a multi-selection to a singular
- // selection of a block via click. This is handled here since
- // onFocus excludes blocks involved in a multiselection, as
- // focus can be incurred by starting a multiselection (focus
- // moved to first block's multi-controls).
-
- if (isPartOfMultiSelection) {
- onSelect();
- }
- }
- };
-
- var selectOnOpen = function selectOnOpen(open) {
- if (open && !isSelected) {
- onSelect();
- }
- }; // Rendering the output
-
-
- var isHovered = isBlockHovered && !isPartOfMultiSelection;
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(name); // translators: %s: Type of block (i.e. Text, Image etc)
-
- var blockLabel = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["__"])('Block: %s'), blockType.title); // The block as rendered in the editor is composed of general block UI
- // (mover, toolbar, wrapper) and the display of the block content.
-
- var isUnregisteredBlock = name === Object(external_this_wp_blocks_["getUnregisteredTypeHandlerName"])(); // If the block is selected and we're typing the block should not appear.
- // Empty paragraph blocks should always show up as unselected.
-
- var showInserterShortcuts = !isNavigationMode && (isSelected || isHovered) && isEmptyDefaultBlock && isValid;
- var showEmptyBlockSideInserter = !isNavigationMode && (isSelected || isHovered || isLast) && isEmptyDefaultBlock && isValid;
- var shouldAppearSelected = !isFocusMode && !showEmptyBlockSideInserter && isSelected && !isTypingWithinBlock;
- var shouldAppearHovered = !isFocusMode && !hasFixedToolbar && isHovered && !isEmptyDefaultBlock; // We render block movers and block settings to keep them tabbale even if hidden
-
- var shouldRenderMovers = !isNavigationMode && isSelected && !showEmptyBlockSideInserter && !isPartOfMultiSelection && !isTypingWithinBlock;
- var shouldShowBreadcrumb = isSelected && isNavigationMode || !isNavigationMode && !isFocusMode && isHovered && !isEmptyDefaultBlock;
- var shouldShowContextualToolbar = !isNavigationMode && !hasFixedToolbar && !showEmptyBlockSideInserter && (isSelected && (!isTypingWithinBlock || isCaretWithinFormattedText) || isFirstMultiSelected);
- var shouldShowMobileToolbar = !isNavigationMode && shouldAppearSelected; // Insertion point can only be made visible if the block is at the
- // the extent of a multi-selection, or not in a multi-selection.
-
- var shouldShowInsertionPoint = isPartOfMultiSelection && isFirstMultiSelected || !isPartOfMultiSelection; // The wp-block className is important for editor styles.
- // Generate the wrapper class names handling the different states of the block.
-
- var wrapperClassName = classnames_default()('wp-block editor-block-list__block block-editor-block-list__block', {
- 'has-warning': !isValid || !!hasError || isUnregisteredBlock,
- 'is-selected': shouldAppearSelected,
- 'is-navigate-mode': isNavigationMode,
- 'is-multi-selected': isPartOfMultiSelection,
- 'is-hovered': shouldAppearHovered,
- 'is-reusable': Object(external_this_wp_blocks_["isReusableBlock"])(blockType),
- 'is-dragging': isDragging,
- 'is-typing': isTypingWithinBlock,
- 'is-focused': isFocusMode && (isSelected || isParentOfSelectedBlock),
- 'is-focus-mode': isFocusMode,
- 'has-child-selected': isParentOfSelectedBlock
- }, className); // Determine whether the block has props to apply to the wrapper.
-
- if (blockType.getEditWrapperProps) {
- wrapperProps = Object(objectSpread["a" /* default */])({}, wrapperProps, blockType.getEditWrapperProps(attributes));
- }
-
- var blockElementId = "block-".concat(clientId); // We wrap the BlockEdit component in a div that hides it when editing in
- // HTML mode. This allows us to render all of the ancillary pieces
- // (InspectorControls, etc.) which are inside `BlockEdit` but not
- // `BlockHTML`, even in HTML mode.
-
- var blockEdit = Object(external_this_wp_element_["createElement"])(block_edit, {
- name: name,
- isSelected: isSelected,
- attributes: attributes,
- setAttributes: setAttributes,
- insertBlocksAfter: isLocked ? undefined : onInsertBlocksAfter,
- onReplace: isLocked ? undefined : onReplace,
- mergeBlocks: isLocked ? undefined : onMerge,
- clientId: clientId,
- isSelectionEnabled: isSelectionEnabled,
- toggleSelection: toggleSelection
- });
-
- if (mode !== 'visual') {
- blockEdit = Object(external_this_wp_element_["createElement"])("div", {
- style: {
- display: 'none'
- }
- }, blockEdit);
- }
-
- return Object(external_this_wp_element_["createElement"])(ignore_nested_events, Object(esm_extends["a" /* default */])({
- id: blockElementId,
- ref: wrapper,
- onMouseOver: maybeHover,
- onMouseOverHandled: hideHoverEffects,
- onMouseLeave: hideHoverEffects,
- className: wrapperClassName,
- "data-type": name,
- onTouchStart: onTouchStart,
- onFocus: onFocus,
- onClick: onTouchStop,
- onKeyDown: onKeyDown,
- tabIndex: "0",
- "aria-label": blockLabel,
- childHandledEvents: ['onDragStart', 'onMouseDown'],
- tagName: web_cjs["animated"].div
- }, wrapperProps, {
- style: wrapperProps && wrapperProps.style ? Object(objectSpread["a" /* default */])({}, wrapperProps.style, animationStyle) : animationStyle
- }), shouldShowInsertionPoint && Object(external_this_wp_element_["createElement"])(insertion_point, {
- clientId: clientId,
- rootClientId: rootClientId
- }), Object(external_this_wp_element_["createElement"])(block_drop_zone, {
- clientId: clientId,
- rootClientId: rootClientId
- }), isFirstMultiSelected && Object(external_this_wp_element_["createElement"])(multi_controls, {
- rootClientId: rootClientId
- }), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__block-edit block-editor-block-list__block-edit"
- }, shouldRenderMovers && Object(external_this_wp_element_["createElement"])(block_mover, {
- clientIds: clientId,
- blockElementId: blockElementId,
- isHidden: !isSelected,
- isDraggable: isDraggable !== false && !isPartOfMultiSelection && isMovable,
- onDragStart: onDragStart,
- onDragEnd: onDragEnd
- }), shouldShowBreadcrumb && Object(external_this_wp_element_["createElement"])(block_list_breadcrumb, {
- clientId: clientId,
- ref: breadcrumb
- }), (shouldShowContextualToolbar || isForcingContextualToolbar.current) && Object(external_this_wp_element_["createElement"])(block_contextual_toolbar // If the toolbar is being shown because of being forced
- // it should focus the toolbar right after the mount.
- , {
- focusOnMount: isForcingContextualToolbar.current
- }), !isNavigationMode && !shouldShowContextualToolbar && isSelected && !hasFixedToolbar && !isEmptyDefaultBlock && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], {
- bindGlobal: true,
- eventName: "keydown",
- shortcuts: {
- 'alt+f10': forceFocusedContextualToolbar
- }
- }), Object(external_this_wp_element_["createElement"])(ignore_nested_events, {
- ref: blockNodeRef,
- onDragStart: preventDrag,
- onMouseDown: onPointerDown,
- "data-block": clientId
- }, Object(external_this_wp_element_["createElement"])(block_crash_boundary, {
- onError: onBlockError
- }, isValid && blockEdit, isValid && mode === 'html' && Object(external_this_wp_element_["createElement"])(block_html, {
- clientId: clientId
- }), !isValid && [Object(external_this_wp_element_["createElement"])(block_invalid_warning, {
- key: "invalid-warning",
- clientId: clientId
- }), Object(external_this_wp_element_["createElement"])("div", {
- key: "invalid-preview"
- }, Object(external_this_wp_blocks_["getSaveElement"])(blockType, attributes))]), !!hasError && Object(external_this_wp_element_["createElement"])(block_crash_warning, null), shouldShowMobileToolbar && Object(external_this_wp_element_["createElement"])(block_mobile_toolbar, {
- clientId: clientId
- }))), showInserterShortcuts && Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__side-inserter block-editor-block-list__side-inserter"
- }, Object(external_this_wp_element_["createElement"])(inserter_with_shortcuts, {
- clientId: clientId,
- rootClientId: rootClientId,
- onToggle: selectOnOpen
- })), showEmptyBlockSideInserter && Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-list__empty-block-inserter block-editor-block-list__empty-block-inserter"
- }, Object(external_this_wp_element_["createElement"])(inserter, {
- position: "top right",
- onToggle: selectOnOpen,
- rootClientId: rootClientId,
- clientId: clientId
- })));
-}
-
-var applyWithSelect = Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var clientId = _ref2.clientId,
- rootClientId = _ref2.rootClientId,
- isLargeViewport = _ref2.isLargeViewport;
-
- var _select = select('core/block-editor'),
- isBlockSelected = _select.isBlockSelected,
- isAncestorMultiSelected = _select.isAncestorMultiSelected,
- isBlockMultiSelected = _select.isBlockMultiSelected,
- isFirstMultiSelectedBlock = _select.isFirstMultiSelectedBlock,
- isTyping = _select.isTyping,
- isCaretWithinFormattedText = _select.isCaretWithinFormattedText,
- getBlockMode = _select.getBlockMode,
- isSelectionEnabled = _select.isSelectionEnabled,
- getSelectedBlocksInitialCaretPosition = _select.getSelectedBlocksInitialCaretPosition,
- getSettings = _select.getSettings,
- hasSelectedInnerBlock = _select.hasSelectedInnerBlock,
- getTemplateLock = _select.getTemplateLock,
- getBlockIndex = _select.getBlockIndex,
- getBlockOrder = _select.getBlockOrder,
- __unstableGetBlockWithoutInnerBlocks = _select.__unstableGetBlockWithoutInnerBlocks,
- isNavigationMode = _select.isNavigationMode;
-
- var block = __unstableGetBlockWithoutInnerBlocks(clientId);
-
- var isSelected = isBlockSelected(clientId);
-
- var _getSettings = getSettings(),
- hasFixedToolbar = _getSettings.hasFixedToolbar,
- focusMode = _getSettings.focusMode,
- isRTL = _getSettings.isRTL;
-
- var templateLock = getTemplateLock(rootClientId);
- var isParentOfSelectedBlock = hasSelectedInnerBlock(clientId, true);
- var index = getBlockIndex(clientId, rootClientId);
- var blockOrder = getBlockOrder(rootClientId); // The fallback to `{}` is a temporary fix.
- // This function should never be called when a block is not present in the state.
- // It happens now because the order in withSelect rendering is not correct.
-
- var _ref3 = block || {},
- name = _ref3.name,
- attributes = _ref3.attributes,
- isValid = _ref3.isValid;
-
- return {
- isPartOfMultiSelection: isBlockMultiSelected(clientId) || isAncestorMultiSelected(clientId),
- isFirstMultiSelected: isFirstMultiSelectedBlock(clientId),
- // We only care about this prop when the block is selected
- // Thus to avoid unnecessary rerenders we avoid updating the prop if the block is not selected.
- isTypingWithinBlock: (isSelected || isParentOfSelectedBlock) && isTyping(),
- isCaretWithinFormattedText: isCaretWithinFormattedText(),
- mode: getBlockMode(clientId),
- isSelectionEnabled: isSelectionEnabled(),
- initialPosition: isSelected ? getSelectedBlocksInitialCaretPosition() : null,
- isEmptyDefaultBlock: name && Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])({
- name: name,
- attributes: attributes
- }),
- isMovable: 'all' !== templateLock,
- isLocked: !!templateLock,
- isFocusMode: focusMode && isLargeViewport,
- hasFixedToolbar: hasFixedToolbar && isLargeViewport,
- isLast: index === blockOrder.length - 1,
- isNavigationMode: isNavigationMode(),
- isRTL: isRTL,
- // Users of the editor.BlockListBlock filter used to be able to access the block prop
- // Ideally these blocks would rely on the clientId prop only.
- // This is kept for backward compatibility reasons.
- block: block,
- name: name,
- attributes: attributes,
- isValid: isValid,
- isSelected: isSelected,
- isParentOfSelectedBlock: isParentOfSelectedBlock
- };
-});
-var applyWithDispatch = Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps, _ref4) {
- var select = _ref4.select;
-
- var _dispatch = dispatch('core/block-editor'),
- updateBlockAttributes = _dispatch.updateBlockAttributes,
- selectBlock = _dispatch.selectBlock,
- multiSelect = _dispatch.multiSelect,
- insertBlocks = _dispatch.insertBlocks,
- insertDefaultBlock = _dispatch.insertDefaultBlock,
- removeBlock = _dispatch.removeBlock,
- mergeBlocks = _dispatch.mergeBlocks,
- replaceBlocks = _dispatch.replaceBlocks,
- _toggleSelection = _dispatch.toggleSelection,
- setNavigationMode = _dispatch.setNavigationMode,
- __unstableMarkLastChangeAsPersistent = _dispatch.__unstableMarkLastChangeAsPersistent;
-
- return {
- setAttributes: function setAttributes(newAttributes) {
- var clientId = ownProps.clientId;
- updateBlockAttributes(clientId, newAttributes);
- },
- onSelect: function onSelect() {
- var clientId = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : ownProps.clientId;
- var initialPosition = arguments.length > 1 ? arguments[1] : undefined;
- selectBlock(clientId, initialPosition);
- },
- onInsertBlocks: function onInsertBlocks(blocks, index) {
- var rootClientId = ownProps.rootClientId;
- insertBlocks(blocks, index, rootClientId);
- },
- onInsertDefaultBlockAfter: function onInsertDefaultBlockAfter() {
- var clientId = ownProps.clientId,
- rootClientId = ownProps.rootClientId;
-
- var _select2 = select('core/block-editor'),
- getBlockIndex = _select2.getBlockIndex;
-
- var index = getBlockIndex(clientId, rootClientId);
- insertDefaultBlock({}, rootClientId, index + 1);
- },
- onInsertBlocksAfter: function onInsertBlocksAfter(blocks) {
- var clientId = ownProps.clientId,
- rootClientId = ownProps.rootClientId;
-
- var _select3 = select('core/block-editor'),
- getBlockIndex = _select3.getBlockIndex;
-
- var index = getBlockIndex(clientId, rootClientId);
- insertBlocks(blocks, index + 1, rootClientId);
- },
- onRemove: function onRemove(clientId) {
- removeBlock(clientId);
- },
- onMerge: function onMerge(forward) {
- var clientId = ownProps.clientId;
-
- var _select4 = select('core/block-editor'),
- getPreviousBlockClientId = _select4.getPreviousBlockClientId,
- getNextBlockClientId = _select4.getNextBlockClientId;
-
- if (forward) {
- var nextBlockClientId = getNextBlockClientId(clientId);
-
- if (nextBlockClientId) {
- mergeBlocks(clientId, nextBlockClientId);
- }
- } else {
- var previousBlockClientId = getPreviousBlockClientId(clientId);
-
- if (previousBlockClientId) {
- mergeBlocks(previousBlockClientId, clientId);
- }
- }
- },
- onReplace: function onReplace(blocks, indexToSelect) {
- if (blocks.length && !Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])(blocks[blocks.length - 1])) {
- __unstableMarkLastChangeAsPersistent();
- }
-
- replaceBlocks([ownProps.clientId], blocks, indexToSelect);
- },
- onShiftSelection: function onShiftSelection() {
- if (!ownProps.isSelectionEnabled) {
- return;
- }
-
- var _select5 = select('core/block-editor'),
- getBlockSelectionStart = _select5.getBlockSelectionStart;
-
- if (getBlockSelectionStart()) {
- multiSelect(getBlockSelectionStart(), ownProps.clientId);
- } else {
- selectBlock(ownProps.clientId);
- }
- },
- toggleSelection: function toggleSelection(selectionEnabled) {
- _toggleSelection(selectionEnabled);
- },
- enableNavigationMode: function enableNavigationMode() {
- setNavigationMode(true);
- }
- };
-});
-/* harmony default export */ var block_list_block = (Object(external_this_wp_compose_["compose"])(external_this_wp_compose_["pure"], Object(external_this_wp_viewport_["withViewportMatch"])({
- isLargeViewport: 'medium'
-}), applyWithSelect, applyWithDispatch, // block is sometimes not mounted at the right time, causing it be undefined
-// see issue for more info https://github.com/WordPress/gutenberg/issues/17013
-Object(external_this_wp_compose_["ifCondition"])(function (_ref5) {
- var block = _ref5.block;
- return !!block;
-}), Object(external_this_wp_components_["withFilters"])('editor.BlockListBlock'))(block_BlockListBlock));
-
-// EXTERNAL MODULE: external {"this":["wp","htmlEntities"]}
-var external_this_wp_htmlEntities_ = __webpack_require__(52);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/default-block-appender/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function default_block_appender_DefaultBlockAppender(_ref) {
- var isLocked = _ref.isLocked,
- isVisible = _ref.isVisible,
- onAppend = _ref.onAppend,
- showPrompt = _ref.showPrompt,
- placeholder = _ref.placeholder,
- rootClientId = _ref.rootClientId,
- hovered = _ref.hovered,
- setState = _ref.setState;
-
- if (isLocked || !isVisible) {
- return null;
- }
-
- var value = Object(external_this_wp_htmlEntities_["decodeEntities"])(placeholder) || Object(external_this_wp_i18n_["__"])('Start writing or type / to choose a block'); // The appender "button" is in-fact a text field so as to support
- // transitions by WritingFlow occurring by arrow key press. WritingFlow
- // only supports tab transitions into text fields and to the block focus
- // boundary.
- //
- // See: https://github.com/WordPress/gutenberg/issues/4829#issuecomment-374213658
- //
- // If it were ever to be made to be a proper `button` element, it is
- // important to note that `onFocus` alone would not be sufficient to
- // capture click events, notably in Firefox.
- //
- // See: https://gist.github.com/cvrebert/68659d0333a578d75372
- // The wp-block className is important for editor styles.
-
-
- return Object(external_this_wp_element_["createElement"])("div", {
- "data-root-client-id": rootClientId || '',
- className: "wp-block editor-default-block-appender block-editor-default-block-appender",
- onMouseEnter: function onMouseEnter() {
- return setState({
- hovered: true
- });
- },
- onMouseLeave: function onMouseLeave() {
- return setState({
- hovered: false
- });
- }
- }, Object(external_this_wp_element_["createElement"])(block_drop_zone, {
- rootClientId: rootClientId
- }), Object(external_this_wp_element_["createElement"])(react_autosize_textarea_lib_default.a, {
- role: "button",
- "aria-label": Object(external_this_wp_i18n_["__"])('Add block'),
- className: "editor-default-block-appender__content block-editor-default-block-appender__content",
- readOnly: true,
- onFocus: onAppend,
- value: showPrompt ? value : ''
- }), hovered && Object(external_this_wp_element_["createElement"])(inserter_with_shortcuts, {
- rootClientId: rootClientId
- }), Object(external_this_wp_element_["createElement"])(inserter, {
- rootClientId: rootClientId,
- position: "top right",
- isAppender: true
- }));
-}
-/* harmony default export */ var default_block_appender = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_compose_["withState"])({
- hovered: false
-}), Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
- var _select = select('core/block-editor'),
- getBlockCount = _select.getBlockCount,
- getBlockName = _select.getBlockName,
- isBlockValid = _select.isBlockValid,
- getSettings = _select.getSettings,
- getTemplateLock = _select.getTemplateLock;
-
- var isEmpty = !getBlockCount(ownProps.rootClientId);
- var isLastBlockDefault = getBlockName(ownProps.lastBlockClientId) === Object(external_this_wp_blocks_["getDefaultBlockName"])();
- var isLastBlockValid = isBlockValid(ownProps.lastBlockClientId);
-
- var _getSettings = getSettings(),
- bodyPlaceholder = _getSettings.bodyPlaceholder;
-
- return {
- isVisible: isEmpty || !isLastBlockDefault || !isLastBlockValid,
- showPrompt: isEmpty,
- isLocked: !!getTemplateLock(ownProps.rootClientId),
- placeholder: bodyPlaceholder
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) {
- var _dispatch = dispatch('core/block-editor'),
- insertDefaultBlock = _dispatch.insertDefaultBlock,
- startTyping = _dispatch.startTyping;
-
- return {
- onAppend: function onAppend() {
- var rootClientId = ownProps.rootClientId;
- insertDefaultBlock(undefined, rootClientId);
- startTyping();
- }
- };
-}))(default_block_appender_DefaultBlockAppender));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list-appender/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-function BlockListAppender(_ref) {
- var blockClientIds = _ref.blockClientIds,
- rootClientId = _ref.rootClientId,
- canInsertDefaultBlock = _ref.canInsertDefaultBlock,
- isLocked = _ref.isLocked,
- CustomAppender = _ref.renderAppender;
-
- if (isLocked) {
- return null;
- } // If a render prop has been provided
- // use it to render the appender.
-
-
- if (CustomAppender) {
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "block-list-appender"
- }, Object(external_this_wp_element_["createElement"])(CustomAppender, null));
- } // a false value means, don't render any appender.
-
-
- if (CustomAppender === false) {
- return null;
- } // Render the default block appender when renderAppender has not been
- // provided and the context supports use of the default appender.
-
-
- if (canInsertDefaultBlock) {
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "block-list-appender"
- }, Object(external_this_wp_element_["createElement"])(ignore_nested_events, {
- childHandledEvents: ['onFocus', 'onClick', 'onKeyDown']
- }, Object(external_this_wp_element_["createElement"])(default_block_appender, {
- rootClientId: rootClientId,
- lastBlockClientId: Object(external_lodash_["last"])(blockClientIds)
- })));
- } // Fallback in the case no renderAppender has been provided and the
- // default block can't be inserted.
-
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "block-list-appender"
- }, Object(external_this_wp_element_["createElement"])(button_block_appender, {
- rootClientId: rootClientId,
- className: "block-list-appender__toggle"
- }));
-}
-
-/* harmony default export */ var block_list_appender = (Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var rootClientId = _ref2.rootClientId;
-
- var _select = select('core/block-editor'),
- getBlockOrder = _select.getBlockOrder,
- canInsertBlockType = _select.canInsertBlockType,
- getTemplateLock = _select.getTemplateLock;
-
- return {
- isLocked: !!getTemplateLock(rootClientId),
- blockClientIds: getBlockOrder(rootClientId),
- canInsertDefaultBlock: canInsertBlockType(Object(external_this_wp_blocks_["getDefaultBlockName"])(), rootClientId)
- };
-})(BlockListAppender));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-list/index.js
-
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-/**
- * If the block count exceeds the threshold, we disable the reordering animation
- * to avoid laginess.
- */
-
-var BLOCK_ANIMATION_THRESHOLD = 200;
-
-var block_list_forceSyncUpdates = function forceSyncUpdates(WrappedComponent) {
- return function (props) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_data_["__experimentalAsyncModeProvider"], {
- value: false
- }, Object(external_this_wp_element_["createElement"])(WrappedComponent, props));
- };
-};
-
-var block_list_BlockList =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockList, _Component);
-
- function BlockList(props) {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockList);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockList).call(this, props));
- _this.onSelectionStart = _this.onSelectionStart.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onSelectionEnd = _this.onSelectionEnd.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.setBlockRef = _this.setBlockRef.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.setLastClientY = _this.setLastClientY.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onPointerMove = Object(external_lodash_["throttle"])(_this.onPointerMove.bind(Object(assertThisInitialized["a" /* default */])(_this)), 100); // Browser does not fire `*move` event when the pointer position changes
- // relative to the document, so fire it with the last known position.
-
- _this.onScroll = function () {
- return _this.onPointerMove({
- clientY: _this.lastClientY
- });
- };
-
- _this.lastClientY = 0;
- _this.nodes = {};
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockList, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- window.addEventListener('mousemove', this.setLastClientY);
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- window.removeEventListener('mousemove', this.setLastClientY);
- }
- }, {
- key: "setLastClientY",
- value: function setLastClientY(_ref) {
- var clientY = _ref.clientY;
- this.lastClientY = clientY;
- }
- }, {
- key: "setBlockRef",
- value: function setBlockRef(node, clientId) {
- if (node === null) {
- delete this.nodes[clientId];
- } else {
- this.nodes = Object(objectSpread["a" /* default */])({}, this.nodes, Object(defineProperty["a" /* default */])({}, clientId, node));
- }
- }
- /**
- * Handles a pointer move event to update the extent of the current cursor
- * multi-selection.
- *
- * @param {MouseEvent} event A mousemove event object.
- */
-
- }, {
- key: "onPointerMove",
- value: function onPointerMove(_ref2) {
- var clientY = _ref2.clientY;
-
- // We don't start multi-selection until the mouse starts moving, so as
- // to avoid dispatching multi-selection actions on an in-place click.
- if (!this.props.isMultiSelecting) {
- this.props.onStartMultiSelect();
- }
-
- var blockContentBoundaries = getBlockDOMNode(this.selectionAtStart).getBoundingClientRect(); // prevent multi-selection from triggering when the selected block is a float
- // and the cursor is still between the top and the bottom of the block.
-
- if (clientY >= blockContentBoundaries.top && clientY <= blockContentBoundaries.bottom) {
- return;
- }
-
- var y = clientY - blockContentBoundaries.top;
- var key = Object(external_lodash_["findLast"])(this.coordMapKeys, function (coordY) {
- return coordY < y;
- });
- this.onSelectionChange(this.coordMap[key]);
- }
- /**
- * Binds event handlers to the document for tracking a pending multi-select
- * in response to a mousedown event occurring in a rendered block.
- *
- * @param {string} clientId Client ID of block where mousedown occurred.
- */
-
- }, {
- key: "onSelectionStart",
- value: function onSelectionStart(clientId) {
- if (!this.props.isSelectionEnabled) {
- return;
- }
-
- var boundaries = this.nodes[clientId].getBoundingClientRect(); // Create a clientId to Y coördinate map.
-
- var clientIdToCoordMap = Object(external_lodash_["mapValues"])(this.nodes, function (node) {
- return node.getBoundingClientRect().top - boundaries.top;
- }); // Cache a Y coördinate to clientId map for use in `onPointerMove`.
-
- this.coordMap = Object(external_lodash_["invert"])(clientIdToCoordMap); // Cache an array of the Y coördinates for use in `onPointerMove`.
- // Sort the coördinates, as `this.nodes` will not necessarily reflect
- // the current block sequence.
-
- this.coordMapKeys = Object(external_lodash_["sortBy"])(Object.values(clientIdToCoordMap));
- this.selectionAtStart = clientId;
- window.addEventListener('mousemove', this.onPointerMove); // Capture scroll on all elements.
-
- window.addEventListener('scroll', this.onScroll, true);
- window.addEventListener('mouseup', this.onSelectionEnd);
- }
- /**
- * Handles multi-selection changes in response to pointer move.
- *
- * @param {string} clientId Client ID of block under cursor in multi-select
- * drag.
- */
-
- }, {
- key: "onSelectionChange",
- value: function onSelectionChange(clientId) {
- var _this$props = this.props,
- onMultiSelect = _this$props.onMultiSelect,
- selectionStart = _this$props.selectionStart,
- selectionEnd = _this$props.selectionEnd;
- var selectionAtStart = this.selectionAtStart;
- var isAtStart = selectionAtStart === clientId;
-
- if (!selectionAtStart || !this.props.isSelectionEnabled) {
- return;
- } // If multi-selecting and cursor extent returns to the start of
- // selection, cancel multi-select.
-
-
- if (isAtStart && selectionStart) {
- onMultiSelect(null, null);
- } // Expand multi-selection to block under cursor.
-
-
- if (!isAtStart && selectionEnd !== clientId) {
- onMultiSelect(selectionAtStart, clientId);
- }
- }
- /**
- * Handles a mouseup event to end the current cursor multi-selection.
- */
-
- }, {
- key: "onSelectionEnd",
- value: function onSelectionEnd() {
- // Cancel throttled calls.
- this.onPointerMove.cancel();
- delete this.coordMap;
- delete this.coordMapKeys;
- delete this.selectionAtStart;
- window.removeEventListener('mousemove', this.onPointerMove);
- window.removeEventListener('scroll', this.onScroll, true);
- window.removeEventListener('mouseup', this.onSelectionEnd); // We may or may not be in a multi-selection when mouseup occurs (e.g.
- // an in-place mouse click), so only trigger stop if multi-selecting.
-
- if (this.props.isMultiSelecting) {
- this.props.onStopMultiSelect();
- }
- }
- }, {
- key: "render",
- value: function render() {
- var _this2 = this;
-
- var _this$props2 = this.props,
- className = _this$props2.className,
- blockClientIds = _this$props2.blockClientIds,
- rootClientId = _this$props2.rootClientId,
- isDraggable = _this$props2.isDraggable,
- selectedBlockClientId = _this$props2.selectedBlockClientId,
- multiSelectedBlockClientIds = _this$props2.multiSelectedBlockClientIds,
- hasMultiSelection = _this$props2.hasMultiSelection,
- renderAppender = _this$props2.renderAppender,
- enableAnimation = _this$props2.enableAnimation;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()('editor-block-list__layout block-editor-block-list__layout', className)
- }, blockClientIds.map(function (clientId, index) {
- var isBlockInSelection = hasMultiSelection ? multiSelectedBlockClientIds.includes(clientId) : selectedBlockClientId === clientId;
- return Object(external_this_wp_element_["createElement"])(block_async_mode_provider, {
- key: 'block-' + clientId,
- clientId: clientId,
- isBlockInSelection: isBlockInSelection
- }, Object(external_this_wp_element_["createElement"])(block_list_block, {
- rootClientId: rootClientId,
- clientId: clientId,
- blockRef: _this2.setBlockRef,
- onSelectionStart: _this2.onSelectionStart,
- isDraggable: isDraggable // This prop is explicitely computed and passed down
- // to avoid being impacted by the async mode
- // otherwise there might be a small delay to trigger the animation.
- ,
- animateOnChange: index,
- enableAnimation: enableAnimation
- }));
- }), Object(external_this_wp_element_["createElement"])(block_list_appender, {
- rootClientId: rootClientId,
- renderAppender: renderAppender
- }));
- }
- }]);
-
- return BlockList;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_list = (Object(external_this_wp_compose_["compose"])([// This component needs to always be synchronous
-// as it's the one changing the async mode
-// depending on the block selection.
-block_list_forceSyncUpdates, Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
- var _select = select('core/block-editor'),
- getBlockOrder = _select.getBlockOrder,
- isSelectionEnabled = _select.isSelectionEnabled,
- isMultiSelecting = _select.isMultiSelecting,
- getMultiSelectedBlocksStartClientId = _select.getMultiSelectedBlocksStartClientId,
- getMultiSelectedBlocksEndClientId = _select.getMultiSelectedBlocksEndClientId,
- getSelectedBlockClientId = _select.getSelectedBlockClientId,
- getMultiSelectedBlockClientIds = _select.getMultiSelectedBlockClientIds,
- hasMultiSelection = _select.hasMultiSelection,
- getGlobalBlockCount = _select.getGlobalBlockCount,
- isTyping = _select.isTyping;
-
- var rootClientId = ownProps.rootClientId;
- return {
- blockClientIds: getBlockOrder(rootClientId),
- selectionStart: getMultiSelectedBlocksStartClientId(),
- selectionEnd: getMultiSelectedBlocksEndClientId(),
- isSelectionEnabled: isSelectionEnabled(),
- isMultiSelecting: isMultiSelecting(),
- selectedBlockClientId: getSelectedBlockClientId(),
- multiSelectedBlockClientIds: getMultiSelectedBlockClientIds(),
- hasMultiSelection: hasMultiSelection(),
- enableAnimation: !isTyping() && getGlobalBlockCount() <= BLOCK_ANIMATION_THRESHOLD
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- var _dispatch = dispatch('core/block-editor'),
- startMultiSelect = _dispatch.startMultiSelect,
- stopMultiSelect = _dispatch.stopMultiSelect,
- multiSelect = _dispatch.multiSelect;
-
- return {
- onStartMultiSelect: startMultiSelect,
- onStopMultiSelect: stopMultiSelect,
- onMultiSelect: multiSelect
- };
-})])(block_list_BlockList));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-preview/index.js
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-function ScaledBlockPreview(_ref) {
- var blocks = _ref.blocks,
- viewportWidth = _ref.viewportWidth,
- _ref$padding = _ref.padding,
- padding = _ref$padding === void 0 ? 0 : _ref$padding;
- var previewRef = Object(external_this_wp_element_["useRef"])(null);
-
- var _useState = Object(external_this_wp_element_["useState"])(false),
- _useState2 = Object(slicedToArray["a" /* default */])(_useState, 2),
- isReady = _useState2[0],
- setIsReady = _useState2[1];
-
- var _useState3 = Object(external_this_wp_element_["useState"])(1),
- _useState4 = Object(slicedToArray["a" /* default */])(_useState3, 2),
- previewScale = _useState4[0],
- setPreviewScale = _useState4[1];
-
- var _useState5 = Object(external_this_wp_element_["useState"])({
- x: 0,
- y: 0
- }),
- _useState6 = Object(slicedToArray["a" /* default */])(_useState5, 2),
- _useState6$ = _useState6[0],
- x = _useState6$.x,
- y = _useState6$.y,
- setPosition = _useState6[1]; // Dynamically calculate the scale factor
-
-
- Object(external_this_wp_element_["useLayoutEffect"])(function () {
- // Timer - required to account for async render of `BlockEditorProvider`
- var timerId = setTimeout(function () {
- var containerElement = previewRef.current;
-
- if (!containerElement) {
- return;
- } // If we're previewing a single block, scale the preview to fit it.
-
-
- if (blocks.length === 1) {
- var block = blocks[0];
- var previewElement = getBlockPreviewContainerDOMNode(block.clientId, containerElement);
-
- if (!previewElement) {
- return;
- }
-
- var containerElementRect = containerElement.getBoundingClientRect();
- containerElementRect = {
- width: containerElementRect.width - padding * 2,
- height: containerElementRect.height - padding * 2,
- left: containerElementRect.left,
- top: containerElementRect.top
- };
- var scaledElementRect = previewElement.getBoundingClientRect();
- var scale = containerElementRect.width / scaledElementRect.width || 1;
- var offsetX = -(scaledElementRect.left - containerElementRect.left) * scale + padding;
- var offsetY = containerElementRect.height > scaledElementRect.height * scale ? (containerElementRect.height - scaledElementRect.height * scale) / 2 + padding : 0;
- setPreviewScale(scale);
- setPosition({
- x: offsetX,
- y: offsetY
- }); // Hack: we need to reset the scaled elements margins
-
- previewElement.style.marginTop = '0';
- } else {
- var _containerElementRect = containerElement.getBoundingClientRect();
-
- setPreviewScale(_containerElementRect.width / viewportWidth);
- }
-
- setIsReady(true);
- }, 100); // Cleanup
-
- return function () {
- if (timerId) {
- window.clearTimeout(timerId);
- }
- };
- }, []);
-
- if (!blocks || blocks.length === 0) {
- return null;
- }
-
- var previewStyles = {
- transform: "scale(".concat(previewScale, ")"),
- visibility: isReady ? 'visible' : 'hidden',
- left: x,
- top: y,
- width: viewportWidth
- };
- return Object(external_this_wp_element_["createElement"])("div", {
- ref: previewRef,
- className: classnames_default()('block-editor-block-preview__container editor-styles-wrapper', {
- 'is-ready': isReady
- }),
- "aria-hidden": true
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Disabled"], {
- style: previewStyles,
- className: "block-editor-block-preview__content"
- }, Object(external_this_wp_element_["createElement"])(block_list, null)));
-}
-
-function BlockPreview(_ref2) {
- var blocks = _ref2.blocks,
- _ref2$viewportWidth = _ref2.viewportWidth,
- viewportWidth = _ref2$viewportWidth === void 0 ? 700 : _ref2$viewportWidth,
- padding = _ref2.padding,
- settings = _ref2.settings;
- var renderedBlocks = Object(external_this_wp_element_["useMemo"])(function () {
- return Object(external_lodash_["castArray"])(blocks);
- }, [blocks]);
-
- var _useReducer = Object(external_this_wp_element_["useReducer"])(function (state) {
- return state + 1;
- }, 0),
- _useReducer2 = Object(slicedToArray["a" /* default */])(_useReducer, 2),
- recompute = _useReducer2[0],
- triggerRecompute = _useReducer2[1];
-
- Object(external_this_wp_element_["useLayoutEffect"])(triggerRecompute, [blocks]);
- return Object(external_this_wp_element_["createElement"])(provider, {
- value: renderedBlocks,
- settings: settings
- }, Object(external_this_wp_element_["createElement"])(ScaledBlockPreview, {
- key: recompute,
- blocks: renderedBlocks,
- viewportWidth: viewportWidth,
- padding: padding
- }));
-}
-/**
- * BlockPreview renders a preview of a block or array of blocks.
- *
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/block-preview/README.md
- *
- * @param {Array|Object} blocks A block instance (object) or an array of blocks to be previewed.
- * @param {number} viewportWidth Width of the preview container in pixels. Controls at what size the blocks will be rendered inside the preview. Default: 700.
- * @return {WPElement} Rendered element.
- */
-
-/* harmony default export */ var block_preview = (Object(external_this_wp_data_["withSelect"])(function (select) {
- return {
- settings: select('core/block-editor').getSettings()
- };
-})(BlockPreview));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inserter-list-item/index.js
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-function InserterListItem(_ref) {
- var icon = _ref.icon,
- _onClick = _ref.onClick,
- isDisabled = _ref.isDisabled,
- title = _ref.title,
- className = _ref.className,
- props = Object(objectWithoutProperties["a" /* default */])(_ref, ["icon", "onClick", "isDisabled", "title", "className"]);
-
- var itemIconStyle = icon ? {
- backgroundColor: icon.background,
- color: icon.foreground
- } : {};
- return Object(external_this_wp_element_["createElement"])("li", {
- className: "editor-block-types-list__list-item block-editor-block-types-list__list-item"
- }, Object(external_this_wp_element_["createElement"])("button", Object(esm_extends["a" /* default */])({
- className: classnames_default()('editor-block-types-list__item block-editor-block-types-list__item', className),
- onClick: function onClick(event) {
- event.preventDefault();
-
- _onClick();
- },
- disabled: isDisabled
- }, props), Object(external_this_wp_element_["createElement"])("span", {
- className: "editor-block-types-list__item-icon block-editor-block-types-list__item-icon",
- style: itemIconStyle
- }, Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: icon,
- showColors: true
- })), Object(external_this_wp_element_["createElement"])("span", {
- className: "editor-block-types-list__item-title block-editor-block-types-list__item-title"
- }, title)));
-}
-
-/* harmony default export */ var inserter_list_item = (InserterListItem);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-types-list/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-function BlockTypesList(_ref) {
- var items = _ref.items,
- onSelect = _ref.onSelect,
- _ref$onHover = _ref.onHover,
- onHover = _ref$onHover === void 0 ? function () {} : _ref$onHover,
- children = _ref.children;
- return (
- /*
- * Disable reason: The `list` ARIA role is redundant but
- * Safari+VoiceOver won't announce the list otherwise.
- */
-
- /* eslint-disable jsx-a11y/no-redundant-roles */
- Object(external_this_wp_element_["createElement"])("ul", {
- role: "list",
- className: "editor-block-types-list block-editor-block-types-list"
- }, items && items.map(function (item) {
- return Object(external_this_wp_element_["createElement"])(inserter_list_item, {
- key: item.id,
- className: Object(external_this_wp_blocks_["getBlockMenuDefaultClassName"])(item.id),
- icon: item.icon,
- onClick: function onClick() {
- onSelect(item);
- onHover(null);
- },
- onFocus: function onFocus() {
- return onHover(item);
- },
- onMouseEnter: function onMouseEnter() {
- return onHover(item);
- },
- onMouseLeave: function onMouseLeave() {
- return onHover(null);
- },
- onBlur: function onBlur() {
- return onHover(null);
- },
- isDisabled: item.isDisabled,
- title: item.title
- });
- }), children)
- /* eslint-enable jsx-a11y/no-redundant-roles */
-
- );
-}
-
-/* harmony default export */ var block_types_list = (BlockTypesList);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-card/index.js
-
-
-/**
- * Internal dependencies
- */
-
-
-function BlockCard(_ref) {
- var blockType = _ref.blockType;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-card"
- }, Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: blockType.icon,
- showColors: true
- }), Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-card__content"
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-card__title"
- }, blockType.title), Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-card__description"
- }, blockType.description)));
-}
-
-/* harmony default export */ var block_card = (BlockCard);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inserter/child-blocks.js
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function ChildBlocks(_ref) {
- var rootBlockIcon = _ref.rootBlockIcon,
- rootBlockTitle = _ref.rootBlockTitle,
- items = _ref.items,
- props = Object(objectWithoutProperties["a" /* default */])(_ref, ["rootBlockIcon", "rootBlockTitle", "items"]);
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-inserter__child-blocks block-editor-inserter__child-blocks"
- }, (rootBlockIcon || rootBlockTitle) && Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-inserter__parent-block-header block-editor-inserter__parent-block-header"
- }, Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: rootBlockIcon,
- showColors: true
- }), rootBlockTitle && Object(external_this_wp_element_["createElement"])("h2", null, rootBlockTitle)), Object(external_this_wp_element_["createElement"])(block_types_list, Object(esm_extends["a" /* default */])({
- items: items
- }, props)));
-}
-
-/* harmony default export */ var child_blocks = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_compose_["ifCondition"])(function (_ref2) {
- var items = _ref2.items;
- return items && items.length > 0;
-}), Object(external_this_wp_data_["withSelect"])(function (select, _ref3) {
- var rootClientId = _ref3.rootClientId;
-
- var _select = select('core/blocks'),
- getBlockType = _select.getBlockType;
-
- var _select2 = select('core/block-editor'),
- getBlockName = _select2.getBlockName;
-
- var rootBlockName = getBlockName(rootClientId);
- var rootBlockType = getBlockType(rootBlockName);
- return {
- rootBlockTitle: rootBlockType && rootBlockType.title,
- rootBlockIcon: rootBlockType && rootBlockType.icon
- };
-}))(ChildBlocks));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inserter-menu-extension/index.js
-/**
- * WordPress dependencies
- */
-
-
-var inserter_menu_extension_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('__experimentalInserterMenuExtension'),
- __experimentalInserterMenuExtension = inserter_menu_extension_createSlotFill.Fill,
- inserter_menu_extension_Slot = inserter_menu_extension_createSlotFill.Slot;
-
-__experimentalInserterMenuExtension.Slot = inserter_menu_extension_Slot;
-/* harmony default export */ var inserter_menu_extension = (__experimentalInserterMenuExtension);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inserter/menu.js
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-var MAX_SUGGESTED_ITEMS = 9;
-
-var stopKeyPropagation = function stopKeyPropagation(event) {
- return event.stopPropagation();
-};
-/**
- * Filters an item list given a search term.
- *
- * @param {Array} items Item list
- * @param {string} searchTerm Search term.
- *
- * @return {Array} Filtered item list.
- */
-
-
-var menu_searchItems = function searchItems(items, searchTerm) {
- var normalizedSearchTerm = menu_normalizeTerm(searchTerm);
-
- var matchSearch = function matchSearch(string) {
- return menu_normalizeTerm(string).indexOf(normalizedSearchTerm) !== -1;
- };
-
- var categories = Object(external_this_wp_blocks_["getCategories"])();
- return items.filter(function (item) {
- var itemCategory = Object(external_lodash_["find"])(categories, {
- slug: item.category
- });
- return matchSearch(item.title) || Object(external_lodash_["some"])(item.keywords, matchSearch) || itemCategory && matchSearch(itemCategory.title);
- });
-};
-/**
- * Converts the search term into a normalized term.
- *
- * @param {string} term The search term to normalize.
- *
- * @return {string} The normalized search term.
- */
-
-var menu_normalizeTerm = function normalizeTerm(term) {
- // Disregard diacritics.
- // Input: "média"
- term = Object(external_lodash_["deburr"])(term); // Accommodate leading slash, matching autocomplete expectations.
- // Input: "/media"
-
- term = term.replace(/^\//, ''); // Lowercase.
- // Input: "MEDIA"
-
- term = term.toLowerCase(); // Strip leading and trailing whitespace.
- // Input: " media "
-
- term = term.trim();
- return term;
-};
-var menu_InserterMenu =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(InserterMenu, _Component);
-
- function InserterMenu() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, InserterMenu);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(InserterMenu).apply(this, arguments));
- _this.state = {
- childItems: [],
- filterValue: '',
- hoveredItem: null,
- suggestedItems: [],
- reusableItems: [],
- itemsPerCategory: {},
- openPanels: ['suggested']
- };
- _this.onChangeSearchInput = _this.onChangeSearchInput.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onHover = _this.onHover.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.panels = {};
- _this.inserterResults = Object(external_this_wp_element_["createRef"])();
- return _this;
- }
-
- Object(createClass["a" /* default */])(InserterMenu, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- // This could be replaced by a resolver.
- this.props.fetchReusableBlocks();
- this.filter();
- }
- }, {
- key: "componentDidUpdate",
- value: function componentDidUpdate(prevProps) {
- if (prevProps.items !== this.props.items) {
- this.filter(this.state.filterValue);
- }
- }
- }, {
- key: "onChangeSearchInput",
- value: function onChangeSearchInput(event) {
- this.filter(event.target.value);
- }
- }, {
- key: "onHover",
- value: function onHover(item) {
- this.setState({
- hoveredItem: item
- });
- var _this$props = this.props,
- showInsertionPoint = _this$props.showInsertionPoint,
- hideInsertionPoint = _this$props.hideInsertionPoint;
-
- if (item) {
- showInsertionPoint();
- } else {
- hideInsertionPoint();
- }
- }
- }, {
- key: "bindPanel",
- value: function bindPanel(name) {
- var _this2 = this;
-
- return function (ref) {
- _this2.panels[name] = ref;
- };
- }
- }, {
- key: "onTogglePanel",
- value: function onTogglePanel(panel) {
- var _this3 = this;
-
- return function () {
- var isOpened = _this3.state.openPanels.indexOf(panel) !== -1;
-
- if (isOpened) {
- _this3.setState({
- openPanels: Object(external_lodash_["without"])(_this3.state.openPanels, panel)
- });
- } else {
- _this3.setState({
- openPanels: [].concat(Object(toConsumableArray["a" /* default */])(_this3.state.openPanels), [panel])
- });
-
- _this3.props.setTimeout(function () {
- // We need a generic way to access the panel's container
- lib_default()(_this3.panels[panel], _this3.inserterResults.current, {
- alignWithTop: true
- });
- });
- }
- };
- }
- }, {
- key: "filterOpenPanels",
- value: function filterOpenPanels(filterValue, itemsPerCategory, filteredItems, reusableItems) {
- if (filterValue === this.state.filterValue) {
- return this.state.openPanels;
- }
-
- if (!filterValue) {
- return ['suggested'];
- }
-
- var openPanels = [];
-
- if (reusableItems.length > 0) {
- openPanels.push('reusable');
- }
-
- if (filteredItems.length > 0) {
- openPanels = openPanels.concat(Object.keys(itemsPerCategory));
- }
-
- return openPanels;
- }
- }, {
- key: "filter",
- value: function filter() {
- var filterValue = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
- var _this$props2 = this.props,
- debouncedSpeak = _this$props2.debouncedSpeak,
- items = _this$props2.items,
- rootChildBlocks = _this$props2.rootChildBlocks;
- var filteredItems = menu_searchItems(items, filterValue);
-
- var childItems = Object(external_lodash_["filter"])(filteredItems, function (_ref) {
- var name = _ref.name;
- return Object(external_lodash_["includes"])(rootChildBlocks, name);
- });
-
- var suggestedItems = [];
-
- if (!filterValue) {
- var maxSuggestedItems = this.props.maxSuggestedItems || MAX_SUGGESTED_ITEMS;
- suggestedItems = Object(external_lodash_["filter"])(items, function (item) {
- return item.utility > 0;
- }).slice(0, maxSuggestedItems);
- }
-
- var reusableItems = Object(external_lodash_["filter"])(filteredItems, {
- category: 'reusable'
- });
-
- var getCategoryIndex = function getCategoryIndex(item) {
- return Object(external_lodash_["findIndex"])(Object(external_this_wp_blocks_["getCategories"])(), function (category) {
- return category.slug === item.category;
- });
- };
-
- var itemsPerCategory = Object(external_lodash_["flow"])(function (itemList) {
- return Object(external_lodash_["filter"])(itemList, function (item) {
- return item.category !== 'reusable';
- });
- }, function (itemList) {
- return Object(external_lodash_["sortBy"])(itemList, getCategoryIndex);
- }, function (itemList) {
- return Object(external_lodash_["groupBy"])(itemList, 'category');
- })(filteredItems);
- this.setState({
- hoveredItem: null,
- childItems: childItems,
- filterValue: filterValue,
- suggestedItems: suggestedItems,
- reusableItems: reusableItems,
- itemsPerCategory: itemsPerCategory,
- openPanels: this.filterOpenPanels(filterValue, itemsPerCategory, filteredItems, reusableItems)
- });
- var resultCount = Object.keys(itemsPerCategory).reduce(function (accumulator, currentCategorySlug) {
- return accumulator + itemsPerCategory[currentCategorySlug].length;
- }, 0);
- var resultsFoundMessage = Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d result found.', '%d results found.', resultCount), resultCount);
- debouncedSpeak(resultsFoundMessage);
- }
- }, {
- key: "onKeyDown",
- value: function onKeyDown(event) {
- if (Object(external_lodash_["includes"])([external_this_wp_keycodes_["LEFT"], external_this_wp_keycodes_["DOWN"], external_this_wp_keycodes_["RIGHT"], external_this_wp_keycodes_["UP"], external_this_wp_keycodes_["BACKSPACE"], external_this_wp_keycodes_["ENTER"]], event.keyCode)) {
- // Stop the key event from propagating up to ObserveTyping.startTypingInTextField.
- event.stopPropagation();
- }
- }
- }, {
- key: "render",
- value: function render() {
- var _this4 = this;
-
- var _this$props3 = this.props,
- instanceId = _this$props3.instanceId,
- onSelect = _this$props3.onSelect,
- rootClientId = _this$props3.rootClientId,
- showInserterHelpPanel = _this$props3.showInserterHelpPanel;
- var _this$state = this.state,
- childItems = _this$state.childItems,
- hoveredItem = _this$state.hoveredItem,
- itemsPerCategory = _this$state.itemsPerCategory,
- openPanels = _this$state.openPanels,
- reusableItems = _this$state.reusableItems,
- suggestedItems = _this$state.suggestedItems,
- filterValue = _this$state.filterValue;
-
- var isPanelOpen = function isPanelOpen(panel) {
- return openPanels.indexOf(panel) !== -1;
- };
-
- var hasItems = !Object(external_lodash_["isEmpty"])(suggestedItems) || !Object(external_lodash_["isEmpty"])(reusableItems) || !Object(external_lodash_["isEmpty"])(itemsPerCategory);
- var hoveredItemBlockType = hoveredItem ? Object(external_this_wp_blocks_["getBlockType"])(hoveredItem.name) : null;
- var hasHelpPanel = hasItems && showInserterHelpPanel; // Disable reason (no-autofocus): The inserter menu is a modal display, not one which
- // is always visible, and one which already incurs this behavior of autoFocus via
- // Popover's focusOnMount.
- // Disable reason (no-static-element-interactions): Navigational key-presses within
- // the menu are prevented from triggering WritingFlow and ObserveTyping interactions.
-
- /* eslint-disable jsx-a11y/no-autofocus, jsx-a11y/no-static-element-interactions */
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()('editor-inserter__menu block-editor-inserter__menu', {
- 'has-help-panel': hasHelpPanel
- }),
- onKeyPress: stopKeyPropagation,
- onKeyDown: this.onKeyDown
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__main-area"
- }, Object(external_this_wp_element_["createElement"])("label", {
- htmlFor: "block-editor-inserter__search-".concat(instanceId),
- className: "screen-reader-text"
- }, Object(external_this_wp_i18n_["__"])('Search for a block')), Object(external_this_wp_element_["createElement"])("input", {
- id: "block-editor-inserter__search-".concat(instanceId),
- type: "search",
- placeholder: Object(external_this_wp_i18n_["__"])('Search for a block'),
- className: "editor-inserter__search block-editor-inserter__search",
- autoFocus: true,
- onChange: this.onChangeSearchInput
- }), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-inserter__results block-editor-inserter__results",
- ref: this.inserterResults,
- tabIndex: "0",
- role: "region",
- "aria-label": Object(external_this_wp_i18n_["__"])('Available block types')
- }, Object(external_this_wp_element_["createElement"])(child_blocks, {
- rootClientId: rootClientId,
- items: childItems,
- onSelect: onSelect,
- onHover: this.onHover
- }), !!suggestedItems.length && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- title: Object(external_this_wp_i18n_["_x"])('Most Used', 'blocks'),
- opened: isPanelOpen('suggested'),
- onToggle: this.onTogglePanel('suggested'),
- ref: this.bindPanel('suggested')
- }, Object(external_this_wp_element_["createElement"])(block_types_list, {
- items: suggestedItems,
- onSelect: onSelect,
- onHover: this.onHover
- })), Object(external_lodash_["map"])(Object(external_this_wp_blocks_["getCategories"])(), function (category) {
- var categoryItems = itemsPerCategory[category.slug];
-
- if (!categoryItems || !categoryItems.length) {
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- key: category.slug,
- title: category.title,
- icon: category.icon,
- opened: isPanelOpen(category.slug),
- onToggle: _this4.onTogglePanel(category.slug),
- ref: _this4.bindPanel(category.slug)
- }, Object(external_this_wp_element_["createElement"])(block_types_list, {
- items: categoryItems,
- onSelect: onSelect,
- onHover: _this4.onHover
- }));
- }), !!reusableItems.length && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- className: "editor-inserter__reusable-blocks-panel block-editor-inserter__reusable-blocks-panel",
- title: Object(external_this_wp_i18n_["__"])('Reusable'),
- opened: isPanelOpen('reusable'),
- onToggle: this.onTogglePanel('reusable'),
- icon: "controls-repeat",
- ref: this.bindPanel('reusable')
- }, Object(external_this_wp_element_["createElement"])(block_types_list, {
- items: reusableItems,
- onSelect: onSelect,
- onHover: this.onHover
- }), Object(external_this_wp_element_["createElement"])("a", {
- className: "editor-inserter__manage-reusable-blocks block-editor-inserter__manage-reusable-blocks",
- href: Object(external_this_wp_url_["addQueryArgs"])('edit.php', {
- post_type: 'wp_block'
- })
- }, Object(external_this_wp_i18n_["__"])('Manage All Reusable Blocks'))), Object(external_this_wp_element_["createElement"])(inserter_menu_extension.Slot, {
- fillProps: {
- onSelect: onSelect,
- onHover: this.onHover,
- filterValue: filterValue,
- hasItems: hasItems
- }
- }, function (fills) {
- if (fills.length) {
- return fills;
- }
-
- if (!hasItems) {
- return Object(external_this_wp_element_["createElement"])("p", {
- className: "editor-inserter__no-results block-editor-inserter__no-results"
- }, Object(external_this_wp_i18n_["__"])('No blocks found.'));
- }
-
- return null;
- }))), hasHelpPanel && Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__menu-help-panel"
- }, hoveredItem && Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, !Object(external_this_wp_blocks_["isReusableBlock"])(hoveredItem) && Object(external_this_wp_element_["createElement"])(block_card, {
- blockType: hoveredItemBlockType
- }), Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__preview"
- }, Object(external_this_wp_blocks_["isReusableBlock"])(hoveredItem) || hoveredItemBlockType.example ? Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__preview-content"
- }, Object(external_this_wp_element_["createElement"])(block_preview, {
- padding: 10,
- viewportWidth: 500,
- blocks: hoveredItemBlockType.example ? Object(external_this_wp_blocks_["getBlockFromExample"])(hoveredItem.name, hoveredItemBlockType.example) : Object(external_this_wp_blocks_["createBlock"])(hoveredItem.name, hoveredItem.initialAttributes)
- })) : Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__preview-content-missing"
- }, Object(external_this_wp_i18n_["__"])('No Preview Available.')))), !hoveredItem && Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__menu-help-panel-no-block"
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__menu-help-panel-no-block-text"
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inserter__menu-help-panel-title"
- }, Object(external_this_wp_i18n_["__"])('Content Blocks')), Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('Welcome to the wonderful world of blocks! Blocks are the basis of all content within the editor.')), Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('There are blocks available for all kinds of content: insert text, headings, images, lists, videos, tables, and lots more.')), Object(external_this_wp_element_["createElement"])("p", null, Object(external_this_wp_i18n_["__"])('Browse through the library to learn more about what each block does.'))), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Tip"], null, Object(external_this_wp_i18n_["__"])('While writing, you can press "/" to quickly insert new blocks.')))));
- /* eslint-enable jsx-a11y/no-autofocus, jsx-a11y/no-static-element-interactions */
- }
- }]);
-
- return InserterMenu;
-}(external_this_wp_element_["Component"]);
-/* harmony default export */ var menu = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var clientId = _ref2.clientId,
- isAppender = _ref2.isAppender,
- rootClientId = _ref2.rootClientId,
- showInserterHelpPanel = _ref2.showInserterHelpPanel;
-
- var _select = select('core/block-editor'),
- getInserterItems = _select.getInserterItems,
- getBlockName = _select.getBlockName,
- getBlockRootClientId = _select.getBlockRootClientId,
- getBlockSelectionEnd = _select.getBlockSelectionEnd,
- getSettings = _select.getSettings;
-
- var _select2 = select('core/blocks'),
- getChildBlockNames = _select2.getChildBlockNames;
-
- var destinationRootClientId = rootClientId;
-
- if (!destinationRootClientId && !clientId && !isAppender) {
- var end = getBlockSelectionEnd();
-
- if (end) {
- destinationRootClientId = getBlockRootClientId(end) || undefined;
- }
- }
-
- var destinationRootBlockName = getBlockName(destinationRootClientId);
- return {
- rootChildBlocks: getChildBlockNames(destinationRootBlockName),
- items: getInserterItems(destinationRootClientId),
- showInserterHelpPanel: showInserterHelpPanel && getSettings().showInserterHelpPanel,
- destinationRootClientId: destinationRootClientId
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps, _ref3) {
- var select = _ref3.select;
-
- var _dispatch = dispatch('core/block-editor'),
- _showInsertionPoint = _dispatch.showInsertionPoint,
- hideInsertionPoint = _dispatch.hideInsertionPoint; // This should be an external action provided in the editor settings.
-
-
- var _dispatch2 = dispatch('core/editor'),
- fetchReusableBlocks = _dispatch2.__experimentalFetchReusableBlocks; // To avoid duplication, getInsertionIndex is extracted and used in two event handlers
- // This breaks the withDispatch not containing any logic rule.
- // Since it's a function only called when the event handlers are called,
- // it's fine to extract it.
- // eslint-disable-next-line no-restricted-syntax
-
-
- function getInsertionIndex() {
- var _select3 = select('core/block-editor'),
- getBlockIndex = _select3.getBlockIndex,
- getBlockSelectionEnd = _select3.getBlockSelectionEnd,
- getBlockOrder = _select3.getBlockOrder;
-
- var clientId = ownProps.clientId,
- destinationRootClientId = ownProps.destinationRootClientId,
- isAppender = ownProps.isAppender; // If the clientId is defined, we insert at the position of the block.
-
- if (clientId) {
- return getBlockIndex(clientId, destinationRootClientId);
- } // If there a selected block, we insert after the selected block.
-
-
- var end = getBlockSelectionEnd();
-
- if (!isAppender && end) {
- return getBlockIndex(end, destinationRootClientId) + 1;
- } // Otherwise, we insert at the end of the current rootClientId
-
-
- return getBlockOrder(destinationRootClientId).length;
- }
-
- return {
- fetchReusableBlocks: fetchReusableBlocks,
- showInsertionPoint: function showInsertionPoint() {
- var index = getInsertionIndex();
-
- _showInsertionPoint(ownProps.destinationRootClientId, index);
- },
- hideInsertionPoint: hideInsertionPoint,
- onSelect: function onSelect(item) {
- var _dispatch3 = dispatch('core/block-editor'),
- replaceBlocks = _dispatch3.replaceBlocks,
- insertBlock = _dispatch3.insertBlock;
-
- var _select4 = select('core/block-editor'),
- getSelectedBlock = _select4.getSelectedBlock;
-
- var isAppender = ownProps.isAppender;
- var name = item.name,
- initialAttributes = item.initialAttributes;
- var selectedBlock = getSelectedBlock();
- var insertedBlock = Object(external_this_wp_blocks_["createBlock"])(name, initialAttributes);
-
- if (!isAppender && selectedBlock && Object(external_this_wp_blocks_["isUnmodifiedDefaultBlock"])(selectedBlock)) {
- replaceBlocks(selectedBlock.clientId, insertedBlock);
- } else {
- insertBlock(insertedBlock, getInsertionIndex(), ownProps.destinationRootClientId);
- }
-
- ownProps.onSelect();
- return insertedBlock;
- }
- };
-}), external_this_wp_components_["withSpokenMessages"], external_this_wp_compose_["withInstanceId"], external_this_wp_compose_["withSafeTimeout"])(menu_InserterMenu));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inserter/index.js
-
-
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var inserter_defaultRenderToggle = function defaultRenderToggle(_ref) {
- var onToggle = _ref.onToggle,
- disabled = _ref.disabled,
- isOpen = _ref.isOpen;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: "insert",
- label: Object(external_this_wp_i18n_["__"])('Add block'),
- labelPosition: "bottom",
- onClick: onToggle,
- className: "editor-inserter__toggle block-editor-inserter__toggle",
- "aria-haspopup": "true",
- "aria-expanded": isOpen,
- disabled: disabled
- });
-};
-
-var inserter_Inserter =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(Inserter, _Component);
-
- function Inserter() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, Inserter);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(Inserter).apply(this, arguments));
- _this.onToggle = _this.onToggle.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.renderToggle = _this.renderToggle.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.renderContent = _this.renderContent.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(Inserter, [{
- key: "onToggle",
- value: function onToggle(isOpen) {
- var onToggle = this.props.onToggle; // Surface toggle callback to parent component
-
- if (onToggle) {
- onToggle(isOpen);
- }
- }
- /**
- * Render callback to display Dropdown toggle element.
- *
- * @param {Object} options
- * @param {Function} options.onToggle Callback to invoke when toggle is
- * pressed.
- * @param {boolean} options.isOpen Whether dropdown is currently open.
- *
- * @return {WPElement} Dropdown toggle element.
- */
-
- }, {
- key: "renderToggle",
- value: function renderToggle(_ref2) {
- var onToggle = _ref2.onToggle,
- isOpen = _ref2.isOpen;
- var _this$props = this.props,
- disabled = _this$props.disabled,
- _this$props$renderTog = _this$props.renderToggle,
- renderToggle = _this$props$renderTog === void 0 ? inserter_defaultRenderToggle : _this$props$renderTog;
- return renderToggle({
- onToggle: onToggle,
- isOpen: isOpen,
- disabled: disabled
- });
- }
- /**
- * Render callback to display Dropdown content element.
- *
- * @param {Object} options
- * @param {Function} options.onClose Callback to invoke when dropdown is
- * closed.
- *
- * @return {WPElement} Dropdown content element.
- */
-
- }, {
- key: "renderContent",
- value: function renderContent(_ref3) {
- var onClose = _ref3.onClose;
- var _this$props2 = this.props,
- rootClientId = _this$props2.rootClientId,
- clientId = _this$props2.clientId,
- isAppender = _this$props2.isAppender,
- showInserterHelpPanel = _this$props2.showInserterHelpPanel;
- return Object(external_this_wp_element_["createElement"])(menu, {
- onSelect: onClose,
- rootClientId: rootClientId,
- clientId: clientId,
- isAppender: isAppender,
- showInserterHelpPanel: showInserterHelpPanel
- });
- }
- }, {
- key: "render",
- value: function render() {
- var position = this.props.position;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dropdown"], {
- className: "editor-inserter block-editor-inserter",
- contentClassName: "editor-inserter__popover block-editor-inserter__popover",
- position: position,
- onToggle: this.onToggle,
- expandOnMobile: true,
- headerTitle: Object(external_this_wp_i18n_["__"])('Add a block'),
- renderToggle: this.renderToggle,
- renderContent: this.renderContent
- });
- }
- }]);
-
- return Inserter;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var inserter = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref4) {
- var rootClientId = _ref4.rootClientId;
-
- var _select = select('core/block-editor'),
- hasInserterItems = _select.hasInserterItems;
-
- return {
- hasItems: hasInserterItems(rootClientId)
- };
-}), Object(external_this_wp_compose_["ifCondition"])(function (_ref5) {
- var hasItems = _ref5.hasItems;
- return hasItems;
-})])(inserter_Inserter));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/button-block-appender/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-function button_block_appender_ButtonBlockAppender(_ref) {
- var rootClientId = _ref.rootClientId,
- className = _ref.className;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(block_drop_zone, {
- rootClientId: rootClientId
- }), Object(external_this_wp_element_["createElement"])(inserter, {
- rootClientId: rootClientId,
- renderToggle: function renderToggle(_ref2) {
- var onToggle = _ref2.onToggle,
- disabled = _ref2.disabled,
- isOpen = _ref2.isOpen;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- className: classnames_default()(className, 'block-editor-button-block-appender'),
- onClick: onToggle,
- "aria-expanded": isOpen,
- disabled: disabled
- }, Object(external_this_wp_element_["createElement"])("span", {
- className: "screen-reader-text"
- }, Object(external_this_wp_i18n_["__"])('Add Block')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Icon"], {
- icon: "insert"
- }));
- },
- isAppender: true
- }));
-}
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/button-block-appender/README.md
- */
-
-
-/* harmony default export */ var button_block_appender = (button_block_appender_ButtonBlockAppender);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/color-palette/with-color-context.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/* harmony default export */ var with_color_context = (Object(external_this_wp_compose_["createHigherOrderComponent"])(Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
- var settings = select('core/block-editor').getSettings();
- var colors = ownProps.colors === undefined ? settings.colors : ownProps.colors;
- var disableCustomColors = ownProps.disableCustomColors === undefined ? settings.disableCustomColors : ownProps.disableCustomColors;
- return {
- colors: colors,
- disableCustomColors: disableCustomColors,
- hasColorsToChoose: !Object(external_lodash_["isEmpty"])(colors) || !disableCustomColors
- };
-}), 'withColorContext'));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/color-palette/index.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-/* harmony default export */ var color_palette = (with_color_context(external_this_wp_components_["ColorPalette"]));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/contrast-checker/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-function ContrastCheckerMessage(_ref) {
- var tinyBackgroundColor = _ref.tinyBackgroundColor,
- tinyTextColor = _ref.tinyTextColor,
- backgroundColor = _ref.backgroundColor,
- textColor = _ref.textColor;
- var msg = tinyBackgroundColor.getBrightness() < tinyTextColor.getBrightness() ? Object(external_this_wp_i18n_["__"])('This color combination may be hard for people to read. Try using a darker background color and/or a brighter text color.') : Object(external_this_wp_i18n_["__"])('This color combination may be hard for people to read. Try using a brighter background color and/or a darker text color.');
- Object(external_this_wp_element_["useEffect"])(function () {
- Object(external_this_wp_a11y_["speak"])(Object(external_this_wp_i18n_["__"])('This color combination may be hard for people to read.'));
- }, [backgroundColor, textColor]);
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-contrast-checker block-editor-contrast-checker"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Notice"], {
- status: "warning",
- isDismissible: false
- }, msg));
-}
-
-function ContrastChecker(_ref2) {
- var backgroundColor = _ref2.backgroundColor,
- fallbackBackgroundColor = _ref2.fallbackBackgroundColor,
- fallbackTextColor = _ref2.fallbackTextColor,
- fontSize = _ref2.fontSize,
- isLargeText = _ref2.isLargeText,
- textColor = _ref2.textColor;
-
- if (!(backgroundColor || fallbackBackgroundColor) || !(textColor || fallbackTextColor)) {
- return null;
- }
-
- var tinyBackgroundColor = tinycolor_default()(backgroundColor || fallbackBackgroundColor);
- var tinyTextColor = tinycolor_default()(textColor || fallbackTextColor);
- var hasTransparency = tinyBackgroundColor.getAlpha() !== 1 || tinyTextColor.getAlpha() !== 1;
-
- if (hasTransparency || tinycolor_default.a.isReadable(tinyBackgroundColor, tinyTextColor, {
- level: 'AA',
- size: isLargeText || isLargeText !== false && fontSize >= 24 ? 'large' : 'small'
- })) {
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(ContrastCheckerMessage, {
- backgroundColor: backgroundColor,
- textColor: textColor,
- tinyBackgroundColor: tinyBackgroundColor,
- tinyTextColor: tinyTextColor
- });
-}
-
-/* harmony default export */ var contrast_checker = (ContrastChecker);
-
-// EXTERNAL MODULE: external {"this":["wp","isShallowEqual"]}
-var external_this_wp_isShallowEqual_ = __webpack_require__(41);
-var external_this_wp_isShallowEqual_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_isShallowEqual_);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inner-blocks/with-client-id.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-var withClientId = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (WrappedComponent) {
- return context_withBlockEditContext(function (context) {
- return Object(external_lodash_["pick"])(context, ['clientId']);
- })(WrappedComponent);
-}, 'withClientId');
-/* harmony default export */ var with_client_id = (withClientId);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inner-blocks/button-block-appender.js
-
-
-/**
- * Internal dependencies
- */
-
-
-var inner_blocks_button_block_appender_ButtonBlockAppender = function ButtonBlockAppender(_ref) {
- var clientId = _ref.clientId;
- return Object(external_this_wp_element_["createElement"])(button_block_appender, {
- rootClientId: clientId
- });
-};
-/* harmony default export */ var inner_blocks_button_block_appender = (with_client_id(inner_blocks_button_block_appender_ButtonBlockAppender));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inner-blocks/default-block-appender.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-var inner_blocks_default_block_appender_DefaultBlockAppender = function DefaultBlockAppender(_ref) {
- var clientId = _ref.clientId,
- lastBlockClientId = _ref.lastBlockClientId;
- return Object(external_this_wp_element_["createElement"])(ignore_nested_events, {
- childHandledEvents: ['onFocus', 'onClick', 'onKeyDown']
- }, Object(external_this_wp_element_["createElement"])(default_block_appender, {
- rootClientId: clientId,
- lastBlockClientId: lastBlockClientId
- }));
-};
-/* harmony default export */ var inner_blocks_default_block_appender = (Object(external_this_wp_compose_["compose"])([with_client_id, Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var clientId = _ref2.clientId;
-
- var _select = select('core/block-editor'),
- getBlockOrder = _select.getBlockOrder;
-
- var blockClientIds = getBlockOrder(clientId);
- return {
- lastBlockClientId: Object(external_lodash_["last"])(blockClientIds)
- };
-})])(inner_blocks_default_block_appender_DefaultBlockAppender));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inner-blocks/template-picker.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-function InnerBlocksTemplatePicker(_ref) {
- var options = _ref.options,
- onSelect = _ref.onSelect,
- allowSkip = _ref.allowSkip;
- var classes = classnames_default()('block-editor-inner-blocks__template-picker', {
- 'has-many-options': options.length > 4
- });
- var instructions = allowSkip ? Object(external_this_wp_i18n_["__"])('Select a layout to start with, or make one yourself.') : Object(external_this_wp_i18n_["__"])('Select a layout to start with.');
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Placeholder"], {
- icon: "layout",
- label: Object(external_this_wp_i18n_["__"])('Choose Layout'),
- instructions: instructions,
- className: classes
- }, Object(external_this_wp_element_["createElement"])("ul", {
- className: "block-editor-inner-blocks__template-picker-options",
- role: "list"
- }, options.map(function (templateOption, index) {
- return Object(external_this_wp_element_["createElement"])("li", {
- key: index
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- isLarge: true,
- icon: templateOption.icon,
- onClick: function onClick() {
- return onSelect(templateOption.template);
- },
- className: "block-editor-inner-blocks__template-picker-option",
- label: templateOption.title
- }));
- })), allowSkip && Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-inner-blocks__template-picker-skip"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- isLink: true,
- onClick: function onClick() {
- return onSelect(undefined);
- }
- }, Object(external_this_wp_i18n_["__"])('Skip'))));
-}
-
-/* harmony default export */ var template_picker = (InnerBlocksTemplatePicker);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inner-blocks/index.js
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
- // Temporary click-through disable on desktop.
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-var inner_blocks_InnerBlocks =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(InnerBlocks, _Component);
-
- function InnerBlocks() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, InnerBlocks);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(InnerBlocks).apply(this, arguments));
- _this.state = {
- templateInProcess: !!_this.props.template
- };
-
- _this.updateNestedSettings();
-
- return _this;
- }
-
- Object(createClass["a" /* default */])(InnerBlocks, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- var _this$props = this.props,
- templateLock = _this$props.templateLock,
- block = _this$props.block;
- var innerBlocks = block.innerBlocks; // Only synchronize innerBlocks with template if innerBlocks are empty or a locking all exists directly on the block.
-
- if (innerBlocks.length === 0 || templateLock === 'all') {
- this.synchronizeBlocksWithTemplate();
- }
-
- if (this.state.templateInProcess) {
- this.setState({
- templateInProcess: false
- });
- }
- }
- }, {
- key: "componentDidUpdate",
- value: function componentDidUpdate(prevProps) {
- var _this$props2 = this.props,
- template = _this$props2.template,
- block = _this$props2.block,
- templateLock = _this$props2.templateLock;
- var innerBlocks = block.innerBlocks;
- this.updateNestedSettings(); // Only synchronize innerBlocks with template if innerBlocks are empty or a locking all exists directly on the block.
-
- if (innerBlocks.length === 0 || templateLock === 'all') {
- var hasTemplateChanged = !Object(external_lodash_["isEqual"])(template, prevProps.template);
-
- if (hasTemplateChanged) {
- this.synchronizeBlocksWithTemplate();
- }
- }
- }
- /**
- * Called on mount or when a mismatch exists between the templates and
- * inner blocks, synchronizes inner blocks with the template, replacing
- * current blocks.
- */
-
- }, {
- key: "synchronizeBlocksWithTemplate",
- value: function synchronizeBlocksWithTemplate() {
- var _this$props3 = this.props,
- template = _this$props3.template,
- block = _this$props3.block,
- replaceInnerBlocks = _this$props3.replaceInnerBlocks;
- var innerBlocks = block.innerBlocks; // Synchronize with templates. If the next set differs, replace.
-
- var nextBlocks = Object(external_this_wp_blocks_["synchronizeBlocksWithTemplate"])(innerBlocks, template);
-
- if (!Object(external_lodash_["isEqual"])(nextBlocks, innerBlocks)) {
- replaceInnerBlocks(nextBlocks);
- }
- }
- }, {
- key: "updateNestedSettings",
- value: function updateNestedSettings() {
- var _this$props4 = this.props,
- blockListSettings = _this$props4.blockListSettings,
- allowedBlocks = _this$props4.allowedBlocks,
- updateNestedSettings = _this$props4.updateNestedSettings,
- templateLock = _this$props4.templateLock,
- parentLock = _this$props4.parentLock;
- var newSettings = {
- allowedBlocks: allowedBlocks,
- templateLock: templateLock === undefined ? parentLock : templateLock
- };
-
- if (!external_this_wp_isShallowEqual_default()(blockListSettings, newSettings)) {
- updateNestedSettings(newSettings);
- }
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props5 = this.props,
- isSmallScreen = _this$props5.isSmallScreen,
- clientId = _this$props5.clientId,
- hasOverlay = _this$props5.hasOverlay,
- renderAppender = _this$props5.renderAppender,
- template = _this$props5.template,
- templateOptions = _this$props5.__experimentalTemplateOptions,
- onSelectTemplateOption = _this$props5.__experimentalOnSelectTemplateOption,
- allowTemplateOptionSkip = _this$props5.__experimentalAllowTemplateOptionSkip;
- var templateInProcess = this.state.templateInProcess;
- var isPlaceholder = template === null && !!templateOptions;
- var classes = classnames_default()('editor-inner-blocks block-editor-inner-blocks', {
- 'has-overlay': isSmallScreen && hasOverlay && !isPlaceholder // Temporary click-through disable on desktop.
-
- });
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classes
- }, !templateInProcess && (isPlaceholder ? Object(external_this_wp_element_["createElement"])(template_picker, {
- options: templateOptions,
- onSelect: onSelectTemplateOption,
- allowSkip: allowTemplateOptionSkip
- }) : Object(external_this_wp_element_["createElement"])(block_list, {
- rootClientId: clientId,
- renderAppender: renderAppender
- })));
- }
- }]);
-
- return InnerBlocks;
-}(external_this_wp_element_["Component"]);
-
-inner_blocks_InnerBlocks = Object(external_this_wp_compose_["compose"])([Object(external_this_wp_viewport_["withViewportMatch"])({
- isSmallScreen: '< medium'
-}), // Temporary click-through disable on desktop.
-context_withBlockEditContext(function (context) {
- return Object(external_lodash_["pick"])(context, ['clientId']);
-}), Object(external_this_wp_data_["withSelect"])(function (select, ownProps) {
- var _select = select('core/block-editor'),
- isBlockSelected = _select.isBlockSelected,
- hasSelectedInnerBlock = _select.hasSelectedInnerBlock,
- getBlock = _select.getBlock,
- getBlockListSettings = _select.getBlockListSettings,
- getBlockRootClientId = _select.getBlockRootClientId,
- getTemplateLock = _select.getTemplateLock;
-
- var clientId = ownProps.clientId;
- var block = getBlock(clientId);
- var rootClientId = getBlockRootClientId(clientId);
- return {
- block: block,
- blockListSettings: getBlockListSettings(clientId),
- hasOverlay: block.name !== 'core/template' && !isBlockSelected(clientId) && !hasSelectedInnerBlock(clientId, true),
- parentLock: getTemplateLock(rootClientId)
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) {
- var _dispatch = dispatch('core/block-editor'),
- _replaceInnerBlocks = _dispatch.replaceInnerBlocks,
- updateBlockListSettings = _dispatch.updateBlockListSettings;
-
- var block = ownProps.block,
- clientId = ownProps.clientId,
- _ownProps$templateIns = ownProps.templateInsertUpdatesSelection,
- templateInsertUpdatesSelection = _ownProps$templateIns === void 0 ? true : _ownProps$templateIns;
- return {
- replaceInnerBlocks: function replaceInnerBlocks(blocks) {
- _replaceInnerBlocks(clientId, blocks, block.innerBlocks.length === 0 && templateInsertUpdatesSelection);
- },
- updateNestedSettings: function updateNestedSettings(settings) {
- dispatch(updateBlockListSettings(clientId, settings));
- }
- };
-})])(inner_blocks_InnerBlocks); // Expose default appender placeholders as components.
-
-inner_blocks_InnerBlocks.DefaultBlockAppender = inner_blocks_default_block_appender;
-inner_blocks_InnerBlocks.ButtonBlockAppender = inner_blocks_button_block_appender;
-inner_blocks_InnerBlocks.Content = Object(external_this_wp_blocks_["withBlockContentContext"])(function (_ref) {
- var BlockContent = _ref.BlockContent;
- return Object(external_this_wp_element_["createElement"])(BlockContent, null);
-});
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/inner-blocks/README.md
- */
-
-/* harmony default export */ var inner_blocks = (inner_blocks_InnerBlocks);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inspector-advanced-controls/index.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-var inspector_advanced_controls_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('InspectorAdvancedControls'),
- inspector_advanced_controls_Fill = inspector_advanced_controls_createSlotFill.Fill,
- inspector_advanced_controls_Slot = inspector_advanced_controls_createSlotFill.Slot;
-
-var InspectorAdvancedControls = ifBlockEditSelected(inspector_advanced_controls_Fill);
-InspectorAdvancedControls.Slot = inspector_advanced_controls_Slot;
-/* harmony default export */ var inspector_advanced_controls = (InspectorAdvancedControls);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/inspector-controls/index.js
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-var inspector_controls_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('InspectorControls'),
- inspector_controls_Fill = inspector_controls_createSlotFill.Fill,
- inspector_controls_Slot = inspector_controls_createSlotFill.Slot;
-
-var InspectorControls = ifBlockEditSelected(inspector_controls_Fill);
-InspectorControls.Slot = inspector_controls_Slot;
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/inspector-controls/README.md
- */
-
-/* harmony default export */ var inspector_controls = (InspectorControls);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/media-upload/index.js
-/**
- * WordPress dependencies
- */
-
-/**
- * This is a placeholder for the media upload component necessary to make it possible to provide
- * an integration with the core blocks that handle media files. By default it renders nothing but
- * it provides a way to have it overridden with the `editor.MediaUpload` filter.
- *
- * @return {WPElement} Media upload element.
- */
-
-var MediaUpload = function MediaUpload() {
- return null;
-};
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/media-upload/README.md
- */
-
-
-/* harmony default export */ var media_upload = (Object(external_this_wp_components_["withFilters"])('editor.MediaUpload')(MediaUpload));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/url-popover/link-viewer.js
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function LinkViewerUrl(_ref) {
- var url = _ref.url,
- urlLabel = _ref.urlLabel,
- className = _ref.className;
- var linkClassName = classnames_default()(className, 'block-editor-url-popover__link-viewer-url');
-
- if (!url) {
- return Object(external_this_wp_element_["createElement"])("span", {
- className: linkClassName
- });
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ExternalLink"], {
- className: linkClassName,
- href: url
- }, urlLabel || Object(external_this_wp_url_["filterURLForDisplay"])(Object(external_this_wp_url_["safeDecodeURI"])(url)));
-}
-
-function LinkViewer(_ref2) {
- var className = _ref2.className,
- linkClassName = _ref2.linkClassName,
- onEditLinkClick = _ref2.onEditLinkClick,
- url = _ref2.url,
- urlLabel = _ref2.urlLabel,
- props = Object(objectWithoutProperties["a" /* default */])(_ref2, ["className", "linkClassName", "onEditLinkClick", "url", "urlLabel"]);
-
- return Object(external_this_wp_element_["createElement"])("div", Object(esm_extends["a" /* default */])({
- className: classnames_default()('block-editor-url-popover__link-viewer', className)
- }, props), Object(external_this_wp_element_["createElement"])(LinkViewerUrl, {
- url: url,
- urlLabel: urlLabel,
- className: linkClassName
- }), onEditLinkClick && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: "edit",
- label: Object(external_this_wp_i18n_["__"])('Edit'),
- onClick: onEditLinkClick
- }));
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/url-input/index.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
- // Since URLInput is rendered in the context of other inputs, but should be
-// considered a separate modal node, prevent keyboard events from propagating
-// as being considered from the input.
-
-var stopEventPropagation = function stopEventPropagation(event) {
- return event.stopPropagation();
-};
-
-var url_input_URLInput =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(URLInput, _Component);
-
- function URLInput(_ref) {
- var _this;
-
- var autocompleteRef = _ref.autocompleteRef;
-
- Object(classCallCheck["a" /* default */])(this, URLInput);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(URLInput).apply(this, arguments));
- _this.onChange = _this.onChange.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onKeyDown = _this.onKeyDown.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.autocompleteRef = autocompleteRef || Object(external_this_wp_element_["createRef"])();
- _this.inputRef = Object(external_this_wp_element_["createRef"])();
- _this.updateSuggestions = Object(external_lodash_["throttle"])(_this.updateSuggestions.bind(Object(assertThisInitialized["a" /* default */])(_this)), 200);
- _this.suggestionNodes = [];
- _this.state = {
- suggestions: [],
- showSuggestions: false,
- selectedSuggestion: null
- };
- return _this;
- }
-
- Object(createClass["a" /* default */])(URLInput, [{
- key: "componentDidUpdate",
- value: function componentDidUpdate() {
- var _this2 = this;
-
- var _this$state = this.state,
- showSuggestions = _this$state.showSuggestions,
- selectedSuggestion = _this$state.selectedSuggestion; // only have to worry about scrolling selected suggestion into view
- // when already expanded
-
- if (showSuggestions && selectedSuggestion !== null && !this.scrollingIntoView) {
- this.scrollingIntoView = true;
- lib_default()(this.suggestionNodes[selectedSuggestion], this.autocompleteRef.current, {
- onlyScrollIfNeeded: true
- });
- this.props.setTimeout(function () {
- _this2.scrollingIntoView = false;
- }, 100);
- }
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- delete this.suggestionsRequest;
- }
- }, {
- key: "bindSuggestionNode",
- value: function bindSuggestionNode(index) {
- var _this3 = this;
-
- return function (ref) {
- _this3.suggestionNodes[index] = ref;
- };
- }
- }, {
- key: "updateSuggestions",
- value: function updateSuggestions(value) {
- var _this4 = this;
-
- var fetchLinkSuggestions = this.props.fetchLinkSuggestions;
-
- if (!fetchLinkSuggestions) {
- return;
- } // Show the suggestions after typing at least 2 characters
- // and also for URLs
-
-
- if (value.length < 2 || /^https?:/.test(value)) {
- this.setState({
- showSuggestions: false,
- selectedSuggestion: null,
- loading: false
- });
- return;
- }
-
- this.setState({
- showSuggestions: true,
- selectedSuggestion: null,
- loading: true
- });
- var request = fetchLinkSuggestions(value);
- request.then(function (suggestions) {
- // A fetch Promise doesn't have an abort option. It's mimicked by
- // comparing the request reference in on the instance, which is
- // reset or deleted on subsequent requests or unmounting.
- if (_this4.suggestionsRequest !== request) {
- return;
- }
-
- _this4.setState({
- suggestions: suggestions,
- loading: false
- });
-
- if (!!suggestions.length) {
- _this4.props.debouncedSpeak(Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d result found, use up and down arrow keys to navigate.', '%d results found, use up and down arrow keys to navigate.', suggestions.length), suggestions.length), 'assertive');
- } else {
- _this4.props.debouncedSpeak(Object(external_this_wp_i18n_["__"])('No results.'), 'assertive');
- }
- }).catch(function () {
- if (_this4.suggestionsRequest === request) {
- _this4.setState({
- loading: false
- });
- }
- });
- this.suggestionsRequest = request;
- }
- }, {
- key: "onChange",
- value: function onChange(event) {
- var inputValue = event.target.value;
- this.props.onChange(inputValue);
- this.updateSuggestions(inputValue);
- }
- }, {
- key: "onKeyDown",
- value: function onKeyDown(event) {
- var _this$state2 = this.state,
- showSuggestions = _this$state2.showSuggestions,
- selectedSuggestion = _this$state2.selectedSuggestion,
- suggestions = _this$state2.suggestions,
- loading = _this$state2.loading; // If the suggestions are not shown or loading, we shouldn't handle the arrow keys
- // We shouldn't preventDefault to allow block arrow keys navigation
-
- if (!showSuggestions || !suggestions.length || loading) {
- // In the Windows version of Firefox the up and down arrows don't move the caret
- // within an input field like they do for Mac Firefox/Chrome/Safari. This causes
- // a form of focus trapping that is disruptive to the user experience. This disruption
- // only happens if the caret is not in the first or last position in the text input.
- // See: https://github.com/WordPress/gutenberg/issues/5693#issuecomment-436684747
- switch (event.keyCode) {
- // When UP is pressed, if the caret is at the start of the text, move it to the 0
- // position.
- case external_this_wp_keycodes_["UP"]:
- {
- if (0 !== event.target.selectionStart) {
- event.stopPropagation();
- event.preventDefault(); // Set the input caret to position 0
-
- event.target.setSelectionRange(0, 0);
- }
-
- break;
- }
- // When DOWN is pressed, if the caret is not at the end of the text, move it to the
- // last position.
-
- case external_this_wp_keycodes_["DOWN"]:
- {
- if (this.props.value.length !== event.target.selectionStart) {
- event.stopPropagation();
- event.preventDefault(); // Set the input caret to the last position
-
- event.target.setSelectionRange(this.props.value.length, this.props.value.length);
- }
-
- break;
- }
- }
-
- return;
- }
-
- var suggestion = this.state.suggestions[this.state.selectedSuggestion];
-
- switch (event.keyCode) {
- case external_this_wp_keycodes_["UP"]:
- {
- event.stopPropagation();
- event.preventDefault();
- var previousIndex = !selectedSuggestion ? suggestions.length - 1 : selectedSuggestion - 1;
- this.setState({
- selectedSuggestion: previousIndex
- });
- break;
- }
-
- case external_this_wp_keycodes_["DOWN"]:
- {
- event.stopPropagation();
- event.preventDefault();
- var nextIndex = selectedSuggestion === null || selectedSuggestion === suggestions.length - 1 ? 0 : selectedSuggestion + 1;
- this.setState({
- selectedSuggestion: nextIndex
- });
- break;
- }
-
- case external_this_wp_keycodes_["TAB"]:
- {
- if (this.state.selectedSuggestion !== null) {
- this.selectLink(suggestion); // Announce a link has been selected when tabbing away from the input field.
-
- this.props.speak(Object(external_this_wp_i18n_["__"])('Link selected.'));
- }
-
- break;
- }
-
- case external_this_wp_keycodes_["ENTER"]:
- {
- if (this.state.selectedSuggestion !== null) {
- event.stopPropagation();
- this.selectLink(suggestion);
- }
-
- break;
- }
- }
- }
- }, {
- key: "selectLink",
- value: function selectLink(suggestion) {
- this.props.onChange(suggestion.url, suggestion);
- this.setState({
- selectedSuggestion: null,
- showSuggestions: false
- });
- }
- }, {
- key: "handleOnClick",
- value: function handleOnClick(suggestion) {
- this.selectLink(suggestion); // Move focus to the input field when a link suggestion is clicked.
-
- this.inputRef.current.focus();
- }
- }, {
- key: "render",
- value: function render() {
- var _this5 = this;
-
- var _this$props = this.props,
- _this$props$value = _this$props.value,
- value = _this$props$value === void 0 ? '' : _this$props$value,
- _this$props$autoFocus = _this$props.autoFocus,
- autoFocus = _this$props$autoFocus === void 0 ? true : _this$props$autoFocus,
- instanceId = _this$props.instanceId,
- className = _this$props.className,
- id = _this$props.id,
- isFullWidth = _this$props.isFullWidth,
- hasBorder = _this$props.hasBorder;
- var _this$state3 = this.state,
- showSuggestions = _this$state3.showSuggestions,
- suggestions = _this$state3.suggestions,
- selectedSuggestion = _this$state3.selectedSuggestion,
- loading = _this$state3.loading;
- var suggestionsListboxId = "block-editor-url-input-suggestions-".concat(instanceId);
- var suggestionOptionIdPrefix = "block-editor-url-input-suggestion-".concat(instanceId);
- /* eslint-disable jsx-a11y/no-autofocus */
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()('editor-url-input block-editor-url-input', className, {
- 'is-full-width': isFullWidth,
- 'has-border': hasBorder
- })
- }, Object(external_this_wp_element_["createElement"])("input", {
- id: id,
- autoFocus: autoFocus,
- type: "text",
- "aria-label": Object(external_this_wp_i18n_["__"])('URL'),
- required: true,
- value: value,
- onChange: this.onChange,
- onInput: stopEventPropagation,
- placeholder: Object(external_this_wp_i18n_["__"])('Paste URL or type to search'),
- onKeyDown: this.onKeyDown,
- role: "combobox",
- "aria-expanded": showSuggestions,
- "aria-autocomplete": "list",
- "aria-owns": suggestionsListboxId,
- "aria-activedescendant": selectedSuggestion !== null ? "".concat(suggestionOptionIdPrefix, "-").concat(selectedSuggestion) : undefined,
- ref: this.inputRef
- }), loading && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Spinner"], null), showSuggestions && !!suggestions.length && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Popover"], {
- position: "bottom",
- noArrow: true,
- focusOnMount: false
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()('editor-url-input__suggestions', 'block-editor-url-input__suggestions', "".concat(className, "__suggestions")),
- id: suggestionsListboxId,
- ref: this.autocompleteRef,
- role: "listbox"
- }, suggestions.map(function (suggestion, index) {
- return Object(external_this_wp_element_["createElement"])("button", {
- key: suggestion.id,
- role: "option",
- tabIndex: "-1",
- id: "".concat(suggestionOptionIdPrefix, "-").concat(index),
- ref: _this5.bindSuggestionNode(index),
- className: classnames_default()('editor-url-input__suggestion block-editor-url-input__suggestion', {
- 'is-selected': index === selectedSuggestion
- }),
- onClick: function onClick() {
- return _this5.handleOnClick(suggestion);
- },
- "aria-selected": index === selectedSuggestion
- }, suggestion.title);
- }))));
- /* eslint-enable jsx-a11y/no-autofocus */
- }
- }], [{
- key: "getDerivedStateFromProps",
- value: function getDerivedStateFromProps(_ref2, _ref3) {
- var disableSuggestions = _ref2.disableSuggestions;
- var showSuggestions = _ref3.showSuggestions;
- return {
- showSuggestions: disableSuggestions === true ? false : showSuggestions
- };
- }
- }]);
-
- return URLInput;
-}(external_this_wp_element_["Component"]);
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/url-input/README.md
- */
-
-
-/* harmony default export */ var url_input = (Object(external_this_wp_compose_["compose"])(external_this_wp_compose_["withSafeTimeout"], external_this_wp_components_["withSpokenMessages"], external_this_wp_compose_["withInstanceId"], Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSettings = _select.getSettings;
-
- return {
- fetchLinkSuggestions: getSettings().__experimentalFetchLinkSuggestions
- };
-}))(url_input_URLInput));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/url-popover/link-editor.js
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-function LinkEditor(_ref) {
- var autocompleteRef = _ref.autocompleteRef,
- className = _ref.className,
- onChangeInputValue = _ref.onChangeInputValue,
- value = _ref.value,
- props = Object(objectWithoutProperties["a" /* default */])(_ref, ["autocompleteRef", "className", "onChangeInputValue", "value"]);
-
- return Object(external_this_wp_element_["createElement"])("form", Object(esm_extends["a" /* default */])({
- className: classnames_default()('block-editor-url-popover__link-editor', className)
- }, props), Object(external_this_wp_element_["createElement"])(url_input, {
- value: value,
- onChange: onChangeInputValue,
- autocompleteRef: autocompleteRef
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: "editor-break",
- label: Object(external_this_wp_i18n_["__"])('Apply'),
- type: "submit"
- }));
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/url-popover/index.js
-
-
-
-
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-var url_popover_URLPopover =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(URLPopover, _Component);
-
- function URLPopover() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, URLPopover);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(URLPopover).apply(this, arguments));
- _this.toggleSettingsVisibility = _this.toggleSettingsVisibility.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.state = {
- isSettingsExpanded: false
- };
- return _this;
- }
-
- Object(createClass["a" /* default */])(URLPopover, [{
- key: "toggleSettingsVisibility",
- value: function toggleSettingsVisibility() {
- this.setState({
- isSettingsExpanded: !this.state.isSettingsExpanded
- });
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- additionalControls = _this$props.additionalControls,
- children = _this$props.children,
- renderSettings = _this$props.renderSettings,
- _this$props$position = _this$props.position,
- position = _this$props$position === void 0 ? 'bottom center' : _this$props$position,
- _this$props$focusOnMo = _this$props.focusOnMount,
- focusOnMount = _this$props$focusOnMo === void 0 ? 'firstElement' : _this$props$focusOnMo,
- popoverProps = Object(objectWithoutProperties["a" /* default */])(_this$props, ["additionalControls", "children", "renderSettings", "position", "focusOnMount"]);
-
- var isSettingsExpanded = this.state.isSettingsExpanded;
- var showSettings = !!renderSettings && isSettingsExpanded;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Popover"], Object(esm_extends["a" /* default */])({
- className: "editor-url-popover block-editor-url-popover",
- focusOnMount: focusOnMount,
- position: position
- }, popoverProps), Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-url-popover__input-container"
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-url-popover__row block-editor-url-popover__row"
- }, children, !!renderSettings && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- className: "editor-url-popover__settings-toggle block-editor-url-popover__settings-toggle",
- icon: "arrow-down-alt2",
- label: Object(external_this_wp_i18n_["__"])('Link settings'),
- onClick: this.toggleSettingsVisibility,
- "aria-expanded": isSettingsExpanded
- })), showSettings && Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-url-popover__row block-editor-url-popover__row editor-url-popover__settings block-editor-url-popover__settings"
- }, renderSettings())), additionalControls && !showSettings && Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-url-popover__additional-controls"
- }, additionalControls));
- }
- }]);
-
- return URLPopover;
-}(external_this_wp_element_["Component"]);
-
-url_popover_URLPopover.LinkEditor = LinkEditor;
-url_popover_URLPopover.LinkViewer = LinkViewer;
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/url-popover/README.md
- */
-
-/* harmony default export */ var url_popover = (url_popover_URLPopover);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/media-placeholder/index.js
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-var media_placeholder_InsertFromURLPopover = function InsertFromURLPopover(_ref) {
- var src = _ref.src,
- onChange = _ref.onChange,
- onSubmit = _ref.onSubmit,
- onClose = _ref.onClose;
- return Object(external_this_wp_element_["createElement"])(url_popover, {
- onClose: onClose
- }, Object(external_this_wp_element_["createElement"])("form", {
- className: "editor-media-placeholder__url-input-form block-editor-media-placeholder__url-input-form",
- onSubmit: onSubmit
- }, Object(external_this_wp_element_["createElement"])("input", {
- className: "editor-media-placeholder__url-input-field block-editor-media-placeholder__url-input-field",
- type: "url",
- "aria-label": Object(external_this_wp_i18n_["__"])('URL'),
- placeholder: Object(external_this_wp_i18n_["__"])('Paste or type URL'),
- onChange: onChange,
- value: src
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- className: "editor-media-placeholder__url-input-submit-button block-editor-media-placeholder__url-input-submit-button",
- icon: "editor-break",
- label: Object(external_this_wp_i18n_["__"])('Apply'),
- type: "submit"
- })));
-};
-
-var media_placeholder_MediaPlaceholder =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(MediaPlaceholder, _Component);
-
- function MediaPlaceholder() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, MediaPlaceholder);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(MediaPlaceholder).apply(this, arguments));
- _this.state = {
- src: '',
- isURLInputVisible: false
- };
- _this.onChangeSrc = _this.onChangeSrc.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onSubmitSrc = _this.onSubmitSrc.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onUpload = _this.onUpload.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onFilesUpload = _this.onFilesUpload.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.openURLInput = _this.openURLInput.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.closeURLInput = _this.closeURLInput.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(MediaPlaceholder, [{
- key: "onlyAllowsImages",
- value: function onlyAllowsImages() {
- var allowedTypes = this.props.allowedTypes;
-
- if (!allowedTypes) {
- return false;
- }
-
- return Object(external_lodash_["every"])(allowedTypes, function (allowedType) {
- return allowedType === 'image' || Object(external_lodash_["startsWith"])(allowedType, 'image/');
- });
- }
- }, {
- key: "componentDidMount",
- value: function componentDidMount() {
- this.setState({
- src: Object(external_lodash_["get"])(this.props.value, ['src'], '')
- });
- }
- }, {
- key: "componentDidUpdate",
- value: function componentDidUpdate(prevProps) {
- if (Object(external_lodash_["get"])(prevProps.value, ['src'], '') !== Object(external_lodash_["get"])(this.props.value, ['src'], '')) {
- this.setState({
- src: Object(external_lodash_["get"])(this.props.value, ['src'], '')
- });
- }
- }
- }, {
- key: "onChangeSrc",
- value: function onChangeSrc(event) {
- this.setState({
- src: event.target.value
- });
- }
- }, {
- key: "onSubmitSrc",
- value: function onSubmitSrc(event) {
- event.preventDefault();
-
- if (this.state.src && this.props.onSelectURL) {
- this.props.onSelectURL(this.state.src);
- this.closeURLInput();
- }
- }
- }, {
- key: "onUpload",
- value: function onUpload(event) {
- this.onFilesUpload(event.target.files);
- }
- }, {
- key: "onFilesUpload",
- value: function onFilesUpload(files) {
- var _this$props = this.props,
- addToGallery = _this$props.addToGallery,
- allowedTypes = _this$props.allowedTypes,
- mediaUpload = _this$props.mediaUpload,
- multiple = _this$props.multiple,
- onError = _this$props.onError,
- onSelect = _this$props.onSelect,
- _this$props$value = _this$props.value,
- value = _this$props$value === void 0 ? [] : _this$props$value;
- var setMedia;
-
- if (multiple) {
- if (addToGallery) {
- var currentValue = value;
-
- setMedia = function setMedia(newMedia) {
- onSelect(currentValue.concat(newMedia));
- };
- } else {
- setMedia = onSelect;
- }
- } else {
- setMedia = function setMedia(_ref2) {
- var _ref3 = Object(slicedToArray["a" /* default */])(_ref2, 1),
- media = _ref3[0];
-
- return onSelect(media);
- };
- }
-
- mediaUpload({
- allowedTypes: allowedTypes,
- filesList: files,
- onFileChange: setMedia,
- onError: onError
- });
- }
- }, {
- key: "openURLInput",
- value: function openURLInput() {
- this.setState({
- isURLInputVisible: true
- });
- }
- }, {
- key: "closeURLInput",
- value: function closeURLInput() {
- this.setState({
- isURLInputVisible: false
- });
- }
- }, {
- key: "renderPlaceholder",
- value: function renderPlaceholder(content, onClick) {
- var _this$props2 = this.props,
- _this$props2$allowedT = _this$props2.allowedTypes,
- allowedTypes = _this$props2$allowedT === void 0 ? [] : _this$props2$allowedT,
- className = _this$props2.className,
- icon = _this$props2.icon,
- isAppender = _this$props2.isAppender,
- _this$props2$labels = _this$props2.labels,
- labels = _this$props2$labels === void 0 ? {} : _this$props2$labels,
- onDoubleClick = _this$props2.onDoubleClick,
- mediaPreview = _this$props2.mediaPreview,
- notices = _this$props2.notices,
- onSelectURL = _this$props2.onSelectURL,
- mediaUpload = _this$props2.mediaUpload,
- children = _this$props2.children;
- var instructions = labels.instructions;
- var title = labels.title;
-
- if (!mediaUpload && !onSelectURL) {
- instructions = Object(external_this_wp_i18n_["__"])('To edit this block, you need permission to upload media.');
- }
-
- if (instructions === undefined || title === undefined) {
- var isOneType = 1 === allowedTypes.length;
- var isAudio = isOneType && 'audio' === allowedTypes[0];
- var isImage = isOneType && 'image' === allowedTypes[0];
- var isVideo = isOneType && 'video' === allowedTypes[0];
-
- if (instructions === undefined && mediaUpload) {
- instructions = Object(external_this_wp_i18n_["__"])('Upload a media file or pick one from your media library.');
-
- if (isAudio) {
- instructions = Object(external_this_wp_i18n_["__"])('Upload an audio file, pick one from your media library, or add one with a URL.');
- } else if (isImage) {
- instructions = Object(external_this_wp_i18n_["__"])('Upload an image file, pick one from your media library, or add one with a URL.');
- } else if (isVideo) {
- instructions = Object(external_this_wp_i18n_["__"])('Upload a video file, pick one from your media library, or add one with a URL.');
- }
- }
-
- if (title === undefined) {
- title = Object(external_this_wp_i18n_["__"])('Media');
-
- if (isAudio) {
- title = Object(external_this_wp_i18n_["__"])('Audio');
- } else if (isImage) {
- title = Object(external_this_wp_i18n_["__"])('Image');
- } else if (isVideo) {
- title = Object(external_this_wp_i18n_["__"])('Video');
- }
- }
- }
-
- var placeholderClassName = classnames_default()('block-editor-media-placeholder', 'editor-media-placeholder', className, {
- 'is-appender': isAppender
- });
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Placeholder"], {
- icon: icon,
- label: title,
- instructions: instructions,
- className: placeholderClassName,
- notices: notices,
- onClick: onClick,
- onDoubleClick: onDoubleClick,
- preview: mediaPreview
- }, content, children);
- }
- }, {
- key: "renderDropZone",
- value: function renderDropZone() {
- var _this$props3 = this.props,
- disableDropZone = _this$props3.disableDropZone,
- _this$props3$onHTMLDr = _this$props3.onHTMLDrop,
- onHTMLDrop = _this$props3$onHTMLDr === void 0 ? external_lodash_["noop"] : _this$props3$onHTMLDr;
-
- if (disableDropZone) {
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["DropZone"], {
- onFilesDrop: this.onFilesUpload,
- onHTMLDrop: onHTMLDrop
- });
- }
- }, {
- key: "renderCancelLink",
- value: function renderCancelLink() {
- var onCancel = this.props.onCancel;
- return onCancel && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- className: "block-editor-media-placeholder__cancel-button",
- title: Object(external_this_wp_i18n_["__"])('Cancel'),
- isLink: true,
- onClick: onCancel
- }, Object(external_this_wp_i18n_["__"])('Cancel'));
- }
- }, {
- key: "renderUrlSelectionUI",
- value: function renderUrlSelectionUI() {
- var onSelectURL = this.props.onSelectURL;
-
- if (!onSelectURL) {
- return null;
- }
-
- var _this$state = this.state,
- isURLInputVisible = _this$state.isURLInputVisible,
- src = _this$state.src;
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-media-placeholder__url-input-container block-editor-media-placeholder__url-input-container"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- className: "editor-media-placeholder__button block-editor-media-placeholder__button",
- onClick: this.openURLInput,
- isToggled: isURLInputVisible,
- isLarge: true
- }, Object(external_this_wp_i18n_["__"])('Insert from URL')), isURLInputVisible && Object(external_this_wp_element_["createElement"])(media_placeholder_InsertFromURLPopover, {
- src: src,
- onChange: this.onChangeSrc,
- onSubmit: this.onSubmitSrc,
- onClose: this.closeURLInput
- }));
- }
- }, {
- key: "renderMediaUploadChecked",
- value: function renderMediaUploadChecked() {
- var _this2 = this;
-
- var _this$props4 = this.props,
- accept = _this$props4.accept,
- addToGallery = _this$props4.addToGallery,
- _this$props4$allowedT = _this$props4.allowedTypes,
- allowedTypes = _this$props4$allowedT === void 0 ? [] : _this$props4$allowedT,
- isAppender = _this$props4.isAppender,
- mediaUpload = _this$props4.mediaUpload,
- _this$props4$multiple = _this$props4.multiple,
- multiple = _this$props4$multiple === void 0 ? false : _this$props4$multiple,
- onSelect = _this$props4.onSelect,
- _this$props4$value = _this$props4.value,
- value = _this$props4$value === void 0 ? {} : _this$props4$value;
- var mediaLibraryButton = Object(external_this_wp_element_["createElement"])(media_upload, {
- addToGallery: addToGallery,
- gallery: multiple && this.onlyAllowsImages(),
- multiple: multiple,
- onSelect: onSelect,
- allowedTypes: allowedTypes,
- value: Object(external_lodash_["isArray"])(value) ? value.map(function (_ref4) {
- var id = _ref4.id;
- return id;
- }) : value.id,
- render: function render(_ref5) {
- var open = _ref5.open;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- isLarge: true,
- className: classnames_default()('editor-media-placeholder__button', 'editor-media-placeholder__media-library-button'),
- onClick: function onClick(event) {
- event.stopPropagation();
- open();
- }
- }, Object(external_this_wp_i18n_["__"])('Media Library'));
- }
- });
-
- if (mediaUpload && isAppender) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, this.renderDropZone(), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["FormFileUpload"], {
- onChange: this.onUpload,
- accept: accept,
- multiple: multiple,
- render: function render(_ref6) {
- var openFileDialog = _ref6.openFileDialog;
- var content = Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- isLarge: true,
- className: classnames_default()('block-editor-media-placeholder__button', 'editor-media-placeholder__button', 'block-editor-media-placeholder__upload-button'),
- icon: "upload"
- }, Object(external_this_wp_i18n_["__"])('Upload')), mediaLibraryButton, _this2.renderUrlSelectionUI(), _this2.renderCancelLink());
- return _this2.renderPlaceholder(content, openFileDialog);
- }
- }));
- }
-
- if (mediaUpload) {
- var content = Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, this.renderDropZone(), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["FormFileUpload"], {
- isLarge: true,
- className: classnames_default()('block-editor-media-placeholder__button', 'editor-media-placeholder__button', 'block-editor-media-placeholder__upload-button'),
- onChange: this.onUpload,
- accept: accept,
- multiple: multiple
- }, Object(external_this_wp_i18n_["__"])('Upload')), mediaLibraryButton, this.renderUrlSelectionUI(), this.renderCancelLink());
- return this.renderPlaceholder(content);
- }
-
- return this.renderPlaceholder(mediaLibraryButton);
- }
- }, {
- key: "render",
- value: function render() {
- var dropZoneUIOnly = this.props.dropZoneUIOnly;
-
- if (dropZoneUIOnly) {
- return Object(external_this_wp_element_["createElement"])(check, null, this.renderDropZone());
- }
-
- return Object(external_this_wp_element_["createElement"])(check, {
- fallback: this.renderPlaceholder(this.renderUrlSelectionUI())
- }, this.renderMediaUploadChecked());
- }
- }]);
-
- return MediaPlaceholder;
-}(external_this_wp_element_["Component"]);
-var media_placeholder_applyWithSelect = Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSettings = _select.getSettings;
-
- return {
- mediaUpload: getSettings().__experimentalMediaUpload
- };
-});
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/media-placeholder/README.md
- */
-
-/* harmony default export */ var media_placeholder = (Object(external_this_wp_compose_["compose"])(media_placeholder_applyWithSelect, Object(external_this_wp_components_["withFilters"])('editor.MediaPlaceholder'))(media_placeholder_MediaPlaceholder));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/color-palette/control.js
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
- // translators: first %s: The type of color (e.g. background color), second %s: the color name or value (e.g. red or #ff0000)
-
-var colorIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(current %s: %s)');
-
-function ColorPaletteControl(_ref) {
- var colors = _ref.colors,
- disableCustomColors = _ref.disableCustomColors,
- label = _ref.label,
- onChange = _ref.onChange,
- value = _ref.value;
- var colorObject = utils_getColorObjectByColorValue(colors, value);
- var colorName = colorObject && colorObject.name;
- var ariaLabel = Object(external_this_wp_i18n_["sprintf"])(colorIndicatorAriaLabel, label.toLowerCase(), colorName || value);
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["BaseControl"], {
- className: "editor-color-palette-control block-editor-color-palette-control"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["BaseControl"].VisualLabel, null, label, value && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorIndicator"], {
- colorValue: value,
- "aria-label": ariaLabel
- })), Object(external_this_wp_element_["createElement"])(color_palette, Object(esm_extends["a" /* default */])({
- className: "editor-color-palette-control__color-palette block-editor-color-palette-control__color-palette",
- value: value,
- onChange: onChange
- }, {
- colors: colors,
- disableCustomColors: disableCustomColors
- })));
-}
-/* harmony default export */ var color_palette_control = (Object(external_this_wp_compose_["compose"])([with_color_context, Object(external_this_wp_compose_["ifCondition"])(function (_ref2) {
- var hasColorsToChoose = _ref2.hasColorsToChoose;
- return hasColorsToChoose;
-})])(ColorPaletteControl));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/panel-color-settings/index.js
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-var hasCustomColorsDisabledForSetting = function hasCustomColorsDisabledForSetting(disableCustomColors, colorSetting) {
- if (colorSetting.disableCustomColors !== undefined) {
- return colorSetting.disableCustomColors;
- }
-
- return disableCustomColors;
-};
-
-var hasColorsToChooseInSetting = function hasColorsToChooseInSetting() {
- var colors = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
- var disableCustomColors = arguments.length > 1 ? arguments[1] : undefined;
- var colorSetting = arguments.length > 2 ? arguments[2] : undefined;
-
- if (!hasCustomColorsDisabledForSetting(disableCustomColors, colorSetting)) {
- return true;
- }
-
- return (colorSetting.colors || colors).length > 0;
-};
-
-var panel_color_settings_hasColorsToChoose = function hasColorsToChoose(_ref) {
- var colors = _ref.colors,
- disableCustomColors = _ref.disableCustomColors,
- colorSettings = _ref.colorSettings;
- return Object(external_lodash_["some"])(colorSettings, function (colorSetting) {
- return hasColorsToChooseInSetting(colors, disableCustomColors, colorSetting);
- });
-}; // translators: first %s: The type of color (e.g. background color), second %s: the color name or value (e.g. red or #ff0000)
-
-
-var panel_color_settings_colorIndicatorAriaLabel = Object(external_this_wp_i18n_["__"])('(%s: %s)');
-
-var panel_color_settings_renderColorIndicators = function renderColorIndicators(colorSettings, colors) {
- return colorSettings.map(function (_ref2, index) {
- var value = _ref2.value,
- label = _ref2.label,
- availableColors = _ref2.colors;
-
- if (!value) {
- return null;
- }
-
- var colorObject = utils_getColorObjectByColorValue(availableColors || colors, value);
- var colorName = colorObject && colorObject.name;
- var ariaLabel = Object(external_this_wp_i18n_["sprintf"])(panel_color_settings_colorIndicatorAriaLabel, label.toLowerCase(), colorName || value);
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ColorIndicator"], {
- key: index,
- colorValue: value,
- "aria-label": ariaLabel
- });
- });
-}; // colorSettings is passed as an array of props so that it can be used for
-// mapping both ColorIndicator and ColorPaletteControl components. Passing
-// an array of components/nodes here wouldn't be feasible.
-
-
-var PanelColorSettings = Object(external_this_wp_compose_["ifCondition"])(panel_color_settings_hasColorsToChoose)(function (_ref3) {
- var children = _ref3.children,
- colors = _ref3.colors,
- colorSettings = _ref3.colorSettings,
- disableCustomColors = _ref3.disableCustomColors,
- title = _ref3.title,
- props = Object(objectWithoutProperties["a" /* default */])(_ref3, ["children", "colors", "colorSettings", "disableCustomColors", "title"]);
-
- var titleElement = Object(external_this_wp_element_["createElement"])("span", {
- className: "editor-panel-color-settings__panel-title block-editor-panel-color-settings__panel-title"
- }, title, panel_color_settings_renderColorIndicators(colorSettings, colors));
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], Object(esm_extends["a" /* default */])({
- className: "editor-panel-color-settings block-editor-panel-color-settings",
- title: titleElement
- }, props), colorSettings.map(function (settings, index) {
- return Object(external_this_wp_element_["createElement"])(color_palette_control, Object(esm_extends["a" /* default */])({
- key: index
- }, Object(objectSpread["a" /* default */])({
- colors: colors,
- disableCustomColors: disableCustomColors
- }, settings)));
- }), children);
-});
-/* harmony default export */ var panel_color_settings = (with_color_context(PanelColorSettings));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/plain-text/index.js
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * External dependencies
- */
-
-
-
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/plain-text/README.md
- */
-
-var PlainText = Object(external_this_wp_element_["forwardRef"])(function (_ref, ref) {
- var _onChange = _ref.onChange,
- className = _ref.className,
- props = Object(objectWithoutProperties["a" /* default */])(_ref, ["onChange", "className"]);
-
- return Object(external_this_wp_element_["createElement"])(react_autosize_textarea_lib_default.a, Object(esm_extends["a" /* default */])({
- ref: ref,
- className: classnames_default()('editor-plain-text block-editor-plain-text', className),
- onChange: function onChange(event) {
- return _onChange(event.target.value);
- }
- }, props));
-});
-/* harmony default export */ var plain_text = (PlainText);
-
-// EXTERNAL MODULE: external {"this":["wp","blob"]}
-var external_this_wp_blob_ = __webpack_require__(35);
-
-// EXTERNAL MODULE: external {"this":["wp","deprecated"]}
-var external_this_wp_deprecated_ = __webpack_require__(37);
-var external_this_wp_deprecated_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_deprecated_);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/rich-text/format-toolbar/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-var POPOVER_PROPS = {
- position: 'bottom left'
-};
-
-var format_toolbar_FormatToolbar = function FormatToolbar() {
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-format-toolbar block-editor-format-toolbar"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], null, ['bold', 'italic', 'link'].map(function (format) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Slot"], {
- name: "RichText.ToolbarControls.".concat(format),
- key: format
- });
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Slot"], {
- name: "RichText.ToolbarControls"
- }, function (fills) {
- return fills.length !== 0 && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["DropdownMenu"], {
- icon: false,
- label: Object(external_this_wp_i18n_["__"])('More rich text controls'),
- controls: Object(external_lodash_["orderBy"])(fills.map(function (_ref) {
- var _ref2 = Object(slicedToArray["a" /* default */])(_ref, 1),
- props = _ref2[0].props;
-
- return props;
- }), 'title'),
- popoverProps: POPOVER_PROPS
- });
- })));
-};
-
-/* harmony default export */ var format_toolbar = (format_toolbar_FormatToolbar);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/rich-text/remove-browser-shortcuts.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Set of keyboard shortcuts handled internally by RichText.
- *
- * @type {Array}
- */
-
-var HANDLED_SHORTCUTS = [external_this_wp_keycodes_["rawShortcut"].primary('z'), external_this_wp_keycodes_["rawShortcut"].primaryShift('z'), external_this_wp_keycodes_["rawShortcut"].primary('y')];
-/**
- * An instance of a KeyboardShortcuts element pre-bound for the handled
- * shortcuts. Since shortcuts never change, the element can be considered
- * static, and can be skipped in reconciliation.
- *
- * @type {WPElement}
- */
-
-var SHORTCUTS_ELEMENT = Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], {
- bindGlobal: true,
- shortcuts: Object(external_lodash_["fromPairs"])(HANDLED_SHORTCUTS.map(function (shortcut) {
- return [shortcut, function (event) {
- return event.preventDefault();
- }];
- }))
-});
-/**
- * Component which registered keyboard event handlers to prevent default
- * behaviors for key combinations otherwise handled internally by RichText.
- *
- * @return {WPElement} WordPress element.
- */
-
-var RemoveBrowserShortcuts = function RemoveBrowserShortcuts() {
- return SHORTCUTS_ELEMENT;
-};
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/rich-text/shortcut.js
-
-
-
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-var shortcut_RichTextShortcut =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(RichTextShortcut, _Component);
-
- function RichTextShortcut() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, RichTextShortcut);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(RichTextShortcut).apply(this, arguments));
- _this.onUse = _this.onUse.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(RichTextShortcut, [{
- key: "onUse",
- value: function onUse() {
- this.props.onUse();
- return false;
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- character = _this$props.character,
- type = _this$props.type;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], {
- bindGlobal: true,
- shortcuts: Object(defineProperty["a" /* default */])({}, external_this_wp_keycodes_["rawShortcut"][type](character), this.onUse)
- });
- }
- }]);
-
- return RichTextShortcut;
-}(external_this_wp_element_["Component"]);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/rich-text/toolbar-button.js
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-function RichTextToolbarButton(_ref) {
- var name = _ref.name,
- shortcutType = _ref.shortcutType,
- shortcutCharacter = _ref.shortcutCharacter,
- props = Object(objectWithoutProperties["a" /* default */])(_ref, ["name", "shortcutType", "shortcutCharacter"]);
-
- var shortcut;
- var fillName = 'RichText.ToolbarControls';
-
- if (name) {
- fillName += ".".concat(name);
- }
-
- if (shortcutType && shortcutCharacter) {
- shortcut = external_this_wp_keycodes_["displayShortcut"][shortcutType](shortcutCharacter);
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Fill"], {
- name: fillName
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ToolbarButton"], Object(esm_extends["a" /* default */])({}, props, {
- shortcut: shortcut
- })));
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/rich-text/input-event.js
-
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-var input_event_unstableRichTextInputEvent =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(__unstableRichTextInputEvent, _Component);
-
- function __unstableRichTextInputEvent() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, __unstableRichTextInputEvent);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(__unstableRichTextInputEvent).apply(this, arguments));
- _this.onInput = _this.onInput.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(__unstableRichTextInputEvent, [{
- key: "onInput",
- value: function onInput(event) {
- if (event.inputType === this.props.inputType) {
- this.props.onInput();
- }
- }
- }, {
- key: "componentDidMount",
- value: function componentDidMount() {
- document.addEventListener('input', this.onInput, true);
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- document.removeEventListener('input', this.onInput, true);
- }
- }, {
- key: "render",
- value: function render() {
- return null;
- }
- }]);
-
- return __unstableRichTextInputEvent;
-}(external_this_wp_element_["Component"]);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/rich-text/index.js
-
-
-
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-var requestIdleCallback = window.requestIdleCallback || function fallbackRequestIdleCallback(fn) {
- window.setTimeout(fn, 100);
-};
-
-var wrapperClasses = 'editor-rich-text block-editor-rich-text';
-var rich_text_classes = 'editor-rich-text__editable block-editor-rich-text__editable';
-/**
- * Get the multiline tag based on the multiline prop.
- *
- * @param {?(string|boolean)} multiline The multiline prop.
- *
- * @return {?string} The multiline tag.
- */
-
-function getMultilineTag(multiline) {
- if (multiline !== true && multiline !== 'p' && multiline !== 'li') {
- return;
- }
-
- return multiline === true ? 'p' : multiline;
-}
-
-var rich_text_RichTextWrapper =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(RichTextWrapper, _Component);
-
- function RichTextWrapper() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, RichTextWrapper);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(RichTextWrapper).apply(this, arguments));
- _this.onEnter = _this.onEnter.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onSplit = _this.onSplit.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onPaste = _this.onPaste.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onDelete = _this.onDelete.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.inputRule = _this.inputRule.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.markAutomaticChange = _this.markAutomaticChange.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(RichTextWrapper, [{
- key: "onEnter",
- value: function onEnter(_ref) {
- var value = _ref.value,
- onChange = _ref.onChange,
- shiftKey = _ref.shiftKey;
- var _this$props = this.props,
- onReplace = _this$props.onReplace,
- onSplit = _this$props.onSplit,
- multiline = _this$props.multiline;
- var canSplit = onReplace && onSplit;
-
- if (onReplace) {
- var transforms = Object(external_this_wp_blocks_["getBlockTransforms"])('from').filter(function (_ref2) {
- var type = _ref2.type;
- return type === 'enter';
- });
- var transformation = Object(external_this_wp_blocks_["findTransform"])(transforms, function (item) {
- return item.regExp.test(value.text);
- });
-
- if (transformation) {
- onReplace([transformation.transform({
- content: value.text
- })]);
- this.markAutomaticChange();
- }
- }
-
- if (multiline) {
- if (shiftKey) {
- onChange(Object(external_this_wp_richText_["insert"])(value, '\n'));
- } else if (canSplit && Object(external_this_wp_richText_["__unstableIsEmptyLine"])(value)) {
- this.onSplit(value);
- } else {
- onChange(Object(external_this_wp_richText_["__unstableInsertLineSeparator"])(value));
- }
- } else if (shiftKey || !canSplit) {
- onChange(Object(external_this_wp_richText_["insert"])(value, '\n'));
- } else {
- this.onSplit(value);
- }
- }
- }, {
- key: "onDelete",
- value: function onDelete(_ref3) {
- var value = _ref3.value,
- isReverse = _ref3.isReverse;
- var _this$props2 = this.props,
- onMerge = _this$props2.onMerge,
- onRemove = _this$props2.onRemove;
-
- if (onMerge) {
- onMerge(!isReverse);
- } // Only handle remove on Backspace. This serves dual-purpose of being
- // an intentional user interaction distinguishing between Backspace and
- // Delete to remove the empty field, but also to avoid merge & remove
- // causing destruction of two fields (merge, then removed merged).
-
-
- if (onRemove && Object(external_this_wp_richText_["isEmpty"])(value) && isReverse) {
- onRemove(!isReverse);
- }
- }
- }, {
- key: "onPaste",
- value: function onPaste(_ref4) {
- var value = _ref4.value,
- onChange = _ref4.onChange,
- html = _ref4.html,
- plainText = _ref4.plainText,
- image = _ref4.image;
- var _this$props3 = this.props,
- onReplace = _this$props3.onReplace,
- onSplit = _this$props3.onSplit,
- tagName = _this$props3.tagName,
- canUserUseUnfilteredHTML = _this$props3.canUserUseUnfilteredHTML,
- multiline = _this$props3.multiline,
- __unstableEmbedURLOnPaste = _this$props3.__unstableEmbedURLOnPaste;
-
- if (image && !html) {
- var file = image.getAsFile ? image.getAsFile() : image;
-
- var _content = Object(external_this_wp_blocks_["pasteHandler"])({
- HTML: "<img src=\"".concat(Object(external_this_wp_blob_["createBlobURL"])(file), "\">"),
- mode: 'BLOCKS',
- tagName: tagName
- }); // Allows us to ask for this information when we get a report.
-
-
- window.console.log('Received item:\n\n', file);
-
- if (onReplace && Object(external_this_wp_richText_["isEmpty"])(value)) {
- onReplace(_content);
- } else {
- this.onSplit(value, _content);
- }
-
- return;
- }
-
- var mode = onReplace && onSplit ? 'AUTO' : 'INLINE';
-
- if (__unstableEmbedURLOnPaste && Object(external_this_wp_richText_["isEmpty"])(value) && Object(external_this_wp_url_["isURL"])(plainText.trim())) {
- mode = 'BLOCKS';
- }
-
- var content = Object(external_this_wp_blocks_["pasteHandler"])({
- HTML: html,
- plainText: plainText,
- mode: mode,
- tagName: tagName,
- canUserUseUnfilteredHTML: canUserUseUnfilteredHTML
- });
-
- if (typeof content === 'string') {
- var valueToInsert = Object(external_this_wp_richText_["create"])({
- html: content
- }); // If the content should be multiline, we should process text
- // separated by a line break as separate lines.
-
- if (multiline) {
- valueToInsert = Object(external_this_wp_richText_["replace"])(valueToInsert, /\n+/g, external_this_wp_richText_["__UNSTABLE_LINE_SEPARATOR"]);
- }
-
- onChange(Object(external_this_wp_richText_["insert"])(value, valueToInsert));
- } else if (content.length > 0) {
- if (onReplace && Object(external_this_wp_richText_["isEmpty"])(value)) {
- onReplace(content);
- } else {
- this.onSplit(value, content);
- }
- }
- }
- /**
- * Signals to the RichText owner that the block can be replaced with two
- * blocks as a result of splitting the block by pressing enter, or with
- * blocks as a result of splitting the block by pasting block content in the
- * instance.
- *
- * @param {Object} record The rich text value to split.
- * @param {Array} pastedBlocks The pasted blocks to insert, if any.
- */
-
- }, {
- key: "onSplit",
- value: function onSplit(record) {
- var pastedBlocks = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : [];
- var _this$props4 = this.props,
- onReplace = _this$props4.onReplace,
- onSplit = _this$props4.onSplit,
- onSplitMiddle = _this$props4.__unstableOnSplitMiddle,
- multiline = _this$props4.multiline;
-
- if (!onReplace || !onSplit) {
- return;
- }
-
- var blocks = [];
-
- var _split = Object(external_this_wp_richText_["split"])(record),
- _split2 = Object(slicedToArray["a" /* default */])(_split, 2),
- before = _split2[0],
- after = _split2[1];
-
- var hasPastedBlocks = pastedBlocks.length > 0;
- var multilineTag = getMultilineTag(multiline); // Create a block with the content before the caret if there's no pasted
- // blocks, or if there are pasted blocks and the value is not empty.
- // We do not want a leading empty block on paste, but we do if split
- // with e.g. the enter key.
-
- if (!hasPastedBlocks || !Object(external_this_wp_richText_["isEmpty"])(before)) {
- blocks.push(onSplit(Object(external_this_wp_richText_["toHTMLString"])({
- value: before,
- multilineTag: multilineTag
- })));
- }
-
- if (hasPastedBlocks) {
- blocks.push.apply(blocks, Object(toConsumableArray["a" /* default */])(pastedBlocks));
- } else if (onSplitMiddle) {
- blocks.push(onSplitMiddle());
- } // If there's pasted blocks, append a block with the content after the
- // caret. Otherwise, do append and empty block if there is no
- // `onSplitMiddle` prop, but if there is and the content is empty, the
- // middle block is enough to set focus in.
-
-
- if (hasPastedBlocks || !onSplitMiddle || !Object(external_this_wp_richText_["isEmpty"])(after)) {
- blocks.push(onSplit(Object(external_this_wp_richText_["toHTMLString"])({
- value: after,
- multilineTag: multilineTag
- })));
- } // If there are pasted blocks, set the selection to the last one.
- // Otherwise, set the selection to the second block.
-
-
- var indexToSelect = hasPastedBlocks ? blocks.length - 1 : 1;
- onReplace(blocks, indexToSelect);
- }
- }, {
- key: "inputRule",
- value: function inputRule(value, valueToFormat) {
- var onReplace = this.props.onReplace;
-
- if (!onReplace) {
- return;
- }
-
- var start = value.start,
- text = value.text;
- var characterBefore = text.slice(start - 1, start); // The character right before the caret must be a plain space.
-
- if (characterBefore !== ' ') {
- return;
- }
-
- var trimmedTextBefore = text.slice(0, start).trim();
- var prefixTransforms = Object(external_this_wp_blocks_["getBlockTransforms"])('from').filter(function (_ref5) {
- var type = _ref5.type;
- return type === 'prefix';
- });
- var transformation = Object(external_this_wp_blocks_["findTransform"])(prefixTransforms, function (_ref6) {
- var prefix = _ref6.prefix;
- return trimmedTextBefore === prefix;
- });
-
- if (!transformation) {
- return;
- }
-
- var content = valueToFormat(Object(external_this_wp_richText_["slice"])(value, start, text.length));
- var block = transformation.transform(content);
- onReplace([block]);
- this.markAutomaticChange();
- }
- }, {
- key: "getAllowedFormats",
- value: function getAllowedFormats() {
- var _this$props5 = this.props,
- allowedFormats = _this$props5.allowedFormats,
- formattingControls = _this$props5.formattingControls;
-
- if (!allowedFormats && !formattingControls) {
- return;
- }
-
- if (allowedFormats) {
- return allowedFormats;
- }
-
- external_this_wp_deprecated_default()('wp.blockEditor.RichText formattingControls prop', {
- alternative: 'allowedFormats'
- });
- return formattingControls.map(function (name) {
- return "core/".concat(name);
- });
- }
- /**
- * Marks the last change as an automatic change at the next idle period to
- * ensure all selection changes have been recorded.
- */
-
- }, {
- key: "markAutomaticChange",
- value: function markAutomaticChange() {
- var _this2 = this;
-
- requestIdleCallback(function () {
- _this2.props.markAutomaticChange();
- });
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props6 = this.props,
- children = _this$props6.children,
- tagName = _this$props6.tagName,
- originalValue = _this$props6.value,
- originalOnChange = _this$props6.onChange,
- selectionStart = _this$props6.selectionStart,
- selectionEnd = _this$props6.selectionEnd,
- onSelectionChange = _this$props6.onSelectionChange,
- multiline = _this$props6.multiline,
- inlineToolbar = _this$props6.inlineToolbar,
- wrapperClassName = _this$props6.wrapperClassName,
- className = _this$props6.className,
- autocompleters = _this$props6.autocompleters,
- onReplace = _this$props6.onReplace,
- isCaretWithinFormattedText = _this$props6.isCaretWithinFormattedText,
- onEnterFormattedText = _this$props6.onEnterFormattedText,
- onExitFormattedText = _this$props6.onExitFormattedText,
- originalIsSelected = _this$props6.isSelected,
- onCreateUndoLevel = _this$props6.onCreateUndoLevel,
- markAutomaticChange = _this$props6.markAutomaticChange,
- didAutomaticChange = _this$props6.didAutomaticChange,
- undo = _this$props6.undo,
- placeholder = _this$props6.placeholder,
- keepPlaceholderOnFocus = _this$props6.keepPlaceholderOnFocus,
- allowedFormats = _this$props6.allowedFormats,
- withoutInteractiveFormatting = _this$props6.withoutInteractiveFormatting,
- onRemove = _this$props6.onRemove,
- onMerge = _this$props6.onMerge,
- onSplit = _this$props6.onSplit,
- canUserUseUnfilteredHTML = _this$props6.canUserUseUnfilteredHTML,
- clientId = _this$props6.clientId,
- identifier = _this$props6.identifier,
- instanceId = _this$props6.instanceId,
- start = _this$props6.start,
- reversed = _this$props6.reversed,
- experimentalProps = Object(objectWithoutProperties["a" /* default */])(_this$props6, ["children", "tagName", "value", "onChange", "selectionStart", "selectionEnd", "onSelectionChange", "multiline", "inlineToolbar", "wrapperClassName", "className", "autocompleters", "onReplace", "isCaretWithinFormattedText", "onEnterFormattedText", "onExitFormattedText", "isSelected", "onCreateUndoLevel", "markAutomaticChange", "didAutomaticChange", "undo", "placeholder", "keepPlaceholderOnFocus", "allowedFormats", "withoutInteractiveFormatting", "onRemove", "onMerge", "onSplit", "canUserUseUnfilteredHTML", "clientId", "identifier", "instanceId", "start", "reversed"]);
-
- var multilineTag = getMultilineTag(multiline);
- var adjustedAllowedFormats = this.getAllowedFormats();
- var hasFormats = !adjustedAllowedFormats || adjustedAllowedFormats.length > 0;
- var adjustedValue = originalValue;
- var adjustedOnChange = originalOnChange; // Handle deprecated format.
-
- if (Array.isArray(originalValue)) {
- adjustedValue = external_this_wp_blocks_["children"].toHTML(originalValue);
-
- adjustedOnChange = function adjustedOnChange(newValue) {
- return originalOnChange(external_this_wp_blocks_["children"].fromDOM(Object(external_this_wp_richText_["__unstableCreateElement"])(document, newValue).childNodes));
- };
- }
-
- var content = Object(external_this_wp_element_["createElement"])(external_this_wp_richText_["__experimentalRichText"], Object(esm_extends["a" /* default */])({}, experimentalProps, {
- value: adjustedValue,
- onChange: adjustedOnChange,
- selectionStart: selectionStart,
- selectionEnd: selectionEnd,
- onSelectionChange: onSelectionChange,
- tagName: tagName,
- className: classnames_default()(rich_text_classes, className, {
- 'is-selected': originalIsSelected,
- 'keep-placeholder-on-focus': keepPlaceholderOnFocus
- }),
- placeholder: placeholder,
- allowedFormats: adjustedAllowedFormats,
- withoutInteractiveFormatting: withoutInteractiveFormatting,
- onEnter: this.onEnter,
- onDelete: this.onDelete,
- onPaste: this.onPaste,
- __unstableIsSelected: originalIsSelected,
- __unstableInputRule: this.inputRule,
- __unstableMultilineTag: multilineTag,
- __unstableIsCaretWithinFormattedText: isCaretWithinFormattedText,
- __unstableOnEnterFormattedText: onEnterFormattedText,
- __unstableOnExitFormattedText: onExitFormattedText,
- __unstableOnCreateUndoLevel: onCreateUndoLevel,
- __unstableMarkAutomaticChange: this.markAutomaticChange,
- __unstableDidAutomaticChange: didAutomaticChange,
- __unstableUndo: undo
- }), function (_ref7) {
- var isSelected = _ref7.isSelected,
- value = _ref7.value,
- onChange = _ref7.onChange,
- Editable = _ref7.Editable;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, children && children({
- value: value,
- onChange: onChange
- }), isSelected && !inlineToolbar && hasFormats && Object(external_this_wp_element_["createElement"])(block_format_controls, null, Object(external_this_wp_element_["createElement"])(format_toolbar, null)), isSelected && inlineToolbar && hasFormats && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IsolatedEventContainer"], {
- className: "editor-rich-text__inline-toolbar block-editor-rich-text__inline-toolbar"
- }, Object(external_this_wp_element_["createElement"])(format_toolbar, null)), isSelected && Object(external_this_wp_element_["createElement"])(RemoveBrowserShortcuts, null), Object(external_this_wp_element_["createElement"])(autocomplete, {
- onReplace: onReplace,
- completers: autocompleters,
- record: value,
- onChange: onChange,
- isSelected: isSelected
- }, function (_ref8) {
- var listBoxId = _ref8.listBoxId,
- activeId = _ref8.activeId,
- onKeyDown = _ref8.onKeyDown;
- return Object(external_this_wp_element_["createElement"])(Editable, {
- "aria-autocomplete": listBoxId ? 'list' : undefined,
- "aria-owns": listBoxId,
- "aria-activedescendant": activeId,
- start: start,
- reversed: reversed,
- onKeyDown: onKeyDown
- });
- }));
- });
- return Object(external_this_wp_element_["createElement"])("div", {
- className: classnames_default()(wrapperClasses, wrapperClassName)
- }, content);
- }
- }]);
-
- return RichTextWrapper;
-}(external_this_wp_element_["Component"]);
-
-var RichTextContainer = Object(external_this_wp_compose_["compose"])([external_this_wp_compose_["withInstanceId"], context_withBlockEditContext(function (_ref9) {
- var clientId = _ref9.clientId;
- return {
- clientId: clientId
- };
-}), Object(external_this_wp_data_["withSelect"])(function (select, _ref10) {
- var clientId = _ref10.clientId,
- instanceId = _ref10.instanceId,
- _ref10$identifier = _ref10.identifier,
- identifier = _ref10$identifier === void 0 ? instanceId : _ref10$identifier,
- isSelected = _ref10.isSelected;
-
- var _select = select('core/block-editor'),
- isCaretWithinFormattedText = _select.isCaretWithinFormattedText,
- getSelectionStart = _select.getSelectionStart,
- getSelectionEnd = _select.getSelectionEnd,
- getSettings = _select.getSettings,
- didAutomaticChange = _select.didAutomaticChange;
-
- var selectionStart = getSelectionStart();
- var selectionEnd = getSelectionEnd();
-
- var _getSettings = getSettings(),
- __experimentalCanUserUseUnfilteredHTML = _getSettings.__experimentalCanUserUseUnfilteredHTML;
-
- if (isSelected === undefined) {
- isSelected = selectionStart.clientId === clientId && selectionStart.attributeKey === identifier;
- } else if (isSelected) {
- isSelected = selectionStart.clientId === clientId;
- }
-
- return {
- canUserUseUnfilteredHTML: __experimentalCanUserUseUnfilteredHTML,
- isCaretWithinFormattedText: isCaretWithinFormattedText(),
- selectionStart: isSelected ? selectionStart.offset : undefined,
- selectionEnd: isSelected ? selectionEnd.offset : undefined,
- isSelected: isSelected,
- didAutomaticChange: didAutomaticChange()
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref11) {
- var clientId = _ref11.clientId,
- instanceId = _ref11.instanceId,
- _ref11$identifier = _ref11.identifier,
- identifier = _ref11$identifier === void 0 ? instanceId : _ref11$identifier;
-
- var _dispatch = dispatch('core/block-editor'),
- __unstableMarkLastChangeAsPersistent = _dispatch.__unstableMarkLastChangeAsPersistent,
- enterFormattedText = _dispatch.enterFormattedText,
- exitFormattedText = _dispatch.exitFormattedText,
- selectionChange = _dispatch.selectionChange,
- __unstableMarkAutomaticChange = _dispatch.__unstableMarkAutomaticChange;
-
- var _dispatch2 = dispatch('core/editor'),
- undo = _dispatch2.undo;
-
- return {
- onCreateUndoLevel: __unstableMarkLastChangeAsPersistent,
- onEnterFormattedText: enterFormattedText,
- onExitFormattedText: exitFormattedText,
- onSelectionChange: function onSelectionChange(start, end) {
- selectionChange(clientId, identifier, start, end);
- },
- markAutomaticChange: __unstableMarkAutomaticChange,
- undo: undo
- };
-}), Object(external_this_wp_components_["withFilters"])('experimentalRichText')])(rich_text_RichTextWrapper);
-
-RichTextContainer.Content = function (_ref12) {
- var value = _ref12.value,
- Tag = _ref12.tagName,
- multiline = _ref12.multiline,
- props = Object(objectWithoutProperties["a" /* default */])(_ref12, ["value", "tagName", "multiline"]);
-
- // Handle deprecated `children` and `node` sources.
- if (Array.isArray(value)) {
- value = external_this_wp_blocks_["children"].toHTML(value);
- }
-
- var MultilineTag = getMultilineTag(multiline);
-
- if (!value && MultilineTag) {
- value = "<".concat(MultilineTag, "></").concat(MultilineTag, ">");
- }
-
- var content = Object(external_this_wp_element_["createElement"])(external_this_wp_element_["RawHTML"], null, value);
-
- if (Tag) {
- return Object(external_this_wp_element_["createElement"])(Tag, Object(external_lodash_["omit"])(props, ['format']), content);
- }
-
- return content;
-};
-
-RichTextContainer.isEmpty = function (value) {
- return !value || value.length === 0;
-};
-
-RichTextContainer.Content.defaultProps = {
- format: 'string',
- value: ''
-};
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/rich-text/README.md
- */
-
-/* harmony default export */ var rich_text = (RichTextContainer);
-
-
-
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/url-input/button.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var button_URLInputButton =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(URLInputButton, _Component);
-
- function URLInputButton() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, URLInputButton);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(URLInputButton).apply(this, arguments));
- _this.toggle = _this.toggle.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.submitLink = _this.submitLink.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.state = {
- expanded: false
- };
- return _this;
- }
-
- Object(createClass["a" /* default */])(URLInputButton, [{
- key: "toggle",
- value: function toggle() {
- this.setState({
- expanded: !this.state.expanded
- });
- }
- }, {
- key: "submitLink",
- value: function submitLink(event) {
- event.preventDefault();
- this.toggle();
- }
- }, {
- key: "render",
- value: function render() {
- var _this$props = this.props,
- url = _this$props.url,
- onChange = _this$props.onChange;
- var expanded = this.state.expanded;
- var buttonLabel = url ? Object(external_this_wp_i18n_["__"])('Edit link') : Object(external_this_wp_i18n_["__"])('Insert link');
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-url-input__button block-editor-url-input__button"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: "admin-links",
- label: buttonLabel,
- onClick: this.toggle,
- className: classnames_default()('components-toolbar__control', {
- 'is-active': url
- })
- }), expanded && Object(external_this_wp_element_["createElement"])("form", {
- className: "editor-url-input__button-modal block-editor-url-input__button-modal",
- onSubmit: this.submitLink
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-url-input__button-modal-line block-editor-url-input__button-modal-line"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- className: "editor-url-input__back block-editor-url-input__back",
- icon: "arrow-left-alt",
- label: Object(external_this_wp_i18n_["__"])('Close'),
- onClick: this.toggle
- }), Object(external_this_wp_element_["createElement"])(url_input, {
- value: url || '',
- onChange: onChange
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- icon: "editor-break",
- label: Object(external_this_wp_i18n_["__"])('Submit'),
- type: "submit"
- }))));
- }
- }]);
-
- return URLInputButton;
-}(external_this_wp_element_["Component"]);
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/url-input/README.md
- */
-
-
-/* harmony default export */ var url_input_button = (button_URLInputButton);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/block-settings-menu-first-item.js
-/**
- * WordPress dependencies
- */
-
-
-var block_settings_menu_first_item_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('__experimentalBlockSettingsMenuFirstItem'),
- __experimentalBlockSettingsMenuFirstItem = block_settings_menu_first_item_createSlotFill.Fill,
- block_settings_menu_first_item_Slot = block_settings_menu_first_item_createSlotFill.Slot;
-
-__experimentalBlockSettingsMenuFirstItem.Slot = block_settings_menu_first_item_Slot;
-/* harmony default export */ var block_settings_menu_first_item = (__experimentalBlockSettingsMenuFirstItem);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/block-settings-menu-plugins-extension.js
-/**
- * WordPress dependencies
- */
-
-
-var block_settings_menu_plugins_extension_createSlotFill = Object(external_this_wp_components_["createSlotFill"])('__experimentalBlockSettingsMenuPluginsExtension'),
- __experimentalBlockSettingsMenuPluginsExtension = block_settings_menu_plugins_extension_createSlotFill.Fill,
- block_settings_menu_plugins_extension_Slot = block_settings_menu_plugins_extension_createSlotFill.Slot;
-
-__experimentalBlockSettingsMenuPluginsExtension.Slot = block_settings_menu_plugins_extension_Slot;
-/* harmony default export */ var block_settings_menu_plugins_extension = (__experimentalBlockSettingsMenuPluginsExtension);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-actions/index.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function BlockActions(_ref) {
- var canDuplicate = _ref.canDuplicate,
- canInsertDefaultBlock = _ref.canInsertDefaultBlock,
- children = _ref.children,
- isLocked = _ref.isLocked,
- onDuplicate = _ref.onDuplicate,
- onGroup = _ref.onGroup,
- onInsertAfter = _ref.onInsertAfter,
- onInsertBefore = _ref.onInsertBefore,
- onRemove = _ref.onRemove,
- onUngroup = _ref.onUngroup;
- return children({
- canDuplicate: canDuplicate,
- canInsertDefaultBlock: canInsertDefaultBlock,
- isLocked: isLocked,
- onDuplicate: onDuplicate,
- onGroup: onGroup,
- onInsertAfter: onInsertAfter,
- onInsertBefore: onInsertBefore,
- onRemove: onRemove,
- onUngroup: onUngroup
- });
-}
-
-/* harmony default export */ var block_actions = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, props) {
- var _select = select('core/block-editor'),
- canInsertBlockType = _select.canInsertBlockType,
- getBlockRootClientId = _select.getBlockRootClientId,
- getBlocksByClientId = _select.getBlocksByClientId,
- getTemplateLock = _select.getTemplateLock;
-
- var _select2 = select('core/blocks'),
- getDefaultBlockName = _select2.getDefaultBlockName;
-
- var blocks = getBlocksByClientId(props.clientIds);
- var rootClientId = getBlockRootClientId(props.clientIds[0]);
- var canDuplicate = Object(external_lodash_["every"])(blocks, function (block) {
- return !!block && Object(external_this_wp_blocks_["hasBlockSupport"])(block.name, 'multiple', true) && canInsertBlockType(block.name, rootClientId);
- });
- var canInsertDefaultBlock = canInsertBlockType(getDefaultBlockName(), rootClientId);
- return {
- blocks: blocks,
- canDuplicate: canDuplicate,
- canInsertDefaultBlock: canInsertDefaultBlock,
- extraProps: props,
- isLocked: !!getTemplateLock(rootClientId),
- rootClientId: rootClientId
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, props, _ref2) {
- var select = _ref2.select;
- var clientIds = props.clientIds,
- rootClientId = props.rootClientId,
- blocks = props.blocks,
- isLocked = props.isLocked,
- canDuplicate = props.canDuplicate;
-
- var _dispatch = dispatch('core/block-editor'),
- insertBlocks = _dispatch.insertBlocks,
- multiSelect = _dispatch.multiSelect,
- removeBlocks = _dispatch.removeBlocks,
- insertDefaultBlock = _dispatch.insertDefaultBlock,
- replaceBlocks = _dispatch.replaceBlocks;
-
- return {
- onDuplicate: function onDuplicate() {
- if (!canDuplicate) {
- return;
- }
-
- var _select3 = select('core/block-editor'),
- getBlockIndex = _select3.getBlockIndex;
-
- var lastSelectedIndex = getBlockIndex(Object(external_lodash_["last"])(Object(external_lodash_["castArray"])(clientIds)), rootClientId);
- var clonedBlocks = blocks.map(function (block) {
- return Object(external_this_wp_blocks_["cloneBlock"])(block);
- });
- insertBlocks(clonedBlocks, lastSelectedIndex + 1, rootClientId);
-
- if (clonedBlocks.length > 1) {
- multiSelect(Object(external_lodash_["first"])(clonedBlocks).clientId, Object(external_lodash_["last"])(clonedBlocks).clientId);
- }
- },
- onRemove: function onRemove() {
- if (!isLocked) {
- removeBlocks(clientIds);
- }
- },
- onInsertBefore: function onInsertBefore() {
- if (!isLocked) {
- var _select4 = select('core/block-editor'),
- getBlockIndex = _select4.getBlockIndex;
-
- var firstSelectedIndex = getBlockIndex(Object(external_lodash_["first"])(Object(external_lodash_["castArray"])(clientIds)), rootClientId);
- insertDefaultBlock({}, rootClientId, firstSelectedIndex);
- }
- },
- onInsertAfter: function onInsertAfter() {
- if (!isLocked) {
- var _select5 = select('core/block-editor'),
- getBlockIndex = _select5.getBlockIndex;
-
- var lastSelectedIndex = getBlockIndex(Object(external_lodash_["last"])(Object(external_lodash_["castArray"])(clientIds)), rootClientId);
- insertDefaultBlock({}, rootClientId, lastSelectedIndex + 1);
- }
- },
- onGroup: function onGroup() {
- if (!blocks.length) {
- return;
- }
-
- var _select6 = select('core/blocks'),
- getGroupingBlockName = _select6.getGroupingBlockName;
-
- var groupingBlockName = getGroupingBlockName(); // Activate the `transform` on `core/group` which does the conversion
-
- var newBlocks = Object(external_this_wp_blocks_["switchToBlockType"])(blocks, groupingBlockName);
-
- if (!newBlocks) {
- return;
- }
-
- replaceBlocks(clientIds, newBlocks);
- },
- onUngroup: function onUngroup() {
- if (!blocks.length) {
- return;
- }
-
- var innerBlocks = blocks[0].innerBlocks;
-
- if (!innerBlocks.length) {
- return;
- }
-
- replaceBlocks(clientIds, innerBlocks);
- }
- };
-})])(BlockActions));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-editor-keyboard-shortcuts/index.js
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var preventDefault = function preventDefault(event) {
- event.preventDefault();
- return event;
-};
-
-var shortcuts = {
- duplicate: {
- raw: external_this_wp_keycodes_["rawShortcut"].primaryShift('d'),
- display: external_this_wp_keycodes_["displayShortcut"].primaryShift('d')
- },
- removeBlock: {
- raw: external_this_wp_keycodes_["rawShortcut"].access('z'),
- display: external_this_wp_keycodes_["displayShortcut"].access('z')
- },
- insertBefore: {
- raw: external_this_wp_keycodes_["rawShortcut"].primaryAlt('t'),
- display: external_this_wp_keycodes_["displayShortcut"].primaryAlt('t')
- },
- insertAfter: {
- raw: external_this_wp_keycodes_["rawShortcut"].primaryAlt('y'),
- display: external_this_wp_keycodes_["displayShortcut"].primaryAlt('y')
- }
-};
-
-var block_editor_keyboard_shortcuts_BlockEditorKeyboardShortcuts =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockEditorKeyboardShortcuts, _Component);
-
- function BlockEditorKeyboardShortcuts() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockEditorKeyboardShortcuts);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockEditorKeyboardShortcuts).apply(this, arguments));
- _this.selectAll = _this.selectAll.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.deleteSelectedBlocks = _this.deleteSelectedBlocks.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.clearMultiSelection = _this.clearMultiSelection.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockEditorKeyboardShortcuts, [{
- key: "selectAll",
- value: function selectAll(event) {
- var _this$props = this.props,
- rootBlocksClientIds = _this$props.rootBlocksClientIds,
- onMultiSelect = _this$props.onMultiSelect;
- event.preventDefault();
- onMultiSelect(Object(external_lodash_["first"])(rootBlocksClientIds), Object(external_lodash_["last"])(rootBlocksClientIds));
- }
- }, {
- key: "deleteSelectedBlocks",
- value: function deleteSelectedBlocks(event) {
- var _this$props2 = this.props,
- selectedBlockClientIds = _this$props2.selectedBlockClientIds,
- hasMultiSelection = _this$props2.hasMultiSelection,
- onRemove = _this$props2.onRemove,
- isLocked = _this$props2.isLocked;
-
- if (hasMultiSelection) {
- event.preventDefault();
-
- if (!isLocked) {
- onRemove(selectedBlockClientIds);
- }
- }
- }
- /**
- * Clears current multi-selection, if one exists.
- */
-
- }, {
- key: "clearMultiSelection",
- value: function clearMultiSelection() {
- var _this$props3 = this.props,
- hasMultiSelection = _this$props3.hasMultiSelection,
- clearSelectedBlock = _this$props3.clearSelectedBlock;
-
- if (hasMultiSelection) {
- clearSelectedBlock();
- window.getSelection().removeAllRanges();
- }
- }
- }, {
- key: "render",
- value: function render() {
- var _ref;
-
- var selectedBlockClientIds = this.props.selectedBlockClientIds;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], 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('a'), this.selectAll), Object(defineProperty["a" /* default */])(_ref, "backspace", this.deleteSelectedBlocks), Object(defineProperty["a" /* default */])(_ref, "del", this.deleteSelectedBlocks), Object(defineProperty["a" /* default */])(_ref, "escape", this.clearMultiSelection), _ref)
- }), selectedBlockClientIds.length > 0 && Object(external_this_wp_element_["createElement"])(block_actions, {
- clientIds: selectedBlockClientIds
- }, function (_ref2) {
- var _ref3;
-
- var onDuplicate = _ref2.onDuplicate,
- onRemove = _ref2.onRemove,
- onInsertAfter = _ref2.onInsertAfter,
- onInsertBefore = _ref2.onInsertBefore;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["KeyboardShortcuts"], {
- bindGlobal: true,
- shortcuts: (_ref3 = {}, Object(defineProperty["a" /* default */])(_ref3, shortcuts.duplicate.raw, Object(external_lodash_["flow"])(preventDefault, onDuplicate)), Object(defineProperty["a" /* default */])(_ref3, shortcuts.removeBlock.raw, Object(external_lodash_["flow"])(preventDefault, onRemove)), Object(defineProperty["a" /* default */])(_ref3, shortcuts.insertBefore.raw, Object(external_lodash_["flow"])(preventDefault, onInsertBefore)), Object(defineProperty["a" /* default */])(_ref3, shortcuts.insertAfter.raw, Object(external_lodash_["flow"])(preventDefault, onInsertAfter)), _ref3)
- });
- }));
- }
- }]);
-
- return BlockEditorKeyboardShortcuts;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_editor_keyboard_shortcuts = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getBlockOrder = _select.getBlockOrder,
- getSelectedBlockClientIds = _select.getSelectedBlockClientIds,
- hasMultiSelection = _select.hasMultiSelection,
- getBlockRootClientId = _select.getBlockRootClientId,
- getTemplateLock = _select.getTemplateLock;
-
- var selectedBlockClientIds = getSelectedBlockClientIds();
- return {
- rootBlocksClientIds: getBlockOrder(),
- hasMultiSelection: hasMultiSelection(),
- isLocked: Object(external_lodash_["some"])(selectedBlockClientIds, function (clientId) {
- return !!getTemplateLock(getBlockRootClientId(clientId));
- }),
- selectedBlockClientIds: selectedBlockClientIds
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- var _dispatch = dispatch('core/block-editor'),
- clearSelectedBlock = _dispatch.clearSelectedBlock,
- multiSelect = _dispatch.multiSelect,
- removeBlocks = _dispatch.removeBlocks;
-
- return {
- clearSelectedBlock: clearSelectedBlock,
- onMultiSelect: multiSelect,
- onRemove: removeBlocks
- };
-})])(block_editor_keyboard_shortcuts_BlockEditorKeyboardShortcuts));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/skip-to-selected-block/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var skip_to_selected_block_SkipToSelectedBlock = function SkipToSelectedBlock(_ref) {
- var selectedBlockClientId = _ref.selectedBlockClientId;
-
- var onClick = function onClick() {
- var selectedBlockElement = getBlockFocusableWrapper(selectedBlockClientId);
- selectedBlockElement.focus();
- };
-
- return selectedBlockClientId && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Button"], {
- isDefault: true,
- type: "button",
- className: "editor-skip-to-selected-block block-editor-skip-to-selected-block",
- onClick: onClick
- }, Object(external_this_wp_i18n_["__"])('Skip to the selected block'));
-};
-
-/* harmony default export */ var skip_to_selected_block = (Object(external_this_wp_data_["withSelect"])(function (select) {
- return {
- selectedBlockClientId: select('core/block-editor').getBlockSelectionStart()
- };
-})(skip_to_selected_block_SkipToSelectedBlock));
-
-// EXTERNAL MODULE: external {"this":["wp","tokenList"]}
-var external_this_wp_tokenList_ = __webpack_require__(143);
-var external_this_wp_tokenList_default = /*#__PURE__*/__webpack_require__.n(external_this_wp_tokenList_);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-styles/index.js
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Returns the active style from the given className.
- *
- * @param {Array} styles Block style variations.
- * @param {string} className Class name
- *
- * @return {Object?} The active style.
- */
-
-function getActiveStyle(styles, className) {
- var _iteratorNormalCompletion = true;
- var _didIteratorError = false;
- var _iteratorError = undefined;
-
- try {
- for (var _iterator = new external_this_wp_tokenList_default.a(className).values()[Symbol.iterator](), _step; !(_iteratorNormalCompletion = (_step = _iterator.next()).done); _iteratorNormalCompletion = true) {
- var style = _step.value;
-
- if (style.indexOf('is-style-') === -1) {
- continue;
- }
-
- var potentialStyleName = style.substring(9);
- var activeStyle = Object(external_lodash_["find"])(styles, {
- name: potentialStyleName
- });
-
- if (activeStyle) {
- return activeStyle;
- }
- }
- } catch (err) {
- _didIteratorError = true;
- _iteratorError = err;
- } finally {
- try {
- if (!_iteratorNormalCompletion && _iterator.return != null) {
- _iterator.return();
- }
- } finally {
- if (_didIteratorError) {
- throw _iteratorError;
- }
- }
- }
-
- return Object(external_lodash_["find"])(styles, 'isDefault');
-}
-/**
- * Replaces the active style in the block's className.
- *
- * @param {string} className Class name.
- * @param {Object?} activeStyle The replaced style.
- * @param {Object} newStyle The replacing style.
- *
- * @return {string} The updated className.
- */
-
-function replaceActiveStyle(className, activeStyle, newStyle) {
- var list = new external_this_wp_tokenList_default.a(className);
-
- if (activeStyle) {
- list.remove('is-style-' + activeStyle.name);
- }
-
- list.add('is-style-' + newStyle.name);
- return list.value;
-}
-
-function BlockStyles(_ref) {
- var styles = _ref.styles,
- className = _ref.className,
- onChangeClassName = _ref.onChangeClassName,
- type = _ref.type,
- block = _ref.block,
- _ref$onSwitch = _ref.onSwitch,
- onSwitch = _ref$onSwitch === void 0 ? external_lodash_["noop"] : _ref$onSwitch,
- _ref$onHoverClassName = _ref.onHoverClassName,
- onHoverClassName = _ref$onHoverClassName === void 0 ? external_lodash_["noop"] : _ref$onHoverClassName;
-
- if (!styles || styles.length === 0) {
- return null;
- }
-
- if (!type.styles && !Object(external_lodash_["find"])(styles, 'isDefault')) {
- styles = [{
- name: 'default',
- label: Object(external_this_wp_i18n_["_x"])('Default', 'block style'),
- isDefault: true
- }].concat(Object(toConsumableArray["a" /* default */])(styles));
- }
-
- var activeStyle = getActiveStyle(styles, className);
-
- function updateClassName(style) {
- var updatedClassName = replaceActiveStyle(className, activeStyle, style);
- onChangeClassName(updatedClassName);
- onHoverClassName(null);
- onSwitch();
- }
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-styles block-editor-block-styles"
- }, styles.map(function (style) {
- var styleClassName = replaceActiveStyle(className, activeStyle, style);
- return Object(external_this_wp_element_["createElement"])("div", {
- key: style.name,
- className: classnames_default()('editor-block-styles__item block-editor-block-styles__item', {
- 'is-active': activeStyle === style
- }),
- onClick: function onClick() {
- return updateClassName(style);
- },
- onKeyDown: function onKeyDown(event) {
- if (external_this_wp_keycodes_["ENTER"] === event.keyCode || external_this_wp_keycodes_["SPACE"] === event.keyCode) {
- event.preventDefault();
- updateClassName(style);
- }
- },
- onMouseEnter: function onMouseEnter() {
- return onHoverClassName(styleClassName);
- },
- onMouseLeave: function onMouseLeave() {
- return onHoverClassName(null);
- },
- role: "button",
- tabIndex: "0",
- "aria-label": style.label || style.name
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-styles__item-preview block-editor-block-styles__item-preview"
- }, Object(external_this_wp_element_["createElement"])(block_preview, {
- viewportWidth: 500,
- blocks: type.example ? Object(external_this_wp_blocks_["getBlockFromExample"])(block.name, {
- attributes: Object(objectSpread["a" /* default */])({}, type.example.attributes, {
- className: styleClassName
- }),
- innerBlocks: type.example.innerBlocks
- }) : Object(external_this_wp_blocks_["cloneBlock"])(block, {
- className: styleClassName
- })
- })), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-styles__item-label block-editor-block-styles__item-label"
- }, style.label || style.name));
- }));
-}
-
-/* harmony default export */ var block_styles = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var clientId = _ref2.clientId;
-
- var _select = select('core/block-editor'),
- getBlock = _select.getBlock;
-
- var _select2 = select('core/blocks'),
- getBlockStyles = _select2.getBlockStyles;
-
- var block = getBlock(clientId);
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(block.name);
- return {
- block: block,
- className: block.attributes.className || '',
- styles: getBlockStyles(block.name),
- type: blockType
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref3) {
- var clientId = _ref3.clientId;
- return {
- onChangeClassName: function onChangeClassName(newClassName) {
- dispatch('core/block-editor').updateBlockAttributes(clientId, {
- className: newClassName
- });
- }
- };
-})])(BlockStyles));
-
-// EXTERNAL MODULE: external {"this":["wp","wordcount"]}
-var external_this_wp_wordcount_ = __webpack_require__(97);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/multi-selection-inspector/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-function MultiSelectionInspector(_ref) {
- var blocks = _ref.blocks;
- var words = Object(external_this_wp_wordcount_["count"])(Object(external_this_wp_blocks_["serialize"])(blocks), 'words');
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-multi-selection-inspector__card block-editor-multi-selection-inspector__card"
- }, Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M3 5H1v16c0 1.1.9 2 2 2h16v-2H3V5zm18-4H7c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h14c1.1 0 2-.9 2-2V3c0-1.1-.9-2-2-2zm0 16H7V3h14v14z"
- })),
- showColors: true
- }), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-multi-selection-inspector__card-content block-editor-multi-selection-inspector__card-content"
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-multi-selection-inspector__card-title block-editor-multi-selection-inspector__card-title"
- },
- /* translators: %d: number of blocks */
- Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d block', '%d blocks', blocks.length), blocks.length)), Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-multi-selection-inspector__card-description block-editor-multi-selection-inspector__card-description"
- },
- /* translators: %d: number of words */
- Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('%d word', '%d words', words), words))));
-}
-
-/* harmony default export */ var multi_selection_inspector = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getMultiSelectedBlocks = _select.getMultiSelectedBlocks;
-
- return {
- blocks: getMultiSelectedBlocks()
- };
-})(MultiSelectionInspector));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/default-style-picker/index.js
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function DefaultStylePicker(_ref) {
- var blockName = _ref.blockName;
-
- var _useSelect = Object(external_this_wp_data_["useSelect"])(function (select) {
- var settings = select('core/block-editor').getSettings();
- var preferredStyleVariations = settings.__experimentalPreferredStyleVariations;
- return {
- preferredStyle: Object(external_lodash_["get"])(preferredStyleVariations, ['value', blockName]),
- onUpdatePreferredStyleVariations: Object(external_lodash_["get"])(preferredStyleVariations, ['onChange'], null),
- styles: select('core/blocks').getBlockStyles(blockName)
- };
- }, [blockName]),
- preferredStyle = _useSelect.preferredStyle,
- onUpdatePreferredStyleVariations = _useSelect.onUpdatePreferredStyleVariations,
- styles = _useSelect.styles;
-
- var selectOptions = Object(external_this_wp_element_["useMemo"])(function () {
- return [{
- label: Object(external_this_wp_i18n_["__"])('Not set'),
- value: ''
- }].concat(Object(toConsumableArray["a" /* default */])(styles.map(function (_ref2) {
- var label = _ref2.label,
- name = _ref2.name;
- return {
- label: label,
- value: name
- };
- })));
- }, [styles]);
- var selectOnChange = Object(external_this_wp_element_["useCallback"])(function (blockStyle) {
- onUpdatePreferredStyleVariations(blockName, blockStyle);
- }, [blockName, onUpdatePreferredStyleVariations]);
- return onUpdatePreferredStyleVariations && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SelectControl"], {
- options: selectOptions,
- value: preferredStyle || '',
- label: Object(external_this_wp_i18n_["__"])('Default Style'),
- onChange: selectOnChange
- });
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-inspector/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-
-var block_inspector_BlockInspector = function BlockInspector(_ref) {
- var blockType = _ref.blockType,
- count = _ref.count,
- hasBlockStyles = _ref.hasBlockStyles,
- selectedBlockClientId = _ref.selectedBlockClientId,
- selectedBlockName = _ref.selectedBlockName,
- _ref$showNoBlockSelec = _ref.showNoBlockSelectedMessage,
- showNoBlockSelectedMessage = _ref$showNoBlockSelec === void 0 ? true : _ref$showNoBlockSelec;
-
- if (count > 1) {
- return Object(external_this_wp_element_["createElement"])(multi_selection_inspector, null);
- }
-
- var isSelectedBlockUnregistered = selectedBlockName === Object(external_this_wp_blocks_["getUnregisteredTypeHandlerName"])();
- /*
- * If the selected block is of an unregistered type, avoid showing it as an actual selection
- * because we want the user to focus on the unregistered block warning, not block settings.
- */
-
- if (!blockType || !selectedBlockClientId || isSelectedBlockUnregistered) {
- if (showNoBlockSelectedMessage) {
- return Object(external_this_wp_element_["createElement"])("span", {
- className: "editor-block-inspector__no-blocks block-editor-block-inspector__no-blocks"
- }, Object(external_this_wp_i18n_["__"])('No block selected.'));
- }
-
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(block_card, {
- blockType: blockType
- }), hasBlockStyles && Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- title: Object(external_this_wp_i18n_["__"])('Styles'),
- initialOpen: false
- }, Object(external_this_wp_element_["createElement"])(block_styles, {
- clientId: selectedBlockClientId
- }), Object(external_this_wp_element_["createElement"])(DefaultStylePicker, {
- blockName: blockType.name
- }))), Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])(inspector_controls.Slot, null)), Object(external_this_wp_element_["createElement"])("div", null, Object(external_this_wp_element_["createElement"])(inspector_advanced_controls.Slot, null, function (fills) {
- return !Object(external_lodash_["isEmpty"])(fills) && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- className: "editor-block-inspector__advanced block-editor-block-inspector__advanced",
- title: Object(external_this_wp_i18n_["__"])('Advanced'),
- initialOpen: false
- }, fills);
- })), Object(external_this_wp_element_["createElement"])(skip_to_selected_block, {
- key: "back"
- }));
-};
-
-/* harmony default export */ var block_inspector = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSelectedBlockClientId = _select.getSelectedBlockClientId,
- getSelectedBlockCount = _select.getSelectedBlockCount,
- getBlockName = _select.getBlockName;
-
- var _select2 = select('core/blocks'),
- getBlockStyles = _select2.getBlockStyles;
-
- var selectedBlockClientId = getSelectedBlockClientId();
- var selectedBlockName = selectedBlockClientId && getBlockName(selectedBlockClientId);
- var blockType = selectedBlockClientId && Object(external_this_wp_blocks_["getBlockType"])(selectedBlockName);
- var blockStyles = selectedBlockClientId && getBlockStyles(selectedBlockName);
- return {
- count: getSelectedBlockCount(),
- hasBlockStyles: blockStyles && blockStyles.length > 0,
- selectedBlockName: selectedBlockName,
- selectedBlockClientId: selectedBlockClientId,
- blockType: blockType
- };
-})(block_inspector_BlockInspector));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-selection-clearer/index.js
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-var block_selection_clearer_BlockSelectionClearer =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockSelectionClearer, _Component);
-
- function BlockSelectionClearer() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockSelectionClearer);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockSelectionClearer).apply(this, arguments));
- _this.bindContainer = _this.bindContainer.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.clearSelectionIfFocusTarget = _this.clearSelectionIfFocusTarget.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockSelectionClearer, [{
- key: "bindContainer",
- value: function bindContainer(ref) {
- this.container = ref;
- }
- /**
- * Clears the selected block on focus if the container is the target of the
- * focus. This assumes no other descendents have received focus until event
- * has bubbled to the container.
- *
- * @param {FocusEvent} event Focus event.
- */
-
- }, {
- key: "clearSelectionIfFocusTarget",
- value: function clearSelectionIfFocusTarget(event) {
- var _this$props = this.props,
- hasSelectedBlock = _this$props.hasSelectedBlock,
- hasMultiSelection = _this$props.hasMultiSelection,
- clearSelectedBlock = _this$props.clearSelectedBlock;
- var hasSelection = hasSelectedBlock || hasMultiSelection;
-
- if (event.target === this.container && hasSelection) {
- clearSelectedBlock();
- }
- }
- }, {
- key: "render",
- value: function render() {
- return Object(external_this_wp_element_["createElement"])("div", Object(esm_extends["a" /* default */])({
- tabIndex: -1,
- onFocus: this.clearSelectionIfFocusTarget,
- ref: this.bindContainer
- }, Object(external_lodash_["omit"])(this.props, ['clearSelectedBlock', 'hasSelectedBlock', 'hasMultiSelection'])));
- }
- }]);
-
- return BlockSelectionClearer;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var block_selection_clearer = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- hasSelectedBlock = _select.hasSelectedBlock,
- hasMultiSelection = _select.hasMultiSelection;
-
- return {
- hasSelectedBlock: hasSelectedBlock(),
- hasMultiSelection: hasMultiSelection()
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- var _dispatch = dispatch('core/block-editor'),
- clearSelectedBlock = _dispatch.clearSelectedBlock;
-
- return {
- clearSelectedBlock: clearSelectedBlock
- };
-})])(block_selection_clearer_BlockSelectionClearer));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/block-mode-toggle.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-function BlockModeToggle(_ref) {
- var blockType = _ref.blockType,
- mode = _ref.mode,
- onToggleMode = _ref.onToggleMode,
- _ref$small = _ref.small,
- small = _ref$small === void 0 ? false : _ref$small,
- _ref$isCodeEditingEna = _ref.isCodeEditingEnabled,
- isCodeEditingEnabled = _ref$isCodeEditingEna === void 0 ? true : _ref$isCodeEditingEna;
-
- if (!Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'html', true) || !isCodeEditingEnabled) {
- return null;
- }
-
- var label = mode === 'visual' ? Object(external_this_wp_i18n_["__"])('Edit as HTML') : Object(external_this_wp_i18n_["__"])('Edit visually');
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- className: "editor-block-settings-menu__control block-editor-block-settings-menu__control",
- onClick: onToggleMode,
- icon: "html"
- }, !small && label);
-}
-/* harmony default export */ var block_mode_toggle = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select, _ref2) {
- var clientId = _ref2.clientId;
-
- var _select = select('core/block-editor'),
- getBlock = _select.getBlock,
- getBlockMode = _select.getBlockMode,
- getSettings = _select.getSettings;
-
- var block = getBlock(clientId);
- var isCodeEditingEnabled = getSettings().codeEditingEnabled;
- return {
- mode: getBlockMode(clientId),
- blockType: block ? Object(external_this_wp_blocks_["getBlockType"])(block.name) : null,
- isCodeEditingEnabled: isCodeEditingEnabled
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref3) {
- var _ref3$onToggle = _ref3.onToggle,
- onToggle = _ref3$onToggle === void 0 ? external_lodash_["noop"] : _ref3$onToggle,
- clientId = _ref3.clientId;
- return {
- onToggleMode: function onToggleMode() {
- dispatch('core/block-editor').toggleBlockMode(clientId);
- onToggle();
- }
- };
-})])(BlockModeToggle));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/block-convert-button.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-function BlockConvertButton(_ref) {
- var shouldRender = _ref.shouldRender,
- onClick = _ref.onClick,
- small = _ref.small;
-
- if (!shouldRender) {
- return null;
- }
-
- var label = Object(external_this_wp_i18n_["__"])('Convert to Blocks');
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- className: "editor-block-settings-menu__control block-editor-block-settings-menu__control",
- onClick: onClick,
- icon: "screenoptions"
- }, !small && label);
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/block-html-convert-button.js
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/* harmony default export */ var block_html_convert_button = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref) {
- var clientId = _ref.clientId;
- var block = select('core/block-editor').getBlock(clientId);
- return {
- block: block,
- shouldRender: block && block.name === 'core/html'
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref2) {
- var block = _ref2.block;
- return {
- onClick: function onClick() {
- return dispatch('core/block-editor').replaceBlocks(block.clientId, Object(external_this_wp_blocks_["rawHandler"])({
- HTML: Object(external_this_wp_blocks_["getBlockContent"])(block)
- }));
- }
- };
-}))(BlockConvertButton));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/block-unknown-convert-button.js
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/* harmony default export */ var block_unknown_convert_button = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref) {
- var clientId = _ref.clientId;
- var block = select('core/block-editor').getBlock(clientId);
- return {
- block: block,
- shouldRender: block && block.name === Object(external_this_wp_blocks_["getFreeformContentHandlerName"])()
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, _ref2) {
- var block = _ref2.block;
- return {
- onClick: function onClick() {
- return dispatch('core/block-editor').replaceBlocks(block.clientId, Object(external_this_wp_blocks_["rawHandler"])({
- HTML: Object(external_this_wp_blocks_["serialize"])(block)
- }));
- }
- };
-}))(BlockConvertButton));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-settings-menu/index.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-var block_settings_menu_POPOVER_PROPS = {
- className: 'block-editor-block-settings-menu__popover editor-block-settings-menu__popover',
- position: 'bottom right'
-};
-function BlockSettingsMenu(_ref) {
- var clientIds = _ref.clientIds;
- var blockClientIds = Object(external_lodash_["castArray"])(clientIds);
- var count = blockClientIds.length;
- var firstBlockClientId = blockClientIds[0];
- return Object(external_this_wp_element_["createElement"])(block_actions, {
- clientIds: clientIds
- }, function (_ref2) {
- var canDuplicate = _ref2.canDuplicate,
- canInsertDefaultBlock = _ref2.canInsertDefaultBlock,
- isLocked = _ref2.isLocked,
- onDuplicate = _ref2.onDuplicate,
- onInsertAfter = _ref2.onInsertAfter,
- onInsertBefore = _ref2.onInsertBefore,
- onRemove = _ref2.onRemove;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["DropdownMenu"], {
- icon: "ellipsis",
- label: Object(external_this_wp_i18n_["__"])('More options'),
- className: "block-editor-block-settings-menu",
- popoverProps: block_settings_menu_POPOVER_PROPS
- }, function (_ref3) {
- var onClose = _ref3.onClose;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuGroup"], null, Object(external_this_wp_element_["createElement"])(block_settings_menu_first_item.Slot, {
- fillProps: {
- onClose: onClose
- }
- }), count === 1 && Object(external_this_wp_element_["createElement"])(block_unknown_convert_button, {
- clientId: firstBlockClientId
- }), count === 1 && Object(external_this_wp_element_["createElement"])(block_html_convert_button, {
- clientId: firstBlockClientId
- }), canDuplicate && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- className: "editor-block-settings-menu__control block-editor-block-settings-menu__control",
- onClick: Object(external_lodash_["flow"])(onClose, onDuplicate),
- icon: "admin-page",
- shortcut: shortcuts.duplicate.display
- }, Object(external_this_wp_i18n_["__"])('Duplicate')), canInsertDefaultBlock && Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- className: "editor-block-settings-menu__control block-editor-block-settings-menu__control",
- onClick: Object(external_lodash_["flow"])(onClose, onInsertBefore),
- icon: "insert-before",
- shortcut: shortcuts.insertBefore.display
- }, Object(external_this_wp_i18n_["__"])('Insert Before')), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- className: "editor-block-settings-menu__control block-editor-block-settings-menu__control",
- onClick: Object(external_lodash_["flow"])(onClose, onInsertAfter),
- icon: "insert-after",
- shortcut: shortcuts.insertAfter.display
- }, Object(external_this_wp_i18n_["__"])('Insert After'))), count === 1 && Object(external_this_wp_element_["createElement"])(block_mode_toggle, {
- clientId: firstBlockClientId,
- onToggle: onClose
- }), Object(external_this_wp_element_["createElement"])(block_settings_menu_plugins_extension.Slot, {
- fillProps: {
- clientIds: clientIds,
- onClose: onClose
- }
- })), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuGroup"], null, !isLocked && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["MenuItem"], {
- className: "editor-block-settings-menu__control block-editor-block-settings-menu__control",
- onClick: Object(external_lodash_["flow"])(onClose, onRemove),
- icon: "trash",
- shortcut: shortcuts.removeBlock.display
- }, Object(external_this_wp_i18n_["_n"])('Remove Block', 'Remove Blocks', count))));
- }));
- });
-}
-/* harmony default export */ var block_settings_menu = (BlockSettingsMenu);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-switcher/index.js
-
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-var block_switcher_BlockSwitcher =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(BlockSwitcher, _Component);
-
- function BlockSwitcher() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, BlockSwitcher);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(BlockSwitcher).apply(this, arguments));
- _this.state = {
- hoveredClassName: null
- };
- _this.onHoverClassName = _this.onHoverClassName.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(BlockSwitcher, [{
- key: "onHoverClassName",
- value: function onHoverClassName(className) {
- this.setState({
- hoveredClassName: className
- });
- }
- }, {
- key: "render",
- value: function render() {
- var _this2 = this;
-
- var _this$props = this.props,
- blocks = _this$props.blocks,
- onTransform = _this$props.onTransform,
- inserterItems = _this$props.inserterItems,
- hasBlockStyles = _this$props.hasBlockStyles;
- var hoveredClassName = this.state.hoveredClassName;
-
- if (!blocks || !blocks.length) {
- return null;
- }
-
- var hoveredBlock = hoveredClassName ? blocks[0] : null;
- var hoveredBlockType = hoveredClassName ? Object(external_this_wp_blocks_["getBlockType"])(hoveredBlock.name) : null;
- var itemsByName = Object(external_lodash_["mapKeys"])(inserterItems, function (_ref) {
- var name = _ref.name;
- return name;
- });
- var possibleBlockTransformations = Object(external_lodash_["orderBy"])(Object(external_lodash_["filter"])(Object(external_this_wp_blocks_["getPossibleBlockTransformations"])(blocks), function (block) {
- return block && !!itemsByName[block.name];
- }), function (block) {
- return itemsByName[block.name].frecency;
- }, 'desc'); // When selection consists of blocks of multiple types, display an
- // appropriate icon to communicate the non-uniformity.
-
- var isSelectionOfSameType = Object(external_lodash_["uniq"])(Object(external_lodash_["map"])(blocks, 'name')).length === 1;
- var icon;
-
- if (isSelectionOfSameType) {
- var sourceBlockName = blocks[0].name;
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(sourceBlockName);
- icon = blockType.icon;
- } else {
- icon = 'layout';
- }
-
- if (!hasBlockStyles && !possibleBlockTransformations.length) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- disabled: true,
- className: "editor-block-switcher__no-switcher-icon block-editor-block-switcher__no-switcher-icon",
- label: Object(external_this_wp_i18n_["__"])('Block icon'),
- icon: Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: icon,
- showColors: true
- })
- }));
- }
-
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Dropdown"], {
- position: "bottom right",
- className: "editor-block-switcher block-editor-block-switcher",
- contentClassName: "editor-block-switcher__popover block-editor-block-switcher__popover",
- renderToggle: function renderToggle(_ref2) {
- var onToggle = _ref2.onToggle,
- isOpen = _ref2.isOpen;
-
- var openOnArrowDown = function openOnArrowDown(event) {
- if (!isOpen && event.keyCode === external_this_wp_keycodes_["DOWN"]) {
- event.preventDefault();
- event.stopPropagation();
- onToggle();
- }
- };
-
- var label = 1 === blocks.length ? Object(external_this_wp_i18n_["__"])('Change block type or style') : Object(external_this_wp_i18n_["sprintf"])(Object(external_this_wp_i18n_["_n"])('Change type of %d block', 'Change type of %d blocks', blocks.length), blocks.length);
- return Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Toolbar"], null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["IconButton"], {
- className: "editor-block-switcher__toggle block-editor-block-switcher__toggle",
- onClick: onToggle,
- "aria-haspopup": "true",
- "aria-expanded": isOpen,
- label: label,
- tooltip: label,
- onKeyDown: openOnArrowDown,
- icon: Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(BlockIcon, {
- icon: icon,
- showColors: true
- }), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["SVG"], {
- className: "editor-block-switcher__transform block-editor-block-switcher__transform",
- xmlns: "http://www.w3.org/2000/svg",
- viewBox: "0 0 24 24"
- }, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["Path"], {
- d: "M6.5 8.9c.6-.6 1.4-.9 2.2-.9h6.9l-1.3 1.3 1.4 1.4L19.4 7l-3.7-3.7-1.4 1.4L15.6 6H8.7c-1.4 0-2.6.5-3.6 1.5l-2.8 2.8 1.4 1.4 2.8-2.8zm13.8 2.4l-2.8 2.8c-.6.6-1.3.9-2.1.9h-7l1.3-1.3-1.4-1.4L4.6 16l3.7 3.7 1.4-1.4L8.4 17h6.9c1.3 0 2.6-.5 3.5-1.5l2.8-2.8-1.3-1.4z"
- })))
- }));
- },
- renderContent: function renderContent(_ref3) {
- var onClose = _ref3.onClose;
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, (hasBlockStyles || possibleBlockTransformations.length !== 0) && Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-switcher__container"
- }, hasBlockStyles && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- title: Object(external_this_wp_i18n_["__"])('Block Styles'),
- initialOpen: true
- }, Object(external_this_wp_element_["createElement"])(block_styles, {
- clientId: blocks[0].clientId,
- onSwitch: onClose,
- onHoverClassName: _this2.onHoverClassName
- })), possibleBlockTransformations.length !== 0 && Object(external_this_wp_element_["createElement"])(external_this_wp_components_["PanelBody"], {
- title: Object(external_this_wp_i18n_["__"])('Transform To:'),
- initialOpen: true
- }, Object(external_this_wp_element_["createElement"])(block_types_list, {
- items: possibleBlockTransformations.map(function (destinationBlockType) {
- return {
- id: destinationBlockType.name,
- icon: destinationBlockType.icon,
- title: destinationBlockType.title
- };
- }),
- onSelect: function onSelect(item) {
- onTransform(blocks, item.id);
- onClose();
- }
- }))), hoveredClassName !== null && Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-switcher__preview"
- }, Object(external_this_wp_element_["createElement"])("div", {
- className: "block-editor-block-switcher__preview-title"
- }, Object(external_this_wp_i18n_["__"])('Preview')), Object(external_this_wp_element_["createElement"])(block_preview, {
- viewportWidth: 500,
- blocks: hoveredBlockType.example ? Object(external_this_wp_blocks_["getBlockFromExample"])(hoveredBlock.name, {
- attributes: Object(objectSpread["a" /* default */])({}, hoveredBlockType.example.attributes, {
- className: hoveredClassName
- }),
- innerBlocks: hoveredBlockType.example.innerBlocks
- }) : Object(external_this_wp_blocks_["cloneBlock"])(hoveredBlock, {
- className: hoveredClassName
- })
- })));
- }
- });
- }
- }]);
-
- return BlockSwitcher;
-}(external_this_wp_element_["Component"]);
-/* harmony default export */ var block_switcher = (Object(external_this_wp_compose_["compose"])(Object(external_this_wp_data_["withSelect"])(function (select, _ref4) {
- var clientIds = _ref4.clientIds;
-
- var _select = select('core/block-editor'),
- getBlocksByClientId = _select.getBlocksByClientId,
- getBlockRootClientId = _select.getBlockRootClientId,
- getInserterItems = _select.getInserterItems;
-
- var _select2 = select('core/blocks'),
- getBlockStyles = _select2.getBlockStyles;
-
- var rootClientId = getBlockRootClientId(Object(external_lodash_["first"])(Object(external_lodash_["castArray"])(clientIds)));
- var blocks = getBlocksByClientId(clientIds);
- var firstBlock = blocks && blocks.length === 1 ? blocks[0] : null;
- var styles = firstBlock && getBlockStyles(firstBlock.name);
- return {
- blocks: blocks,
- inserterItems: getInserterItems(rootClientId),
- hasBlockStyles: styles && styles.length > 0
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps) {
- return {
- onTransform: function onTransform(blocks, name) {
- dispatch('core/block-editor').replaceBlocks(ownProps.clientIds, Object(external_this_wp_blocks_["switchToBlockType"])(blocks, name));
- }
- };
-}))(block_switcher_BlockSwitcher));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-switcher/multi-blocks-switcher.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-function MultiBlocksSwitcher(_ref) {
- var isMultiBlockSelection = _ref.isMultiBlockSelection,
- selectedBlockClientIds = _ref.selectedBlockClientIds;
-
- if (!isMultiBlockSelection) {
- return null;
- }
-
- return Object(external_this_wp_element_["createElement"])(block_switcher, {
- key: "switcher",
- clientIds: selectedBlockClientIds
- });
-}
-/* harmony default export */ var multi_blocks_switcher = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var selectedBlockClientIds = select('core/block-editor').getMultiSelectedBlockClientIds();
- return {
- isMultiBlockSelection: selectedBlockClientIds.length > 1,
- selectedBlockClientIds: selectedBlockClientIds
- };
-})(MultiBlocksSwitcher));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/block-toolbar/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-function BlockToolbar(_ref) {
- var blockClientIds = _ref.blockClientIds,
- isValid = _ref.isValid,
- mode = _ref.mode;
-
- if (blockClientIds.length === 0) {
- return null;
- }
-
- if (blockClientIds.length > 1) {
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-toolbar block-editor-block-toolbar"
- }, Object(external_this_wp_element_["createElement"])(multi_blocks_switcher, null), Object(external_this_wp_element_["createElement"])(block_settings_menu, {
- clientIds: blockClientIds
- }));
- }
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-block-toolbar block-editor-block-toolbar"
- }, mode === 'visual' && isValid && Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(block_switcher, {
- clientIds: blockClientIds
- }), Object(external_this_wp_element_["createElement"])(block_controls.Slot, {
- bubblesVirtually: true,
- className: "block-editor-block-toolbar__slot"
- }), Object(external_this_wp_element_["createElement"])(block_format_controls.Slot, {
- bubblesVirtually: true,
- className: "block-editor-block-toolbar__slot"
- })), Object(external_this_wp_element_["createElement"])(block_settings_menu, {
- clientIds: blockClientIds
- }));
-}
-
-/* harmony default export */ var block_toolbar = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getBlockMode = _select.getBlockMode,
- getSelectedBlockClientIds = _select.getSelectedBlockClientIds,
- isBlockValid = _select.isBlockValid;
-
- var blockClientIds = getSelectedBlockClientIds();
- return {
- blockClientIds: blockClientIds,
- isValid: blockClientIds.length === 1 ? isBlockValid(blockClientIds[0]) : null,
- mode: blockClientIds.length === 1 ? getBlockMode(blockClientIds[0]) : null
- };
-})(BlockToolbar));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/copy-handler/index.js
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-function CopyHandler(_ref) {
- var children = _ref.children,
- onCopy = _ref.onCopy,
- onCut = _ref.onCut;
- return Object(external_this_wp_element_["createElement"])("div", {
- onCopy: onCopy,
- onCut: onCut
- }, children);
-}
-
-/* harmony default export */ var copy_handler = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withDispatch"])(function (dispatch, ownProps, _ref2) {
- var select = _ref2.select;
-
- var _select = select('core/block-editor'),
- getBlocksByClientId = _select.getBlocksByClientId,
- getSelectedBlockClientIds = _select.getSelectedBlockClientIds,
- hasMultiSelection = _select.hasMultiSelection;
-
- var _dispatch = dispatch('core/block-editor'),
- removeBlocks = _dispatch.removeBlocks;
-
- var onCopy = function onCopy(event) {
- var selectedBlockClientIds = getSelectedBlockClientIds();
-
- if (selectedBlockClientIds.length === 0) {
- return;
- } // Let native copy behaviour take over in input fields.
-
-
- if (!hasMultiSelection() && Object(external_this_wp_dom_["documentHasSelection"])()) {
- return;
- }
-
- var serialized = Object(external_this_wp_blocks_["serialize"])(getBlocksByClientId(selectedBlockClientIds));
- event.clipboardData.setData('text/plain', serialized);
- event.clipboardData.setData('text/html', serialized);
- event.preventDefault();
- };
-
- return {
- onCopy: onCopy,
- onCut: function onCut(event) {
- onCopy(event);
-
- if (hasMultiSelection()) {
- var selectedBlockClientIds = getSelectedBlockClientIds();
- removeBlocks(selectedBlockClientIds);
- }
- }
- };
-})])(CopyHandler));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/multi-select-scroll-into-view/index.js
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-var multi_select_scroll_into_view_MultiSelectScrollIntoView =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(MultiSelectScrollIntoView, _Component);
-
- function MultiSelectScrollIntoView() {
- Object(classCallCheck["a" /* default */])(this, MultiSelectScrollIntoView);
-
- return Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(MultiSelectScrollIntoView).apply(this, arguments));
- }
-
- Object(createClass["a" /* default */])(MultiSelectScrollIntoView, [{
- key: "componentDidUpdate",
- value: function componentDidUpdate() {
- // Relies on expectation that `componentDidUpdate` will only be called
- // if value of `extentClientId` changes.
- this.scrollIntoView();
- }
- /**
- * Ensures that if a multi-selection exists, the extent of the selection is
- * visible within the nearest scrollable container.
- */
-
- }, {
- key: "scrollIntoView",
- value: function scrollIntoView() {
- var extentClientId = this.props.extentClientId;
-
- if (!extentClientId) {
- return;
- }
-
- var extentNode = getBlockDOMNode(extentClientId);
-
- if (!extentNode) {
- return;
- }
-
- var scrollContainer = Object(external_this_wp_dom_["getScrollContainer"])(extentNode); // If there's no scroll container, it follows that there's no scrollbar
- // and thus there's no need to try to scroll into view.
-
- if (!scrollContainer) {
- return;
- }
-
- lib_default()(extentNode, scrollContainer, {
- onlyScrollIfNeeded: true
- });
- }
- }, {
- key: "render",
- value: function render() {
- return null;
- }
- }]);
-
- return MultiSelectScrollIntoView;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var multi_select_scroll_into_view = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getLastMultiSelectedBlockClientId = _select.getLastMultiSelectedBlockClientId;
-
- return {
- extentClientId: getLastMultiSelectedBlockClientId()
- };
-})(multi_select_scroll_into_view_MultiSelectScrollIntoView));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/observe-typing/index.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Set of key codes upon which typing is to be initiated on a keydown event.
- *
- * @type {number[]}
- */
-
-var KEY_DOWN_ELIGIBLE_KEY_CODES = [external_this_wp_keycodes_["UP"], external_this_wp_keycodes_["RIGHT"], external_this_wp_keycodes_["DOWN"], external_this_wp_keycodes_["LEFT"], external_this_wp_keycodes_["ENTER"], external_this_wp_keycodes_["BACKSPACE"]];
-/**
- * Returns true if a given keydown event can be inferred as intent to start
- * typing, or false otherwise. A keydown is considered eligible if it is a
- * text navigation without shift active.
- *
- * @param {KeyboardEvent} event Keydown event to test.
- *
- * @return {boolean} Whether event is eligible to start typing.
- */
-
-function isKeyDownEligibleForStartTyping(event) {
- var keyCode = event.keyCode,
- shiftKey = event.shiftKey;
- return !shiftKey && Object(external_lodash_["includes"])(KEY_DOWN_ELIGIBLE_KEY_CODES, keyCode);
-}
-
-var observe_typing_ObserveTyping =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(ObserveTyping, _Component);
-
- function ObserveTyping() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, ObserveTyping);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(ObserveTyping).apply(this, arguments));
- _this.stopTypingOnSelectionUncollapse = _this.stopTypingOnSelectionUncollapse.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.stopTypingOnMouseMove = _this.stopTypingOnMouseMove.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.startTypingInTextField = _this.startTypingInTextField.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.stopTypingOnNonTextField = _this.stopTypingOnNonTextField.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.stopTypingOnEscapeKey = _this.stopTypingOnEscapeKey.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onKeyDown = Object(external_lodash_["over"])([_this.startTypingInTextField, _this.stopTypingOnEscapeKey]);
- _this.lastMouseMove = null;
- return _this;
- }
-
- Object(createClass["a" /* default */])(ObserveTyping, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- this.toggleEventBindings(this.props.isTyping);
- }
- }, {
- key: "componentDidUpdate",
- value: function componentDidUpdate(prevProps) {
- if (this.props.isTyping !== prevProps.isTyping) {
- this.toggleEventBindings(this.props.isTyping);
- }
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- this.toggleEventBindings(false);
- }
- /**
- * Bind or unbind events to the document when typing has started or stopped
- * respectively, or when component has become unmounted.
- *
- * @param {boolean} isBound Whether event bindings should be applied.
- */
-
- }, {
- key: "toggleEventBindings",
- value: function toggleEventBindings(isBound) {
- var bindFn = isBound ? 'addEventListener' : 'removeEventListener';
- document[bindFn]('selectionchange', this.stopTypingOnSelectionUncollapse);
- document[bindFn]('mousemove', this.stopTypingOnMouseMove);
- }
- /**
- * On mouse move, unset typing flag if user has moved cursor.
- *
- * @param {MouseEvent} event Mousemove event.
- */
-
- }, {
- key: "stopTypingOnMouseMove",
- value: function stopTypingOnMouseMove(event) {
- var clientX = event.clientX,
- clientY = event.clientY; // We need to check that the mouse really moved because Safari triggers
- // mousemove events when shift or ctrl are pressed.
-
- if (this.lastMouseMove) {
- var _this$lastMouseMove = this.lastMouseMove,
- lastClientX = _this$lastMouseMove.clientX,
- lastClientY = _this$lastMouseMove.clientY;
-
- if (lastClientX !== clientX || lastClientY !== clientY) {
- this.props.onStopTyping();
- }
- }
-
- this.lastMouseMove = {
- clientX: clientX,
- clientY: clientY
- };
- }
- /**
- * On selection change, unset typing flag if user has made an uncollapsed
- * (shift) selection.
- */
-
- }, {
- key: "stopTypingOnSelectionUncollapse",
- value: function stopTypingOnSelectionUncollapse() {
- var selection = window.getSelection();
- var isCollapsed = selection.rangeCount > 0 && selection.getRangeAt(0).collapsed;
-
- if (!isCollapsed) {
- this.props.onStopTyping();
- }
- }
- /**
- * Unsets typing flag if user presses Escape while typing flag is active.
- *
- * @param {KeyboardEvent} event Keypress or keydown event to interpret.
- */
-
- }, {
- key: "stopTypingOnEscapeKey",
- value: function stopTypingOnEscapeKey(event) {
- if (this.props.isTyping && event.keyCode === external_this_wp_keycodes_["ESCAPE"]) {
- this.props.onStopTyping();
- }
- }
- /**
- * Handles a keypress or keydown event to infer intention to start typing.
- *
- * @param {KeyboardEvent} event Keypress or keydown event to interpret.
- */
-
- }, {
- key: "startTypingInTextField",
- value: function startTypingInTextField(event) {
- var _this$props = this.props,
- isTyping = _this$props.isTyping,
- onStartTyping = _this$props.onStartTyping;
- var type = event.type,
- target = event.target; // Abort early if already typing, or key press is incurred outside a
- // text field (e.g. arrow-ing through toolbar buttons).
- // Ignore typing in a block toolbar
-
- if (isTyping || !Object(external_this_wp_dom_["isTextField"])(target) || target.closest('.block-editor-block-toolbar')) {
- return;
- } // Special-case keydown because certain keys do not emit a keypress
- // event. Conversely avoid keydown as the canonical event since there
- // are many keydown which are explicitly not targeted for typing.
-
-
- if (type === 'keydown' && !isKeyDownEligibleForStartTyping(event)) {
- return;
- }
-
- onStartTyping();
- }
- /**
- * Stops typing when focus transitions to a non-text field element.
- *
- * @param {FocusEvent} event Focus event.
- */
-
- }, {
- key: "stopTypingOnNonTextField",
- value: function stopTypingOnNonTextField(event) {
- var _this2 = this;
-
- event.persist(); // Since focus to a non-text field via arrow key will trigger before
- // the keydown event, wait until after current stack before evaluating
- // whether typing is to be stopped. Otherwise, typing will re-start.
-
- this.props.setTimeout(function () {
- var _this2$props = _this2.props,
- isTyping = _this2$props.isTyping,
- onStopTyping = _this2$props.onStopTyping;
- var target = event.target;
-
- if (isTyping && !Object(external_this_wp_dom_["isTextField"])(target)) {
- onStopTyping();
- }
- });
- }
- }, {
- key: "render",
- value: function render() {
- var children = this.props.children; // Disable reason: This component is responsible for capturing bubbled
- // keyboard events which are interpreted as typing intent.
-
- /* eslint-disable jsx-a11y/no-static-element-interactions */
-
- return Object(external_this_wp_element_["createElement"])("div", {
- onFocus: this.stopTypingOnNonTextField,
- onKeyPress: this.startTypingInTextField,
- onKeyDown: this.onKeyDown
- }, children);
- /* eslint-enable jsx-a11y/no-static-element-interactions */
- }
- }]);
-
- return ObserveTyping;
-}(external_this_wp_element_["Component"]);
-/**
- * @see https://github.com/WordPress/gutenberg/blob/master/packages/block-editor/src/components/observe-typing/README.md
- */
-
-
-/* harmony default export */ var observe_typing = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- isTyping = _select.isTyping;
-
- return {
- isTyping: isTyping()
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- var _dispatch = dispatch('core/block-editor'),
- startTyping = _dispatch.startTyping,
- stopTyping = _dispatch.stopTyping;
-
- return {
- onStartTyping: startTyping,
- onStopTyping: stopTyping
- };
-}), external_this_wp_compose_["withSafeTimeout"]])(observe_typing_ObserveTyping));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/preserve-scroll-in-reorder/index.js
-/**
- * WordPress dependencies
- */
-
-function PreserveScrollInReorder() {
- external_this_wp_deprecated_default()('PreserveScrollInReorder component', {
- hint: 'This behavior is now built-in the block list'
- });
- return null;
-}
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/typewriter/index.js
-
-
-
-
-
-
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-var isIE = window.navigator.userAgent.indexOf('Trident') !== -1;
-var arrowKeyCodes = new Set([external_this_wp_keycodes_["UP"], external_this_wp_keycodes_["DOWN"], external_this_wp_keycodes_["LEFT"], external_this_wp_keycodes_["RIGHT"]]);
-var initialTriggerPercentage = 0.75;
-
-var typewriter_Typewriter =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(Typewriter, _Component);
-
- function Typewriter() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, Typewriter);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(Typewriter).apply(this, arguments));
- _this.ref = Object(external_this_wp_element_["createRef"])();
- _this.onKeyDown = _this.onKeyDown.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.addSelectionChangeListener = _this.addSelectionChangeListener.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.computeCaretRectOnSelectionChange = _this.computeCaretRectOnSelectionChange.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.maintainCaretPosition = _this.maintainCaretPosition.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.computeCaretRect = _this.computeCaretRect.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onScrollResize = _this.onScrollResize.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.isSelectionEligibleForScroll = _this.isSelectionEligibleForScroll.bind(Object(assertThisInitialized["a" /* default */])(_this));
- return _this;
- }
-
- Object(createClass["a" /* default */])(Typewriter, [{
- key: "componentDidMount",
- value: function componentDidMount() {
- // When the user scrolls or resizes, the scroll position should be
- // reset.
- window.addEventListener('scroll', this.onScrollResize, true);
- window.addEventListener('resize', this.onScrollResize, true);
- }
- }, {
- key: "componentWillUnmount",
- value: function componentWillUnmount() {
- window.removeEventListener('scroll', this.onScrollResize, true);
- window.removeEventListener('resize', this.onScrollResize, true);
- document.removeEventListener('selectionchange', this.computeCaretRectOnSelectionChange);
-
- if (this.onScrollResize.rafId) {
- window.cancelAnimationFrame(this.onScrollResize.rafId);
- }
-
- if (this.onKeyDown.rafId) {
- window.cancelAnimationFrame(this.onKeyDown.rafId);
- }
- }
- /**
- * Resets the scroll position to be maintained.
- */
-
- }, {
- key: "computeCaretRect",
- value: function computeCaretRect() {
- if (this.isSelectionEligibleForScroll()) {
- this.caretRect = Object(external_this_wp_dom_["computeCaretRect"])();
- }
- }
- /**
- * Resets the scroll position to be maintained during a `selectionchange`
- * event. Also removes the listener, so it acts as a one-time listener.
- */
-
- }, {
- key: "computeCaretRectOnSelectionChange",
- value: function computeCaretRectOnSelectionChange() {
- document.removeEventListener('selectionchange', this.computeCaretRectOnSelectionChange);
- this.computeCaretRect();
- }
- }, {
- key: "onScrollResize",
- value: function onScrollResize() {
- var _this2 = this;
-
- if (this.onScrollResize.rafId) {
- return;
- }
-
- this.onScrollResize.rafId = window.requestAnimationFrame(function () {
- _this2.computeCaretRect();
-
- delete _this2.onScrollResize.rafId;
- });
- }
- /**
- * Checks if the current situation is elegible for scroll:
- * - There should be one and only one block selected.
- * - The component must contain the selection.
- * - The active element must be contenteditable.
- */
-
- }, {
- key: "isSelectionEligibleForScroll",
- value: function isSelectionEligibleForScroll() {
- return this.props.selectedBlockClientId && this.ref.current.contains(document.activeElement) && document.activeElement.isContentEditable;
- }
- }, {
- key: "isLastEditableNode",
- value: function isLastEditableNode() {
- var editableNodes = this.ref.current.querySelectorAll('[contenteditable="true"]');
- var lastEditableNode = editableNodes[editableNodes.length - 1];
- return lastEditableNode === document.activeElement;
- }
- /**
- * Maintains the scroll position after a selection change caused by a
- * keyboard event.
- *
- * @param {SyntheticEvent} event Synthetic keyboard event.
- */
-
- }, {
- key: "maintainCaretPosition",
- value: function maintainCaretPosition(_ref) {
- var keyCode = _ref.keyCode;
-
- if (!this.isSelectionEligibleForScroll()) {
- return;
- }
-
- var currentCaretRect = Object(external_this_wp_dom_["computeCaretRect"])();
-
- if (!currentCaretRect) {
- return;
- } // If for some reason there is no position set to be scrolled to, let
- // this be the position to be scrolled to in the future.
-
-
- if (!this.caretRect) {
- this.caretRect = currentCaretRect;
- return;
- } // Even though enabling the typewriter effect for arrow keys results in
- // a pleasant experience, it may not be the case for everyone, so, for
- // now, let's disable it.
-
-
- if (arrowKeyCodes.has(keyCode)) {
- // Reset the caret position to maintain.
- this.caretRect = currentCaretRect;
- return;
- }
-
- var diff = currentCaretRect.top - this.caretRect.top;
-
- if (diff === 0) {
- return;
- }
-
- var scrollContainer = Object(external_this_wp_dom_["getScrollContainer"])(this.ref.current); // The page must be scrollable.
-
- if (!scrollContainer) {
- return;
- }
-
- var windowScroll = scrollContainer === document.body;
- var scrollY = windowScroll ? window.scrollY : scrollContainer.scrollTop;
- var scrollContainerY = windowScroll ? 0 : scrollContainer.getBoundingClientRect().top;
- var relativeScrollPosition = windowScroll ? this.caretRect.top / window.innerHeight : (this.caretRect.top - scrollContainerY) / (window.innerHeight - scrollContainerY); // If the scroll position is at the start, the active editable element
- // is the last one, and the caret is positioned within the initial
- // trigger percentage of the page, do not scroll the page.
- // The typewriter effect should not kick in until an empty page has been
- // filled with the initial trigger percentage or the user scrolls
- // intentionally down.
-
- if (scrollY === 0 && relativeScrollPosition < initialTriggerPercentage && this.isLastEditableNode()) {
- // Reset the caret position to maintain.
- this.caretRect = currentCaretRect;
- return;
- }
-
- var scrollContainerHeight = windowScroll ? window.innerHeight : scrollContainer.clientHeight; // Abort if the target scroll position would scroll the caret out of
- // view.
-
- if ( // The caret is under the lower fold.
- this.caretRect.top + this.caretRect.height > scrollContainerY + scrollContainerHeight || // The caret is above the upper fold.
- this.caretRect.top < scrollContainerY) {
- // Reset the caret position to maintain.
- this.caretRect = currentCaretRect;
- return;
- }
-
- if (windowScroll) {
- window.scrollBy(0, diff);
- } else {
- scrollContainer.scrollTop += diff;
- }
- }
- /**
- * Adds a `selectionchange` listener to reset the scroll position to be
- * maintained.
- */
-
- }, {
- key: "addSelectionChangeListener",
- value: function addSelectionChangeListener() {
- document.addEventListener('selectionchange', this.computeCaretRectOnSelectionChange);
- }
- }, {
- key: "onKeyDown",
- value: function onKeyDown(event) {
- var _this3 = this;
-
- event.persist(); // Ensure the any remaining request is cancelled.
-
- if (this.onKeyDown.rafId) {
- window.cancelAnimationFrame(this.onKeyDown.rafId);
- } // Use an animation frame for a smooth result.
-
-
- this.onKeyDown.rafId = window.requestAnimationFrame(function () {
- _this3.maintainCaretPosition(event);
-
- delete _this3.onKeyDown.rafId;
- });
- }
- }, {
- key: "render",
- value: function render() {
- // There are some issues with Internet Explorer, which are probably not
- // worth spending time on. Let's disable it.
- if (isIE) {
- return this.props.children;
- } // Disable reason: Wrapper itself is non-interactive, but must capture
- // bubbling events from children to determine focus transition intents.
-
- /* eslint-disable jsx-a11y/no-static-element-interactions */
-
-
- return Object(external_this_wp_element_["createElement"])("div", {
- ref: this.ref,
- onKeyDown: this.onKeyDown,
- onKeyUp: this.maintainCaretPosition,
- onMouseDown: this.addSelectionChangeListener,
- onTouchStart: this.addSelectionChangeListener
- }, this.props.children);
- /* eslint-enable jsx-a11y/no-static-element-interactions */
- }
- }]);
-
- return Typewriter;
-}(external_this_wp_element_["Component"]);
-/**
- * Ensures that the text selection keeps the same vertical distance from the
- * viewport during keyboard events within this component. The vertical distance
- * can vary. It is the last clicked or scrolled to position.
- */
-
-
-/* harmony default export */ var typewriter = (Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSelectedBlockClientId = _select.getSelectedBlockClientId;
-
- return {
- selectedBlockClientId: getSelectedBlockClientId()
- };
-})(typewriter_Typewriter));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/writing-flow/index.js
-
-
-
-
-
-
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Browser constants
- */
-
-var _window = window,
- getSelection = _window.getSelection,
- getComputedStyle = _window.getComputedStyle;
-/**
- * Given an element, returns true if the element is a tabbable text field, or
- * false otherwise.
- *
- * @param {Element} element Element to test.
- *
- * @return {boolean} Whether element is a tabbable text field.
- */
-
-var isTabbableTextField = Object(external_lodash_["overEvery"])([external_this_wp_dom_["isTextField"], external_this_wp_dom_["focus"].tabbable.isTabbableIndex]);
-/**
- * Returns true if the element should consider edge navigation upon a keyboard
- * event of the given directional key code, or false otherwise.
- *
- * @param {Element} element HTML element to test.
- * @param {number} keyCode KeyboardEvent keyCode to test.
- * @param {boolean} hasModifier Whether a modifier is pressed.
- *
- * @return {boolean} Whether element should consider edge navigation.
- */
-
-function isNavigationCandidate(element, keyCode, hasModifier) {
- var isVertical = keyCode === external_this_wp_keycodes_["UP"] || keyCode === external_this_wp_keycodes_["DOWN"]; // Currently, all elements support unmodified vertical navigation.
-
- if (isVertical && !hasModifier) {
- return true;
- } // Native inputs should not navigate horizontally.
-
-
- var tagName = element.tagName;
- return tagName !== 'INPUT' && tagName !== 'TEXTAREA';
-}
-
-var writing_flow_WritingFlow =
-/*#__PURE__*/
-function (_Component) {
- Object(inherits["a" /* default */])(WritingFlow, _Component);
-
- function WritingFlow() {
- var _this;
-
- Object(classCallCheck["a" /* default */])(this, WritingFlow);
-
- _this = Object(possibleConstructorReturn["a" /* default */])(this, Object(getPrototypeOf["a" /* default */])(WritingFlow).apply(this, arguments));
- _this.onKeyDown = _this.onKeyDown.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.bindContainer = _this.bindContainer.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.onMouseDown = _this.onMouseDown.bind(Object(assertThisInitialized["a" /* default */])(_this));
- _this.focusLastTextField = _this.focusLastTextField.bind(Object(assertThisInitialized["a" /* default */])(_this));
- /**
- * Here a rectangle is stored while moving the caret vertically so
- * vertical position of the start position can be restored.
- * This is to recreate browser behaviour across blocks.
- *
- * @type {?DOMRect}
- */
-
- _this.verticalRect = null;
- /**
- * Reference of the writing flow appender element.
- * The reference is used to focus the first tabbable element after the block list
- * once we hit `tab` on the last block in navigation mode.
- */
-
- _this.appender = Object(external_this_wp_element_["createRef"])();
- return _this;
- }
-
- Object(createClass["a" /* default */])(WritingFlow, [{
- key: "bindContainer",
- value: function bindContainer(ref) {
- this.container = ref;
- }
- }, {
- key: "onMouseDown",
- value: function onMouseDown() {
- this.verticalRect = null;
- this.disableNavigationMode();
- }
- }, {
- key: "disableNavigationMode",
- value: function disableNavigationMode() {
- if (this.props.isNavigationMode) {
- this.props.disableNavigationMode();
- }
- }
- /**
- * Returns the optimal tab target from the given focused element in the
- * desired direction. A preference is made toward text fields, falling back
- * to the block focus stop if no other candidates exist for the block.
- *
- * @param {Element} target Currently focused text field.
- * @param {boolean} isReverse True if considering as the first field.
- *
- * @return {?Element} Optimal tab target, if one exists.
- */
-
- }, {
- key: "getClosestTabbable",
- value: function getClosestTabbable(target, isReverse) {
- // Since the current focus target is not guaranteed to be a text field,
- // find all focusables. Tabbability is considered later.
- var focusableNodes = external_this_wp_dom_["focus"].focusable.find(this.container);
-
- if (isReverse) {
- focusableNodes = Object(external_lodash_["reverse"])(focusableNodes);
- } // Consider as candidates those focusables after the current target.
- // It's assumed this can only be reached if the target is focusable
- // (on its keydown event), so no need to verify it exists in the set.
-
-
- focusableNodes = focusableNodes.slice(focusableNodes.indexOf(target) + 1);
-
- function isTabCandidate(node, i, array) {
- // Not a candidate if the node is not tabbable.
- if (!external_this_wp_dom_["focus"].tabbable.isTabbableIndex(node)) {
- return false;
- } // Prefer text fields...
-
-
- if (Object(external_this_wp_dom_["isTextField"])(node)) {
- return true;
- } // ...but settle for block focus stop.
-
-
- if (!isBlockFocusStop(node)) {
- return false;
- } // If element contains inner blocks, stop immediately at its focus
- // wrapper.
-
-
- if (hasInnerBlocksContext(node)) {
- return true;
- } // If navigating out of a block (in reverse), don't consider its
- // block focus stop.
-
-
- if (node.contains(target)) {
- return false;
- } // In case of block focus stop, check to see if there's a better
- // text field candidate within.
-
-
- for (var offset = 1, nextNode; nextNode = array[i + offset]; offset++) {
- // Abort if no longer testing descendents of focus stop.
- if (!node.contains(nextNode)) {
- break;
- } // Apply same tests by recursion. This is important to consider
- // nestable blocks where we don't want to settle for the inner
- // block focus stop.
-
-
- if (isTabCandidate(nextNode, i + offset, array)) {
- return false;
- }
- }
-
- return true;
- }
-
- return Object(external_lodash_["find"])(focusableNodes, isTabCandidate);
- }
- }, {
- key: "expandSelection",
- value: function expandSelection(isReverse) {
- var _this$props = this.props,
- selectedBlockClientId = _this$props.selectedBlockClientId,
- selectionStartClientId = _this$props.selectionStartClientId,
- selectionBeforeEndClientId = _this$props.selectionBeforeEndClientId,
- selectionAfterEndClientId = _this$props.selectionAfterEndClientId;
- var nextSelectionEndClientId = isReverse ? selectionBeforeEndClientId : selectionAfterEndClientId;
-
- if (nextSelectionEndClientId) {
- this.props.onMultiSelect(selectionStartClientId || selectedBlockClientId, nextSelectionEndClientId);
- }
- }
- }, {
- key: "moveSelection",
- value: function moveSelection(isReverse) {
- var _this$props2 = this.props,
- selectedFirstClientId = _this$props2.selectedFirstClientId,
- selectedLastClientId = _this$props2.selectedLastClientId;
- var focusedBlockClientId = isReverse ? selectedFirstClientId : selectedLastClientId;
-
- if (focusedBlockClientId) {
- this.props.onSelectBlock(focusedBlockClientId);
- }
- }
- /**
- * Returns true if the given target field is the last in its block which
- * can be considered for tab transition. For example, in a block with two
- * text fields, this would return true when reversing from the first of the
- * two fields, but false when reversing from the second.
- *
- * @param {Element} target Currently focused text field.
- * @param {boolean} isReverse True if considering as the first field.
- *
- * @return {boolean} Whether field is at edge for tab transition.
- */
-
- }, {
- key: "isTabbableEdge",
- value: function isTabbableEdge(target, isReverse) {
- var closestTabbable = this.getClosestTabbable(target, isReverse);
- return !closestTabbable || !isInSameBlock(target, closestTabbable);
- }
- }, {
- key: "onKeyDown",
- value: function onKeyDown(event) {
- var _this$props3 = this.props,
- hasMultiSelection = _this$props3.hasMultiSelection,
- onMultiSelect = _this$props3.onMultiSelect,
- blocks = _this$props3.blocks,
- selectedBlockClientId = _this$props3.selectedBlockClientId,
- selectionBeforeEndClientId = _this$props3.selectionBeforeEndClientId,
- selectionAfterEndClientId = _this$props3.selectionAfterEndClientId,
- isNavigationMode = _this$props3.isNavigationMode;
- var keyCode = event.keyCode,
- target = event.target;
- var isUp = keyCode === external_this_wp_keycodes_["UP"];
- var isDown = keyCode === external_this_wp_keycodes_["DOWN"];
- var isLeft = keyCode === external_this_wp_keycodes_["LEFT"];
- var isRight = keyCode === external_this_wp_keycodes_["RIGHT"];
- var isTab = keyCode === external_this_wp_keycodes_["TAB"];
- var isReverse = isUp || isLeft;
- var isHorizontal = isLeft || isRight;
- var isVertical = isUp || isDown;
- var isNav = isHorizontal || isVertical;
- var isShift = event.shiftKey;
- var hasModifier = isShift || event.ctrlKey || event.altKey || event.metaKey;
- var isNavEdge = isVertical ? external_this_wp_dom_["isVerticalEdge"] : external_this_wp_dom_["isHorizontalEdge"]; // In navigation mode, tab and arrows navigate from block to block.
-
- if (isNavigationMode) {
- var navigateUp = isTab && isShift || isUp;
- var navigateDown = isTab && !isShift || isDown;
- var focusedBlockUid = navigateUp ? selectionBeforeEndClientId : selectionAfterEndClientId;
-
- if ((navigateDown || navigateUp) && focusedBlockUid) {
- event.preventDefault();
- this.props.onSelectBlock(focusedBlockUid);
- } // Special case when reaching the end of the blocks (navigate to the next tabbable outside of the writing flow)
-
-
- if (navigateDown && selectedBlockClientId && !selectionAfterEndClientId && [external_this_wp_keycodes_["UP"], external_this_wp_keycodes_["DOWN"]].indexOf(keyCode) === -1) {
- this.props.clearSelectedBlock();
- this.appender.current.focus();
- }
-
- return;
- } // When presing any key other than up or down, the initial vertical
- // position must ALWAYS be reset. The vertical position is saved so it
- // can be restored as well as possible on sebsequent vertical arrow key
- // presses. It may not always be possible to restore the exact same
- // position (such as at an empty line), so it wouldn't be good to
- // compute the position right before any vertical arrow key press.
-
-
- if (!isVertical) {
- this.verticalRect = null;
- } else if (!this.verticalRect) {
- this.verticalRect = Object(external_this_wp_dom_["computeCaretRect"])();
- } // This logic inside this condition needs to be checked before
- // the check for event.nativeEvent.defaultPrevented.
- // The logic handles meta+a keypress and this event is default prevented
- // by RichText.
-
-
- if (!isNav) {
- // Set immediately before the meta+a combination can be pressed.
- if (external_this_wp_keycodes_["isKeyboardEvent"].primary(event)) {
- this.isEntirelySelected = Object(external_this_wp_dom_["isEntirelySelected"])(target);
- }
-
- if (external_this_wp_keycodes_["isKeyboardEvent"].primary(event, 'a')) {
- // When the target is contentEditable, selection will already
- // have been set by the browser earlier in this call stack. We
- // need check the previous result, otherwise all blocks will be
- // selected right away.
- if (target.isContentEditable ? this.isEntirelySelected : Object(external_this_wp_dom_["isEntirelySelected"])(target)) {
- onMultiSelect(Object(external_lodash_["first"])(blocks), Object(external_lodash_["last"])(blocks));
- event.preventDefault();
- } // After pressing primary + A we can assume isEntirelySelected is true.
- // Calling right away isEntirelySelected after primary + A may still return false on some browsers.
-
-
- this.isEntirelySelected = true;
- }
-
- return;
- } // Abort if navigation has already been handled (e.g. RichText inline
- // boundaries).
-
-
- if (event.nativeEvent.defaultPrevented) {
- return;
- } // Abort if our current target is not a candidate for navigation (e.g.
- // preserve native input behaviors).
-
-
- if (!isNavigationCandidate(target, keyCode, hasModifier)) {
- return;
- } // In the case of RTL scripts, right means previous and left means next,
- // which is the exact reverse of LTR.
-
-
- var _getComputedStyle = getComputedStyle(target),
- direction = _getComputedStyle.direction;
-
- var isReverseDir = direction === 'rtl' ? !isReverse : isReverse;
-
- if (isShift) {
- if (( // Ensure that there is a target block.
- isReverse && selectionBeforeEndClientId || !isReverse && selectionAfterEndClientId) && (hasMultiSelection || this.isTabbableEdge(target, isReverse) && isNavEdge(target, isReverse))) {
- // Shift key is down, and there is multi selection or we're at
- // the end of the current block.
- this.expandSelection(isReverse);
- event.preventDefault();
- }
- } else if (hasMultiSelection) {
- // Moving from block multi-selection to single block selection
- this.moveSelection(isReverse);
- event.preventDefault();
- } else if (isVertical && Object(external_this_wp_dom_["isVerticalEdge"])(target, isReverse)) {
- var closestTabbable = this.getClosestTabbable(target, isReverse);
-
- if (closestTabbable) {
- Object(external_this_wp_dom_["placeCaretAtVerticalEdge"])(closestTabbable, isReverse, this.verticalRect);
- event.preventDefault();
- }
- } else if (isHorizontal && getSelection().isCollapsed && Object(external_this_wp_dom_["isHorizontalEdge"])(target, isReverseDir)) {
- var _closestTabbable = this.getClosestTabbable(target, isReverseDir);
-
- Object(external_this_wp_dom_["placeCaretAtHorizontalEdge"])(_closestTabbable, isReverseDir);
- event.preventDefault();
- }
- }
- /**
- * Sets focus to the end of the last tabbable text field, if one exists.
- */
-
- }, {
- key: "focusLastTextField",
- value: function focusLastTextField() {
- this.disableNavigationMode();
- var focusableNodes = external_this_wp_dom_["focus"].focusable.find(this.container);
- var target = Object(external_lodash_["findLast"])(focusableNodes, isTabbableTextField);
-
- if (target) {
- Object(external_this_wp_dom_["placeCaretAtHorizontalEdge"])(target, true);
- }
- }
- }, {
- key: "render",
- value: function render() {
- var children = this.props.children; // Disable reason: Wrapper itself is non-interactive, but must capture
- // bubbling events from children to determine focus transition intents.
-
- /* eslint-disable jsx-a11y/no-static-element-interactions */
-
- return Object(external_this_wp_element_["createElement"])("div", {
- className: "editor-writing-flow block-editor-writing-flow"
- }, Object(external_this_wp_element_["createElement"])("div", {
- ref: this.bindContainer,
- onKeyDown: this.onKeyDown,
- onMouseDown: this.onMouseDown
- }, children), Object(external_this_wp_element_["createElement"])("div", {
- ref: this.appender,
- "aria-hidden": true,
- tabIndex: -1,
- onClick: this.focusLastTextField,
- className: "editor-writing-flow__click-redirect block-editor-writing-flow__click-redirect"
- }));
- /* eslint-enable jsx-a11y/no-static-element-interactions */
- }
- }]);
-
- return WritingFlow;
-}(external_this_wp_element_["Component"]);
-
-/* harmony default export */ var writing_flow = (Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSelectedBlockClientId = _select.getSelectedBlockClientId,
- getMultiSelectedBlocksStartClientId = _select.getMultiSelectedBlocksStartClientId,
- getMultiSelectedBlocksEndClientId = _select.getMultiSelectedBlocksEndClientId,
- getPreviousBlockClientId = _select.getPreviousBlockClientId,
- getNextBlockClientId = _select.getNextBlockClientId,
- getFirstMultiSelectedBlockClientId = _select.getFirstMultiSelectedBlockClientId,
- getLastMultiSelectedBlockClientId = _select.getLastMultiSelectedBlockClientId,
- hasMultiSelection = _select.hasMultiSelection,
- getBlockOrder = _select.getBlockOrder,
- isNavigationMode = _select.isNavigationMode;
-
- var selectedBlockClientId = getSelectedBlockClientId();
- var selectionStartClientId = getMultiSelectedBlocksStartClientId();
- var selectionEndClientId = getMultiSelectedBlocksEndClientId();
- return {
- selectedBlockClientId: selectedBlockClientId,
- selectionStartClientId: selectionStartClientId,
- selectionBeforeEndClientId: getPreviousBlockClientId(selectionEndClientId || selectedBlockClientId),
- selectionAfterEndClientId: getNextBlockClientId(selectionEndClientId || selectedBlockClientId),
- selectedFirstClientId: getFirstMultiSelectedBlockClientId(),
- selectedLastClientId: getLastMultiSelectedBlockClientId(),
- hasMultiSelection: hasMultiSelection(),
- blocks: getBlockOrder(),
- isNavigationMode: isNavigationMode()
- };
-}), Object(external_this_wp_data_["withDispatch"])(function (dispatch) {
- var _dispatch = dispatch('core/block-editor'),
- multiSelect = _dispatch.multiSelect,
- selectBlock = _dispatch.selectBlock,
- setNavigationMode = _dispatch.setNavigationMode,
- clearSelectedBlock = _dispatch.clearSelectedBlock;
-
- return {
- onMultiSelect: multiSelect,
- onSelectBlock: selectBlock,
- disableNavigationMode: function disableNavigationMode() {
- return setNavigationMode(false);
- },
- clearSelectedBlock: clearSelectedBlock
- };
-})])(writing_flow_WritingFlow));
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/components/index.js
-/*
- * Block Creation Components
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
- * Content Related Components
- */
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-/*
- * State Related Components
- */
-
-
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/hooks/align.js
-
-
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * An array which includes all possible valid alignments,
- * used to validate if an alignment is valid or not.
- *
- * @constant
- * @type {string[]}
- */
-
-var ALL_ALIGNMENTS = ['left', 'center', 'right', 'wide', 'full'];
-/**
- * An array which includes all wide alignments.
- * In order for this alignments to be valid they need to be supported by the block,
- * and by the theme.
- *
- * @constant
- * @type {string[]}
- */
-
-var WIDE_ALIGNMENTS = ['wide', 'full'];
-/**
- * Returns the valid alignments.
- * Takes into consideration the aligns supported by a block, if the block supports wide controls or not and if theme supports wide controls or not.
- * Exported just for testing purposes, not exported outside the module.
- *
- * @param {?boolean|string[]} blockAlign Aligns supported by the block.
- * @param {?boolean} hasWideBlockSupport True if block supports wide alignments. And False otherwise.
- * @param {?boolean} hasWideEnabled True if theme supports wide alignments. And False otherwise.
- *
- * @return {string[]} Valid alignments.
- */
-
-function getValidAlignments(blockAlign) {
- var hasWideBlockSupport = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
- var hasWideEnabled = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : true;
- var validAlignments;
-
- if (Array.isArray(blockAlign)) {
- validAlignments = blockAlign;
- } else if (blockAlign === true) {
- // `true` includes all alignments...
- validAlignments = ALL_ALIGNMENTS;
- } else {
- validAlignments = [];
- }
-
- if (!hasWideEnabled || blockAlign === true && !hasWideBlockSupport) {
- return external_lodash_["without"].apply(void 0, [validAlignments].concat(WIDE_ALIGNMENTS));
- }
-
- return validAlignments;
-}
-/**
- * Filters registered block settings, extending attributes to include `align`.
- *
- * @param {Object} settings Original block settings
- * @return {Object} Filtered block settings
- */
-
-function addAttribute(settings) {
- // allow blocks to specify their own attribute definition with default values if needed.
- if (Object(external_lodash_["has"])(settings.attributes, ['align', 'type'])) {
- return settings;
- }
-
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(settings, 'align')) {
- // Use Lodash's assign to gracefully handle if attributes are undefined
- settings.attributes = Object(external_lodash_["assign"])(settings.attributes, {
- align: {
- type: 'string'
- }
- });
- }
-
- return settings;
-}
-/**
- * Override the default edit UI to include new toolbar controls for block
- * alignment, if block defines support.
- *
- * @param {Function} BlockEdit Original component
- * @return {Function} Wrapped component
- */
-
-var withToolbarControls = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (BlockEdit) {
- return function (props) {
- var blockName = props.name; // Compute valid alignments without taking into account,
- // if the theme supports wide alignments or not.
- // BlockAlignmentToolbar takes into account the theme support.
-
- var validAlignments = getValidAlignments(Object(external_this_wp_blocks_["getBlockSupport"])(blockName, 'align'), Object(external_this_wp_blocks_["hasBlockSupport"])(blockName, 'alignWide', true));
-
- var updateAlignment = function updateAlignment(nextAlign) {
- if (!nextAlign) {
- var blockType = Object(external_this_wp_blocks_["getBlockType"])(props.name);
- var blockDefaultAlign = Object(external_lodash_["get"])(blockType, ['attributes', 'align', 'default']);
-
- if (blockDefaultAlign) {
- nextAlign = '';
- }
- }
-
- props.setAttributes({
- align: nextAlign
- });
- };
-
- return [validAlignments.length > 0 && props.isSelected && Object(external_this_wp_element_["createElement"])(block_controls, {
- key: "align-controls"
- }, Object(external_this_wp_element_["createElement"])(block_alignment_toolbar, {
- value: props.attributes.align,
- onChange: updateAlignment,
- controls: validAlignments
- })), Object(external_this_wp_element_["createElement"])(BlockEdit, Object(esm_extends["a" /* default */])({
- key: "edit"
- }, props))];
- };
-}, 'withToolbarControls'); // Exported just for testing purposes, not exported outside the module.
-
-var align_insideSelectWithDataAlign = function insideSelectWithDataAlign(BlockListBlock) {
- return function (props) {
- var name = props.name,
- attributes = props.attributes,
- hasWideEnabled = props.hasWideEnabled;
- var align = attributes.align;
- var validAlignments = getValidAlignments(Object(external_this_wp_blocks_["getBlockSupport"])(name, 'align'), Object(external_this_wp_blocks_["hasBlockSupport"])(name, 'alignWide', true), hasWideEnabled);
- var wrapperProps = props.wrapperProps;
-
- if (Object(external_lodash_["includes"])(validAlignments, align)) {
- wrapperProps = Object(objectSpread["a" /* default */])({}, wrapperProps, {
- 'data-align': align
- });
- }
-
- return Object(external_this_wp_element_["createElement"])(BlockListBlock, Object(esm_extends["a" /* default */])({}, props, {
- wrapperProps: wrapperProps
- }));
- };
-};
-/**
- * Override the default block element to add alignment wrapper props.
- *
- * @param {Function} BlockListBlock Original component
- * @return {Function} Wrapped component
- */
-
-var withDataAlign = Object(external_this_wp_compose_["createHigherOrderComponent"])(Object(external_this_wp_compose_["compose"])([Object(external_this_wp_data_["withSelect"])(function (select) {
- var _select = select('core/block-editor'),
- getSettings = _select.getSettings;
-
- return {
- hasWideEnabled: !!getSettings().alignWide
- };
-}), align_insideSelectWithDataAlign]));
-/**
- * Override props assigned to save component to inject alignment class name if
- * block supports it.
- *
- * @param {Object} props Additional props applied to save element
- * @param {Object} blockType Block type
- * @param {Object} attributes Block attributes
- * @return {Object} Filtered props applied to save element
- */
-
-function addAssignedAlign(props, blockType, attributes) {
- var align = attributes.align;
- var blockAlign = Object(external_this_wp_blocks_["getBlockSupport"])(blockType, 'align');
- var hasWideBlockSupport = Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'alignWide', true);
- var isAlignValid = Object(external_lodash_["includes"])( // Compute valid alignments without taking into account,
- // if the theme supports wide alignments or not.
- // This way changing themes does not impacts the block save.
- getValidAlignments(blockAlign, hasWideBlockSupport), align);
-
- if (isAlignValid) {
- props.className = classnames_default()("align".concat(align), props.className);
- }
-
- return props;
-}
-Object(external_this_wp_hooks_["addFilter"])('blocks.registerBlockType', 'core/align/addAttribute', addAttribute);
-Object(external_this_wp_hooks_["addFilter"])('editor.BlockListBlock', 'core/editor/align/with-data-align', withDataAlign);
-Object(external_this_wp_hooks_["addFilter"])('editor.BlockEdit', 'core/editor/align/with-toolbar-controls', withToolbarControls);
-Object(external_this_wp_hooks_["addFilter"])('blocks.getSaveContent.extraProps', 'core/align/addAssignedAlign', addAssignedAlign);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/hooks/anchor.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Regular expression matching invalid anchor characters for replacement.
- *
- * @type {RegExp}
- */
-
-var ANCHOR_REGEX = /[\s#]/g;
-/**
- * Filters registered block settings, extending attributes with anchor using ID
- * of the first node.
- *
- * @param {Object} settings Original block settings.
- *
- * @return {Object} Filtered block settings.
- */
-
-function anchor_addAttribute(settings) {
- // allow blocks to specify their own attribute definition with default values if needed.
- if (Object(external_lodash_["has"])(settings.attributes, ['anchor', 'type'])) {
- return settings;
- }
-
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(settings, 'anchor')) {
- // Use Lodash's assign to gracefully handle if attributes are undefined
- settings.attributes = Object(external_lodash_["assign"])(settings.attributes, {
- anchor: {
- type: 'string',
- source: 'attribute',
- attribute: 'id',
- selector: '*'
- }
- });
- }
-
- return settings;
-}
-/**
- * Override the default edit UI to include a new block inspector control for
- * assigning the anchor ID, if block supports anchor.
- *
- * @param {Function|Component} BlockEdit Original component.
- *
- * @return {string} Wrapped component.
- */
-
-var withInspectorControl = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (BlockEdit) {
- return function (props) {
- var hasAnchor = Object(external_this_wp_blocks_["hasBlockSupport"])(props.name, 'anchor');
-
- if (hasAnchor && props.isSelected) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(BlockEdit, props), Object(external_this_wp_element_["createElement"])(inspector_advanced_controls, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextControl"], {
- className: "html-anchor-control",
- label: Object(external_this_wp_i18n_["__"])('HTML Anchor'),
- help: Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_i18n_["__"])('Enter a word or two — without spaces — to make a unique web address just for this heading, called an “anchor.” Then, you’ll be able to link directly to this section of your page.'), Object(external_this_wp_element_["createElement"])(external_this_wp_components_["ExternalLink"], {
- href: 'https://wordpress.org/support/article/page-jumps/'
- }, Object(external_this_wp_i18n_["__"])('Learn more about anchors'))),
- value: props.attributes.anchor || '',
- onChange: function onChange(nextValue) {
- nextValue = nextValue.replace(ANCHOR_REGEX, '-');
- props.setAttributes({
- anchor: nextValue
- });
- }
- })));
- }
-
- return Object(external_this_wp_element_["createElement"])(BlockEdit, props);
- };
-}, 'withInspectorControl');
-/**
- * Override props assigned to save component to inject anchor ID, if block
- * supports anchor. This is only applied if the block's save result is an
- * element and not a markup string.
- *
- * @param {Object} extraProps Additional props applied to save element.
- * @param {Object} blockType Block type.
- * @param {Object} attributes Current block attributes.
- *
- * @return {Object} Filtered props applied to save element.
- */
-
-function addSaveProps(extraProps, blockType, attributes) {
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'anchor')) {
- extraProps.id = attributes.anchor === '' ? null : attributes.anchor;
- }
-
- return extraProps;
-}
-Object(external_this_wp_hooks_["addFilter"])('blocks.registerBlockType', 'core/anchor/attribute', anchor_addAttribute);
-Object(external_this_wp_hooks_["addFilter"])('editor.BlockEdit', 'core/editor/anchor/with-inspector-control', withInspectorControl);
-Object(external_this_wp_hooks_["addFilter"])('blocks.getSaveContent.extraProps', 'core/anchor/save-props', addSaveProps);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/hooks/custom-class-name.js
-
-
-/**
- * External dependencies
- */
-
-
-/**
- * WordPress dependencies
- */
-
-
-
-
-
-
-/**
- * Internal dependencies
- */
-
-
-/**
- * Filters registered block settings, extending attributes with anchor using ID
- * of the first node.
- *
- * @param {Object} settings Original block settings.
- *
- * @return {Object} Filtered block settings.
- */
-
-function custom_class_name_addAttribute(settings) {
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(settings, 'customClassName', true)) {
- // Use Lodash's assign to gracefully handle if attributes are undefined
- settings.attributes = Object(external_lodash_["assign"])(settings.attributes, {
- className: {
- type: 'string'
- }
- });
- }
-
- return settings;
-}
-/**
- * Override the default edit UI to include a new block inspector control for
- * assigning the custom class name, if block supports custom class name.
- *
- * @param {Function|Component} BlockEdit Original component.
- *
- * @return {string} Wrapped component.
- */
-
-var custom_class_name_withInspectorControl = Object(external_this_wp_compose_["createHigherOrderComponent"])(function (BlockEdit) {
- return function (props) {
- var hasCustomClassName = Object(external_this_wp_blocks_["hasBlockSupport"])(props.name, 'customClassName', true);
-
- if (hasCustomClassName && props.isSelected) {
- return Object(external_this_wp_element_["createElement"])(external_this_wp_element_["Fragment"], null, Object(external_this_wp_element_["createElement"])(BlockEdit, props), Object(external_this_wp_element_["createElement"])(inspector_advanced_controls, null, Object(external_this_wp_element_["createElement"])(external_this_wp_components_["TextControl"], {
- label: Object(external_this_wp_i18n_["__"])('Additional CSS Class(es)'),
- value: props.attributes.className || '',
- onChange: function onChange(nextValue) {
- props.setAttributes({
- className: nextValue !== '' ? nextValue : undefined
- });
- },
- help: Object(external_this_wp_i18n_["__"])('Separate multiple classes with spaces.')
- })));
- }
-
- return Object(external_this_wp_element_["createElement"])(BlockEdit, props);
- };
-}, 'withInspectorControl');
-/**
- * Override props assigned to save component to inject anchor ID, if block
- * supports anchor. This is only applied if the block's save result is an
- * element and not a markup string.
- *
- * @param {Object} extraProps Additional props applied to save element.
- * @param {Object} blockType Block type.
- * @param {Object} attributes Current block attributes.
- *
- * @return {Object} Filtered props applied to save element.
- */
-
-function custom_class_name_addSaveProps(extraProps, blockType, attributes) {
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'customClassName', true) && attributes.className) {
- extraProps.className = classnames_default()(extraProps.className, attributes.className);
- }
-
- return extraProps;
-}
-/**
- * Given an HTML string, returns an array of class names assigned to the root
- * element in the markup.
- *
- * @param {string} innerHTML Markup string from which to extract classes.
- *
- * @return {string[]} Array of class names assigned to the root element.
- */
-
-function getHTMLRootElementClasses(innerHTML) {
- innerHTML = "<div data-custom-class-name>".concat(innerHTML, "</div>");
- var parsed = Object(external_this_wp_blocks_["parseWithAttributeSchema"])(innerHTML, {
- type: 'string',
- source: 'attribute',
- selector: '[data-custom-class-name] > *',
- attribute: 'class'
- });
- return parsed ? parsed.trim().split(/\s+/) : [];
-}
-/**
- * Given a parsed set of block attributes, if the block supports custom class
- * names and an unknown class (per the block's serialization behavior) is
- * found, the unknown classes are treated as custom classes. This prevents the
- * block from being considered as invalid.
- *
- * @param {Object} blockAttributes Original block attributes.
- * @param {Object} blockType Block type settings.
- * @param {string} innerHTML Original block markup.
- *
- * @return {Object} Filtered block attributes.
- */
-
-function addParsedDifference(blockAttributes, blockType, innerHTML) {
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'customClassName', true)) {
- // To determine difference, serialize block given the known set of
- // attributes, with the exception of `className`. This will determine
- // the default set of classes. From there, any difference in innerHTML
- // can be considered as custom classes.
- var attributesSansClassName = Object(external_lodash_["omit"])(blockAttributes, ['className']);
- var serialized = Object(external_this_wp_blocks_["getSaveContent"])(blockType, attributesSansClassName);
- var defaultClasses = getHTMLRootElementClasses(serialized);
- var actualClasses = getHTMLRootElementClasses(innerHTML);
- var customClasses = Object(external_lodash_["difference"])(actualClasses, defaultClasses);
-
- if (customClasses.length) {
- blockAttributes.className = customClasses.join(' ');
- } else if (serialized) {
- delete blockAttributes.className;
- }
- }
-
- return blockAttributes;
-}
-Object(external_this_wp_hooks_["addFilter"])('blocks.registerBlockType', 'core/custom-class-name/attribute', custom_class_name_addAttribute);
-Object(external_this_wp_hooks_["addFilter"])('editor.BlockEdit', 'core/editor/custom-class-name/with-inspector-control', custom_class_name_withInspectorControl);
-Object(external_this_wp_hooks_["addFilter"])('blocks.getSaveContent.extraProps', 'core/custom-class-name/save-props', custom_class_name_addSaveProps);
-Object(external_this_wp_hooks_["addFilter"])('blocks.getBlockAttributes', 'core/custom-class-name/addParsedDifference', addParsedDifference);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/hooks/generated-class-name.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Override props assigned to save component to inject generated className if
- * block supports it. This is only applied if the block's save result is an
- * element and not a markup string.
- *
- * @param {Object} extraProps Additional props applied to save element.
- * @param {Object} blockType Block type.
- *
- * @return {Object} Filtered props applied to save element.
- */
-
-function addGeneratedClassName(extraProps, blockType) {
- // Adding the generated className
- if (Object(external_this_wp_blocks_["hasBlockSupport"])(blockType, 'className', true)) {
- if (typeof extraProps.className === 'string') {
- // We have some extra classes and want to add the default classname
- // We use uniq to prevent duplicate classnames
- extraProps.className = Object(external_lodash_["uniq"])([Object(external_this_wp_blocks_["getBlockDefaultClassName"])(blockType.name)].concat(Object(toConsumableArray["a" /* default */])(extraProps.className.split(' ')))).join(' ').trim();
- } else {
- // There is no string in the className variable,
- // so we just dump the default name in there
- extraProps.className = Object(external_this_wp_blocks_["getBlockDefaultClassName"])(blockType.name);
- }
- }
-
- return extraProps;
-}
-Object(external_this_wp_hooks_["addFilter"])('blocks.getSaveContent.extraProps', 'core/generated-class-name/save-props', addGeneratedClassName);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/hooks/index.js
-/**
- * Internal dependencies
- */
-
-
-
-
-
-// EXTERNAL MODULE: ./node_modules/traverse/index.js
-var traverse = __webpack_require__(220);
-var traverse_default = /*#__PURE__*/__webpack_require__.n(traverse);
-
-// EXTERNAL MODULE: ./node_modules/@babel/runtime/helpers/esm/typeof.js
-var esm_typeof = __webpack_require__(31);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/transform-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;
- } // FIXME: 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;
-}
-/* eslint-enable @wordpress/no-unused-vars-before-return */
-
-// EXTERNAL MODULE: ./node_modules/inherits/inherits_browser.js
-var inherits_browser = __webpack_require__(112);
-var inherits_browser_default = /*#__PURE__*/__webpack_require__.n(inherits_browser);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/transform-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.
- */
-
-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/block-editor/build-module/utils/transform-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/block-editor/build-module/utils/transform-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 || ' ');
-};
-/* eslint-enable @wordpress/no-unused-vars-before-return */
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/transform-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}
- */
-
-/* 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/block-editor/build-module/utils/transform-styles/ast/index.js
-// Adapted from https://github.com/reworkcss/css
-// because we needed to remove source map support.
-
-
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/transform-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 transform_styles_traverse = (traverseCSS);
-
-// EXTERNAL MODULE: ./node_modules/url/url.js
-var url_url = __webpack_require__(82);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/transform-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
- *
- * @return {string} the full path to the file
- */
-
-
-function getResourcePath(str, baseURL) {
- var pathname = Object(url_url["parse"])(str).pathname;
- var filePath = Object(url_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/block-editor/build-module/utils/transform-styles/transforms/wrap.js
-
-
-/**
- * External dependencies
- */
-
-/**
- * @constant 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/block-editor/build-module/utils/transform-styles/index.js
-/**
- * External dependencies
- */
-
-/**
- * WordPress dependencies
- */
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-/**
- * Applies a series of CSS rule transforms to wrap selectors inside a given class and/or rewrite URLs depending on the parameters passed.
- *
- * @param {Array} styles CSS rules.
- * @param {string} wrapperClassName Wrapper Class Name.
- * @return {Array} converted rules.
- */
-
-var transform_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 transform_styles_traverse(css, Object(external_this_wp_compose_["compose"])(transforms));
- }
-
- return css;
- });
-};
-
-/* harmony default export */ var transform_styles = (transform_styles_transformStyles);
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/utils/index.js
-
-
-// CONCATENATED MODULE: ./node_modules/@wordpress/block-editor/build-module/index.js
-/* concated harmony reexport AlignmentToolbar */__webpack_require__.d(__webpack_exports__, "AlignmentToolbar", function() { return alignment_toolbar; });
-/* concated harmony reexport Autocomplete */__webpack_require__.d(__webpack_exports__, "Autocomplete", function() { return autocomplete; });
-/* concated harmony reexport BlockAlignmentToolbar */__webpack_require__.d(__webpack_exports__, "BlockAlignmentToolbar", function() { return block_alignment_toolbar; });
-/* concated harmony reexport BlockControls */__webpack_require__.d(__webpack_exports__, "BlockControls", function() { return block_controls; });
-/* concated harmony reexport BlockEdit */__webpack_require__.d(__webpack_exports__, "BlockEdit", function() { return block_edit; });
-/* concated harmony reexport BlockFormatControls */__webpack_require__.d(__webpack_exports__, "BlockFormatControls", function() { return block_format_controls; });
-/* concated harmony reexport BlockIcon */__webpack_require__.d(__webpack_exports__, "BlockIcon", function() { return BlockIcon; });
-/* concated harmony reexport BlockNavigationDropdown */__webpack_require__.d(__webpack_exports__, "BlockNavigationDropdown", function() { return dropdown; });
-/* concated harmony reexport __experimentalBlockNavigationList */__webpack_require__.d(__webpack_exports__, "__experimentalBlockNavigationList", function() { return BlockNavigationList; });
-/* concated harmony reexport BlockVerticalAlignmentToolbar */__webpack_require__.d(__webpack_exports__, "BlockVerticalAlignmentToolbar", function() { return block_vertical_alignment_toolbar; });
-/* concated harmony reexport ButtonBlockerAppender */__webpack_require__.d(__webpack_exports__, "ButtonBlockerAppender", function() { return button_block_appender; });
-/* concated harmony reexport ColorPalette */__webpack_require__.d(__webpack_exports__, "ColorPalette", function() { return color_palette; });
-/* concated harmony reexport ContrastChecker */__webpack_require__.d(__webpack_exports__, "ContrastChecker", function() { return contrast_checker; });
-/* concated harmony reexport InnerBlocks */__webpack_require__.d(__webpack_exports__, "InnerBlocks", function() { return inner_blocks; });
-/* concated harmony reexport InspectorAdvancedControls */__webpack_require__.d(__webpack_exports__, "InspectorAdvancedControls", function() { return inspector_advanced_controls; });
-/* concated harmony reexport InspectorControls */__webpack_require__.d(__webpack_exports__, "InspectorControls", function() { return inspector_controls; });
-/* concated harmony reexport MediaPlaceholder */__webpack_require__.d(__webpack_exports__, "MediaPlaceholder", function() { return media_placeholder; });
-/* concated harmony reexport MediaUpload */__webpack_require__.d(__webpack_exports__, "MediaUpload", function() { return media_upload; });
-/* concated harmony reexport MediaUploadCheck */__webpack_require__.d(__webpack_exports__, "MediaUploadCheck", function() { return check; });
-/* concated harmony reexport PanelColorSettings */__webpack_require__.d(__webpack_exports__, "PanelColorSettings", function() { return panel_color_settings; });
-/* concated harmony reexport PlainText */__webpack_require__.d(__webpack_exports__, "PlainText", function() { return plain_text; });
-/* concated harmony reexport RichText */__webpack_require__.d(__webpack_exports__, "RichText", function() { return rich_text; });
-/* concated harmony reexport RichTextShortcut */__webpack_require__.d(__webpack_exports__, "RichTextShortcut", function() { return shortcut_RichTextShortcut; });
-/* concated harmony reexport RichTextToolbarButton */__webpack_require__.d(__webpack_exports__, "RichTextToolbarButton", function() { return RichTextToolbarButton; });
-/* concated harmony reexport __unstableRichTextInputEvent */__webpack_require__.d(__webpack_exports__, "__unstableRichTextInputEvent", function() { return input_event_unstableRichTextInputEvent; });
-/* concated harmony reexport URLInput */__webpack_require__.d(__webpack_exports__, "URLInput", function() { return url_input; });
-/* concated harmony reexport URLInputButton */__webpack_require__.d(__webpack_exports__, "URLInputButton", function() { return url_input_button; });
-/* concated harmony reexport URLPopover */__webpack_require__.d(__webpack_exports__, "URLPopover", function() { return url_popover; });
-/* concated harmony reexport withColorContext */__webpack_require__.d(__webpack_exports__, "withColorContext", function() { return with_color_context; });
-/* concated harmony reexport __experimentalBlockSettingsMenuFirstItem */__webpack_require__.d(__webpack_exports__, "__experimentalBlockSettingsMenuFirstItem", function() { return block_settings_menu_first_item; });
-/* concated harmony reexport __experimentalBlockSettingsMenuPluginsExtension */__webpack_require__.d(__webpack_exports__, "__experimentalBlockSettingsMenuPluginsExtension", function() { return block_settings_menu_plugins_extension; });
-/* concated harmony reexport __experimentalInserterMenuExtension */__webpack_require__.d(__webpack_exports__, "__experimentalInserterMenuExtension", function() { return inserter_menu_extension; });
-/* concated harmony reexport BlockEditorKeyboardShortcuts */__webpack_require__.d(__webpack_exports__, "BlockEditorKeyboardShortcuts", function() { return block_editor_keyboard_shortcuts; });
-/* concated harmony reexport BlockInspector */__webpack_require__.d(__webpack_exports__, "BlockInspector", function() { return block_inspector; });
-/* concated harmony reexport BlockList */__webpack_require__.d(__webpack_exports__, "BlockList", function() { return block_list; });
-/* concated harmony reexport BlockMover */__webpack_require__.d(__webpack_exports__, "BlockMover", function() { return block_mover; });
-/* concated harmony reexport BlockPreview */__webpack_require__.d(__webpack_exports__, "BlockPreview", function() { return block_preview; });
-/* concated harmony reexport BlockSelectionClearer */__webpack_require__.d(__webpack_exports__, "BlockSelectionClearer", function() { return block_selection_clearer; });
-/* concated harmony reexport BlockSettingsMenu */__webpack_require__.d(__webpack_exports__, "BlockSettingsMenu", function() { return block_settings_menu; });
-/* concated harmony reexport BlockTitle */__webpack_require__.d(__webpack_exports__, "BlockTitle", function() { return block_title; });
-/* concated harmony reexport BlockToolbar */__webpack_require__.d(__webpack_exports__, "BlockToolbar", function() { return block_toolbar; });
-/* concated harmony reexport CopyHandler */__webpack_require__.d(__webpack_exports__, "CopyHandler", function() { return copy_handler; });
-/* concated harmony reexport DefaultBlockAppender */__webpack_require__.d(__webpack_exports__, "DefaultBlockAppender", function() { return default_block_appender; });
-/* concated harmony reexport Inserter */__webpack_require__.d(__webpack_exports__, "Inserter", function() { return inserter; });
-/* concated harmony reexport MultiBlocksSwitcher */__webpack_require__.d(__webpack_exports__, "MultiBlocksSwitcher", function() { return multi_blocks_switcher; });
-/* concated harmony reexport MultiSelectScrollIntoView */__webpack_require__.d(__webpack_exports__, "MultiSelectScrollIntoView", function() { return multi_select_scroll_into_view; });
-/* concated harmony reexport NavigableToolbar */__webpack_require__.d(__webpack_exports__, "NavigableToolbar", function() { return navigable_toolbar; });
-/* concated harmony reexport ObserveTyping */__webpack_require__.d(__webpack_exports__, "ObserveTyping", function() { return observe_typing; });
-/* concated harmony reexport PreserveScrollInReorder */__webpack_require__.d(__webpack_exports__, "PreserveScrollInReorder", function() { return PreserveScrollInReorder; });
-/* concated harmony reexport SkipToSelectedBlock */__webpack_require__.d(__webpack_exports__, "SkipToSelectedBlock", function() { return skip_to_selected_block; });
-/* concated harmony reexport Typewriter */__webpack_require__.d(__webpack_exports__, "Typewriter", function() { return typewriter; });
-/* concated harmony reexport Warning */__webpack_require__.d(__webpack_exports__, "Warning", function() { return warning; });
-/* concated harmony reexport WritingFlow */__webpack_require__.d(__webpack_exports__, "WritingFlow", function() { return writing_flow; });
-/* concated harmony reexport BlockEditorProvider */__webpack_require__.d(__webpack_exports__, "BlockEditorProvider", function() { return provider; });
-/* concated harmony reexport getColorClassName */__webpack_require__.d(__webpack_exports__, "getColorClassName", function() { return getColorClassName; });
-/* concated harmony reexport getColorObjectByAttributeValues */__webpack_require__.d(__webpack_exports__, "getColorObjectByAttributeValues", function() { return utils_getColorObjectByAttributeValues; });
-/* concated harmony reexport getColorObjectByColorValue */__webpack_require__.d(__webpack_exports__, "getColorObjectByColorValue", function() { return utils_getColorObjectByColorValue; });
-/* concated harmony reexport createCustomColorsHOC */__webpack_require__.d(__webpack_exports__, "createCustomColorsHOC", function() { return createCustomColorsHOC; });
-/* concated harmony reexport withColors */__webpack_require__.d(__webpack_exports__, "withColors", function() { return withColors; });
-/* concated harmony reexport getFontSize */__webpack_require__.d(__webpack_exports__, "getFontSize", function() { return utils_getFontSize; });
-/* concated harmony reexport getFontSizeClass */__webpack_require__.d(__webpack_exports__, "getFontSizeClass", function() { return getFontSizeClass; });
-/* concated harmony reexport FontSizePicker */__webpack_require__.d(__webpack_exports__, "FontSizePicker", function() { return font_size_picker; });
-/* concated harmony reexport withFontSizes */__webpack_require__.d(__webpack_exports__, "withFontSizes", function() { return with_font_sizes; });
-/* concated harmony reexport transformStyles */__webpack_require__.d(__webpack_exports__, "transformStyles", function() { return transform_styles; });
-/* concated harmony reexport storeConfig */__webpack_require__.d(__webpack_exports__, "storeConfig", function() { return storeConfig; });
-/* concated harmony reexport SETTINGS_DEFAULTS */__webpack_require__.d(__webpack_exports__, "SETTINGS_DEFAULTS", function() { return SETTINGS_DEFAULTS; });
-/**
- * WordPress dependencies
- */
-
-
-
-/**
- * Internal dependencies
- */
-
-
-
-
-
-
-
-
-/***/ }),
-
-/***/ 35:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["blob"]; }());
-
-/***/ }),
-
-/***/ 36:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-
-
-var LEAF_KEY, hasWeakMap;
-
-/**
- * Arbitrary value used as key for referencing cache object in WeakMap tree.
- *
- * @type {Object}
- */
-LEAF_KEY = {};
-
-/**
- * Whether environment supports WeakMap.
- *
- * @type {boolean}
- */
-hasWeakMap = typeof WeakMap !== 'undefined';
-
-/**
- * Returns the first argument as the sole entry in an array.
- *
- * @param {*} value Value to return.
- *
- * @return {Array} Value returned as entry in array.
- */
-function arrayOf( value ) {
- return [ value ];
-}
-
-/**
- * Returns true if the value passed is object-like, or false otherwise. A value
- * is object-like if it can support property assignment, e.g. object or array.
- *
- * @param {*} value Value to test.
- *
- * @return {boolean} Whether value is object-like.
- */
-function isObjectLike( value ) {
- return !! value && 'object' === typeof value;
-}
-
-/**
- * Creates and returns a new cache object.
- *
- * @return {Object} Cache object.
- */
-function createCache() {
- var cache = {
- clear: function() {
- cache.head = null;
- },
- };
-
- return cache;
-}
-
-/**
- * Returns true if entries within the two arrays are strictly equal by
- * reference from a starting index.
- *
- * @param {Array} a First array.
- * @param {Array} b Second array.
- * @param {number} fromIndex Index from which to start comparison.
- *
- * @return {boolean} Whether arrays are shallowly equal.
- */
-function isShallowEqual( a, b, fromIndex ) {
- var i;
-
- if ( a.length !== b.length ) {
- return false;
- }
-
- for ( i = fromIndex; i < a.length; i++ ) {
- if ( a[ i ] !== b[ i ] ) {
- return false;
- }
- }
-
- return true;
-}
-
-/**
- * Returns a memoized selector function. The getDependants function argument is
- * called before the memoized selector and is expected to return an immutable
- * reference or array of references on which the selector depends for computing
- * its own return value. The memoize cache is preserved only as long as those
- * dependant references remain the same. If getDependants returns a different
- * reference(s), the cache is cleared and the selector value regenerated.
- *
- * @param {Function} selector Selector function.
- * @param {Function} getDependants Dependant getter returning an immutable
- * reference or array of reference used in
- * cache bust consideration.
- *
- * @return {Function} Memoized selector.
- */
-/* harmony default export */ __webpack_exports__["a"] = (function( selector, getDependants ) {
- var rootCache, getCache;
-
- // Use object source as dependant if getter not provided
- if ( ! getDependants ) {
- getDependants = arrayOf;
- }
-
- /**
- * Returns the root cache. If WeakMap is supported, this is assigned to the
- * root WeakMap cache set, otherwise it is a shared instance of the default
- * cache object.
- *
- * @return {(WeakMap|Object)} Root cache object.
- */
- function getRootCache() {
- return rootCache;
- }
-
- /**
- * Returns the cache for a given dependants array. When possible, a WeakMap
- * will be used to create a unique cache for each set of dependants. This
- * is feasible due to the nature of WeakMap in allowing garbage collection
- * to occur on entries where the key object is no longer referenced. Since
- * WeakMap requires the key to be an object, this is only possible when the
- * dependant is object-like. The root cache is created as a hierarchy where
- * each top-level key is the first entry in a dependants set, the value a
- * WeakMap where each key is the next dependant, and so on. This continues
- * so long as the dependants are object-like. If no dependants are object-
- * like, then the cache is shared across all invocations.
- *
- * @see isObjectLike
- *
- * @param {Array} dependants Selector dependants.
- *
- * @return {Object} Cache object.
- */
- function getWeakMapCache( dependants ) {
- var caches = rootCache,
- isUniqueByDependants = true,
- i, dependant, map, cache;
-
- for ( i = 0; i < dependants.length; i++ ) {
- dependant = dependants[ i ];
-
- // Can only compose WeakMap from object-like key.
- if ( ! isObjectLike( dependant ) ) {
- isUniqueByDependants = false;
- break;
- }
-
- // Does current segment of cache already have a WeakMap?
- if ( caches.has( dependant ) ) {
- // Traverse into nested WeakMap.
- caches = caches.get( dependant );
- } else {
- // Create, set, and traverse into a new one.
- map = new WeakMap();
- caches.set( dependant, map );
- caches = map;
- }
- }
-
- // We use an arbitrary (but consistent) object as key for the last item
- // in the WeakMap to serve as our running cache.
- if ( ! caches.has( LEAF_KEY ) ) {
- cache = createCache();
- cache.isUniqueByDependants = isUniqueByDependants;
- caches.set( LEAF_KEY, cache );
- }
-
- return caches.get( LEAF_KEY );
- }
-
- // Assign cache handler by availability of WeakMap
- getCache = hasWeakMap ? getWeakMapCache : getRootCache;
-
- /**
- * Resets root memoization cache.
- */
- function clear() {
- rootCache = hasWeakMap ? new WeakMap() : createCache();
- }
-
- // eslint-disable-next-line jsdoc/check-param-names
- /**
- * The augmented selector call, considering first whether dependants have
- * changed before passing it to underlying memoize function.
- *
- * @param {Object} source Source object for derivation.
- * @param {...*} extraArgs Additional arguments to pass to selector.
- *
- * @return {*} Selector result.
- */
- function callSelector( /* source, ...extraArgs */ ) {
- var len = arguments.length,
- cache, node, i, args, dependants;
-
- // Create copy of arguments (avoid leaking deoptimization).
- args = new Array( len );
- for ( i = 0; i < len; i++ ) {
- args[ i ] = arguments[ i ];
- }
-
- dependants = getDependants.apply( null, args );
- cache = getCache( dependants );
-
- // If not guaranteed uniqueness by dependants (primitive type or lack
- // of WeakMap support), shallow compare against last dependants and, if
- // references have changed, destroy cache to recalculate result.
- if ( ! cache.isUniqueByDependants ) {
- if ( cache.lastDependants && ! isShallowEqual( dependants, cache.lastDependants, 0 ) ) {
- cache.clear();
- }
-
- cache.lastDependants = dependants;
- }
-
- node = cache.head;
- while ( node ) {
- // Check whether node arguments match arguments
- if ( ! isShallowEqual( node.args, args, 1 ) ) {
- node = node.next;
- continue;
- }
-
- // At this point we can assume we've found a match
-
- // Surface matched node to head if not already
- if ( node !== cache.head ) {
- // Adjust siblings to point to each other.
- node.prev.next = node.next;
- if ( node.next ) {
- node.next.prev = node.prev;
- }
-
- node.next = cache.head;
- node.prev = null;
- cache.head.prev = node;
- cache.head = node;
- }
-
- // Return immediately
- return node.val;
- }
-
- // No cached value found. Continue to insertion phase:
-
- node = {
- // Generate the result from original function
- val: selector.apply( null, args ),
- };
-
- // Avoid including the source object in the cache.
- args[ 0 ] = null;
- node.args = args;
-
- // Don't need to check whether node is already head, since it would
- // have been returned above already if it was
-
- // Shift existing head down list
- if ( cache.head ) {
- cache.head.prev = node;
- node.next = cache.head;
- }
-
- cache.head = node;
-
- return node.val;
- }
-
- callSelector.getDependants = getDependants;
- callSelector.clear = clear;
- clear();
-
- return callSelector;
-});
-
-
-/***/ }),
-
-/***/ 37:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["deprecated"]; }());
-
-/***/ }),
-
-/***/ 38:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _arrayWithHoles; });
-function _arrayWithHoles(arr) {
- if (Array.isArray(arr)) return arr;
-}
-
-/***/ }),
-
-/***/ 39:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _nonIterableRest; });
-function _nonIterableRest() {
- throw new TypeError("Invalid attempt to destructure non-iterable instance");
-}
-
-/***/ }),
-
-/***/ 4:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["data"]; }());
-
-/***/ }),
-
-/***/ 41:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["isShallowEqual"]; }());
-
-/***/ }),
-
-/***/ 42:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["viewport"]; }());
-
-/***/ }),
-
-/***/ 44:
-/***/ (function(module, exports, __webpack_require__) {
-
-module.exports = function memize( fn, options ) {
- var size = 0,
- maxSize, head, tail;
-
- if ( options && options.maxSize ) {
- maxSize = options.maxSize;
- }
-
- function memoized( /* ...args */ ) {
- var node = head,
- len = arguments.length,
- args, i;
-
- searchCache: while ( node ) {
- // Perform a shallow equality test to confirm that whether the node
- // under test is a candidate for the arguments passed. Two arrays
- // are shallowly equal if their length matches and each entry is
- // strictly equal between the two sets. Avoid abstracting to a
- // function which could incur an arguments leaking deoptimization.
-
- // Check whether node arguments match arguments length
- if ( node.args.length !== arguments.length ) {
- node = node.next;
- continue;
- }
-
- // Check whether node arguments match arguments values
- for ( i = 0; i < len; i++ ) {
- if ( node.args[ i ] !== arguments[ i ] ) {
- node = node.next;
- continue searchCache;
- }
- }
-
- // At this point we can assume we've found a match
-
- // Surface matched node to head if not already
- if ( node !== head ) {
- // As tail, shift to previous. Must only shift if not also
- // head, since if both head and tail, there is no previous.
- if ( node === tail ) {
- tail = node.prev;
- }
-
- // Adjust siblings to point to each other. If node was tail,
- // this also handles new tail's empty `next` assignment.
- node.prev.next = node.next;
- if ( node.next ) {
- node.next.prev = node.prev;
- }
-
- node.next = head;
- node.prev = null;
- head.prev = node;
- head = node;
- }
-
- // Return immediately
- return node.val;
- }
-
- // No cached value found. Continue to insertion phase:
-
- // Create a copy of arguments (avoid leaking deoptimization)
- args = new Array( len );
- for ( i = 0; i < len; i++ ) {
- args[ i ] = arguments[ i ];
- }
-
- node = {
- args: args,
-
- // Generate the result from original function
- val: fn.apply( null, args )
- };
-
- // Don't need to check whether node is already head, since it would
- // have been returned above already if it was
-
- // Shift existing head down list
- if ( head ) {
- head.prev = node;
- node.next = head;
- } else {
- // If no head, follows that there's no tail (at initial or reset)
- tail = node;
- }
-
- // Trim tail if we're reached max size and are pending cache insertion
- if ( size === maxSize ) {
- tail = tail.prev;
- tail.next = null;
- } else {
- size++;
- }
-
- head = node;
-
- return node.val;
- }
-
- memoized.clear = function() {
- head = null;
- tail = null;
- size = 0;
- };
-
- if ( false ) {}
-
- return memoized;
-};
-
-
-/***/ }),
-
-/***/ 45:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["a11y"]; }());
-
-/***/ }),
-
-/***/ 47:
-/***/ (function(module, exports, __webpack_require__) {
-
-/**
- * Copyright (c) 2014-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-var runtime = (function (exports) {
- "use strict";
-
- var Op = Object.prototype;
- var hasOwn = Op.hasOwnProperty;
- var undefined; // More compressible than void 0.
- var $Symbol = typeof Symbol === "function" ? Symbol : {};
- var iteratorSymbol = $Symbol.iterator || "@@iterator";
- var asyncIteratorSymbol = $Symbol.asyncIterator || "@@asyncIterator";
- var toStringTagSymbol = $Symbol.toStringTag || "@@toStringTag";
-
- function wrap(innerFn, outerFn, self, tryLocsList) {
- // If outerFn provided and outerFn.prototype is a Generator, then outerFn.prototype instanceof Generator.
- var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator;
- var generator = Object.create(protoGenerator.prototype);
- var context = new Context(tryLocsList || []);
-
- // The ._invoke method unifies the implementations of the .next,
- // .throw, and .return methods.
- generator._invoke = makeInvokeMethod(innerFn, self, context);
-
- return generator;
- }
- exports.wrap = wrap;
-
- // Try/catch helper to minimize deoptimizations. Returns a completion
- // record like context.tryEntries[i].completion. This interface could
- // have been (and was previously) designed to take a closure to be
- // invoked without arguments, but in all the cases we care about we
- // already have an existing method we want to call, so there's no need
- // to create a new function object. We can even get away with assuming
- // the method takes exactly one argument, since that happens to be true
- // in every case, so we don't have to touch the arguments object. The
- // only additional allocation required is the completion record, which
- // has a stable shape and so hopefully should be cheap to allocate.
- function tryCatch(fn, obj, arg) {
- try {
- return { type: "normal", arg: fn.call(obj, arg) };
- } catch (err) {
- return { type: "throw", arg: err };
- }
- }
-
- var GenStateSuspendedStart = "suspendedStart";
- var GenStateSuspendedYield = "suspendedYield";
- var GenStateExecuting = "executing";
- var GenStateCompleted = "completed";
-
- // Returning this object from the innerFn has the same effect as
- // breaking out of the dispatch switch statement.
- var ContinueSentinel = {};
-
- // Dummy constructor functions that we use as the .constructor and
- // .constructor.prototype properties for functions that return Generator
- // objects. For full spec compliance, you may wish to configure your
- // minifier not to mangle the names of these two functions.
- function Generator() {}
- function GeneratorFunction() {}
- function GeneratorFunctionPrototype() {}
-
- // This is a polyfill for %IteratorPrototype% for environments that
- // don't natively support it.
- var IteratorPrototype = {};
- IteratorPrototype[iteratorSymbol] = function () {
- return this;
- };
-
- var getProto = Object.getPrototypeOf;
- var NativeIteratorPrototype = getProto && getProto(getProto(values([])));
- if (NativeIteratorPrototype &&
- NativeIteratorPrototype !== Op &&
- hasOwn.call(NativeIteratorPrototype, iteratorSymbol)) {
- // This environment has a native %IteratorPrototype%; use it instead
- // of the polyfill.
- IteratorPrototype = NativeIteratorPrototype;
- }
-
- var Gp = GeneratorFunctionPrototype.prototype =
- Generator.prototype = Object.create(IteratorPrototype);
- GeneratorFunction.prototype = Gp.constructor = GeneratorFunctionPrototype;
- GeneratorFunctionPrototype.constructor = GeneratorFunction;
- GeneratorFunctionPrototype[toStringTagSymbol] =
- GeneratorFunction.displayName = "GeneratorFunction";
-
- // Helper for defining the .next, .throw, and .return methods of the
- // Iterator interface in terms of a single ._invoke method.
- function defineIteratorMethods(prototype) {
- ["next", "throw", "return"].forEach(function(method) {
- prototype[method] = function(arg) {
- return this._invoke(method, arg);
- };
- });
- }
-
- exports.isGeneratorFunction = function(genFun) {
- var ctor = typeof genFun === "function" && genFun.constructor;
- return ctor
- ? ctor === GeneratorFunction ||
- // For the native GeneratorFunction constructor, the best we can
- // do is to check its .name property.
- (ctor.displayName || ctor.name) === "GeneratorFunction"
- : false;
- };
-
- exports.mark = function(genFun) {
- if (Object.setPrototypeOf) {
- Object.setPrototypeOf(genFun, GeneratorFunctionPrototype);
- } else {
- genFun.__proto__ = GeneratorFunctionPrototype;
- if (!(toStringTagSymbol in genFun)) {
- genFun[toStringTagSymbol] = "GeneratorFunction";
- }
- }
- genFun.prototype = Object.create(Gp);
- return genFun;
- };
-
- // Within the body of any async function, `await x` is transformed to
- // `yield regeneratorRuntime.awrap(x)`, so that the runtime can test
- // `hasOwn.call(value, "__await")` to determine if the yielded value is
- // meant to be awaited.
- exports.awrap = function(arg) {
- return { __await: arg };
- };
-
- function AsyncIterator(generator) {
- function invoke(method, arg, resolve, reject) {
- var record = tryCatch(generator[method], generator, arg);
- if (record.type === "throw") {
- reject(record.arg);
- } else {
- var result = record.arg;
- var value = result.value;
- if (value &&
- typeof value === "object" &&
- hasOwn.call(value, "__await")) {
- return Promise.resolve(value.__await).then(function(value) {
- invoke("next", value, resolve, reject);
- }, function(err) {
- invoke("throw", err, resolve, reject);
- });
- }
-
- return Promise.resolve(value).then(function(unwrapped) {
- // When a yielded Promise is resolved, its final value becomes
- // the .value of the Promise<{value,done}> result for the
- // current iteration.
- result.value = unwrapped;
- resolve(result);
- }, function(error) {
- // If a rejected Promise was yielded, throw the rejection back
- // into the async generator function so it can be handled there.
- return invoke("throw", error, resolve, reject);
- });
- }
- }
-
- var previousPromise;
-
- function enqueue(method, arg) {
- function callInvokeWithMethodAndArg() {
- return new Promise(function(resolve, reject) {
- invoke(method, arg, resolve, reject);
- });
- }
-
- return previousPromise =
- // If enqueue has been called before, then we want to wait until
- // all previous Promises have been resolved before calling invoke,
- // so that results are always delivered in the correct order. If
- // enqueue has not been called before, then it is important to
- // call invoke immediately, without waiting on a callback to fire,
- // so that the async generator function has the opportunity to do
- // any necessary setup in a predictable way. This predictability
- // is why the Promise constructor synchronously invokes its
- // executor callback, and why async functions synchronously
- // execute code before the first await. Since we implement simple
- // async functions in terms of async generators, it is especially
- // important to get this right, even though it requires care.
- previousPromise ? previousPromise.then(
- callInvokeWithMethodAndArg,
- // Avoid propagating failures to Promises returned by later
- // invocations of the iterator.
- callInvokeWithMethodAndArg
- ) : callInvokeWithMethodAndArg();
- }
-
- // Define the unified helper method that is used to implement .next,
- // .throw, and .return (see defineIteratorMethods).
- this._invoke = enqueue;
- }
-
- defineIteratorMethods(AsyncIterator.prototype);
- AsyncIterator.prototype[asyncIteratorSymbol] = function () {
- return this;
- };
- exports.AsyncIterator = AsyncIterator;
-
- // Note that simple async functions are implemented on top of
- // AsyncIterator objects; they just return a Promise for the value of
- // the final result produced by the iterator.
- exports.async = function(innerFn, outerFn, self, tryLocsList) {
- var iter = new AsyncIterator(
- wrap(innerFn, outerFn, self, tryLocsList)
- );
-
- return exports.isGeneratorFunction(outerFn)
- ? iter // If outerFn is a generator, return the full iterator.
- : iter.next().then(function(result) {
- return result.done ? result.value : iter.next();
- });
- };
-
- function makeInvokeMethod(innerFn, self, context) {
- var state = GenStateSuspendedStart;
-
- return function invoke(method, arg) {
- if (state === GenStateExecuting) {
- throw new Error("Generator is already running");
- }
-
- if (state === GenStateCompleted) {
- if (method === "throw") {
- throw arg;
- }
-
- // Be forgiving, per 25.3.3.3.3 of the spec:
- // https://people.mozilla.org/~jorendorff/es6-draft.html#sec-generatorresume
- return doneResult();
- }
-
- context.method = method;
- context.arg = arg;
-
- while (true) {
- var delegate = context.delegate;
- if (delegate) {
- var delegateResult = maybeInvokeDelegate(delegate, context);
- if (delegateResult) {
- if (delegateResult === ContinueSentinel) continue;
- return delegateResult;
- }
- }
-
- if (context.method === "next") {
- // Setting context._sent for legacy support of Babel's
- // function.sent implementation.
- context.sent = context._sent = context.arg;
-
- } else if (context.method === "throw") {
- if (state === GenStateSuspendedStart) {
- state = GenStateCompleted;
- throw context.arg;
- }
-
- context.dispatchException(context.arg);
-
- } else if (context.method === "return") {
- context.abrupt("return", context.arg);
- }
-
- state = GenStateExecuting;
-
- var record = tryCatch(innerFn, self, context);
- if (record.type === "normal") {
- // If an exception is thrown from innerFn, we leave state ===
- // GenStateExecuting and loop back for another invocation.
- state = context.done
- ? GenStateCompleted
- : GenStateSuspendedYield;
-
- if (record.arg === ContinueSentinel) {
- continue;
- }
-
- return {
- value: record.arg,
- done: context.done
- };
-
- } else if (record.type === "throw") {
- state = GenStateCompleted;
- // Dispatch the exception by looping back around to the
- // context.dispatchException(context.arg) call above.
- context.method = "throw";
- context.arg = record.arg;
- }
- }
- };
- }
-
- // Call delegate.iterator[context.method](context.arg) and handle the
- // result, either by returning a { value, done } result from the
- // delegate iterator, or by modifying context.method and context.arg,
- // setting context.delegate to null, and returning the ContinueSentinel.
- function maybeInvokeDelegate(delegate, context) {
- var method = delegate.iterator[context.method];
- if (method === undefined) {
- // A .throw or .return when the delegate iterator has no .throw
- // method always terminates the yield* loop.
- context.delegate = null;
-
- if (context.method === "throw") {
- // Note: ["return"] must be used for ES3 parsing compatibility.
- if (delegate.iterator["return"]) {
- // If the delegate iterator has a return method, give it a
- // chance to clean up.
- context.method = "return";
- context.arg = undefined;
- maybeInvokeDelegate(delegate, context);
-
- if (context.method === "throw") {
- // If maybeInvokeDelegate(context) changed context.method from
- // "return" to "throw", let that override the TypeError below.
- return ContinueSentinel;
- }
- }
-
- context.method = "throw";
- context.arg = new TypeError(
- "The iterator does not provide a 'throw' method");
- }
-
- return ContinueSentinel;
- }
-
- var record = tryCatch(method, delegate.iterator, context.arg);
-
- if (record.type === "throw") {
- context.method = "throw";
- context.arg = record.arg;
- context.delegate = null;
- return ContinueSentinel;
- }
-
- var info = record.arg;
-
- if (! info) {
- context.method = "throw";
- context.arg = new TypeError("iterator result is not an object");
- context.delegate = null;
- return ContinueSentinel;
- }
-
- if (info.done) {
- // Assign the result of the finished delegate to the temporary
- // variable specified by delegate.resultName (see delegateYield).
- context[delegate.resultName] = info.value;
-
- // Resume execution at the desired location (see delegateYield).
- context.next = delegate.nextLoc;
-
- // If context.method was "throw" but the delegate handled the
- // exception, let the outer generator proceed normally. If
- // context.method was "next", forget context.arg since it has been
- // "consumed" by the delegate iterator. If context.method was
- // "return", allow the original .return call to continue in the
- // outer generator.
- if (context.method !== "return") {
- context.method = "next";
- context.arg = undefined;
- }
-
- } else {
- // Re-yield the result returned by the delegate method.
- return info;
- }
-
- // The delegate iterator is finished, so forget it and continue with
- // the outer generator.
- context.delegate = null;
- return ContinueSentinel;
- }
-
- // Define Generator.prototype.{next,throw,return} in terms of the
- // unified ._invoke helper method.
- defineIteratorMethods(Gp);
-
- Gp[toStringTagSymbol] = "Generator";
-
- // A Generator should always return itself as the iterator object when the
- // @@iterator function is called on it. Some browsers' implementations of the
- // iterator prototype chain incorrectly implement this, causing the Generator
- // object to not be returned from this call. This ensures that doesn't happen.
- // See https://github.com/facebook/regenerator/issues/274 for more details.
- Gp[iteratorSymbol] = function() {
- return this;
- };
-
- Gp.toString = function() {
- return "[object Generator]";
- };
-
- function pushTryEntry(locs) {
- var entry = { tryLoc: locs[0] };
-
- if (1 in locs) {
- entry.catchLoc = locs[1];
- }
-
- if (2 in locs) {
- entry.finallyLoc = locs[2];
- entry.afterLoc = locs[3];
- }
-
- this.tryEntries.push(entry);
- }
-
- function resetTryEntry(entry) {
- var record = entry.completion || {};
- record.type = "normal";
- delete record.arg;
- entry.completion = record;
- }
-
- function Context(tryLocsList) {
- // The root entry object (effectively a try statement without a catch
- // or a finally block) gives us a place to store values thrown from
- // locations where there is no enclosing try statement.
- this.tryEntries = [{ tryLoc: "root" }];
- tryLocsList.forEach(pushTryEntry, this);
- this.reset(true);
- }
-
- exports.keys = function(object) {
- var keys = [];
- for (var key in object) {
- keys.push(key);
- }
- keys.reverse();
-
- // Rather than returning an object with a next method, we keep
- // things simple and return the next function itself.
- return function next() {
- while (keys.length) {
- var key = keys.pop();
- if (key in object) {
- next.value = key;
- next.done = false;
- return next;
- }
- }
-
- // To avoid creating an additional object, we just hang the .value
- // and .done properties off the next function object itself. This
- // also ensures that the minifier will not anonymize the function.
- next.done = true;
- return next;
- };
- };
-
- function values(iterable) {
- if (iterable) {
- var iteratorMethod = iterable[iteratorSymbol];
- if (iteratorMethod) {
- return iteratorMethod.call(iterable);
- }
-
- if (typeof iterable.next === "function") {
- return iterable;
- }
-
- if (!isNaN(iterable.length)) {
- var i = -1, next = function next() {
- while (++i < iterable.length) {
- if (hasOwn.call(iterable, i)) {
- next.value = iterable[i];
- next.done = false;
- return next;
- }
- }
-
- next.value = undefined;
- next.done = true;
-
- return next;
- };
-
- return next.next = next;
- }
- }
-
- // Return an iterator with no values.
- return { next: doneResult };
- }
- exports.values = values;
-
- function doneResult() {
- return { value: undefined, done: true };
- }
-
- Context.prototype = {
- constructor: Context,
-
- reset: function(skipTempReset) {
- this.prev = 0;
- this.next = 0;
- // Resetting context._sent for legacy support of Babel's
- // function.sent implementation.
- this.sent = this._sent = undefined;
- this.done = false;
- this.delegate = null;
-
- this.method = "next";
- this.arg = undefined;
-
- this.tryEntries.forEach(resetTryEntry);
-
- if (!skipTempReset) {
- for (var name in this) {
- // Not sure about the optimal order of these conditions:
- if (name.charAt(0) === "t" &&
- hasOwn.call(this, name) &&
- !isNaN(+name.slice(1))) {
- this[name] = undefined;
- }
- }
- }
- },
-
- stop: function() {
- this.done = true;
-
- var rootEntry = this.tryEntries[0];
- var rootRecord = rootEntry.completion;
- if (rootRecord.type === "throw") {
- throw rootRecord.arg;
- }
-
- return this.rval;
- },
-
- dispatchException: function(exception) {
- if (this.done) {
- throw exception;
- }
-
- var context = this;
- function handle(loc, caught) {
- record.type = "throw";
- record.arg = exception;
- context.next = loc;
-
- if (caught) {
- // If the dispatched exception was caught by a catch block,
- // then let that catch block handle the exception normally.
- context.method = "next";
- context.arg = undefined;
- }
-
- return !! caught;
- }
-
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- var record = entry.completion;
-
- if (entry.tryLoc === "root") {
- // Exception thrown outside of any try block that could handle
- // it, so set the completion value of the entire function to
- // throw the exception.
- return handle("end");
- }
-
- if (entry.tryLoc <= this.prev) {
- var hasCatch = hasOwn.call(entry, "catchLoc");
- var hasFinally = hasOwn.call(entry, "finallyLoc");
-
- if (hasCatch && hasFinally) {
- if (this.prev < entry.catchLoc) {
- return handle(entry.catchLoc, true);
- } else if (this.prev < entry.finallyLoc) {
- return handle(entry.finallyLoc);
- }
-
- } else if (hasCatch) {
- if (this.prev < entry.catchLoc) {
- return handle(entry.catchLoc, true);
- }
-
- } else if (hasFinally) {
- if (this.prev < entry.finallyLoc) {
- return handle(entry.finallyLoc);
- }
-
- } else {
- throw new Error("try statement without catch or finally");
- }
- }
- }
- },
-
- abrupt: function(type, arg) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.tryLoc <= this.prev &&
- hasOwn.call(entry, "finallyLoc") &&
- this.prev < entry.finallyLoc) {
- var finallyEntry = entry;
- break;
- }
- }
-
- if (finallyEntry &&
- (type === "break" ||
- type === "continue") &&
- finallyEntry.tryLoc <= arg &&
- arg <= finallyEntry.finallyLoc) {
- // Ignore the finally entry if control is not jumping to a
- // location outside the try/catch block.
- finallyEntry = null;
- }
-
- var record = finallyEntry ? finallyEntry.completion : {};
- record.type = type;
- record.arg = arg;
-
- if (finallyEntry) {
- this.method = "next";
- this.next = finallyEntry.finallyLoc;
- return ContinueSentinel;
- }
-
- return this.complete(record);
- },
-
- complete: function(record, afterLoc) {
- if (record.type === "throw") {
- throw record.arg;
- }
-
- if (record.type === "break" ||
- record.type === "continue") {
- this.next = record.arg;
- } else if (record.type === "return") {
- this.rval = this.arg = record.arg;
- this.method = "return";
- this.next = "end";
- } else if (record.type === "normal" && afterLoc) {
- this.next = afterLoc;
- }
-
- return ContinueSentinel;
- },
-
- finish: function(finallyLoc) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.finallyLoc === finallyLoc) {
- this.complete(entry.completion, entry.afterLoc);
- resetTryEntry(entry);
- return ContinueSentinel;
- }
- }
- },
-
- "catch": function(tryLoc) {
- for (var i = this.tryEntries.length - 1; i >= 0; --i) {
- var entry = this.tryEntries[i];
- if (entry.tryLoc === tryLoc) {
- var record = entry.completion;
- if (record.type === "throw") {
- var thrown = record.arg;
- resetTryEntry(entry);
- }
- return thrown;
- }
- }
-
- // The context.catch method must only be called with a location
- // argument that corresponds to a known catch block.
- throw new Error("illegal catch attempt");
- },
-
- delegateYield: function(iterable, resultName, nextLoc) {
- this.delegate = {
- iterator: values(iterable),
- resultName: resultName,
- nextLoc: nextLoc
- };
-
- if (this.method === "next") {
- // Deliberately forget the last sent value so that we don't
- // accidentally pass it on to the delegate.
- this.arg = undefined;
- }
-
- return ContinueSentinel;
- }
- };
-
- // Regardless of whether this script is executing as a CommonJS module
- // or not, return the runtime object so that we can declare the variable
- // regeneratorRuntime in the outer scope, which allows this module to be
- // injected easily by `bin/regenerator --include-runtime script.js`.
- return exports;
-
-}(
- // If this script is executing as a CommonJS module, use module.exports
- // as the regeneratorRuntime namespace. Otherwise create a new empty
- // object. Either way, the resulting object will be used to initialize
- // the regeneratorRuntime variable at the top of this file.
- true ? module.exports : undefined
-));
-
-try {
- regeneratorRuntime = runtime;
-} catch (accidentalStrictMode) {
- // This module should not be running in strict mode, so the above
- // assignment should always work unless something is misconfigured. Just
- // in case runtime.js accidentally runs in strict mode, we can escape
- // strict mode using a global Function call. This could conceivably fail
- // if a Content Security Policy forbids using Function, but in that case
- // the proper solution is to fix the accidental strict mode problem. If
- // you've misconfigured your bundler to force strict mode and applied a
- // CSP to forbid Function, and you're not willing to fix either of those
- // problems, please detail your unique predicament in a GitHub issue.
- Function("r", "regeneratorRuntime = r")(runtime);
-}
-
-
-/***/ }),
-
-/***/ 48:
-/***/ (function(module, exports, __webpack_require__) {
-
-var __WEBPACK_AMD_DEFINE_RESULT__;// TinyColor v1.4.1
-// https://github.com/bgrins/TinyColor
-// Brian Grinstead, MIT License
-
-(function(Math) {
-
-var trimLeft = /^\s+/,
- trimRight = /\s+$/,
- tinyCounter = 0,
- mathRound = Math.round,
- mathMin = Math.min,
- mathMax = Math.max,
- mathRandom = Math.random;
-
-function tinycolor (color, opts) {
-
- color = (color) ? color : '';
- opts = opts || { };
-
- // If input is already a tinycolor, return itself
- if (color instanceof tinycolor) {
- return color;
- }
- // If we are called as a function, call using new instead
- if (!(this instanceof tinycolor)) {
- return new tinycolor(color, opts);
- }
-
- var rgb = inputToRGB(color);
- this._originalInput = color,
- this._r = rgb.r,
- this._g = rgb.g,
- this._b = rgb.b,
- this._a = rgb.a,
- this._roundA = mathRound(100*this._a) / 100,
- this._format = opts.format || rgb.format;
- this._gradientType = opts.gradientType;
-
- // Don't let the range of [0,255] come back in [0,1].
- // Potentially lose a little bit of precision here, but will fix issues where
- // .5 gets interpreted as half of the total, instead of half of 1
- // If it was supposed to be 128, this was already taken care of by `inputToRgb`
- if (this._r < 1) { this._r = mathRound(this._r); }
- if (this._g < 1) { this._g = mathRound(this._g); }
- if (this._b < 1) { this._b = mathRound(this._b); }
-
- this._ok = rgb.ok;
- this._tc_id = tinyCounter++;
-}
-
-tinycolor.prototype = {
- isDark: function() {
- return this.getBrightness() < 128;
- },
- isLight: function() {
- return !this.isDark();
- },
- isValid: function() {
- return this._ok;
- },
- getOriginalInput: function() {
- return this._originalInput;
- },
- getFormat: function() {
- return this._format;
- },
- getAlpha: function() {
- return this._a;
- },
- getBrightness: function() {
- //http://www.w3.org/TR/AERT#color-contrast
- var rgb = this.toRgb();
- return (rgb.r * 299 + rgb.g * 587 + rgb.b * 114) / 1000;
- },
- getLuminance: function() {
- //http://www.w3.org/TR/2008/REC-WCAG20-20081211/#relativeluminancedef
- var rgb = this.toRgb();
- var RsRGB, GsRGB, BsRGB, R, G, B;
- RsRGB = rgb.r/255;
- GsRGB = rgb.g/255;
- BsRGB = rgb.b/255;
-
- if (RsRGB <= 0.03928) {R = RsRGB / 12.92;} else {R = Math.pow(((RsRGB + 0.055) / 1.055), 2.4);}
- if (GsRGB <= 0.03928) {G = GsRGB / 12.92;} else {G = Math.pow(((GsRGB + 0.055) / 1.055), 2.4);}
- if (BsRGB <= 0.03928) {B = BsRGB / 12.92;} else {B = Math.pow(((BsRGB + 0.055) / 1.055), 2.4);}
- return (0.2126 * R) + (0.7152 * G) + (0.0722 * B);
- },
- setAlpha: function(value) {
- this._a = boundAlpha(value);
- this._roundA = mathRound(100*this._a) / 100;
- return this;
- },
- toHsv: function() {
- var hsv = rgbToHsv(this._r, this._g, this._b);
- return { h: hsv.h * 360, s: hsv.s, v: hsv.v, a: this._a };
- },
- toHsvString: function() {
- var hsv = rgbToHsv(this._r, this._g, this._b);
- var h = mathRound(hsv.h * 360), s = mathRound(hsv.s * 100), v = mathRound(hsv.v * 100);
- return (this._a == 1) ?
- "hsv(" + h + ", " + s + "%, " + v + "%)" :
- "hsva(" + h + ", " + s + "%, " + v + "%, "+ this._roundA + ")";
- },
- toHsl: function() {
- var hsl = rgbToHsl(this._r, this._g, this._b);
- return { h: hsl.h * 360, s: hsl.s, l: hsl.l, a: this._a };
- },
- toHslString: function() {
- var hsl = rgbToHsl(this._r, this._g, this._b);
- var h = mathRound(hsl.h * 360), s = mathRound(hsl.s * 100), l = mathRound(hsl.l * 100);
- return (this._a == 1) ?
- "hsl(" + h + ", " + s + "%, " + l + "%)" :
- "hsla(" + h + ", " + s + "%, " + l + "%, "+ this._roundA + ")";
- },
- toHex: function(allow3Char) {
- return rgbToHex(this._r, this._g, this._b, allow3Char);
- },
- toHexString: function(allow3Char) {
- return '#' + this.toHex(allow3Char);
- },
- toHex8: function(allow4Char) {
- return rgbaToHex(this._r, this._g, this._b, this._a, allow4Char);
- },
- toHex8String: function(allow4Char) {
- return '#' + this.toHex8(allow4Char);
- },
- toRgb: function() {
- return { r: mathRound(this._r), g: mathRound(this._g), b: mathRound(this._b), a: this._a };
- },
- toRgbString: function() {
- return (this._a == 1) ?
- "rgb(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ")" :
- "rgba(" + mathRound(this._r) + ", " + mathRound(this._g) + ", " + mathRound(this._b) + ", " + this._roundA + ")";
- },
- toPercentageRgb: function() {
- return { r: mathRound(bound01(this._r, 255) * 100) + "%", g: mathRound(bound01(this._g, 255) * 100) + "%", b: mathRound(bound01(this._b, 255) * 100) + "%", a: this._a };
- },
- toPercentageRgbString: function() {
- return (this._a == 1) ?
- "rgb(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%)" :
- "rgba(" + mathRound(bound01(this._r, 255) * 100) + "%, " + mathRound(bound01(this._g, 255) * 100) + "%, " + mathRound(bound01(this._b, 255) * 100) + "%, " + this._roundA + ")";
- },
- toName: function() {
- if (this._a === 0) {
- return "transparent";
- }
-
- if (this._a < 1) {
- return false;
- }
-
- return hexNames[rgbToHex(this._r, this._g, this._b, true)] || false;
- },
- toFilter: function(secondColor) {
- var hex8String = '#' + rgbaToArgbHex(this._r, this._g, this._b, this._a);
- var secondHex8String = hex8String;
- var gradientType = this._gradientType ? "GradientType = 1, " : "";
-
- if (secondColor) {
- var s = tinycolor(secondColor);
- secondHex8String = '#' + rgbaToArgbHex(s._r, s._g, s._b, s._a);
- }
-
- return "progid:DXImageTransform.Microsoft.gradient("+gradientType+"startColorstr="+hex8String+",endColorstr="+secondHex8String+")";
- },
- toString: function(format) {
- var formatSet = !!format;
- format = format || this._format;
-
- var formattedString = false;
- var hasAlpha = this._a < 1 && this._a >= 0;
- var needsAlphaFormat = !formatSet && hasAlpha && (format === "hex" || format === "hex6" || format === "hex3" || format === "hex4" || format === "hex8" || format === "name");
-
- if (needsAlphaFormat) {
- // Special case for "transparent", all other non-alpha formats
- // will return rgba when there is transparency.
- if (format === "name" && this._a === 0) {
- return this.toName();
- }
- return this.toRgbString();
- }
- if (format === "rgb") {
- formattedString = this.toRgbString();
- }
- if (format === "prgb") {
- formattedString = this.toPercentageRgbString();
- }
- if (format === "hex" || format === "hex6") {
- formattedString = this.toHexString();
- }
- if (format === "hex3") {
- formattedString = this.toHexString(true);
- }
- if (format === "hex4") {
- formattedString = this.toHex8String(true);
- }
- if (format === "hex8") {
- formattedString = this.toHex8String();
- }
- if (format === "name") {
- formattedString = this.toName();
- }
- if (format === "hsl") {
- formattedString = this.toHslString();
- }
- if (format === "hsv") {
- formattedString = this.toHsvString();
- }
-
- return formattedString || this.toHexString();
- },
- clone: function() {
- return tinycolor(this.toString());
- },
-
- _applyModification: function(fn, args) {
- var color = fn.apply(null, [this].concat([].slice.call(args)));
- this._r = color._r;
- this._g = color._g;
- this._b = color._b;
- this.setAlpha(color._a);
- return this;
- },
- lighten: function() {
- return this._applyModification(lighten, arguments);
- },
- brighten: function() {
- return this._applyModification(brighten, arguments);
- },
- darken: function() {
- return this._applyModification(darken, arguments);
- },
- desaturate: function() {
- return this._applyModification(desaturate, arguments);
- },
- saturate: function() {
- return this._applyModification(saturate, arguments);
- },
- greyscale: function() {
- return this._applyModification(greyscale, arguments);
- },
- spin: function() {
- return this._applyModification(spin, arguments);
- },
-
- _applyCombination: function(fn, args) {
- return fn.apply(null, [this].concat([].slice.call(args)));
- },
- analogous: function() {
- return this._applyCombination(analogous, arguments);
- },
- complement: function() {
- return this._applyCombination(complement, arguments);
- },
- monochromatic: function() {
- return this._applyCombination(monochromatic, arguments);
- },
- splitcomplement: function() {
- return this._applyCombination(splitcomplement, arguments);
- },
- triad: function() {
- return this._applyCombination(triad, arguments);
- },
- tetrad: function() {
- return this._applyCombination(tetrad, arguments);
- }
-};
-
-// If input is an object, force 1 into "1.0" to handle ratios properly
-// String input requires "1.0" as input, so 1 will be treated as 1
-tinycolor.fromRatio = function(color, opts) {
- if (typeof color == "object") {
- var newColor = {};
- for (var i in color) {
- if (color.hasOwnProperty(i)) {
- if (i === "a") {
- newColor[i] = color[i];
- }
- else {
- newColor[i] = convertToPercentage(color[i]);
- }
- }
- }
- color = newColor;
- }
-
- return tinycolor(color, opts);
-};
-
-// Given a string or object, convert that input to RGB
-// Possible string inputs:
-//
-// "red"
-// "#f00" or "f00"
-// "#ff0000" or "ff0000"
-// "#ff000000" or "ff000000"
-// "rgb 255 0 0" or "rgb (255, 0, 0)"
-// "rgb 1.0 0 0" or "rgb (1, 0, 0)"
-// "rgba (255, 0, 0, 1)" or "rgba 255, 0, 0, 1"
-// "rgba (1.0, 0, 0, 1)" or "rgba 1.0, 0, 0, 1"
-// "hsl(0, 100%, 50%)" or "hsl 0 100% 50%"
-// "hsla(0, 100%, 50%, 1)" or "hsla 0 100% 50%, 1"
-// "hsv(0, 100%, 100%)" or "hsv 0 100% 100%"
-//
-function inputToRGB(color) {
-
- var rgb = { r: 0, g: 0, b: 0 };
- var a = 1;
- var s = null;
- var v = null;
- var l = null;
- var ok = false;
- var format = false;
-
- if (typeof color == "string") {
- color = stringInputToObject(color);
- }
-
- if (typeof color == "object") {
- if (isValidCSSUnit(color.r) && isValidCSSUnit(color.g) && isValidCSSUnit(color.b)) {
- rgb = rgbToRgb(color.r, color.g, color.b);
- ok = true;
- format = String(color.r).substr(-1) === "%" ? "prgb" : "rgb";
- }
- else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.v)) {
- s = convertToPercentage(color.s);
- v = convertToPercentage(color.v);
- rgb = hsvToRgb(color.h, s, v);
- ok = true;
- format = "hsv";
- }
- else if (isValidCSSUnit(color.h) && isValidCSSUnit(color.s) && isValidCSSUnit(color.l)) {
- s = convertToPercentage(color.s);
- l = convertToPercentage(color.l);
- rgb = hslToRgb(color.h, s, l);
- ok = true;
- format = "hsl";
- }
-
- if (color.hasOwnProperty("a")) {
- a = color.a;
- }
- }
-
- a = boundAlpha(a);
-
- return {
- ok: ok,
- format: color.format || format,
- r: mathMin(255, mathMax(rgb.r, 0)),
- g: mathMin(255, mathMax(rgb.g, 0)),
- b: mathMin(255, mathMax(rgb.b, 0)),
- a: a
- };
-}
-
-
-// Conversion Functions
-// --------------------
-
-// `rgbToHsl`, `rgbToHsv`, `hslToRgb`, `hsvToRgb` modified from:
-// <http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript>
-
-// `rgbToRgb`
-// Handle bounds / percentage checking to conform to CSS color spec
-// <http://www.w3.org/TR/css3-color/>
-// *Assumes:* r, g, b in [0, 255] or [0, 1]
-// *Returns:* { r, g, b } in [0, 255]
-function rgbToRgb(r, g, b){
- return {
- r: bound01(r, 255) * 255,
- g: bound01(g, 255) * 255,
- b: bound01(b, 255) * 255
- };
-}
-
-// `rgbToHsl`
-// Converts an RGB color value to HSL.
-// *Assumes:* r, g, and b are contained in [0, 255] or [0, 1]
-// *Returns:* { h, s, l } in [0,1]
-function rgbToHsl(r, g, b) {
-
- r = bound01(r, 255);
- g = bound01(g, 255);
- b = bound01(b, 255);
-
- var max = mathMax(r, g, b), min = mathMin(r, g, b);
- var h, s, l = (max + min) / 2;
-
- if(max == min) {
- h = s = 0; // achromatic
- }
- else {
- var d = max - min;
- s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
- switch(max) {
- case r: h = (g - b) / d + (g < b ? 6 : 0); break;
- case g: h = (b - r) / d + 2; break;
- case b: h = (r - g) / d + 4; break;
- }
-
- h /= 6;
- }
-
- return { h: h, s: s, l: l };
-}
-
-// `hslToRgb`
-// Converts an HSL color value to RGB.
-// *Assumes:* h is contained in [0, 1] or [0, 360] and s and l are contained [0, 1] or [0, 100]
-// *Returns:* { r, g, b } in the set [0, 255]
-function hslToRgb(h, s, l) {
- var r, g, b;
-
- h = bound01(h, 360);
- s = bound01(s, 100);
- l = bound01(l, 100);
-
- function hue2rgb(p, q, t) {
- if(t < 0) t += 1;
- if(t > 1) t -= 1;
- if(t < 1/6) return p + (q - p) * 6 * t;
- if(t < 1/2) return q;
- if(t < 2/3) return p + (q - p) * (2/3 - t) * 6;
- return p;
- }
-
- if(s === 0) {
- r = g = b = l; // achromatic
- }
- else {
- var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
- var p = 2 * l - q;
- r = hue2rgb(p, q, h + 1/3);
- g = hue2rgb(p, q, h);
- b = hue2rgb(p, q, h - 1/3);
- }
-
- return { r: r * 255, g: g * 255, b: b * 255 };
-}
-
-// `rgbToHsv`
-// Converts an RGB color value to HSV
-// *Assumes:* r, g, and b are contained in the set [0, 255] or [0, 1]
-// *Returns:* { h, s, v } in [0,1]
-function rgbToHsv(r, g, b) {
-
- r = bound01(r, 255);
- g = bound01(g, 255);
- b = bound01(b, 255);
-
- var max = mathMax(r, g, b), min = mathMin(r, g, b);
- var h, s, v = max;
-
- var d = max - min;
- s = max === 0 ? 0 : d / max;
-
- if(max == min) {
- h = 0; // achromatic
- }
- else {
- switch(max) {
- case r: h = (g - b) / d + (g < b ? 6 : 0); break;
- case g: h = (b - r) / d + 2; break;
- case b: h = (r - g) / d + 4; break;
- }
- h /= 6;
- }
- return { h: h, s: s, v: v };
-}
-
-// `hsvToRgb`
-// Converts an HSV color value to RGB.
-// *Assumes:* h is contained in [0, 1] or [0, 360] and s and v are contained in [0, 1] or [0, 100]
-// *Returns:* { r, g, b } in the set [0, 255]
- function hsvToRgb(h, s, v) {
-
- h = bound01(h, 360) * 6;
- s = bound01(s, 100);
- v = bound01(v, 100);
-
- var i = Math.floor(h),
- f = h - i,
- p = v * (1 - s),
- q = v * (1 - f * s),
- t = v * (1 - (1 - f) * s),
- mod = i % 6,
- r = [v, q, p, p, t, v][mod],
- g = [t, v, v, q, p, p][mod],
- b = [p, p, t, v, v, q][mod];
-
- return { r: r * 255, g: g * 255, b: b * 255 };
-}
-
-// `rgbToHex`
-// Converts an RGB color to hex
-// Assumes r, g, and b are contained in the set [0, 255]
-// Returns a 3 or 6 character hex
-function rgbToHex(r, g, b, allow3Char) {
-
- var hex = [
- pad2(mathRound(r).toString(16)),
- pad2(mathRound(g).toString(16)),
- pad2(mathRound(b).toString(16))
- ];
-
- // Return a 3 character hex if possible
- if (allow3Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1)) {
- return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0);
- }
-
- return hex.join("");
-}
-
-// `rgbaToHex`
-// Converts an RGBA color plus alpha transparency to hex
-// Assumes r, g, b are contained in the set [0, 255] and
-// a in [0, 1]. Returns a 4 or 8 character rgba hex
-function rgbaToHex(r, g, b, a, allow4Char) {
-
- var hex = [
- pad2(mathRound(r).toString(16)),
- pad2(mathRound(g).toString(16)),
- pad2(mathRound(b).toString(16)),
- pad2(convertDecimalToHex(a))
- ];
-
- // Return a 4 character hex if possible
- if (allow4Char && hex[0].charAt(0) == hex[0].charAt(1) && hex[1].charAt(0) == hex[1].charAt(1) && hex[2].charAt(0) == hex[2].charAt(1) && hex[3].charAt(0) == hex[3].charAt(1)) {
- return hex[0].charAt(0) + hex[1].charAt(0) + hex[2].charAt(0) + hex[3].charAt(0);
- }
-
- return hex.join("");
-}
-
-// `rgbaToArgbHex`
-// Converts an RGBA color to an ARGB Hex8 string
-// Rarely used, but required for "toFilter()"
-function rgbaToArgbHex(r, g, b, a) {
-
- var hex = [
- pad2(convertDecimalToHex(a)),
- pad2(mathRound(r).toString(16)),
- pad2(mathRound(g).toString(16)),
- pad2(mathRound(b).toString(16))
- ];
-
- return hex.join("");
-}
-
-// `equals`
-// Can be called with any tinycolor input
-tinycolor.equals = function (color1, color2) {
- if (!color1 || !color2) { return false; }
- return tinycolor(color1).toRgbString() == tinycolor(color2).toRgbString();
-};
-
-tinycolor.random = function() {
- return tinycolor.fromRatio({
- r: mathRandom(),
- g: mathRandom(),
- b: mathRandom()
- });
-};
-
-
-// Modification Functions
-// ----------------------
-// Thanks to less.js for some of the basics here
-// <https://github.com/cloudhead/less.js/blob/master/lib/less/functions.js>
-
-function desaturate(color, amount) {
- amount = (amount === 0) ? 0 : (amount || 10);
- var hsl = tinycolor(color).toHsl();
- hsl.s -= amount / 100;
- hsl.s = clamp01(hsl.s);
- return tinycolor(hsl);
-}
-
-function saturate(color, amount) {
- amount = (amount === 0) ? 0 : (amount || 10);
- var hsl = tinycolor(color).toHsl();
- hsl.s += amount / 100;
- hsl.s = clamp01(hsl.s);
- return tinycolor(hsl);
-}
-
-function greyscale(color) {
- return tinycolor(color).desaturate(100);
-}
-
-function lighten (color, amount) {
- amount = (amount === 0) ? 0 : (amount || 10);
- var hsl = tinycolor(color).toHsl();
- hsl.l += amount / 100;
- hsl.l = clamp01(hsl.l);
- return tinycolor(hsl);
-}
-
-function brighten(color, amount) {
- amount = (amount === 0) ? 0 : (amount || 10);
- var rgb = tinycolor(color).toRgb();
- rgb.r = mathMax(0, mathMin(255, rgb.r - mathRound(255 * - (amount / 100))));
- rgb.g = mathMax(0, mathMin(255, rgb.g - mathRound(255 * - (amount / 100))));
- rgb.b = mathMax(0, mathMin(255, rgb.b - mathRound(255 * - (amount / 100))));
- return tinycolor(rgb);
-}
-
-function darken (color, amount) {
- amount = (amount === 0) ? 0 : (amount || 10);
- var hsl = tinycolor(color).toHsl();
- hsl.l -= amount / 100;
- hsl.l = clamp01(hsl.l);
- return tinycolor(hsl);
-}
-
-// Spin takes a positive or negative amount within [-360, 360] indicating the change of hue.
-// Values outside of this range will be wrapped into this range.
-function spin(color, amount) {
- var hsl = tinycolor(color).toHsl();
- var hue = (hsl.h + amount) % 360;
- hsl.h = hue < 0 ? 360 + hue : hue;
- return tinycolor(hsl);
-}
-
-// Combination Functions
-// ---------------------
-// Thanks to jQuery xColor for some of the ideas behind these
-// <https://github.com/infusion/jQuery-xcolor/blob/master/jquery.xcolor.js>
-
-function complement(color) {
- var hsl = tinycolor(color).toHsl();
- hsl.h = (hsl.h + 180) % 360;
- return tinycolor(hsl);
-}
-
-function triad(color) {
- var hsl = tinycolor(color).toHsl();
- var h = hsl.h;
- return [
- tinycolor(color),
- tinycolor({ h: (h + 120) % 360, s: hsl.s, l: hsl.l }),
- tinycolor({ h: (h + 240) % 360, s: hsl.s, l: hsl.l })
- ];
-}
-
-function tetrad(color) {
- var hsl = tinycolor(color).toHsl();
- var h = hsl.h;
- return [
- tinycolor(color),
- tinycolor({ h: (h + 90) % 360, s: hsl.s, l: hsl.l }),
- tinycolor({ h: (h + 180) % 360, s: hsl.s, l: hsl.l }),
- tinycolor({ h: (h + 270) % 360, s: hsl.s, l: hsl.l })
- ];
-}
-
-function splitcomplement(color) {
- var hsl = tinycolor(color).toHsl();
- var h = hsl.h;
- return [
- tinycolor(color),
- tinycolor({ h: (h + 72) % 360, s: hsl.s, l: hsl.l}),
- tinycolor({ h: (h + 216) % 360, s: hsl.s, l: hsl.l})
- ];
-}
-
-function analogous(color, results, slices) {
- results = results || 6;
- slices = slices || 30;
-
- var hsl = tinycolor(color).toHsl();
- var part = 360 / slices;
- var ret = [tinycolor(color)];
-
- for (hsl.h = ((hsl.h - (part * results >> 1)) + 720) % 360; --results; ) {
- hsl.h = (hsl.h + part) % 360;
- ret.push(tinycolor(hsl));
- }
- return ret;
-}
-
-function monochromatic(color, results) {
- results = results || 6;
- var hsv = tinycolor(color).toHsv();
- var h = hsv.h, s = hsv.s, v = hsv.v;
- var ret = [];
- var modification = 1 / results;
-
- while (results--) {
- ret.push(tinycolor({ h: h, s: s, v: v}));
- v = (v + modification) % 1;
- }
-
- return ret;
-}
-
-// Utility Functions
-// ---------------------
-
-tinycolor.mix = function(color1, color2, amount) {
- amount = (amount === 0) ? 0 : (amount || 50);
-
- var rgb1 = tinycolor(color1).toRgb();
- var rgb2 = tinycolor(color2).toRgb();
-
- var p = amount / 100;
-
- var rgba = {
- r: ((rgb2.r - rgb1.r) * p) + rgb1.r,
- g: ((rgb2.g - rgb1.g) * p) + rgb1.g,
- b: ((rgb2.b - rgb1.b) * p) + rgb1.b,
- a: ((rgb2.a - rgb1.a) * p) + rgb1.a
- };
-
- return tinycolor(rgba);
-};
-
-
-// Readability Functions
-// ---------------------
-// <http://www.w3.org/TR/2008/REC-WCAG20-20081211/#contrast-ratiodef (WCAG Version 2)
-
-// `contrast`
-// Analyze the 2 colors and returns the color contrast defined by (WCAG Version 2)
-tinycolor.readability = function(color1, color2) {
- var c1 = tinycolor(color1);
- var c2 = tinycolor(color2);
- return (Math.max(c1.getLuminance(),c2.getLuminance())+0.05) / (Math.min(c1.getLuminance(),c2.getLuminance())+0.05);
-};
-
-// `isReadable`
-// Ensure that foreground and background color combinations meet WCAG2 guidelines.
-// The third argument is an optional Object.
-// the 'level' property states 'AA' or 'AAA' - if missing or invalid, it defaults to 'AA';
-// the 'size' property states 'large' or 'small' - if missing or invalid, it defaults to 'small'.
-// If the entire object is absent, isReadable defaults to {level:"AA",size:"small"}.
-
-// *Example*
-// tinycolor.isReadable("#000", "#111") => false
-// tinycolor.isReadable("#000", "#111",{level:"AA",size:"large"}) => false
-tinycolor.isReadable = function(color1, color2, wcag2) {
- var readability = tinycolor.readability(color1, color2);
- var wcag2Parms, out;
-
- out = false;
-
- wcag2Parms = validateWCAG2Parms(wcag2);
- switch (wcag2Parms.level + wcag2Parms.size) {
- case "AAsmall":
- case "AAAlarge":
- out = readability >= 4.5;
- break;
- case "AAlarge":
- out = readability >= 3;
- break;
- case "AAAsmall":
- out = readability >= 7;
- break;
- }
- return out;
-
-};
-
-// `mostReadable`
-// Given a base color and a list of possible foreground or background
-// colors for that base, returns the most readable color.
-// Optionally returns Black or White if the most readable color is unreadable.
-// *Example*
-// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:false}).toHexString(); // "#112255"
-// tinycolor.mostReadable(tinycolor.mostReadable("#123", ["#124", "#125"],{includeFallbackColors:true}).toHexString(); // "#ffffff"
-// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"large"}).toHexString(); // "#faf3f3"
-// tinycolor.mostReadable("#a8015a", ["#faf3f3"],{includeFallbackColors:true,level:"AAA",size:"small"}).toHexString(); // "#ffffff"
-tinycolor.mostReadable = function(baseColor, colorList, args) {
- var bestColor = null;
- var bestScore = 0;
- var readability;
- var includeFallbackColors, level, size ;
- args = args || {};
- includeFallbackColors = args.includeFallbackColors ;
- level = args.level;
- size = args.size;
-
- for (var i= 0; i < colorList.length ; i++) {
- readability = tinycolor.readability(baseColor, colorList[i]);
- if (readability > bestScore) {
- bestScore = readability;
- bestColor = tinycolor(colorList[i]);
- }
- }
-
- if (tinycolor.isReadable(baseColor, bestColor, {"level":level,"size":size}) || !includeFallbackColors) {
- return bestColor;
- }
- else {
- args.includeFallbackColors=false;
- return tinycolor.mostReadable(baseColor,["#fff", "#000"],args);
- }
-};
-
-
-// Big List of Colors
-// ------------------
-// <http://www.w3.org/TR/css3-color/#svg-color>
-var names = tinycolor.names = {
- aliceblue: "f0f8ff",
- antiquewhite: "faebd7",
- aqua: "0ff",
- aquamarine: "7fffd4",
- azure: "f0ffff",
- beige: "f5f5dc",
- bisque: "ffe4c4",
- black: "000",
- blanchedalmond: "ffebcd",
- blue: "00f",
- blueviolet: "8a2be2",
- brown: "a52a2a",
- burlywood: "deb887",
- burntsienna: "ea7e5d",
- cadetblue: "5f9ea0",
- chartreuse: "7fff00",
- chocolate: "d2691e",
- coral: "ff7f50",
- cornflowerblue: "6495ed",
- cornsilk: "fff8dc",
- crimson: "dc143c",
- cyan: "0ff",
- darkblue: "00008b",
- darkcyan: "008b8b",
- darkgoldenrod: "b8860b",
- darkgray: "a9a9a9",
- darkgreen: "006400",
- darkgrey: "a9a9a9",
- darkkhaki: "bdb76b",
- darkmagenta: "8b008b",
- darkolivegreen: "556b2f",
- darkorange: "ff8c00",
- darkorchid: "9932cc",
- darkred: "8b0000",
- darksalmon: "e9967a",
- darkseagreen: "8fbc8f",
- darkslateblue: "483d8b",
- darkslategray: "2f4f4f",
- darkslategrey: "2f4f4f",
- darkturquoise: "00ced1",
- darkviolet: "9400d3",
- deeppink: "ff1493",
- deepskyblue: "00bfff",
- dimgray: "696969",
- dimgrey: "696969",
- dodgerblue: "1e90ff",
- firebrick: "b22222",
- floralwhite: "fffaf0",
- forestgreen: "228b22",
- fuchsia: "f0f",
- gainsboro: "dcdcdc",
- ghostwhite: "f8f8ff",
- gold: "ffd700",
- goldenrod: "daa520",
- gray: "808080",
- green: "008000",
- greenyellow: "adff2f",
- grey: "808080",
- honeydew: "f0fff0",
- hotpink: "ff69b4",
- indianred: "cd5c5c",
- indigo: "4b0082",
- ivory: "fffff0",
- khaki: "f0e68c",
- lavender: "e6e6fa",
- lavenderblush: "fff0f5",
- lawngreen: "7cfc00",
- lemonchiffon: "fffacd",
- lightblue: "add8e6",
- lightcoral: "f08080",
- lightcyan: "e0ffff",
- lightgoldenrodyellow: "fafad2",
- lightgray: "d3d3d3",
- lightgreen: "90ee90",
- lightgrey: "d3d3d3",
- lightpink: "ffb6c1",
- lightsalmon: "ffa07a",
- lightseagreen: "20b2aa",
- lightskyblue: "87cefa",
- lightslategray: "789",
- lightslategrey: "789",
- lightsteelblue: "b0c4de",
- lightyellow: "ffffe0",
- lime: "0f0",
- limegreen: "32cd32",
- linen: "faf0e6",
- magenta: "f0f",
- maroon: "800000",
- mediumaquamarine: "66cdaa",
- mediumblue: "0000cd",
- mediumorchid: "ba55d3",
- mediumpurple: "9370db",
- mediumseagreen: "3cb371",
- mediumslateblue: "7b68ee",
- mediumspringgreen: "00fa9a",
- mediumturquoise: "48d1cc",
- mediumvioletred: "c71585",
- midnightblue: "191970",
- mintcream: "f5fffa",
- mistyrose: "ffe4e1",
- moccasin: "ffe4b5",
- navajowhite: "ffdead",
- navy: "000080",
- oldlace: "fdf5e6",
- olive: "808000",
- olivedrab: "6b8e23",
- orange: "ffa500",
- orangered: "ff4500",
- orchid: "da70d6",
- palegoldenrod: "eee8aa",
- palegreen: "98fb98",
- paleturquoise: "afeeee",
- palevioletred: "db7093",
- papayawhip: "ffefd5",
- peachpuff: "ffdab9",
- peru: "cd853f",
- pink: "ffc0cb",
- plum: "dda0dd",
- powderblue: "b0e0e6",
- purple: "800080",
- rebeccapurple: "663399",
- red: "f00",
- rosybrown: "bc8f8f",
- royalblue: "4169e1",
- saddlebrown: "8b4513",
- salmon: "fa8072",
- sandybrown: "f4a460",
- seagreen: "2e8b57",
- seashell: "fff5ee",
- sienna: "a0522d",
- silver: "c0c0c0",
- skyblue: "87ceeb",
- slateblue: "6a5acd",
- slategray: "708090",
- slategrey: "708090",
- snow: "fffafa",
- springgreen: "00ff7f",
- steelblue: "4682b4",
- tan: "d2b48c",
- teal: "008080",
- thistle: "d8bfd8",
- tomato: "ff6347",
- turquoise: "40e0d0",
- violet: "ee82ee",
- wheat: "f5deb3",
- white: "fff",
- whitesmoke: "f5f5f5",
- yellow: "ff0",
- yellowgreen: "9acd32"
-};
-
-// Make it easy to access colors via `hexNames[hex]`
-var hexNames = tinycolor.hexNames = flip(names);
-
-
-// Utilities
-// ---------
-
-// `{ 'name1': 'val1' }` becomes `{ 'val1': 'name1' }`
-function flip(o) {
- var flipped = { };
- for (var i in o) {
- if (o.hasOwnProperty(i)) {
- flipped[o[i]] = i;
- }
- }
- return flipped;
-}
-
-// Return a valid alpha value [0,1] with all invalid values being set to 1
-function boundAlpha(a) {
- a = parseFloat(a);
-
- if (isNaN(a) || a < 0 || a > 1) {
- a = 1;
- }
-
- return a;
-}
-
-// Take input from [0, n] and return it as [0, 1]
-function bound01(n, max) {
- if (isOnePointZero(n)) { n = "100%"; }
-
- var processPercent = isPercentage(n);
- n = mathMin(max, mathMax(0, parseFloat(n)));
-
- // Automatically convert percentage into number
- if (processPercent) {
- n = parseInt(n * max, 10) / 100;
- }
-
- // Handle floating point rounding errors
- if ((Math.abs(n - max) < 0.000001)) {
- return 1;
- }
-
- // Convert into [0, 1] range if it isn't already
- return (n % max) / parseFloat(max);
-}
-
-// Force a number between 0 and 1
-function clamp01(val) {
- return mathMin(1, mathMax(0, val));
-}
-
-// Parse a base-16 hex value into a base-10 integer
-function parseIntFromHex(val) {
- return parseInt(val, 16);
-}
-
-// Need to handle 1.0 as 100%, since once it is a number, there is no difference between it and 1
-// <http://stackoverflow.com/questions/7422072/javascript-how-to-detect-number-as-a-decimal-including-1-0>
-function isOnePointZero(n) {
- return typeof n == "string" && n.indexOf('.') != -1 && parseFloat(n) === 1;
-}
-
-// Check to see if string passed in is a percentage
-function isPercentage(n) {
- return typeof n === "string" && n.indexOf('%') != -1;
-}
-
-// Force a hex value to have 2 characters
-function pad2(c) {
- return c.length == 1 ? '0' + c : '' + c;
-}
-
-// Replace a decimal with it's percentage value
-function convertToPercentage(n) {
- if (n <= 1) {
- n = (n * 100) + "%";
- }
-
- return n;
-}
-
-// Converts a decimal to a hex value
-function convertDecimalToHex(d) {
- return Math.round(parseFloat(d) * 255).toString(16);
-}
-// Converts a hex value to a decimal
-function convertHexToDecimal(h) {
- return (parseIntFromHex(h) / 255);
-}
-
-var matchers = (function() {
-
- // <http://www.w3.org/TR/css3-values/#integers>
- var CSS_INTEGER = "[-\\+]?\\d+%?";
-
- // <http://www.w3.org/TR/css3-values/#number-value>
- var CSS_NUMBER = "[-\\+]?\\d*\\.\\d+%?";
-
- // Allow positive/negative integer/number. Don't capture the either/or, just the entire outcome.
- var CSS_UNIT = "(?:" + CSS_NUMBER + ")|(?:" + CSS_INTEGER + ")";
-
- // Actual matching.
- // Parentheses and commas are optional, but not required.
- // Whitespace can take the place of commas or opening paren
- var PERMISSIVE_MATCH3 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
- var PERMISSIVE_MATCH4 = "[\\s|\\(]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")[,|\\s]+(" + CSS_UNIT + ")\\s*\\)?";
-
- return {
- CSS_UNIT: new RegExp(CSS_UNIT),
- rgb: new RegExp("rgb" + PERMISSIVE_MATCH3),
- rgba: new RegExp("rgba" + PERMISSIVE_MATCH4),
- hsl: new RegExp("hsl" + PERMISSIVE_MATCH3),
- hsla: new RegExp("hsla" + PERMISSIVE_MATCH4),
- hsv: new RegExp("hsv" + PERMISSIVE_MATCH3),
- hsva: new RegExp("hsva" + PERMISSIVE_MATCH4),
- hex3: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
- hex6: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/,
- hex4: /^#?([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/,
- hex8: /^#?([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})$/
- };
-})();
-
-// `isValidCSSUnit`
-// Take in a single string / number and check to see if it looks like a CSS unit
-// (see `matchers` above for definition).
-function isValidCSSUnit(color) {
- return !!matchers.CSS_UNIT.exec(color);
-}
-
-// `stringInputToObject`
-// Permissive string parsing. Take in a number of formats, and output an object
-// based on detected format. Returns `{ r, g, b }` or `{ h, s, l }` or `{ h, s, v}`
-function stringInputToObject(color) {
-
- color = color.replace(trimLeft,'').replace(trimRight, '').toLowerCase();
- var named = false;
- if (names[color]) {
- color = names[color];
- named = true;
- }
- else if (color == 'transparent') {
- return { r: 0, g: 0, b: 0, a: 0, format: "name" };
- }
-
- // Try to match string input using regular expressions.
- // Keep most of the number bounding out of this function - don't worry about [0,1] or [0,100] or [0,360]
- // Just return an object and let the conversion functions handle that.
- // This way the result will be the same whether the tinycolor is initialized with string or object.
- var match;
- if ((match = matchers.rgb.exec(color))) {
- return { r: match[1], g: match[2], b: match[3] };
- }
- if ((match = matchers.rgba.exec(color))) {
- return { r: match[1], g: match[2], b: match[3], a: match[4] };
- }
- if ((match = matchers.hsl.exec(color))) {
- return { h: match[1], s: match[2], l: match[3] };
- }
- if ((match = matchers.hsla.exec(color))) {
- return { h: match[1], s: match[2], l: match[3], a: match[4] };
- }
- if ((match = matchers.hsv.exec(color))) {
- return { h: match[1], s: match[2], v: match[3] };
- }
- if ((match = matchers.hsva.exec(color))) {
- return { h: match[1], s: match[2], v: match[3], a: match[4] };
- }
- if ((match = matchers.hex8.exec(color))) {
- return {
- r: parseIntFromHex(match[1]),
- g: parseIntFromHex(match[2]),
- b: parseIntFromHex(match[3]),
- a: convertHexToDecimal(match[4]),
- format: named ? "name" : "hex8"
- };
- }
- if ((match = matchers.hex6.exec(color))) {
- return {
- r: parseIntFromHex(match[1]),
- g: parseIntFromHex(match[2]),
- b: parseIntFromHex(match[3]),
- format: named ? "name" : "hex"
- };
- }
- if ((match = matchers.hex4.exec(color))) {
- return {
- r: parseIntFromHex(match[1] + '' + match[1]),
- g: parseIntFromHex(match[2] + '' + match[2]),
- b: parseIntFromHex(match[3] + '' + match[3]),
- a: convertHexToDecimal(match[4] + '' + match[4]),
- format: named ? "name" : "hex8"
- };
- }
- if ((match = matchers.hex3.exec(color))) {
- return {
- r: parseIntFromHex(match[1] + '' + match[1]),
- g: parseIntFromHex(match[2] + '' + match[2]),
- b: parseIntFromHex(match[3] + '' + match[3]),
- format: named ? "name" : "hex"
- };
- }
-
- return false;
-}
-
-function validateWCAG2Parms(parms) {
- // return valid WCAG2 parms for isReadable.
- // If input parms are invalid, return {"level":"AA", "size":"small"}
- var level, size;
- parms = parms || {"level":"AA", "size":"small"};
- level = (parms.level || "AA").toUpperCase();
- size = (parms.size || "small").toLowerCase();
- if (level !== "AA" && level !== "AAA") {
- level = "AA";
- }
- if (size !== "small" && size !== "large") {
- size = "small";
- }
- return {"level":level, "size":size};
-}
-
-// Node: Export function
-if ( true && module.exports) {
- module.exports = tinycolor;
-}
-// AMD/requirejs: Define the module
-else if (true) {
- !(__WEBPACK_AMD_DEFINE_RESULT__ = (function () {return tinycolor;}).call(exports, __webpack_require__, exports, module),
- __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
-}
-// Browser: Expose to window
-else {}
-
-})(Math);
-
-
-/***/ }),
-
-/***/ 5:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _assertThisInitialized; });
-function _assertThisInitialized(self) {
- if (self === void 0) {
- throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
- }
-
- return self;
-}
-
-/***/ }),
-
-/***/ 52:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["htmlEntities"]; }());
-
-/***/ }),
-
-/***/ 62:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-exports.__esModule = true;
-var TextareaAutosize_1 = __webpack_require__(115);
-exports["default"] = TextareaAutosize_1["default"];
-
-
-/***/ }),
-
-/***/ 64:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-Object.defineProperty(exports, '__esModule', { value: true });
-
-function _interopDefault (ex) { return (ex && (typeof ex === 'object') && 'default' in ex) ? ex['default'] : ex; }
-
-var _extends = _interopDefault(__webpack_require__(119));
-var _objectWithoutPropertiesLoose = _interopDefault(__webpack_require__(120));
-var React = __webpack_require__(28);
-var React__default = _interopDefault(React);
-var _inheritsLoose = _interopDefault(__webpack_require__(121));
-var _assertThisInitialized = _interopDefault(__webpack_require__(122));
-
-var is = {
- arr: Array.isArray,
- obj: function obj(a) {
- return Object.prototype.toString.call(a) === '[object Object]';
- },
- fun: function fun(a) {
- return typeof a === 'function';
- },
- str: function str(a) {
- return typeof a === 'string';
- },
- num: function num(a) {
- return typeof a === 'number';
- },
- und: function und(a) {
- return a === void 0;
- },
- nul: function nul(a) {
- return a === null;
- },
- set: function set(a) {
- return a instanceof Set;
- },
- map: function map(a) {
- return a instanceof Map;
- },
- equ: function equ(a, b) {
- if (typeof a !== typeof b) return false;
- if (is.str(a) || is.num(a)) return a === b;
- if (is.obj(a) && is.obj(b) && Object.keys(a).length + Object.keys(b).length === 0) return true;
- var i;
-
- for (i in a) {
- if (!(i in b)) return false;
- }
-
- for (i in b) {
- if (a[i] !== b[i]) return false;
- }
-
- return is.und(i) ? a === b : true;
- }
-};
-function merge(target, lowercase) {
- if (lowercase === void 0) {
- lowercase = true;
- }
-
- return function (object) {
- return (is.arr(object) ? object : Object.keys(object)).reduce(function (acc, element) {
- var key = lowercase ? element[0].toLowerCase() + element.substring(1) : element;
- acc[key] = target(key);
- return acc;
- }, target);
- };
-}
-function useForceUpdate() {
- var _useState = React.useState(false),
- f = _useState[1];
-
- var forceUpdate = React.useCallback(function () {
- return f(function (v) {
- return !v;
- });
- }, []);
- return forceUpdate;
-}
-function withDefault(value, defaultValue) {
- return is.und(value) || is.nul(value) ? defaultValue : value;
-}
-function toArray(a) {
- return !is.und(a) ? is.arr(a) ? a : [a] : [];
-}
-function callProp(obj) {
- for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
- args[_key - 1] = arguments[_key];
- }
-
- return is.fun(obj) ? obj.apply(void 0, args) : obj;
-}
-
-function getForwardProps(props) {
- var to = props.to,
- from = props.from,
- config = props.config,
- onStart = props.onStart,
- onRest = props.onRest,
- onFrame = props.onFrame,
- children = props.children,
- reset = props.reset,
- reverse = props.reverse,
- force = props.force,
- immediate = props.immediate,
- delay = props.delay,
- attach = props.attach,
- destroyed = props.destroyed,
- interpolateTo = props.interpolateTo,
- ref = props.ref,
- lazy = props.lazy,
- forward = _objectWithoutPropertiesLoose(props, ["to", "from", "config", "onStart", "onRest", "onFrame", "children", "reset", "reverse", "force", "immediate", "delay", "attach", "destroyed", "interpolateTo", "ref", "lazy"]);
-
- return forward;
-}
-
-function interpolateTo(props) {
- var forward = getForwardProps(props);
- if (is.und(forward)) return _extends({
- to: forward
- }, props);
- var rest = Object.keys(props).reduce(function (a, k) {
- var _extends2;
-
- return !is.und(forward[k]) ? a : _extends({}, a, (_extends2 = {}, _extends2[k] = props[k], _extends2));
- }, {});
- return _extends({
- to: forward
- }, rest);
-}
-function handleRef(ref, forward) {
- if (forward) {
- // If it's a function, assume it's a ref callback
- if (is.fun(forward)) forward(ref);else if (is.obj(forward)) {
- forward.current = ref;
- }
- }
-
- return ref;
-}
-
-var Animated =
-/*#__PURE__*/
-function () {
- function Animated() {
- this.payload = void 0;
- this.children = [];
- }
-
- var _proto = Animated.prototype;
-
- _proto.getAnimatedValue = function getAnimatedValue() {
- return this.getValue();
- };
-
- _proto.getPayload = function getPayload() {
- return this.payload || this;
- };
-
- _proto.attach = function attach() {};
-
- _proto.detach = function detach() {};
-
- _proto.getChildren = function getChildren() {
- return this.children;
- };
-
- _proto.addChild = function addChild(child) {
- if (this.children.length === 0) this.attach();
- this.children.push(child);
- };
-
- _proto.removeChild = function removeChild(child) {
- var index = this.children.indexOf(child);
- this.children.splice(index, 1);
- if (this.children.length === 0) this.detach();
- };
-
- return Animated;
-}();
-var AnimatedArray =
-/*#__PURE__*/
-function (_Animated) {
- _inheritsLoose(AnimatedArray, _Animated);
-
- function AnimatedArray() {
- var _this;
-
- for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {
- args[_key] = arguments[_key];
- }
-
- _this = _Animated.call.apply(_Animated, [this].concat(args)) || this;
- _this.payload = [];
-
- _this.attach = function () {
- return _this.payload.forEach(function (p) {
- return p instanceof Animated && p.addChild(_assertThisInitialized(_this));
- });
- };
-
- _this.detach = function () {
- return _this.payload.forEach(function (p) {
- return p instanceof Animated && p.removeChild(_assertThisInitialized(_this));
- });
- };
-
- return _this;
- }
-
- return AnimatedArray;
-}(Animated);
-var AnimatedObject =
-/*#__PURE__*/
-function (_Animated2) {
- _inheritsLoose(AnimatedObject, _Animated2);
-
- function AnimatedObject() {
- var _this2;
-
- for (var _len3 = arguments.length, args = new Array(_len3), _key3 = 0; _key3 < _len3; _key3++) {
- args[_key3] = arguments[_key3];
- }
-
- _this2 = _Animated2.call.apply(_Animated2, [this].concat(args)) || this;
- _this2.payload = {};
-
- _this2.attach = function () {
- return Object.values(_this2.payload).forEach(function (s) {
- return s instanceof Animated && s.addChild(_assertThisInitialized(_this2));
- });
- };
-
- _this2.detach = function () {
- return Object.values(_this2.payload).forEach(function (s) {
- return s instanceof Animated && s.removeChild(_assertThisInitialized(_this2));
- });
- };
-
- return _this2;
- }
-
- var _proto2 = AnimatedObject.prototype;
-
- _proto2.getValue = function getValue(animated) {
- if (animated === void 0) {
- animated = false;
- }
-
- var payload = {};
-
- for (var _key4 in this.payload) {
- var value = this.payload[_key4];
- if (animated && !(value instanceof Animated)) continue;
- payload[_key4] = value instanceof Animated ? value[animated ? 'getAnimatedValue' : 'getValue']() : value;
- }
-
- return payload;
- };
-
- _proto2.getAnimatedValue = function getAnimatedValue() {
- return this.getValue(true);
- };
-
- return AnimatedObject;
-}(Animated);
-
-var applyAnimatedValues;
-function injectApplyAnimatedValues(fn, transform) {
- applyAnimatedValues = {
- fn: fn,
- transform: transform
- };
-}
-var colorNames;
-function injectColorNames(names) {
- colorNames = names;
-}
-var requestFrame = function requestFrame(cb) {
- return typeof window !== 'undefined' ? window.requestAnimationFrame(cb) : -1;
-};
-var cancelFrame = function cancelFrame(id) {
- typeof window !== 'undefined' && window.cancelAnimationFrame(id);
-};
-function injectFrame(raf, caf) {
- requestFrame = raf;
- cancelFrame = caf;
-}
-var interpolation;
-function injectStringInterpolator(fn) {
- interpolation = fn;
-}
-var now = function now() {
- return Date.now();
-};
-function injectNow(nowFn) {
- now = nowFn;
-}
-var defaultElement;
-function injectDefaultElement(el) {
- defaultElement = el;
-}
-var animatedApi = function animatedApi(node) {
- return node.current;
-};
-function injectAnimatedApi(fn) {
- animatedApi = fn;
-}
-var createAnimatedStyle;
-function injectCreateAnimatedStyle(factory) {
- createAnimatedStyle = factory;
-}
-var manualFrameloop;
-function injectManualFrameloop(callback) {
- manualFrameloop = callback;
-}
-
-var Globals = /*#__PURE__*/Object.freeze({
- get applyAnimatedValues () { return applyAnimatedValues; },
- injectApplyAnimatedValues: injectApplyAnimatedValues,
- get colorNames () { return colorNames; },
- injectColorNames: injectColorNames,
- get requestFrame () { return requestFrame; },
- get cancelFrame () { return cancelFrame; },
- injectFrame: injectFrame,
- get interpolation () { return interpolation; },
- injectStringInterpolator: injectStringInterpolator,
- get now () { return now; },
- injectNow: injectNow,
- get defaultElement () { return defaultElement; },
- injectDefaultElement: injectDefaultElement,
- get animatedApi () { return animatedApi; },
- injectAnimatedApi: injectAnimatedApi,
- get createAnimatedStyle () { return createAnimatedStyle; },
- injectCreateAnimatedStyle: injectCreateAnimatedStyle,
- get manualFrameloop () { return manualFrameloop; },
- injectManualFrameloop: injectManualFrameloop
-});
-
-/**
- * Wraps the `style` property with `AnimatedStyle`.
- */
-
-var AnimatedProps =
-/*#__PURE__*/
-function (_AnimatedObject) {
- _inheritsLoose(AnimatedProps, _AnimatedObject);
-
- function AnimatedProps(props, callback) {
- var _this;
-
- _this = _AnimatedObject.call(this) || this;
- _this.update = void 0;
- _this.payload = !props.style ? props : _extends({}, props, {
- style: createAnimatedStyle(props.style)
- });
- _this.update = callback;
-
- _this.attach();
-
- return _this;
- }
-
- return AnimatedProps;
-}(AnimatedObject);
-
-var isFunctionComponent = function isFunctionComponent(val) {
- return is.fun(val) && !(val.prototype instanceof React__default.Component);
-};
-
-var createAnimatedComponent = function createAnimatedComponent(Component) {
- var AnimatedComponent = React.forwardRef(function (props, ref) {
- var forceUpdate = useForceUpdate();
- var mounted = React.useRef(true);
- var propsAnimated = React.useRef(null);
- var node = React.useRef(null);
- var attachProps = React.useCallback(function (props) {
- var oldPropsAnimated = propsAnimated.current;
-
- var callback = function callback() {
- var didUpdate = false;
-
- if (node.current) {
- didUpdate = applyAnimatedValues.fn(node.current, propsAnimated.current.getAnimatedValue());
- }
-
- if (!node.current || didUpdate === false) {
- // If no referenced node has been found, or the update target didn't have a
- // native-responder, then forceUpdate the animation ...
- forceUpdate();
- }
- };
-
- propsAnimated.current = new AnimatedProps(props, callback);
- oldPropsAnimated && oldPropsAnimated.detach();
- }, []);
- React.useEffect(function () {
- return function () {
- mounted.current = false;
- propsAnimated.current && propsAnimated.current.detach();
- };
- }, []);
- React.useImperativeHandle(ref, function () {
- return animatedApi(node, mounted, forceUpdate);
- });
- attachProps(props);
-
- var _getValue = propsAnimated.current.getValue(),
- scrollTop = _getValue.scrollTop,
- scrollLeft = _getValue.scrollLeft,
- animatedProps = _objectWithoutPropertiesLoose(_getValue, ["scrollTop", "scrollLeft"]); // Functions cannot have refs, see:
- // See: https://github.com/react-spring/react-spring/issues/569
-
-
- var refFn = isFunctionComponent(Component) ? undefined : function (childRef) {
- return node.current = handleRef(childRef, ref);
- };
- return React__default.createElement(Component, _extends({}, animatedProps, {
- ref: refFn
- }));
- });
- return AnimatedComponent;
-};
-
-var active = false;
-var controllers = new Set();
-
-var update = function update() {
- if (!active) return false;
- var time = now();
-
- for (var _iterator = controllers, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref;
-
- if (_isArray) {
- if (_i >= _iterator.length) break;
- _ref = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) break;
- _ref = _i.value;
- }
-
- var controller = _ref;
- var isActive = false;
-
- for (var configIdx = 0; configIdx < controller.configs.length; configIdx++) {
- var config = controller.configs[configIdx];
- var endOfAnimation = void 0,
- lastTime = void 0;
-
- for (var valIdx = 0; valIdx < config.animatedValues.length; valIdx++) {
- var animation = config.animatedValues[valIdx]; // If an animation is done, skip, until all of them conclude
-
- if (animation.done) continue;
- var from = config.fromValues[valIdx];
- var to = config.toValues[valIdx];
- var position = animation.lastPosition;
- var isAnimated = to instanceof Animated;
- var velocity = Array.isArray(config.initialVelocity) ? config.initialVelocity[valIdx] : config.initialVelocity;
- if (isAnimated) to = to.getValue(); // Conclude animation if it's either immediate, or from-values match end-state
-
- if (config.immediate) {
- animation.setValue(to);
- animation.done = true;
- continue;
- } // Break animation when string values are involved
-
-
- if (typeof from === 'string' || typeof to === 'string') {
- animation.setValue(to);
- animation.done = true;
- continue;
- }
-
- if (config.duration !== void 0) {
- /** Duration easing */
- position = from + config.easing((time - animation.startTime) / config.duration) * (to - from);
- endOfAnimation = time >= animation.startTime + config.duration;
- } else if (config.decay) {
- /** Decay easing */
- position = from + velocity / (1 - 0.998) * (1 - Math.exp(-(1 - 0.998) * (time - animation.startTime)));
- endOfAnimation = Math.abs(animation.lastPosition - position) < 0.1;
- if (endOfAnimation) to = position;
- } else {
- /** Spring easing */
- lastTime = animation.lastTime !== void 0 ? animation.lastTime : time;
- velocity = animation.lastVelocity !== void 0 ? animation.lastVelocity : config.initialVelocity; // If we lost a lot of frames just jump to the end.
-
- if (time > lastTime + 64) lastTime = time; // http://gafferongames.com/game-physics/fix-your-timestep/
-
- var numSteps = Math.floor(time - lastTime);
-
- for (var i = 0; i < numSteps; ++i) {
- var force = -config.tension * (position - to);
- var damping = -config.friction * velocity;
- var acceleration = (force + damping) / config.mass;
- velocity = velocity + acceleration * 1 / 1000;
- position = position + velocity * 1 / 1000;
- } // Conditions for stopping the spring animation
-
-
- var isOvershooting = config.clamp && config.tension !== 0 ? from < to ? position > to : position < to : false;
- var isVelocity = Math.abs(velocity) <= config.precision;
- var isDisplacement = config.tension !== 0 ? Math.abs(to - position) <= config.precision : true;
- endOfAnimation = isOvershooting || isVelocity && isDisplacement;
- animation.lastVelocity = velocity;
- animation.lastTime = time;
- } // Trails aren't done until their parents conclude
-
-
- if (isAnimated && !config.toValues[valIdx].done) endOfAnimation = false;
-
- if (endOfAnimation) {
- // Ensure that we end up with a round value
- if (animation.value !== to) position = to;
- animation.done = true;
- } else isActive = true;
-
- animation.setValue(position);
- animation.lastPosition = position;
- } // Keep track of updated values only when necessary
-
-
- if (controller.props.onFrame) controller.values[config.name] = config.interpolation.getValue();
- } // Update callbacks in the end of the frame
-
-
- if (controller.props.onFrame) controller.props.onFrame(controller.values); // Either call onEnd or next frame
-
- if (!isActive) {
- controllers.delete(controller);
- controller.stop(true);
- }
- } // Loop over as long as there are controllers ...
-
-
- if (controllers.size) {
- if (manualFrameloop) manualFrameloop();else requestFrame(update);
- } else {
- active = false;
- }
-
- return active;
-};
-
-var start = function start(controller) {
- if (!controllers.has(controller)) controllers.add(controller);
-
- if (!active) {
- active = true;
- if (manualFrameloop) requestFrame(manualFrameloop);else requestFrame(update);
- }
-};
-
-var stop = function stop(controller) {
- if (controllers.has(controller)) controllers.delete(controller);
-};
-
-function createInterpolator(range, output, extrapolate) {
- if (typeof range === 'function') {
- return range;
- }
-
- if (Array.isArray(range)) {
- return createInterpolator({
- range: range,
- output: output,
- extrapolate: extrapolate
- });
- }
-
- if (interpolation && typeof range.output[0] === 'string') {
- return interpolation(range);
- }
-
- var config = range;
- var outputRange = config.output;
- var inputRange = config.range || [0, 1];
- var extrapolateLeft = config.extrapolateLeft || config.extrapolate || 'extend';
- var extrapolateRight = config.extrapolateRight || config.extrapolate || 'extend';
-
- var easing = config.easing || function (t) {
- return t;
- };
-
- return function (input) {
- var range = findRange(input, inputRange);
- return interpolate(input, inputRange[range], inputRange[range + 1], outputRange[range], outputRange[range + 1], easing, extrapolateLeft, extrapolateRight, config.map);
- };
-}
-
-function interpolate(input, inputMin, inputMax, outputMin, outputMax, easing, extrapolateLeft, extrapolateRight, map) {
- var result = map ? map(input) : input; // Extrapolate
-
- if (result < inputMin) {
- if (extrapolateLeft === 'identity') return result;else if (extrapolateLeft === 'clamp') result = inputMin;
- }
-
- if (result > inputMax) {
- if (extrapolateRight === 'identity') return result;else if (extrapolateRight === 'clamp') result = inputMax;
- }
-
- if (outputMin === outputMax) return outputMin;
- if (inputMin === inputMax) return input <= inputMin ? outputMin : outputMax; // Input Range
-
- if (inputMin === -Infinity) result = -result;else if (inputMax === Infinity) result = result - inputMin;else result = (result - inputMin) / (inputMax - inputMin); // Easing
-
- result = easing(result); // Output Range
-
- if (outputMin === -Infinity) result = -result;else if (outputMax === Infinity) result = result + outputMin;else result = result * (outputMax - outputMin) + outputMin;
- return result;
-}
-
-function findRange(input, inputRange) {
- for (var i = 1; i < inputRange.length - 1; ++i) {
- if (inputRange[i] >= input) break;
- }
-
- return i - 1;
-}
-
-var AnimatedInterpolation =
-/*#__PURE__*/
-function (_AnimatedArray) {
- _inheritsLoose(AnimatedInterpolation, _AnimatedArray);
-
- function AnimatedInterpolation(parents, range, output, extrapolate) {
- var _this;
-
- _this = _AnimatedArray.call(this) || this;
- _this.calc = void 0;
- _this.payload = parents instanceof AnimatedArray && !(parents instanceof AnimatedInterpolation) ? parents.getPayload() : Array.isArray(parents) ? parents : [parents];
- _this.calc = createInterpolator(range, output, extrapolate);
- return _this;
- }
-
- var _proto = AnimatedInterpolation.prototype;
-
- _proto.getValue = function getValue() {
- return this.calc.apply(this, this.payload.map(function (value) {
- return value.getValue();
- }));
- };
-
- _proto.updateConfig = function updateConfig(range, output, extrapolate) {
- this.calc = createInterpolator(range, output, extrapolate);
- };
-
- _proto.interpolate = function interpolate(range, output, extrapolate) {
- return new AnimatedInterpolation(this, range, output, extrapolate);
- };
-
- return AnimatedInterpolation;
-}(AnimatedArray);
-
-var interpolate$1 = function interpolate(parents, range, output) {
- return parents && new AnimatedInterpolation(parents, range, output);
-};
-
-var config = {
- default: {
- tension: 170,
- friction: 26
- },
- gentle: {
- tension: 120,
- friction: 14
- },
- wobbly: {
- tension: 180,
- friction: 12
- },
- stiff: {
- tension: 210,
- friction: 20
- },
- slow: {
- tension: 280,
- friction: 60
- },
- molasses: {
- tension: 280,
- friction: 120
- }
-};
-
-/** API
- * useChain(references, timeSteps, timeFrame)
- */
-
-function useChain(refs, timeSteps, timeFrame) {
- if (timeFrame === void 0) {
- timeFrame = 1000;
- }
-
- var previous = React.useRef();
- React.useEffect(function () {
- if (is.equ(refs, previous.current)) refs.forEach(function (_ref) {
- var current = _ref.current;
- return current && current.start();
- });else if (timeSteps) {
- refs.forEach(function (_ref2, index) {
- var current = _ref2.current;
-
- if (current) {
- var ctrls = current.controllers;
-
- if (ctrls.length) {
- var t = timeFrame * timeSteps[index];
- ctrls.forEach(function (ctrl) {
- ctrl.queue = ctrl.queue.map(function (e) {
- return _extends({}, e, {
- delay: e.delay + t
- });
- });
- ctrl.start();
- });
- }
- }
- });
- } else refs.reduce(function (q, _ref3, rI) {
- var current = _ref3.current;
- return q = q.then(function () {
- return current.start();
- });
- }, Promise.resolve());
- previous.current = refs;
- });
-}
-
-/**
- * Animated works by building a directed acyclic graph of dependencies
- * transparently when you render your Animated components.
- *
- * new Animated.Value(0)
- * .interpolate() .interpolate() new Animated.Value(1)
- * opacity translateY scale
- * style transform
- * View#234 style
- * View#123
- *
- * A) Top Down phase
- * When an AnimatedValue is updated, we recursively go down through this
- * graph in order to find leaf nodes: the views that we flag as needing
- * an update.
- *
- * B) Bottom Up phase
- * When a view is flagged as needing an update, we recursively go back up
- * in order to build the new value that it needs. The reason why we need
- * this two-phases process is to deal with composite props such as
- * transform which can receive values from multiple parents.
- */
-function addAnimatedStyles(node, styles) {
- if ('update' in node) {
- styles.add(node);
- } else {
- node.getChildren().forEach(function (child) {
- return addAnimatedStyles(child, styles);
- });
- }
-}
-
-var AnimatedValue =
-/*#__PURE__*/
-function (_Animated) {
- _inheritsLoose(AnimatedValue, _Animated);
-
- function AnimatedValue(_value) {
- var _this;
-
- _this = _Animated.call(this) || this;
- _this.animatedStyles = new Set();
- _this.value = void 0;
- _this.startPosition = void 0;
- _this.lastPosition = void 0;
- _this.lastVelocity = void 0;
- _this.startTime = void 0;
- _this.lastTime = void 0;
- _this.done = false;
-
- _this.setValue = function (value, flush) {
- if (flush === void 0) {
- flush = true;
- }
-
- _this.value = value;
- if (flush) _this.flush();
- };
-
- _this.value = _value;
- _this.startPosition = _value;
- _this.lastPosition = _value;
- return _this;
- }
-
- var _proto = AnimatedValue.prototype;
-
- _proto.flush = function flush() {
- if (this.animatedStyles.size === 0) {
- addAnimatedStyles(this, this.animatedStyles);
- }
-
- this.animatedStyles.forEach(function (animatedStyle) {
- return animatedStyle.update();
- });
- };
-
- _proto.clearStyles = function clearStyles() {
- this.animatedStyles.clear();
- };
-
- _proto.getValue = function getValue() {
- return this.value;
- };
-
- _proto.interpolate = function interpolate(range, output, extrapolate) {
- return new AnimatedInterpolation(this, range, output, extrapolate);
- };
-
- return AnimatedValue;
-}(Animated);
-
-var AnimatedValueArray =
-/*#__PURE__*/
-function (_AnimatedArray) {
- _inheritsLoose(AnimatedValueArray, _AnimatedArray);
-
- function AnimatedValueArray(values) {
- var _this;
-
- _this = _AnimatedArray.call(this) || this;
- _this.payload = values.map(function (n) {
- return new AnimatedValue(n);
- });
- return _this;
- }
-
- var _proto = AnimatedValueArray.prototype;
-
- _proto.setValue = function setValue(value, flush) {
- var _this2 = this;
-
- if (flush === void 0) {
- flush = true;
- }
-
- if (Array.isArray(value)) {
- if (value.length === this.payload.length) {
- value.forEach(function (v, i) {
- return _this2.payload[i].setValue(v, flush);
- });
- }
- } else {
- this.payload.forEach(function (p) {
- return p.setValue(value, flush);
- });
- }
- };
-
- _proto.getValue = function getValue() {
- return this.payload.map(function (v) {
- return v.getValue();
- });
- };
-
- _proto.interpolate = function interpolate(range, output) {
- return new AnimatedInterpolation(this, range, output);
- };
-
- return AnimatedValueArray;
-}(AnimatedArray);
-
-var G = 0;
-
-var Controller =
-/*#__PURE__*/
-function () {
- function Controller() {
- var _this = this;
-
- this.id = void 0;
- this.idle = true;
- this.hasChanged = false;
- this.guid = 0;
- this.local = 0;
- this.props = {};
- this.merged = {};
- this.animations = {};
- this.interpolations = {};
- this.values = {};
- this.configs = [];
- this.listeners = [];
- this.queue = [];
- this.localQueue = void 0;
-
- this.getValues = function () {
- return _this.interpolations;
- };
-
- this.id = G++;
- }
- /** update(props)
- * This function filters input props and creates an array of tasks which are executed in .start()
- * Each task is allowed to carry a delay, which means it can execute asnychroneously */
-
-
- var _proto = Controller.prototype;
-
- _proto.update = function update$$1(args) {
- //this._id = n + this.id
- if (!args) return this; // Extract delay and the to-prop from props
-
- var _ref = interpolateTo(args),
- _ref$delay = _ref.delay,
- delay = _ref$delay === void 0 ? 0 : _ref$delay,
- to = _ref.to,
- props = _objectWithoutPropertiesLoose(_ref, ["delay", "to"]);
-
- if (is.arr(to) || is.fun(to)) {
- // If config is either a function or an array queue it up as is
- this.queue.push(_extends({}, props, {
- delay: delay,
- to: to
- }));
- } else if (to) {
- // Otherwise go through each key since it could be delayed individually
- var ops = {};
- Object.entries(to).forEach(function (_ref2) {
- var _to;
-
- var k = _ref2[0],
- v = _ref2[1];
-
- // Fetch delay and create an entry, consisting of the to-props, the delay, and basic props
- var entry = _extends({
- to: (_to = {}, _to[k] = v, _to),
- delay: callProp(delay, k)
- }, props);
-
- var previous = ops[entry.delay] && ops[entry.delay].to;
- ops[entry.delay] = _extends({}, ops[entry.delay], entry, {
- to: _extends({}, previous, entry.to)
- });
- });
- this.queue = Object.values(ops);
- } // Sort queue, so that async calls go last
-
-
- this.queue = this.queue.sort(function (a, b) {
- return a.delay - b.delay;
- }); // Diff the reduced props immediately (they'll contain the from-prop and some config)
-
- this.diff(props);
- return this;
- }
- /** start(onEnd)
- * This function either executes a queue, if present, or starts the frameloop, which animates */
- ;
-
- _proto.start = function start$$1(onEnd) {
- var _this2 = this;
-
- // If a queue is present we must excecute it
- if (this.queue.length) {
- this.idle = false; // Updates can interrupt trailing queues, in that case we just merge values
-
- if (this.localQueue) {
- this.localQueue.forEach(function (_ref3) {
- var _ref3$from = _ref3.from,
- from = _ref3$from === void 0 ? {} : _ref3$from,
- _ref3$to = _ref3.to,
- to = _ref3$to === void 0 ? {} : _ref3$to;
- if (is.obj(from)) _this2.merged = _extends({}, from, _this2.merged);
- if (is.obj(to)) _this2.merged = _extends({}, _this2.merged, to);
- });
- } // The guid helps us tracking frames, a new queue over an old one means an override
- // We discard async calls in that caseÍ
-
-
- var local = this.local = ++this.guid;
- var queue = this.localQueue = this.queue;
- this.queue = []; // Go through each entry and execute it
-
- queue.forEach(function (_ref4, index) {
- var delay = _ref4.delay,
- props = _objectWithoutPropertiesLoose(_ref4, ["delay"]);
-
- var cb = function cb(finished) {
- if (index === queue.length - 1 && local === _this2.guid && finished) {
- _this2.idle = true;
- if (_this2.props.onRest) _this2.props.onRest(_this2.merged);
- }
-
- if (onEnd) onEnd();
- }; // Entries can be delayed, ansyc or immediate
-
-
- var async = is.arr(props.to) || is.fun(props.to);
-
- if (delay) {
- setTimeout(function () {
- if (local === _this2.guid) {
- if (async) _this2.runAsync(props, cb);else _this2.diff(props).start(cb);
- }
- }, delay);
- } else if (async) _this2.runAsync(props, cb);else _this2.diff(props).start(cb);
- });
- } // Otherwise we kick of the frameloop
- else {
- if (is.fun(onEnd)) this.listeners.push(onEnd);
- if (this.props.onStart) this.props.onStart();
-
- start(this);
- }
-
- return this;
- };
-
- _proto.stop = function stop$$1(finished) {
- this.listeners.forEach(function (onEnd) {
- return onEnd(finished);
- });
- this.listeners = [];
- return this;
- }
- /** Pause sets onEnd listeners free, but also removes the controller from the frameloop */
- ;
-
- _proto.pause = function pause(finished) {
- this.stop(true);
- if (finished) stop(this);
- return this;
- };
-
- _proto.runAsync = function runAsync(_ref5, onEnd) {
- var _this3 = this;
-
- var delay = _ref5.delay,
- props = _objectWithoutPropertiesLoose(_ref5, ["delay"]);
-
- var local = this.local; // If "to" is either a function or an array it will be processed async, therefor "to" should be empty right now
- // If the view relies on certain values "from" has to be present
-
- var queue = Promise.resolve(undefined);
-
- if (is.arr(props.to)) {
- var _loop = function _loop(i) {
- var index = i;
-
- var fresh = _extends({}, props, interpolateTo(props.to[index]));
-
- if (is.arr(fresh.config)) fresh.config = fresh.config[index];
- queue = queue.then(function () {
- //this.stop()
- if (local === _this3.guid) return new Promise(function (r) {
- return _this3.diff(fresh).start(r);
- });
- });
- };
-
- for (var i = 0; i < props.to.length; i++) {
- _loop(i);
- }
- } else if (is.fun(props.to)) {
- var index = 0;
- var last;
- queue = queue.then(function () {
- return props.to( // next(props)
- function (p) {
- var fresh = _extends({}, props, interpolateTo(p));
-
- if (is.arr(fresh.config)) fresh.config = fresh.config[index];
- index++; //this.stop()
-
- if (local === _this3.guid) return last = new Promise(function (r) {
- return _this3.diff(fresh).start(r);
- });
- return;
- }, // cancel()
- function (finished) {
- if (finished === void 0) {
- finished = true;
- }
-
- return _this3.stop(finished);
- }).then(function () {
- return last;
- });
- });
- }
-
- queue.then(onEnd);
- };
-
- _proto.diff = function diff(props) {
- var _this4 = this;
-
- this.props = _extends({}, this.props, props);
- var _this$props = this.props,
- _this$props$from = _this$props.from,
- from = _this$props$from === void 0 ? {} : _this$props$from,
- _this$props$to = _this$props.to,
- to = _this$props$to === void 0 ? {} : _this$props$to,
- _this$props$config = _this$props.config,
- config = _this$props$config === void 0 ? {} : _this$props$config,
- reverse = _this$props.reverse,
- attach = _this$props.attach,
- reset = _this$props.reset,
- immediate = _this$props.immediate; // Reverse values when requested
-
- if (reverse) {
- var _ref6 = [to, from];
- from = _ref6[0];
- to = _ref6[1];
- } // This will collect all props that were ever set, reset merged props when necessary
-
-
- this.merged = _extends({}, from, this.merged, to);
- this.hasChanged = false; // Attachment handling, trailed springs can "attach" themselves to a previous spring
-
- var target = attach && attach(this); // Reduces input { name: value } pairs into animated values
-
- this.animations = Object.entries(this.merged).reduce(function (acc, _ref7) {
- var name = _ref7[0],
- value = _ref7[1];
- // Issue cached entries, except on reset
- var entry = acc[name] || {}; // Figure out what the value is supposed to be
-
- var isNumber = is.num(value);
- var isString = is.str(value) && !value.startsWith('#') && !/\d/.test(value) && !colorNames[value];
- var isArray = is.arr(value);
- var isInterpolation = !isNumber && !isArray && !isString;
- var fromValue = !is.und(from[name]) ? from[name] : value;
- var toValue = isNumber || isArray ? value : isString ? value : 1;
- var toConfig = callProp(config, name);
- if (target) toValue = target.animations[name].parent;
- var parent = entry.parent,
- interpolation$$1 = entry.interpolation,
- toValues = toArray(target ? toValue.getPayload() : toValue),
- animatedValues;
- var newValue = value;
- if (isInterpolation) newValue = interpolation({
- range: [0, 1],
- output: [value, value]
- })(1);
- var currentValue = interpolation$$1 && interpolation$$1.getValue(); // Change detection flags
-
- var isFirst = is.und(parent);
- var isActive = !isFirst && entry.animatedValues.some(function (v) {
- return !v.done;
- });
- var currentValueDiffersFromGoal = !is.equ(newValue, currentValue);
- var hasNewGoal = !is.equ(newValue, entry.previous);
- var hasNewConfig = !is.equ(toConfig, entry.config); // Change animation props when props indicate a new goal (new value differs from previous one)
- // and current values differ from it. Config changes trigger a new update as well (though probably shouldn't?)
-
- if (reset || hasNewGoal && currentValueDiffersFromGoal || hasNewConfig) {
- var _extends2;
-
- // Convert regular values into animated values, ALWAYS re-use if possible
- if (isNumber || isString) parent = interpolation$$1 = entry.parent || new AnimatedValue(fromValue);else if (isArray) parent = interpolation$$1 = entry.parent || new AnimatedValueArray(fromValue);else if (isInterpolation) {
- var prev = entry.interpolation && entry.interpolation.calc(entry.parent.value);
- prev = prev !== void 0 && !reset ? prev : fromValue;
-
- if (entry.parent) {
- parent = entry.parent;
- parent.setValue(0, false);
- } else parent = new AnimatedValue(0);
-
- var range = {
- output: [prev, value]
- };
-
- if (entry.interpolation) {
- interpolation$$1 = entry.interpolation;
- entry.interpolation.updateConfig(range);
- } else interpolation$$1 = parent.interpolate(range);
- }
- toValues = toArray(target ? toValue.getPayload() : toValue);
- animatedValues = toArray(parent.getPayload());
- if (reset && !isInterpolation) parent.setValue(fromValue, false);
- _this4.hasChanged = true; // Reset animated values
-
- animatedValues.forEach(function (value) {
- value.startPosition = value.value;
- value.lastPosition = value.value;
- value.lastVelocity = isActive ? value.lastVelocity : undefined;
- value.lastTime = isActive ? value.lastTime : undefined;
- value.startTime = now();
- value.done = false;
- value.animatedStyles.clear();
- }); // Set immediate values
-
- if (callProp(immediate, name)) {
- parent.setValue(isInterpolation ? toValue : value, false);
- }
-
- return _extends({}, acc, (_extends2 = {}, _extends2[name] = _extends({}, entry, {
- name: name,
- parent: parent,
- interpolation: interpolation$$1,
- animatedValues: animatedValues,
- toValues: toValues,
- previous: newValue,
- config: toConfig,
- fromValues: toArray(parent.getValue()),
- immediate: callProp(immediate, name),
- initialVelocity: withDefault(toConfig.velocity, 0),
- clamp: withDefault(toConfig.clamp, false),
- precision: withDefault(toConfig.precision, 0.01),
- tension: withDefault(toConfig.tension, 170),
- friction: withDefault(toConfig.friction, 26),
- mass: withDefault(toConfig.mass, 1),
- duration: toConfig.duration,
- easing: withDefault(toConfig.easing, function (t) {
- return t;
- }),
- decay: toConfig.decay
- }), _extends2));
- } else {
- if (!currentValueDiffersFromGoal) {
- var _extends3;
-
- // So ... the current target value (newValue) appears to be different from the previous value,
- // which normally constitutes an update, but the actual value (currentValue) matches the target!
- // In order to resolve this without causing an animation update we silently flag the animation as done,
- // which it technically is. Interpolations also needs a config update with their target set to 1.
- if (isInterpolation) {
- parent.setValue(1, false);
- interpolation$$1.updateConfig({
- output: [newValue, newValue]
- });
- }
-
- parent.done = true;
- _this4.hasChanged = true;
- return _extends({}, acc, (_extends3 = {}, _extends3[name] = _extends({}, acc[name], {
- previous: newValue
- }), _extends3));
- }
-
- return acc;
- }
- }, this.animations);
-
- if (this.hasChanged) {
- // Make animations available to frameloop
- this.configs = Object.values(this.animations);
- this.values = {};
- this.interpolations = {};
-
- for (var key in this.animations) {
- this.interpolations[key] = this.animations[key].interpolation;
- this.values[key] = this.animations[key].interpolation.getValue();
- }
- }
-
- return this;
- };
-
- _proto.destroy = function destroy() {
- this.stop();
- this.props = {};
- this.merged = {};
- this.animations = {};
- this.interpolations = {};
- this.values = {};
- this.configs = [];
- this.local = 0;
- };
-
- return Controller;
-}();
-
-/** API
- * const props = useSprings(number, [{ ... }, { ... }, ...])
- * const [props, set] = useSprings(number, (i, controller) => ({ ... }))
- */
-
-var useSprings = function useSprings(length, props) {
- var mounted = React.useRef(false);
- var ctrl = React.useRef();
- var isFn = is.fun(props); // The controller maintains the animation values, starts and stops animations
-
- var _useMemo = React.useMemo(function () {
- // Remove old controllers
- if (ctrl.current) {
- ctrl.current.map(function (c) {
- return c.destroy();
- });
- ctrl.current = undefined;
- }
-
- var ref;
- return [new Array(length).fill().map(function (_, i) {
- var ctrl = new Controller();
- var newProps = isFn ? callProp(props, i, ctrl) : props[i];
- if (i === 0) ref = newProps.ref;
- ctrl.update(newProps);
- if (!ref) ctrl.start();
- return ctrl;
- }), ref];
- }, [length]),
- controllers = _useMemo[0],
- ref = _useMemo[1];
-
- ctrl.current = controllers; // The hooks reference api gets defined here ...
-
- var api = React.useImperativeHandle(ref, function () {
- return {
- start: function start() {
- return Promise.all(ctrl.current.map(function (c) {
- return new Promise(function (r) {
- return c.start(r);
- });
- }));
- },
- stop: function stop(finished) {
- return ctrl.current.forEach(function (c) {
- return c.stop(finished);
- });
- },
-
- get controllers() {
- return ctrl.current;
- }
-
- };
- }); // This function updates the controllers
-
- var updateCtrl = React.useMemo(function () {
- return function (updateProps) {
- return ctrl.current.map(function (c, i) {
- c.update(isFn ? callProp(updateProps, i, c) : updateProps[i]);
- if (!ref) c.start();
- });
- };
- }, [length]); // Update controller if props aren't functional
-
- React.useEffect(function () {
- if (mounted.current) {
- if (!isFn) updateCtrl(props);
- } else if (!ref) ctrl.current.forEach(function (c) {
- return c.start();
- });
- }); // Update mounted flag and destroy controller on unmount
-
- React.useEffect(function () {
- return mounted.current = true, function () {
- return ctrl.current.forEach(function (c) {
- return c.destroy();
- });
- };
- }, []); // Return animated props, or, anim-props + the update-setter above
-
- var propValues = ctrl.current.map(function (c) {
- return c.getValues();
- });
- return isFn ? [propValues, updateCtrl, function (finished) {
- return ctrl.current.forEach(function (c) {
- return c.pause(finished);
- });
- }] : propValues;
-};
-
-/** API
- * const props = useSpring({ ... })
- * const [props, set] = useSpring(() => ({ ... }))
- */
-
-var useSpring = function useSpring(props) {
- var isFn = is.fun(props);
-
- var _useSprings = useSprings(1, isFn ? props : [props]),
- result = _useSprings[0],
- set = _useSprings[1],
- pause = _useSprings[2];
-
- return isFn ? [result[0], set, pause] : result;
-};
-
-/** API
- * const trails = useTrail(number, { ... })
- * const [trails, set] = useTrail(number, () => ({ ... }))
- */
-
-var useTrail = function useTrail(length, props) {
- var mounted = React.useRef(false);
- var isFn = is.fun(props);
- var updateProps = callProp(props);
- var instances = React.useRef();
-
- var _useSprings = useSprings(length, function (i, ctrl) {
- if (i === 0) instances.current = [];
- instances.current.push(ctrl);
- return _extends({}, updateProps, {
- config: callProp(updateProps.config, i),
- attach: i > 0 && function () {
- return instances.current[i - 1];
- }
- });
- }),
- result = _useSprings[0],
- set = _useSprings[1],
- pause = _useSprings[2]; // Set up function to update controller
-
-
- var updateCtrl = React.useMemo(function () {
- return function (props) {
- return set(function (i, ctrl) {
- var last = props.reverse ? i === 0 : length - 1 === i;
- var attachIdx = props.reverse ? i + 1 : i - 1;
- var attachController = instances.current[attachIdx];
- return _extends({}, props, {
- config: callProp(props.config || updateProps.config, i),
- attach: attachController && function () {
- return attachController;
- }
- });
- });
- };
- }, [length, updateProps.reverse]); // Update controller if props aren't functional
-
- React.useEffect(function () {
- return void (mounted.current && !isFn && updateCtrl(props));
- }); // Update mounted flag and destroy controller on unmount
-
- React.useEffect(function () {
- return void (mounted.current = true);
- }, []);
- return isFn ? [result, updateCtrl, pause] : result;
-};
-
-/** API
- * const transitions = useTransition(items, itemKeys, { ... })
- * const [transitions, update] = useTransition(items, itemKeys, () => ({ ... }))
- */
-
-var guid = 0;
-var ENTER = 'enter';
-var LEAVE = 'leave';
-var UPDATE = 'update';
-
-var mapKeys = function mapKeys(items, keys) {
- return (typeof keys === 'function' ? items.map(keys) : toArray(keys)).map(String);
-};
-
-var get = function get(props) {
- var items = props.items,
- _props$keys = props.keys,
- keys = _props$keys === void 0 ? function (item) {
- return item;
- } : _props$keys,
- rest = _objectWithoutPropertiesLoose(props, ["items", "keys"]);
-
- items = toArray(items !== void 0 ? items : null);
- return _extends({
- items: items,
- keys: mapKeys(items, keys)
- }, rest);
-};
-
-function useTransition(input, keyTransform, config) {
- var props = _extends({
- items: input,
- keys: keyTransform || function (i) {
- return i;
- }
- }, config);
-
- var _get = get(props),
- _get$lazy = _get.lazy,
- lazy = _get$lazy === void 0 ? false : _get$lazy,
- _get$unique = _get.unique,
- _get$reset = _get.reset,
- reset = _get$reset === void 0 ? false : _get$reset,
- enter = _get.enter,
- leave = _get.leave,
- update = _get.update,
- onDestroyed = _get.onDestroyed,
- keys = _get.keys,
- items = _get.items,
- onFrame = _get.onFrame,
- _onRest = _get.onRest,
- onStart = _get.onStart,
- ref = _get.ref,
- extra = _objectWithoutPropertiesLoose(_get, ["lazy", "unique", "reset", "enter", "leave", "update", "onDestroyed", "keys", "items", "onFrame", "onRest", "onStart", "ref"]);
-
- var forceUpdate = useForceUpdate();
- var mounted = React.useRef(false);
- var state = React.useRef({
- mounted: false,
- first: true,
- deleted: [],
- current: {},
- transitions: [],
- prevProps: {},
- paused: !!props.ref,
- instances: !mounted.current && new Map(),
- forceUpdate: forceUpdate
- });
- React.useImperativeHandle(props.ref, function () {
- return {
- start: function start() {
- return Promise.all(Array.from(state.current.instances).map(function (_ref) {
- var c = _ref[1];
- return new Promise(function (r) {
- return c.start(r);
- });
- }));
- },
- stop: function stop(finished) {
- return Array.from(state.current.instances).forEach(function (_ref2) {
- var c = _ref2[1];
- return c.stop(finished);
- });
- },
-
- get controllers() {
- return Array.from(state.current.instances).map(function (_ref3) {
- var c = _ref3[1];
- return c;
- });
- }
-
- };
- }); // Update state
-
- state.current = diffItems(state.current, props);
-
- if (state.current.changed) {
- // Update state
- state.current.transitions.forEach(function (transition) {
- var slot = transition.slot,
- from = transition.from,
- to = transition.to,
- config = transition.config,
- trail = transition.trail,
- key = transition.key,
- item = transition.item;
- if (!state.current.instances.has(key)) state.current.instances.set(key, new Controller()); // update the map object
-
- var ctrl = state.current.instances.get(key);
-
- var newProps = _extends({}, extra, {
- to: to,
- from: from,
- config: config,
- ref: ref,
- onRest: function onRest(values) {
- if (state.current.mounted) {
- if (transition.destroyed) {
- // If no ref is given delete destroyed items immediately
- if (!ref && !lazy) cleanUp(state, key);
- if (onDestroyed) onDestroyed(item);
- } // A transition comes to rest once all its springs conclude
-
-
- var curInstances = Array.from(state.current.instances);
- var active = curInstances.some(function (_ref4) {
- var c = _ref4[1];
- return !c.idle;
- });
- if (!active && (ref || lazy) && state.current.deleted.length > 0) cleanUp(state);
- if (_onRest) _onRest(item, slot, values);
- }
- },
- onStart: onStart && function () {
- return onStart(item, slot);
- },
- onFrame: onFrame && function (values) {
- return onFrame(item, slot, values);
- },
- delay: trail,
- reset: reset && slot === ENTER // Update controller
-
- });
-
- ctrl.update(newProps);
- if (!state.current.paused) ctrl.start();
- });
- }
-
- React.useEffect(function () {
- state.current.mounted = mounted.current = true;
- return function () {
- state.current.mounted = mounted.current = false;
- Array.from(state.current.instances).map(function (_ref5) {
- var c = _ref5[1];
- return c.destroy();
- });
- state.current.instances.clear();
- };
- }, []);
- return state.current.transitions.map(function (_ref6) {
- var item = _ref6.item,
- slot = _ref6.slot,
- key = _ref6.key;
- return {
- item: item,
- key: key,
- state: slot,
- props: state.current.instances.get(key).getValues()
- };
- });
-}
-
-function cleanUp(state, filterKey) {
- var deleted = state.current.deleted;
-
- var _loop = function _loop() {
- if (_isArray) {
- if (_i >= _iterator.length) return "break";
- _ref8 = _iterator[_i++];
- } else {
- _i = _iterator.next();
- if (_i.done) return "break";
- _ref8 = _i.value;
- }
-
- var _ref7 = _ref8;
- var key = _ref7.key;
-
- var filter = function filter(t) {
- return t.key !== key;
- };
-
- if (is.und(filterKey) || filterKey === key) {
- state.current.instances.delete(key);
- state.current.transitions = state.current.transitions.filter(filter);
- state.current.deleted = state.current.deleted.filter(filter);
- }
- };
-
- for (var _iterator = deleted, _isArray = Array.isArray(_iterator), _i = 0, _iterator = _isArray ? _iterator : _iterator[Symbol.iterator]();;) {
- var _ref8;
-
- var _ret = _loop();
-
- if (_ret === "break") break;
- }
-
- state.current.forceUpdate();
-}
-
-function diffItems(_ref9, props) {
- var first = _ref9.first,
- prevProps = _ref9.prevProps,
- state = _objectWithoutPropertiesLoose(_ref9, ["first", "prevProps"]);
-
- var _get2 = get(props),
- items = _get2.items,
- keys = _get2.keys,
- initial = _get2.initial,
- from = _get2.from,
- enter = _get2.enter,
- leave = _get2.leave,
- update = _get2.update,
- _get2$trail = _get2.trail,
- trail = _get2$trail === void 0 ? 0 : _get2$trail,
- unique = _get2.unique,
- config = _get2.config,
- _get2$order = _get2.order,
- order = _get2$order === void 0 ? [ENTER, LEAVE, UPDATE] : _get2$order;
-
- var _get3 = get(prevProps),
- _keys = _get3.keys,
- _items = _get3.items;
-
- var current = _extends({}, state.current);
-
- var deleted = [].concat(state.deleted); // Compare next keys with current keys
-
- var currentKeys = Object.keys(current);
- var currentSet = new Set(currentKeys);
- var nextSet = new Set(keys);
- var added = keys.filter(function (item) {
- return !currentSet.has(item);
- });
- var removed = state.transitions.filter(function (item) {
- return !item.destroyed && !nextSet.has(item.originalKey);
- }).map(function (i) {
- return i.originalKey;
- });
- var updated = keys.filter(function (item) {
- return currentSet.has(item);
- });
- var delay = -trail;
-
- while (order.length) {
- var changeType = order.shift();
-
- switch (changeType) {
- case ENTER:
- {
- added.forEach(function (key, index) {
- // In unique mode, remove fading out transitions if their key comes in again
- if (unique && deleted.find(function (d) {
- return d.originalKey === key;
- })) deleted = deleted.filter(function (t) {
- return t.originalKey !== key;
- });
- var keyIndex = keys.indexOf(key);
- var item = items[keyIndex];
- var slot = first && initial !== void 0 ? 'initial' : ENTER;
- current[key] = {
- slot: slot,
- originalKey: key,
- key: unique ? String(key) : guid++,
- item: item,
- trail: delay = delay + trail,
- config: callProp(config, item, slot),
- from: callProp(first ? initial !== void 0 ? initial || {} : from : from, item),
- to: callProp(enter, item)
- };
- });
- break;
- }
-
- case LEAVE:
- {
- removed.forEach(function (key) {
- var keyIndex = _keys.indexOf(key);
-
- var item = _items[keyIndex];
- var slot = LEAVE;
- deleted.unshift(_extends({}, current[key], {
- slot: slot,
- destroyed: true,
- left: _keys[Math.max(0, keyIndex - 1)],
- right: _keys[Math.min(_keys.length, keyIndex + 1)],
- trail: delay = delay + trail,
- config: callProp(config, item, slot),
- to: callProp(leave, item)
- }));
- delete current[key];
- });
- break;
- }
-
- case UPDATE:
- {
- updated.forEach(function (key) {
- var keyIndex = keys.indexOf(key);
- var item = items[keyIndex];
- var slot = UPDATE;
- current[key] = _extends({}, current[key], {
- item: item,
- slot: slot,
- trail: delay = delay + trail,
- config: callProp(config, item, slot),
- to: callProp(update, item)
- });
- });
- break;
- }
- }
- }
-
- var out = keys.map(function (key) {
- return current[key];
- }); // This tries to restore order for deleted items by finding their last known siblings
- // only using the left sibling to keep order placement consistent for all deleted items
-
- deleted.forEach(function (_ref10) {
- var left = _ref10.left,
- right = _ref10.right,
- item = _objectWithoutPropertiesLoose(_ref10, ["left", "right"]);
-
- var pos; // Was it the element on the left, if yes, move there ...
-
- if ((pos = out.findIndex(function (t) {
- return t.originalKey === left;
- })) !== -1) pos += 1; // And if nothing else helps, move it to the start ¯\_(ツ)_/¯
-
- pos = Math.max(0, pos);
- out = [].concat(out.slice(0, pos), [item], out.slice(pos));
- });
- return _extends({}, state, {
- changed: added.length || removed.length || updated.length,
- first: first && added.length === 0,
- transitions: out,
- current: current,
- deleted: deleted,
- prevProps: props
- });
-}
-
-var AnimatedStyle =
-/*#__PURE__*/
-function (_AnimatedObject) {
- _inheritsLoose(AnimatedStyle, _AnimatedObject);
-
- function AnimatedStyle(style) {
- var _this;
-
- if (style === void 0) {
- style = {};
- }
-
- _this = _AnimatedObject.call(this) || this;
-
- if (style.transform && !(style.transform instanceof Animated)) {
- style = applyAnimatedValues.transform(style);
- }
-
- _this.payload = style;
- return _this;
- }
-
- return AnimatedStyle;
-}(AnimatedObject);
-
-// http://www.w3.org/TR/css3-color/#svg-color
-var colors = {
- transparent: 0x00000000,
- aliceblue: 0xf0f8ffff,
- antiquewhite: 0xfaebd7ff,
- aqua: 0x00ffffff,
- aquamarine: 0x7fffd4ff,
- azure: 0xf0ffffff,
- beige: 0xf5f5dcff,
- bisque: 0xffe4c4ff,
- black: 0x000000ff,
- blanchedalmond: 0xffebcdff,
- blue: 0x0000ffff,
- blueviolet: 0x8a2be2ff,
- brown: 0xa52a2aff,
- burlywood: 0xdeb887ff,
- burntsienna: 0xea7e5dff,
- cadetblue: 0x5f9ea0ff,
- chartreuse: 0x7fff00ff,
- chocolate: 0xd2691eff,
- coral: 0xff7f50ff,
- cornflowerblue: 0x6495edff,
- cornsilk: 0xfff8dcff,
- crimson: 0xdc143cff,
- cyan: 0x00ffffff,
- darkblue: 0x00008bff,
- darkcyan: 0x008b8bff,
- darkgoldenrod: 0xb8860bff,
- darkgray: 0xa9a9a9ff,
- darkgreen: 0x006400ff,
- darkgrey: 0xa9a9a9ff,
- darkkhaki: 0xbdb76bff,
- darkmagenta: 0x8b008bff,
- darkolivegreen: 0x556b2fff,
- darkorange: 0xff8c00ff,
- darkorchid: 0x9932ccff,
- darkred: 0x8b0000ff,
- darksalmon: 0xe9967aff,
- darkseagreen: 0x8fbc8fff,
- darkslateblue: 0x483d8bff,
- darkslategray: 0x2f4f4fff,
- darkslategrey: 0x2f4f4fff,
- darkturquoise: 0x00ced1ff,
- darkviolet: 0x9400d3ff,
- deeppink: 0xff1493ff,
- deepskyblue: 0x00bfffff,
- dimgray: 0x696969ff,
- dimgrey: 0x696969ff,
- dodgerblue: 0x1e90ffff,
- firebrick: 0xb22222ff,
- floralwhite: 0xfffaf0ff,
- forestgreen: 0x228b22ff,
- fuchsia: 0xff00ffff,
- gainsboro: 0xdcdcdcff,
- ghostwhite: 0xf8f8ffff,
- gold: 0xffd700ff,
- goldenrod: 0xdaa520ff,
- gray: 0x808080ff,
- green: 0x008000ff,
- greenyellow: 0xadff2fff,
- grey: 0x808080ff,
- honeydew: 0xf0fff0ff,
- hotpink: 0xff69b4ff,
- indianred: 0xcd5c5cff,
- indigo: 0x4b0082ff,
- ivory: 0xfffff0ff,
- khaki: 0xf0e68cff,
- lavender: 0xe6e6faff,
- lavenderblush: 0xfff0f5ff,
- lawngreen: 0x7cfc00ff,
- lemonchiffon: 0xfffacdff,
- lightblue: 0xadd8e6ff,
- lightcoral: 0xf08080ff,
- lightcyan: 0xe0ffffff,
- lightgoldenrodyellow: 0xfafad2ff,
- lightgray: 0xd3d3d3ff,
- lightgreen: 0x90ee90ff,
- lightgrey: 0xd3d3d3ff,
- lightpink: 0xffb6c1ff,
- lightsalmon: 0xffa07aff,
- lightseagreen: 0x20b2aaff,
- lightskyblue: 0x87cefaff,
- lightslategray: 0x778899ff,
- lightslategrey: 0x778899ff,
- lightsteelblue: 0xb0c4deff,
- lightyellow: 0xffffe0ff,
- lime: 0x00ff00ff,
- limegreen: 0x32cd32ff,
- linen: 0xfaf0e6ff,
- magenta: 0xff00ffff,
- maroon: 0x800000ff,
- mediumaquamarine: 0x66cdaaff,
- mediumblue: 0x0000cdff,
- mediumorchid: 0xba55d3ff,
- mediumpurple: 0x9370dbff,
- mediumseagreen: 0x3cb371ff,
- mediumslateblue: 0x7b68eeff,
- mediumspringgreen: 0x00fa9aff,
- mediumturquoise: 0x48d1ccff,
- mediumvioletred: 0xc71585ff,
- midnightblue: 0x191970ff,
- mintcream: 0xf5fffaff,
- mistyrose: 0xffe4e1ff,
- moccasin: 0xffe4b5ff,
- navajowhite: 0xffdeadff,
- navy: 0x000080ff,
- oldlace: 0xfdf5e6ff,
- olive: 0x808000ff,
- olivedrab: 0x6b8e23ff,
- orange: 0xffa500ff,
- orangered: 0xff4500ff,
- orchid: 0xda70d6ff,
- palegoldenrod: 0xeee8aaff,
- palegreen: 0x98fb98ff,
- paleturquoise: 0xafeeeeff,
- palevioletred: 0xdb7093ff,
- papayawhip: 0xffefd5ff,
- peachpuff: 0xffdab9ff,
- peru: 0xcd853fff,
- pink: 0xffc0cbff,
- plum: 0xdda0ddff,
- powderblue: 0xb0e0e6ff,
- purple: 0x800080ff,
- rebeccapurple: 0x663399ff,
- red: 0xff0000ff,
- rosybrown: 0xbc8f8fff,
- royalblue: 0x4169e1ff,
- saddlebrown: 0x8b4513ff,
- salmon: 0xfa8072ff,
- sandybrown: 0xf4a460ff,
- seagreen: 0x2e8b57ff,
- seashell: 0xfff5eeff,
- sienna: 0xa0522dff,
- silver: 0xc0c0c0ff,
- skyblue: 0x87ceebff,
- slateblue: 0x6a5acdff,
- slategray: 0x708090ff,
- slategrey: 0x708090ff,
- snow: 0xfffafaff,
- springgreen: 0x00ff7fff,
- steelblue: 0x4682b4ff,
- tan: 0xd2b48cff,
- teal: 0x008080ff,
- thistle: 0xd8bfd8ff,
- tomato: 0xff6347ff,
- turquoise: 0x40e0d0ff,
- violet: 0xee82eeff,
- wheat: 0xf5deb3ff,
- white: 0xffffffff,
- whitesmoke: 0xf5f5f5ff,
- yellow: 0xffff00ff,
- yellowgreen: 0x9acd32ff
-};
-
-// const INTEGER = '[-+]?\\d+';
-var NUMBER = '[-+]?\\d*\\.?\\d+';
-var PERCENTAGE = NUMBER + '%';
-
-function call() {
- for (var _len = arguments.length, parts = new Array(_len), _key = 0; _key < _len; _key++) {
- parts[_key] = arguments[_key];
- }
-
- return '\\(\\s*(' + parts.join(')\\s*,\\s*(') + ')\\s*\\)';
-}
-
-var rgb = new RegExp('rgb' + call(NUMBER, NUMBER, NUMBER));
-var rgba = new RegExp('rgba' + call(NUMBER, NUMBER, NUMBER, NUMBER));
-var hsl = new RegExp('hsl' + call(NUMBER, PERCENTAGE, PERCENTAGE));
-var hsla = new RegExp('hsla' + call(NUMBER, PERCENTAGE, PERCENTAGE, NUMBER));
-var hex3 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
-var hex4 = /^#([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})([0-9a-fA-F]{1})$/;
-var hex6 = /^#([0-9a-fA-F]{6})$/;
-var hex8 = /^#([0-9a-fA-F]{8})$/;
-
-/*
-https://github.com/react-community/normalize-css-color
-
-BSD 3-Clause License
-
-Copyright (c) 2016, React Community
-All rights reserved.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are met:
-
-* Redistributions of source code must retain the above copyright notice, this
- list of conditions and the following disclaimer.
-
-* Redistributions in binary form must reproduce the above copyright notice,
- this list of conditions and the following disclaimer in the documentation
- and/or other materials provided with the distribution.
-
-* Neither the name of the copyright holder nor the names of its
- contributors may be used to endorse or promote products derived from
- this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
-AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
-IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
-DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
-FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
-DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
-SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
-CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
-OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-*/
-function normalizeColor(color) {
- var match;
-
- if (typeof color === 'number') {
- return color >>> 0 === color && color >= 0 && color <= 0xffffffff ? color : null;
- } // Ordered based on occurrences on Facebook codebase
-
-
- if (match = hex6.exec(color)) return parseInt(match[1] + 'ff', 16) >>> 0;
- if (colors.hasOwnProperty(color)) return colors[color];
-
- if (match = rgb.exec(color)) {
- return (parse255(match[1]) << 24 | // r
- parse255(match[2]) << 16 | // g
- parse255(match[3]) << 8 | // b
- 0x000000ff) >>> // a
- 0;
- }
-
- if (match = rgba.exec(color)) {
- return (parse255(match[1]) << 24 | // r
- parse255(match[2]) << 16 | // g
- parse255(match[3]) << 8 | // b
- parse1(match[4])) >>> // a
- 0;
- }
-
- if (match = hex3.exec(color)) {
- return parseInt(match[1] + match[1] + // r
- match[2] + match[2] + // g
- match[3] + match[3] + // b
- 'ff', // a
- 16) >>> 0;
- } // https://drafts.csswg.org/css-color-4/#hex-notation
-
-
- if (match = hex8.exec(color)) return parseInt(match[1], 16) >>> 0;
-
- if (match = hex4.exec(color)) {
- return parseInt(match[1] + match[1] + // r
- match[2] + match[2] + // g
- match[3] + match[3] + // b
- match[4] + match[4], // a
- 16) >>> 0;
- }
-
- if (match = hsl.exec(color)) {
- return (hslToRgb(parse360(match[1]), // h
- parsePercentage(match[2]), // s
- parsePercentage(match[3]) // l
- ) | 0x000000ff) >>> // a
- 0;
- }
-
- if (match = hsla.exec(color)) {
- return (hslToRgb(parse360(match[1]), // h
- parsePercentage(match[2]), // s
- parsePercentage(match[3]) // l
- ) | parse1(match[4])) >>> // a
- 0;
- }
-
- return null;
-}
-
-function hue2rgb(p, q, t) {
- if (t < 0) t += 1;
- if (t > 1) t -= 1;
- if (t < 1 / 6) return p + (q - p) * 6 * t;
- if (t < 1 / 2) return q;
- if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;
- return p;
-}
-
-function hslToRgb(h, s, l) {
- var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
- var p = 2 * l - q;
- var r = hue2rgb(p, q, h + 1 / 3);
- var g = hue2rgb(p, q, h);
- var b = hue2rgb(p, q, h - 1 / 3);
- return Math.round(r * 255) << 24 | Math.round(g * 255) << 16 | Math.round(b * 255) << 8;
-}
-
-function parse255(str) {
- var int = parseInt(str, 10);
- if (int < 0) return 0;
- if (int > 255) return 255;
- return int;
-}
-
-function parse360(str) {
- var int = parseFloat(str);
- return (int % 360 + 360) % 360 / 360;
-}
-
-function parse1(str) {
- var num = parseFloat(str);
- if (num < 0) return 0;
- if (num > 1) return 255;
- return Math.round(num * 255);
-}
-
-function parsePercentage(str) {
- // parseFloat conveniently ignores the final %
- var int = parseFloat(str);
- if (int < 0) return 0;
- if (int > 100) return 1;
- return int / 100;
-}
-
-function colorToRgba(input) {
- var int32Color = normalizeColor(input);
- if (int32Color === null) return input;
- int32Color = int32Color || 0;
- var r = (int32Color & 0xff000000) >>> 24;
- var g = (int32Color & 0x00ff0000) >>> 16;
- var b = (int32Color & 0x0000ff00) >>> 8;
- var a = (int32Color & 0x000000ff) / 255;
- return "rgba(" + r + ", " + g + ", " + b + ", " + a + ")";
-} // Problem: https://github.com/animatedjs/animated/pull/102
-// Solution: https://stackoverflow.com/questions/638565/parsing-scientific-notation-sensibly/658662
-
-
-var stringShapeRegex = /[+\-]?(?:0|[1-9]\d*)(?:\.\d*)?(?:[eE][+\-]?\d+)?/g; // Covers rgb, rgba, hsl, hsla
-// Taken from https://gist.github.com/olmokramer/82ccce673f86db7cda5e
-
-var colorRegex = /(#(?:[0-9a-f]{2}){2,4}|(#[0-9a-f]{3})|(rgb|hsl)a?\((-?\d+%?[,\s]+){2,3}\s*[\d\.]+%?\))/gi; // Covers color names (transparent, blue, etc.)
-
-var colorNamesRegex = new RegExp("(" + Object.keys(colors).join('|') + ")", 'g');
-/**
- * Supports string shapes by extracting numbers so new values can be computed,
- * and recombines those values into new strings of the same shape. Supports
- * things like:
- *
- * rgba(123, 42, 99, 0.36) // colors
- * -45deg // values with units
- * 0 2px 2px 0px rgba(0, 0, 0, 0.12) // box shadows
- */
-
-var createStringInterpolator = function createStringInterpolator(config) {
- // Replace colors with rgba
- var outputRange = config.output.map(function (rangeValue) {
- return rangeValue.replace(colorRegex, colorToRgba);
- }).map(function (rangeValue) {
- return rangeValue.replace(colorNamesRegex, colorToRgba);
- });
- var outputRanges = outputRange[0].match(stringShapeRegex).map(function () {
- return [];
- });
- outputRange.forEach(function (value) {
- value.match(stringShapeRegex).forEach(function (number, i) {
- return outputRanges[i].push(+number);
- });
- });
- var interpolations = outputRange[0].match(stringShapeRegex).map(function (_value, i) {
- return createInterpolator(_extends({}, config, {
- output: outputRanges[i]
- }));
- });
- return function (input) {
- var i = 0;
- return outputRange[0] // 'rgba(0, 100, 200, 0)'
- // ->
- // 'rgba(${interpolations[0](input)}, ${interpolations[1](input)}, ...'
- .replace(stringShapeRegex, function () {
- return interpolations[i++](input);
- }) // rgba requires that the r,g,b are integers.... so we want to round them, but we *dont* want to
- // round the opacity (4th column).
- .replace(/rgba\(([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+), ([0-9\.-]+)\)/gi, function (_, p1, p2, p3, p4) {
- return "rgba(" + Math.round(p1) + ", " + Math.round(p2) + ", " + Math.round(p3) + ", " + p4 + ")";
- });
- };
-};
-
-var isUnitlessNumber = {
- animationIterationCount: true,
- borderImageOutset: true,
- borderImageSlice: true,
- borderImageWidth: true,
- boxFlex: true,
- boxFlexGroup: true,
- boxOrdinalGroup: true,
- columnCount: true,
- columns: true,
- flex: true,
- flexGrow: true,
- flexPositive: true,
- flexShrink: true,
- flexNegative: true,
- flexOrder: true,
- gridRow: true,
- gridRowEnd: true,
- gridRowSpan: true,
- gridRowStart: true,
- gridColumn: true,
- gridColumnEnd: true,
- gridColumnSpan: true,
- gridColumnStart: true,
- fontWeight: true,
- lineClamp: true,
- lineHeight: true,
- opacity: true,
- order: true,
- orphans: true,
- tabSize: true,
- widows: true,
- zIndex: true,
- zoom: true,
- // SVG-related properties
- fillOpacity: true,
- floodOpacity: true,
- stopOpacity: true,
- strokeDasharray: true,
- strokeDashoffset: true,
- strokeMiterlimit: true,
- strokeOpacity: true,
- strokeWidth: true
-};
-
-var prefixKey = function prefixKey(prefix, key) {
- return prefix + key.charAt(0).toUpperCase() + key.substring(1);
-};
-
-var prefixes = ['Webkit', 'Ms', 'Moz', 'O'];
-isUnitlessNumber = Object.keys(isUnitlessNumber).reduce(function (acc, prop) {
- prefixes.forEach(function (prefix) {
- return acc[prefixKey(prefix, prop)] = acc[prop];
- });
- return acc;
-}, isUnitlessNumber);
-
-function dangerousStyleValue(name, value, isCustomProperty) {
- if (value == null || typeof value === 'boolean' || value === '') return '';
- if (!isCustomProperty && typeof value === 'number' && value !== 0 && !(isUnitlessNumber.hasOwnProperty(name) && isUnitlessNumber[name])) return value + 'px'; // Presumes implicit 'px' suffix for unitless numbers
-
- return ('' + value).trim();
-}
-
-var attributeCache = {};
-injectCreateAnimatedStyle(function (style) {
- return new AnimatedStyle(style);
-});
-injectDefaultElement('div');
-injectStringInterpolator(createStringInterpolator);
-injectColorNames(colors);
-injectApplyAnimatedValues(function (instance, props) {
- if (instance.nodeType && instance.setAttribute !== undefined) {
- var style = props.style,
- children = props.children,
- scrollTop = props.scrollTop,
- scrollLeft = props.scrollLeft,
- attributes = _objectWithoutPropertiesLoose(props, ["style", "children", "scrollTop", "scrollLeft"]);
-
- var filter = instance.nodeName === 'filter' || instance.parentNode && instance.parentNode.nodeName === 'filter';
- if (scrollTop !== void 0) instance.scrollTop = scrollTop;
- if (scrollLeft !== void 0) instance.scrollLeft = scrollLeft; // Set textContent, if children is an animatable value
-
- if (children !== void 0) instance.textContent = children; // Set styles ...
-
- for (var styleName in style) {
- if (!style.hasOwnProperty(styleName)) continue;
- var isCustomProperty = styleName.indexOf('--') === 0;
- var styleValue = dangerousStyleValue(styleName, style[styleName], isCustomProperty);
- if (styleName === 'float') styleName = 'cssFloat';
- if (isCustomProperty) instance.style.setProperty(styleName, styleValue);else instance.style[styleName] = styleValue;
- } // Set attributes ...
-
-
- for (var name in attributes) {
- // Attributes are written in dash case
- var dashCase = filter ? name : attributeCache[name] || (attributeCache[name] = name.replace(/([A-Z])/g, function (n) {
- return '-' + n.toLowerCase();
- }));
- if (typeof instance.getAttribute(dashCase) !== 'undefined') instance.setAttribute(dashCase, attributes[name]);
- }
-
- return;
- } else return false;
-}, function (style) {
- return style;
-});
-
-var domElements = ['a', 'abbr', 'address', 'area', 'article', 'aside', 'audio', 'b', 'base', 'bdi', 'bdo', 'big', 'blockquote', 'body', 'br', 'button', 'canvas', 'caption', 'cite', 'code', 'col', 'colgroup', 'data', 'datalist', 'dd', 'del', 'details', 'dfn', 'dialog', 'div', 'dl', 'dt', 'em', 'embed', 'fieldset', 'figcaption', 'figure', 'footer', 'form', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'head', 'header', 'hgroup', 'hr', 'html', 'i', 'iframe', 'img', 'input', 'ins', 'kbd', 'keygen', 'label', 'legend', 'li', 'link', 'main', 'map', 'mark', 'menu', 'menuitem', 'meta', 'meter', 'nav', 'noscript', 'object', 'ol', 'optgroup', 'option', 'output', 'p', 'param', 'picture', 'pre', 'progress', 'q', 'rp', 'rt', 'ruby', 's', 'samp', 'script', 'section', 'select', 'small', 'source', 'span', 'strong', 'style', 'sub', 'summary', 'sup', 'table', 'tbody', 'td', 'textarea', 'tfoot', 'th', 'thead', 'time', 'title', 'tr', 'track', 'u', 'ul', 'var', 'video', 'wbr', // SVG
-'circle', 'clipPath', 'defs', 'ellipse', 'foreignObject', 'g', 'image', 'line', 'linearGradient', 'mask', 'path', 'pattern', 'polygon', 'polyline', 'radialGradient', 'rect', 'stop', 'svg', 'text', 'tspan'];
-// Extend animated with all the available THREE elements
-var apply = merge(createAnimatedComponent, false);
-var extendedAnimated = apply(domElements);
-
-exports.apply = apply;
-exports.config = config;
-exports.update = update;
-exports.animated = extendedAnimated;
-exports.a = extendedAnimated;
-exports.interpolate = interpolate$1;
-exports.Globals = Globals;
-exports.useSpring = useSpring;
-exports.useTrail = useTrail;
-exports.useTransition = useTransition;
-exports.useChain = useChain;
-exports.useSprings = useSprings;
-
-
-/***/ }),
-
-/***/ 65:
-/***/ (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;
-
-
-/***/ }),
-
-/***/ 68:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-module.exports = __webpack_require__(113);
-
-/***/ }),
-
-/***/ 7:
-/***/ (function(module, __webpack_exports__, __webpack_require__) {
-
-"use strict";
-/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return _objectSpread; });
-/* harmony import */ var _defineProperty__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(10);
-
-function _objectSpread(target) {
- for (var i = 1; i < arguments.length; i++) {
- var source = arguments[i] != null ? arguments[i] : {};
- var ownKeys = Object.keys(source);
-
- if (typeof Object.getOwnPropertySymbols === 'function') {
- ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) {
- return Object.getOwnPropertyDescriptor(source, sym).enumerable;
- }));
- }
-
- ownKeys.forEach(function (key) {
- Object(_defineProperty__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(target, key, source[key]);
- });
- }
-
- return target;
-}
-
-/***/ }),
-
-/***/ 72:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-
-
-function flattenIntoMap( map, effects ) {
- var i;
- if ( Array.isArray( effects ) ) {
- for ( i = 0; i < effects.length; i++ ) {
- flattenIntoMap( map, effects[ i ] );
- }
- } else {
- for ( i in effects ) {
- map[ i ] = ( map[ i ] || [] ).concat( effects[ i ] );
- }
- }
-}
-
-function refx( effects ) {
- var map = {},
- middleware;
-
- flattenIntoMap( map, effects );
-
- middleware = function( store ) {
- return function( next ) {
- return function( action ) {
- var handlers = map[ action.type ],
- result = next( action ),
- i, handlerAction;
-
- if ( handlers ) {
- for ( i = 0; i < handlers.length; i++ ) {
- handlerAction = handlers[ i ]( action, store );
- if ( handlerAction ) {
- store.dispatch( handlerAction );
- }
- }
- }
-
- return result;
- };
- };
- };
-
- middleware.effects = map;
-
- return middleware;
-}
-
-module.exports = refx;
-
-
-/***/ }),
-
-/***/ 8:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["compose"]; }());
-
-/***/ }),
-
-/***/ 82:
-/***/ (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__(123);
-var util = __webpack_require__(125);
-
-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__(126);
-
-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;
-};
-
-
-/***/ }),
-
-/***/ 87:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-
-
-var ReactPropTypesSecret = __webpack_require__(88);
-
-function emptyFunction() {}
-function emptyFunctionWithReset() {}
-emptyFunctionWithReset.resetWarningCache = emptyFunction;
-
-module.exports = function() {
- function shim(props, propName, componentName, location, propFullName, secret) {
- if (secret === ReactPropTypesSecret) {
- // It is still safe when called from React.
- return;
- }
- var err = new Error(
- 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +
- 'Use PropTypes.checkPropTypes() to call them. ' +
- 'Read more at http://fb.me/use-check-prop-types'
- );
- err.name = 'Invariant Violation';
- throw err;
- };
- shim.isRequired = shim;
- function getShim() {
- return shim;
- };
- // Important!
- // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.
- var ReactPropTypes = {
- array: shim,
- bool: shim,
- func: shim,
- number: shim,
- object: shim,
- string: shim,
- symbol: shim,
-
- any: shim,
- arrayOf: getShim,
- element: shim,
- elementType: shim,
- instanceOf: getShim,
- node: shim,
- objectOf: getShim,
- oneOf: getShim,
- oneOfType: getShim,
- shape: getShim,
- exact: getShim,
-
- checkPropTypes: emptyFunctionWithReset,
- resetWarningCache: emptyFunction
- };
-
- ReactPropTypes.PropTypes = ReactPropTypes;
-
- return ReactPropTypes;
-};
-
-
-/***/ }),
-
-/***/ 88:
-/***/ (function(module, exports, __webpack_require__) {
-
-"use strict";
-/**
- * Copyright (c) 2013-present, Facebook, Inc.
- *
- * This source code is licensed under the MIT license found in the
- * LICENSE file in the root directory of this source tree.
- */
-
-
-
-var ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';
-
-module.exports = ReactPropTypesSecret;
-
-
-/***/ }),
-
-/***/ 9:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["blocks"]; }());
-
-/***/ }),
-
-/***/ 97:
-/***/ (function(module, exports) {
-
-(function() { module.exports = this["wp"]["wordcount"]; }());
-
-/***/ })
-
-/******/ }); \ No newline at end of file