diff options
Diffstat (limited to 'srcs/wordpress/wp-includes/js/dist/block-editor.js')
| -rw-r--r-- | srcs/wordpress/wp-includes/js/dist/block-editor.js | 28170 |
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 = ' '; - - // 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 ˇ ˇ Caron - // - U+02D8 ˘ ˘ Breve - // - U+02D9 ˙ ˙ Dot Above - // - U+02DA ˚ ˚ Ring Above - // - U+02DB ˛ ˛ Ogonek - // - U+02DC ˜ ˜ Small Tilde - // - U+02DD ˝ ˝ 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, '&'); - n = n.replace(/</g, '<'); - n = n.replace(/>/g, '>'); - n = n.replace(/"/g, '"'); - - 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 |
